target-revenue/schemas/extension_contract.schema.json
tegwick 57c7111cbc Implement TREV-WP-0002 Stage 0 foundation: schemas, pure fold, golden Phase
Delivers the offline runnable specification foundation for the Trust Layer
(TSD §3-§6), not a hosted Trust Service:

- JSON Schemas for Phase Manifest, Ledger Entry, Extension Contract, and
  Conversion Attestation, encoding the Stage 0 working defaults (Q3 future
  license enum, Q6 single-currency Phases, Q8 required longstop_at).
- src/target_revenue: pure Outstanding Target fold, SHA-256 hash-chain
  verification, Ed25519 signing helpers, extension conformance checks
  (including a core-term-redefinition heuristic), and conversion detection
  that never requires an attestation document to determine conversion status.
- examples/phase-001: golden Phase package matching the concept doc's
  worked example, generated via scripts/generate_golden_phase.py so the
  hash chain is computed by the library itself, not hand-typed.
- 32 passing pytest tests covering manifest/ledger/extension conformance,
  tamper/reorder detection, and the full lifecycle fold to conversion.
- docs/adr/ADR-0001: proposed (not accepted) Stage 0 stack choice, per the
  WP-0002-T01 human-accept gate — implementation proceeded against the
  proposal as the workplan note permits, but the task stays open.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 18:47:29 +02:00

92 lines
2.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://target-revenue.example/schemas/extension_contract.schema.json",
"title": "Monetization Extension Contract",
"description": "Stage 0 schema per specs/TechnicalSpecificationDocument.md §3.3. Structural conformance only — the semantic rule that allocation.rule may not redefine core terms is enforced in code (src/target_revenue/validation.py), not expressible in JSON Schema alone.",
"type": "object",
"required": [
"id",
"version",
"value",
"pricing",
"allocation",
"recognition",
"reversal",
"evidence",
"status"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "^trsl:extension:[a-zA-Z0-9._-]+$"
},
"version": {
"type": "string",
"pattern": "^[0-9]+(\\.[0-9]+)*$"
},
"value": {
"type": "object",
"required": ["description"],
"additionalProperties": false,
"properties": {
"description": { "type": "string", "minLength": 1 }
}
},
"pricing": {
"type": "object",
"required": ["method"],
"additionalProperties": false,
"properties": {
"method": { "type": "string", "minLength": 1 }
}
},
"allocation": {
"type": "object",
"required": ["rule"],
"additionalProperties": false,
"properties": {
"rule": { "type": "string", "minLength": 1 },
"default_rate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Default development_allocation fraction, per canonical profile defaults (working default Q11)."
}
}
},
"recognition": {
"type": "object",
"required": ["event"],
"additionalProperties": false,
"properties": {
"event": {
"type": "string",
"enum": ["order", "invoice", "payment-settled", "delivery"],
"description": "Working default Q10: payment-settled only for Stage 0 fold inputs."
}
}
},
"reversal": {
"type": "object",
"required": ["rule"],
"additionalProperties": false,
"properties": {
"rule": { "type": "string", "minLength": 1 }
}
},
"evidence": {
"type": "object",
"required": ["requirement"],
"additionalProperties": false,
"properties": {
"requirement": { "type": "string", "minLength": 1 }
}
},
"status": {
"type": "string",
"enum": ["registered", "canonical", "deprecated"],
"description": "Assigned by Trust Service / maintainer review, not the extension author. canonical promotion is a documented human action (SCOPE §4)."
}
}
}