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>
This commit is contained in:
parent
658b1af00d
commit
57c7111cbc
28 changed files with 1751 additions and 7 deletions
24
examples/phase-001/extensions/cost-plus-operations.json
Normal file
24
examples/phase-001/extensions/cost-plus-operations.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"id": "trsl:extension:cost-plus-operations",
|
||||
"version": "1.0",
|
||||
"value": {
|
||||
"description": "Hosted and monitored operation of the software: compute, storage, networking, monitoring, backup, and incident response."
|
||||
},
|
||||
"pricing": {
|
||||
"method": "cost-plus, default 50% surcharge over eligible operations cost"
|
||||
},
|
||||
"allocation": {
|
||||
"rule": "Development allocation defaults to 0% of the operations price. A Phase may explicitly declare a nonzero development_allocation on the surcharge portion; absent that declaration, none of this revenue counts toward the Phase target.",
|
||||
"default_rate": 0.0
|
||||
},
|
||||
"recognition": {
|
||||
"event": "payment-settled"
|
||||
},
|
||||
"reversal": {
|
||||
"rule": "Refunds reverse proportionally; chargebacks reverse fully via a compensating credit-reversal entry."
|
||||
},
|
||||
"evidence": {
|
||||
"requirement": "Settled payment reference; eligible operations cost breakdown recommended for disputed amounts."
|
||||
},
|
||||
"status": "registered"
|
||||
}
|
||||
24
examples/phase-001/extensions/development-license.json
Normal file
24
examples/phase-001/extensions/development-license.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"id": "trsl:extension:development-license",
|
||||
"version": "1.0",
|
||||
"value": {
|
||||
"description": "Commercial-use rights and early commercial access to the protected Milestone Release."
|
||||
},
|
||||
"pricing": {
|
||||
"method": "fixed-fee-per-entitlement"
|
||||
},
|
||||
"allocation": {
|
||||
"rule": "100% of the collected development fee, net of tax, refunds, and chargebacks, becomes Development Credit for the identified Phase.",
|
||||
"default_rate": 1.0
|
||||
},
|
||||
"recognition": {
|
||||
"event": "payment-settled"
|
||||
},
|
||||
"reversal": {
|
||||
"rule": "Refunds and chargebacks generate a compensating credit-reversal ledger entry for the reversed amount."
|
||||
},
|
||||
"evidence": {
|
||||
"requirement": "Settled payment reference (processor transaction id) at minimum (working default Q10 tier E1); contract and invoice recommended for high-value credits (E2)."
|
||||
},
|
||||
"status": "registered"
|
||||
}
|
||||
23
examples/phase-001/extensions/phase-sponsorship.json
Normal file
23
examples/phase-001/extensions/phase-sponsorship.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"id": "trsl:extension:phase-sponsorship",
|
||||
"version": "1.0",
|
||||
"value": {
|
||||
"description": "Financial support explicitly directed at a named Phase, rather than the project generally."
|
||||
},
|
||||
"pricing": {
|
||||
"method": "declared-amount, negotiated per sponsorship agreement"
|
||||
},
|
||||
"allocation": {
|
||||
"rule": "The sponsoring party and the licensor explicitly declare the development_allocation fraction of the sponsorship amount at the time the sponsorship is recorded. Unrestricted general project sponsorship is not assigned to any Phase by default."
|
||||
},
|
||||
"recognition": {
|
||||
"event": "payment-settled"
|
||||
},
|
||||
"reversal": {
|
||||
"rule": "A withdrawn or refunded sponsorship generates a compensating credit-reversal entry for the previously declared development_allocation."
|
||||
},
|
||||
"evidence": {
|
||||
"requirement": "Sponsorship agreement or written declaration stating the target Phase and declared allocation, plus settled payment reference."
|
||||
},
|
||||
"status": "registered"
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"id": "trsl:extension:service-with-development-allocation",
|
||||
"version": "1.0",
|
||||
"value": {
|
||||
"description": "Installation, migration, configuration, integration, customization, support, or training service engagement."
|
||||
},
|
||||
"pricing": {
|
||||
"method": "time-and-materials or fixed-fee, per service agreement"
|
||||
},
|
||||
"allocation": {
|
||||
"rule": "Development allocation defaults to 0%. When a reusable deliverable from the engagement is incorporated into the governed Milestone Release, the reusable portion is explicitly split out and declared as development_allocation; customer-specific configuration is never allocated.",
|
||||
"default_rate": 0.0
|
||||
},
|
||||
"recognition": {
|
||||
"event": "payment-settled"
|
||||
},
|
||||
"reversal": {
|
||||
"rule": "Refunds and chargebacks generate a compensating credit-reversal entry for the reversed amount."
|
||||
},
|
||||
"evidence": {
|
||||
"requirement": "Settled payment reference; a statement identifying the reusable deliverable is required whenever a nonzero allocation is claimed."
|
||||
},
|
||||
"status": "registered"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue