xoonya 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -2
- package/CARRIED_HANDOFF_DEMO.md +60 -60
- package/COMPATIBILITY_NOTE.md +27 -27
- package/CROSS_RUNTIME_POSTURE.md +77 -77
- package/EXAMPLE_PATHS.md +53 -53
- package/FINAL_CONTRACT.md +445 -445
- package/LICENSE +201 -201
- package/NOTICE +3 -3
- package/OPERATIONS_RUNBOOK.md +50 -0
- package/OPERATOR_START_HERE.md +67 -0
- package/PARTNER_READY_PATH.md +67 -67
- package/PROGRAM_COMPLETE_RELEASE.md +52 -0
- package/PROGRAM_STATUS.md +57 -0
- package/PUBLIC_DEMO_SCRIPT.md +79 -79
- package/PUBLISH_PLAN.md +25 -0
- package/README.md +807 -732
- package/RELEASE_CHECKLIST.md +16 -0
- package/RELEASE_NOTES.md +15 -15
- package/SERVICE_CONTRACT.md +207 -195
- package/START_HERE.md +159 -150
- package/TERMINOLOGY.md +55 -55
- package/WHY_XYTARA_XOONYA.md +43 -43
- package/XNYA_CONFORMANCE_MARK.md +78 -78
- package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -157
- package/XOONYA_DEFAULT_PATH_MODEL.md +63 -63
- package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +63 -63
- package/XOONYA_NATIVE_ATOM_SPEC.md +184 -184
- package/XOONYA_NATIVE_PROOF_FORMAT.md +527 -527
- package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +119 -119
- package/XOONYA_PROOF_TRUTH_MODEL.md +58 -58
- package/bin/xoonya-first-run.js +184 -184
- package/bin/xoonya-release.js +1367 -1367
- package/bin/xoonya-review.js +70 -70
- package/bin/xoonya.js +82 -82
- package/examples/integration_boundary_walkthrough.js +37 -37
- package/examples/package_quickstart.js +1007 -1007
- package/examples/partner_proof_walkthrough.js +68 -68
- package/examples/proof_review_walkthrough.js +66 -66
- package/examples/review_carried_handoff.js +72 -72
- package/index.js +31 -22
- package/integrations/PROOF_INTEGRATION_PROCESS.md +45 -45
- package/integrations/examples/example-third-party-verifier-registration.record.json +22 -22
- package/integrations/registration-record.schema.json +99 -99
- package/integrations/registry-snapshot.schema.json +36 -36
- package/integrations/registry.js +636 -636
- package/integrations/views.js +36 -36
- package/lib/adapter_certification_contract.js +90 -0
- package/lib/announcement_pack.js +61 -61
- package/lib/artifact_distribution_lane_contract.js +54 -54
- package/lib/asyncapi_contract.js +135 -135
- package/lib/auth_interop_contract.js +69 -69
- package/lib/authority_binding_lifecycle_contract.js +182 -0
- package/lib/bridge_intelligence.js +102 -102
- package/lib/cloudevents_contract.js +79 -79
- package/lib/crypto_agility_matrix.js +125 -0
- package/lib/default_path_contract.js +380 -380
- package/lib/ecosystem_entry.js +64 -64
- package/lib/erc8004_proof_lane_contract.js +64 -64
- package/lib/event_system_lane_contract.js +76 -76
- package/lib/external_proof_import_lane_contract.js +87 -87
- package/lib/feature_control_lane_contract.js +54 -54
- package/lib/followthrough_truth_contract.js +214 -214
- package/lib/framework_lane_contract.js +76 -76
- package/lib/governance_disputes_summary.js +36 -36
- package/lib/governance_intelligence.js +108 -108
- package/lib/identity_interop_contract.js +83 -83
- package/lib/integration_matrix_contract.js +81 -81
- package/lib/launch_narrative.js +53 -53
- package/lib/machine_identity_registry_contract.js +199 -0
- package/lib/major_rails_proof_lane_contract.js +87 -87
- package/lib/offline_verifiability_recovery_contract.js +155 -0
- package/lib/openapi_contract.js +227 -227
- package/lib/operational_receipt_contract.js +165 -0
- package/lib/outreach_proof.js +71 -71
- package/lib/phase_10_closeout_pack.js +45 -45
- package/lib/phase_10_completion_pack.js +76 -76
- package/lib/phase_10_decision_record_pack.js +54 -54
- package/lib/phase_10_decision_resolution_pack.js +53 -53
- package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -74
- package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -74
- package/lib/phase_10_freeze_baseline_pack.js +67 -67
- package/lib/phase_10_freeze_review_pack.js +64 -64
- package/lib/phase_10_gate_pack.js +57 -57
- package/lib/phase_10_long_tail_continuity_pack.js +80 -80
- package/lib/phase_10_long_tail_ecosystem_pack.js +68 -68
- package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -74
- package/lib/phase_1_claude_mcp_pack.js +60 -60
- package/lib/phase_1_claude_mcp_proof_pack.js +57 -57
- package/lib/phase_1_ecosystem_pack.js +51 -51
- package/lib/phase_1_openai_codex_pack.js +60 -60
- package/lib/phase_1_openai_codex_proof_pack.js +57 -57
- package/lib/phase_2_base_proof_pack.js +71 -71
- package/lib/phase_2_base_usdc_proof_pack.js +72 -72
- package/lib/phase_2_closeout_pack.js +65 -65
- package/lib/phase_2_completion_pack.js +113 -113
- package/lib/phase_2_decision_record_pack.js +66 -66
- package/lib/phase_2_decision_resolution_pack.js +69 -69
- package/lib/phase_2_eth_proof_pack.js +70 -70
- package/lib/phase_2_evm_base_proof_pack.js +73 -73
- package/lib/phase_2_evm_proof_pack.js +71 -71
- package/lib/phase_2_flip_preview_pack.js +60 -60
- package/lib/phase_2_freeze_review_pack.js +99 -99
- package/lib/phase_2_gate_pack.js +77 -77
- package/lib/phase_2_payment_rails_pack.js +71 -71
- package/lib/phase_2_usdc_proof_pack.js +71 -71
- package/lib/phase_3_brc_proof_pack.js +81 -81
- package/lib/phase_3_bsv_teranode_proof_pack.js +81 -81
- package/lib/phase_3_closeout_pack.js +62 -62
- package/lib/phase_3_completion_pack.js +92 -92
- package/lib/phase_3_decision_record_pack.js +64 -64
- package/lib/phase_3_decision_resolution_pack.js +69 -69
- package/lib/phase_3_freeze_baseline_pack.js +67 -67
- package/lib/phase_3_freeze_review_pack.js +80 -80
- package/lib/phase_3_gate_pack.js +76 -76
- package/lib/phase_3_metanet_proof_pack.js +81 -81
- package/lib/phase_3_native_bsv_pack.js +89 -89
- package/lib/phase_3_native_continuity_pack.js +82 -82
- package/lib/phase_4_attestation_proof_pack.js +75 -75
- package/lib/phase_4_closeout_pack.js +45 -45
- package/lib/phase_4_completion_pack.js +82 -82
- package/lib/phase_4_decision_record_pack.js +54 -54
- package/lib/phase_4_decision_resolution_pack.js +45 -45
- package/lib/phase_4_erc8004_proof_pack.js +76 -76
- package/lib/phase_4_freeze_baseline_pack.js +67 -67
- package/lib/phase_4_freeze_review_pack.js +68 -68
- package/lib/phase_4_gate_pack.js +58 -58
- package/lib/phase_4_identity_registry_proof_pack.js +75 -75
- package/lib/phase_4_identity_trust_pack.js +73 -73
- package/lib/phase_4_trust_continuity_pack.js +86 -86
- package/lib/phase_5_antelope_proof_pack.js +76 -76
- package/lib/phase_5_closeout_pack.js +44 -44
- package/lib/phase_5_completion_pack.js +82 -82
- package/lib/phase_5_decision_record_pack.js +54 -54
- package/lib/phase_5_decision_resolution_pack.js +45 -45
- package/lib/phase_5_freeze_baseline_pack.js +67 -67
- package/lib/phase_5_freeze_review_pack.js +68 -68
- package/lib/phase_5_gate_pack.js +58 -58
- package/lib/phase_5_major_rails_continuity_pack.js +86 -86
- package/lib/phase_5_major_rails_pack.js +74 -74
- package/lib/phase_5_proton_xpr_proof_pack.js +76 -76
- package/lib/phase_5_solana_proof_pack.js +76 -76
- package/lib/phase_6_autogen_proof_pack.js +74 -74
- package/lib/phase_6_closeout_pack.js +46 -46
- package/lib/phase_6_completion_pack.js +77 -77
- package/lib/phase_6_decision_record_pack.js +54 -54
- package/lib/phase_6_decision_resolution_pack.js +53 -53
- package/lib/phase_6_framework_continuity_pack.js +81 -81
- package/lib/phase_6_framework_runtime_pack.js +68 -68
- package/lib/phase_6_freeze_baseline_pack.js +68 -68
- package/lib/phase_6_freeze_review_pack.js +65 -65
- package/lib/phase_6_gate_pack.js +59 -59
- package/lib/phase_6_langchain_proof_pack.js +74 -74
- package/lib/phase_6_langgraph_proof_pack.js +74 -74
- package/lib/phase_6_semantic_kernel_proof_pack.js +74 -74
- package/lib/phase_7_closeout_pack.js +45 -45
- package/lib/phase_7_completion_pack.js +85 -85
- package/lib/phase_7_decision_record_pack.js +53 -53
- package/lib/phase_7_decision_resolution_pack.js +53 -53
- package/lib/phase_7_event_system_continuity_pack.js +89 -89
- package/lib/phase_7_event_system_pack.js +76 -76
- package/lib/phase_7_freeze_baseline_pack.js +74 -74
- package/lib/phase_7_freeze_review_pack.js +65 -65
- package/lib/phase_7_gate_pack.js +58 -58
- package/lib/phase_7_kafka_proof_pack.js +76 -76
- package/lib/phase_7_mqtt_proof_pack.js +76 -76
- package/lib/phase_7_nats_proof_pack.js +76 -76
- package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -76
- package/lib/phase_8_closeout_pack.js +46 -46
- package/lib/phase_8_completion_pack.js +82 -82
- package/lib/phase_8_decision_record_pack.js +54 -54
- package/lib/phase_8_decision_resolution_pack.js +53 -53
- package/lib/phase_8_external_receipt_import_proof_pack.js +74 -74
- package/lib/phase_8_external_result_import_proof_pack.js +74 -74
- package/lib/phase_8_freeze_baseline_pack.js +71 -71
- package/lib/phase_8_freeze_review_pack.js +64 -64
- package/lib/phase_8_gate_pack.js +58 -58
- package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
- package/lib/phase_8_proof_bridges_pack.js +72 -72
- package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -74
- package/lib/phase_9_closeout_pack.js +46 -46
- package/lib/phase_9_completion_pack.js +82 -82
- package/lib/phase_9_custody_refs_proof_pack.js +74 -74
- package/lib/phase_9_decision_record_pack.js +54 -54
- package/lib/phase_9_decision_resolution_pack.js +53 -53
- package/lib/phase_9_freeze_baseline_pack.js +71 -71
- package/lib/phase_9_freeze_review_pack.js +64 -64
- package/lib/phase_9_gate_pack.js +58 -58
- package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -74
- package/lib/phase_9_treasury_connectivity_pack.js +72 -72
- package/lib/phase_9_treasury_continuity_pack.js +86 -86
- package/lib/phase_9_treasury_destinations_proof_pack.js +74 -74
- package/lib/phase_program_pack.js +47 -47
- package/lib/proof_bridge_lane_contract.js +82 -82
- package/lib/proof_truth_contract.js +224 -224
- package/lib/provenance_lane_contract.js +54 -54
- package/lib/provider_lane_contract.js +67 -67
- package/lib/public_surface_policy_contract.js +111 -0
- package/lib/publish_plan.js +51 -51
- package/lib/release_candidate.js +50 -50
- package/lib/release_center.js +1037 -1037
- package/lib/release_history.js +206 -206
- package/lib/release_manifest.js +114 -114
- package/lib/release_pack.js +391 -391
- package/lib/result_package_trust_lane_contract.js +74 -74
- package/lib/review_intelligence.js +100 -100
- package/lib/role_freeze.js +436 -436
- package/lib/shared_signals_lane_contract.js +54 -54
- package/lib/signed_audit_provenance_contract.js +93 -0
- package/lib/telemetry_lane_contract.js +54 -54
- package/lib/treasury_proof_lane_contract.js +83 -83
- package/lib/trust_intelligence.js +106 -106
- package/lib/trust_portability_boundary_contract.js +66 -0
- package/lib/trust_portability_pack.js +224 -224
- package/lib/verification_service_pack.js +149 -149
- package/package.json +97 -95
- package/proof_sdk.js +6265 -6265
- package/reference/python/README.md +35 -35
- package/reference/python/requirements-optional.txt +1 -1
- package/reference/python/verify_vectors.py +223 -223
- package/reference/python/xnya_reference.py +810 -810
- package/reference/rust/Cargo.toml +11 -11
- package/reference/rust/README.md +28 -28
- package/reference/rust/src/lib.rs +87 -87
- package/scripts/registry_cli.js +157 -157
- package/scripts/verify_all.js +603 -603
- package/scripts/verify_control_plane_contracts.js +34 -0
- package/scripts/verify_control_plane_routes.js +70 -0
- package/scripts/verify_examples.js +19 -19
- package/scripts/verify_external_proof_import_gate.js +84 -84
- package/scripts/verify_integrations.js +170 -170
- package/scripts/verify_native_hybrid_design_gate.js +114 -114
- package/scripts/verify_reference_promotion_gate.js +74 -74
- package/scripts/verify_reference_python.js +49 -49
- package/scripts/verify_reference_python_crypto.js +87 -87
- package/scripts/verify_reference_rust_scaffold.js +50 -50
- package/scripts/verify_release_candidate.js +131 -131
- package/scripts/verify_service.js +2940 -2940
- package/scripts/verify_tooling.js +1251 -1251
- package/scripts/verify_trust_portability.js +56 -56
- package/scripts/verify_vectors.js +192 -192
- package/scripts/verify_verification_services.js +56 -56
- package/server.js +4099 -3997
- package/vectors/adversarial-vectors.json +552 -552
- package/vectors/conformance-vectors.json +446 -446
- package/vectors/native-atom-vectors.json +101 -101
- package/vectors/native-payload-profile-vectors.json +50 -50
package/FINAL_CONTRACT.md
CHANGED
|
@@ -1,445 +1,445 @@
|
|
|
1
|
-
# xoonya Final Contract
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
`xoonya` is the neutral proof foundation for machine actions.
|
|
6
|
-
|
|
7
|
-
It exists to make machine-action evidence:
|
|
8
|
-
|
|
9
|
-
- deterministic
|
|
10
|
-
- portable
|
|
11
|
-
- minimal
|
|
12
|
-
- verifiable
|
|
13
|
-
- replayable
|
|
14
|
-
- independent of payment rails, settlement systems, and workflow engines
|
|
15
|
-
|
|
16
|
-
`xoonya` is not a commerce system, policy engine, or execution runtime.
|
|
17
|
-
|
|
18
|
-
## Public Release Stance
|
|
19
|
-
|
|
20
|
-
This product is being prepared as a first public release.
|
|
21
|
-
|
|
22
|
-
That means:
|
|
23
|
-
|
|
24
|
-
- prior proof formats are design history, not public obligations
|
|
25
|
-
- useful earlier decisions may be preserved where they strengthen the final product
|
|
26
|
-
- older helper shapes do not automatically become the public contract
|
|
27
|
-
|
|
28
|
-
The public baseline should therefore be chosen for correctness, clarity, determinism, and extensibility, not for backward compatibility with prior private repos.
|
|
29
|
-
|
|
30
|
-
## Product Boundary
|
|
31
|
-
|
|
32
|
-
`xoonya` owns:
|
|
33
|
-
|
|
34
|
-
- canonical event commitment rules
|
|
35
|
-
- canonical hashing rules
|
|
36
|
-
- receipt construction
|
|
37
|
-
- proof bundle construction
|
|
38
|
-
- receipt verification
|
|
39
|
-
- proof bundle verification
|
|
40
|
-
- conformance vectors
|
|
41
|
-
- versioned proof schemas
|
|
42
|
-
|
|
43
|
-
`xoonya` does not own:
|
|
44
|
-
|
|
45
|
-
- pricing
|
|
46
|
-
- balances
|
|
47
|
-
- refunds
|
|
48
|
-
- treasury logic
|
|
49
|
-
- workflow semantics
|
|
50
|
-
- task catalogs
|
|
51
|
-
- execution orchestration
|
|
52
|
-
- settlement orchestration
|
|
53
|
-
- market rules
|
|
54
|
-
- governance policy
|
|
55
|
-
|
|
56
|
-
## Core Doctrine
|
|
57
|
-
|
|
58
|
-
The proof model is layered.
|
|
59
|
-
|
|
60
|
-
### Layer 1: Canonical Event Bundle
|
|
61
|
-
|
|
62
|
-
This is the machine fact being committed.
|
|
63
|
-
|
|
64
|
-
It is the canonical, deterministic representation of an externally consequential machine event.
|
|
65
|
-
|
|
66
|
-
### Layer 2: Receipt
|
|
67
|
-
|
|
68
|
-
This is the minimal commitment artifact.
|
|
69
|
-
|
|
70
|
-
It proves that a specific identity committed to a specific canonical event commitment under a specific versioned receipt contract.
|
|
71
|
-
|
|
72
|
-
### Layer 3: Proof Bundle
|
|
73
|
-
|
|
74
|
-
This carries the richer proof context around the receipt:
|
|
75
|
-
|
|
76
|
-
- anchors
|
|
77
|
-
- attestation references
|
|
78
|
-
- evidence references
|
|
79
|
-
- batch inclusion material
|
|
80
|
-
- metadata
|
|
81
|
-
|
|
82
|
-
### Layer 4: Profiles
|
|
83
|
-
|
|
84
|
-
Profiles are optional domain-specific overlays for things like:
|
|
85
|
-
|
|
86
|
-
- economic handoff
|
|
87
|
-
- registry lifecycle
|
|
88
|
-
- compliance
|
|
89
|
-
- industry-specific evidence rules
|
|
90
|
-
|
|
91
|
-
Profiles must not mutate the base proof contract.
|
|
92
|
-
|
|
93
|
-
## Non-Negotiable Invariants
|
|
94
|
-
|
|
95
|
-
The following invariants must hold for all final versions.
|
|
96
|
-
|
|
97
|
-
### 1. Deterministic canonicalization
|
|
98
|
-
|
|
99
|
-
The same logical event must always produce the same canonical byte representation.
|
|
100
|
-
|
|
101
|
-
No implementation may depend on:
|
|
102
|
-
|
|
103
|
-
- locale
|
|
104
|
-
- timezone
|
|
105
|
-
- object insertion order
|
|
106
|
-
- language-specific serializer behavior
|
|
107
|
-
- non-canonical map ordering
|
|
108
|
-
|
|
109
|
-
### 2. Deterministic hashing
|
|
110
|
-
|
|
111
|
-
The same canonical event bytes must always yield the same commitment hash.
|
|
112
|
-
|
|
113
|
-
Hashing must use explicit domain separation.
|
|
114
|
-
|
|
115
|
-
### 3. Minimal receipt
|
|
116
|
-
|
|
117
|
-
The receipt must stay small and stable.
|
|
118
|
-
|
|
119
|
-
It must not absorb:
|
|
120
|
-
|
|
121
|
-
- economics
|
|
122
|
-
- payment semantics
|
|
123
|
-
- execution transcript detail
|
|
124
|
-
- attestation bodies
|
|
125
|
-
- anchor proofs
|
|
126
|
-
|
|
127
|
-
### 4. Optional anchoring
|
|
128
|
-
|
|
129
|
-
Anchoring is optional.
|
|
130
|
-
|
|
131
|
-
Proof validity must not depend on anchoring.
|
|
132
|
-
|
|
133
|
-
Anchoring strengthens external assurance and chronology, but does not define whether the receipt is well-formed or verifiable.
|
|
134
|
-
|
|
135
|
-
### 5. Single machine truth format
|
|
136
|
-
|
|
137
|
-
There must be one machine-native proof contract.
|
|
138
|
-
|
|
139
|
-
Human-readable renderings are views or encodings of the same proof objects, not separate proof protocols.
|
|
140
|
-
|
|
141
|
-
### 6. Versioned stability
|
|
142
|
-
|
|
143
|
-
Versions are explicit and strict.
|
|
144
|
-
|
|
145
|
-
Older versions remain historically valid.
|
|
146
|
-
|
|
147
|
-
New versions must not silently reinterpret older receipts.
|
|
148
|
-
|
|
149
|
-
## Canonical Event Bundle v1
|
|
150
|
-
|
|
151
|
-
The canonical event bundle is the fact layer.
|
|
152
|
-
|
|
153
|
-
Its purpose is to represent an externally consequential machine event in a deterministic and portable way.
|
|
154
|
-
|
|
155
|
-
### Required fields
|
|
156
|
-
|
|
157
|
-
- `version`
|
|
158
|
-
- `domain_id`
|
|
159
|
-
- `sequence`
|
|
160
|
-
- `actor_id`
|
|
161
|
-
- `adapter_source`
|
|
162
|
-
- `event_type`
|
|
163
|
-
- `event_hash`
|
|
164
|
-
|
|
165
|
-
### Optional fields
|
|
166
|
-
|
|
167
|
-
- `timestamp_ns`
|
|
168
|
-
- `parent_refs`
|
|
169
|
-
- `capability_refs`
|
|
170
|
-
- `attestation_ref`
|
|
171
|
-
- `semantic_slots`
|
|
172
|
-
|
|
173
|
-
### Rules
|
|
174
|
-
|
|
175
|
-
- ordering is determined by explicit replay-safe fields, not by timestamps
|
|
176
|
-
- timestamps may exist, but must not define event ordering
|
|
177
|
-
- semantic slots are interpretation hints and must not change the event commitment semantics
|
|
178
|
-
- attestation references are optional and external
|
|
179
|
-
|
|
180
|
-
### Commitment rule
|
|
181
|
-
|
|
182
|
-
The canonical event bundle commitment must be derived from the canonical serialized form of the full event bundle object, not from a hand-picked concatenation of selected fields.
|
|
183
|
-
|
|
184
|
-
This is the preferred rule because it:
|
|
185
|
-
|
|
186
|
-
- reduces hidden ambiguity
|
|
187
|
-
- reduces implementation drift
|
|
188
|
-
- makes conformance easier to test
|
|
189
|
-
- makes schema evolution cleaner
|
|
190
|
-
|
|
191
|
-
## Receipt v1
|
|
192
|
-
|
|
193
|
-
The receipt is the minimal commitment artifact.
|
|
194
|
-
|
|
195
|
-
### Purpose
|
|
196
|
-
|
|
197
|
-
The receipt proves:
|
|
198
|
-
|
|
199
|
-
- which proof contract version applies
|
|
200
|
-
- which identity issued the commitment
|
|
201
|
-
- which canonical event commitment is being committed
|
|
202
|
-
- that the issuer signed or committed that event commitment
|
|
203
|
-
|
|
204
|
-
### Required fields
|
|
205
|
-
|
|
206
|
-
- `version`
|
|
207
|
-
- `receipt_id`
|
|
208
|
-
- `agent_identity`
|
|
209
|
-
- `domain_id`
|
|
210
|
-
- `sequence`
|
|
211
|
-
- `event_commitment`
|
|
212
|
-
- `signature`
|
|
213
|
-
|
|
214
|
-
### Optional fields
|
|
215
|
-
|
|
216
|
-
- `algorithm`
|
|
217
|
-
|
|
218
|
-
### Rules
|
|
219
|
-
|
|
220
|
-
- `receipt_id` must be deterministic or derivable in a stable way
|
|
221
|
-
- `agent_identity` must be a stable identity reference, not a commerce-specific account handle
|
|
222
|
-
- `event_commitment` must equal the canonical event bundle commitment
|
|
223
|
-
- `signature` must verify against the exact commitment material defined by the contract
|
|
224
|
-
|
|
225
|
-
### Explicit exclusions
|
|
226
|
-
|
|
227
|
-
The receipt must not directly carry:
|
|
228
|
-
|
|
229
|
-
- prices
|
|
230
|
-
- balances
|
|
231
|
-
- refunds
|
|
232
|
-
- quote details
|
|
233
|
-
- settlement details
|
|
234
|
-
- anchor records
|
|
235
|
-
- Merkle paths
|
|
236
|
-
- attestation bodies
|
|
237
|
-
- execution transcripts
|
|
238
|
-
|
|
239
|
-
## Proof Bundle v1
|
|
240
|
-
|
|
241
|
-
The proof bundle is the portable richer proof container.
|
|
242
|
-
|
|
243
|
-
### Required fields
|
|
244
|
-
|
|
245
|
-
- `ceb`
|
|
246
|
-
- `receipt`
|
|
247
|
-
|
|
248
|
-
### Optional fields
|
|
249
|
-
|
|
250
|
-
- `anchors`
|
|
251
|
-
- `attestations`
|
|
252
|
-
- `evidence_refs`
|
|
253
|
-
- `batch_refs`
|
|
254
|
-
- `metadata`
|
|
255
|
-
|
|
256
|
-
### Purpose
|
|
257
|
-
|
|
258
|
-
The proof bundle is where richer proof and portability features live without bloating the receipt.
|
|
259
|
-
|
|
260
|
-
This is the correct place for:
|
|
261
|
-
|
|
262
|
-
- chain or ledger anchors
|
|
263
|
-
- block references
|
|
264
|
-
- batch roots
|
|
265
|
-
- inclusion proofs
|
|
266
|
-
- external evidence references
|
|
267
|
-
- optional attestation references
|
|
268
|
-
|
|
269
|
-
### Rules
|
|
270
|
-
|
|
271
|
-
- the receipt remains valid without a proof bundle
|
|
272
|
-
- the proof bundle must never alter the meaning of the receipt
|
|
273
|
-
- all optional fields must be additive, not redefining
|
|
274
|
-
|
|
275
|
-
## Attestation Relationship
|
|
276
|
-
|
|
277
|
-
Attestation is separate from proof.
|
|
278
|
-
|
|
279
|
-
`xoonya` may reference attestation material, commit to attestation hashes, and verify attestation-shaped adjuncts if needed, but attestation must remain conceptually separate from the receipt core.
|
|
280
|
-
|
|
281
|
-
### Rule
|
|
282
|
-
|
|
283
|
-
Attestation may be consumed.
|
|
284
|
-
It must not become the receipt.
|
|
285
|
-
|
|
286
|
-
## Profiles
|
|
287
|
-
|
|
288
|
-
Profiles are optional structured overlays built on top of base proof primitives.
|
|
289
|
-
|
|
290
|
-
Examples:
|
|
291
|
-
|
|
292
|
-
- economic receipt profile
|
|
293
|
-
- registry lifecycle profile
|
|
294
|
-
- compliance profile
|
|
295
|
-
|
|
296
|
-
### Profile rule
|
|
297
|
-
|
|
298
|
-
Profiles may:
|
|
299
|
-
|
|
300
|
-
- reference receipts
|
|
301
|
-
- reference proof bundles
|
|
302
|
-
- define domain-specific payload semantics
|
|
303
|
-
- define domain-specific verification logic
|
|
304
|
-
|
|
305
|
-
Profiles may not:
|
|
306
|
-
|
|
307
|
-
- redefine base receipt meaning
|
|
308
|
-
- redefine canonical event bundle meaning
|
|
309
|
-
- create hidden alternate proof cores
|
|
310
|
-
|
|
311
|
-
## Batching
|
|
312
|
-
|
|
313
|
-
Batching is supported, but not part of the minimal receipt core.
|
|
314
|
-
|
|
315
|
-
### Rule
|
|
316
|
-
|
|
317
|
-
Multiple proof commitments may be compressed into a deterministic batch root.
|
|
318
|
-
|
|
319
|
-
Batch-related material belongs in:
|
|
320
|
-
|
|
321
|
-
- proof bundle
|
|
322
|
-
- batch metadata
|
|
323
|
-
- inclusion proofs
|
|
324
|
-
- anchor references
|
|
325
|
-
|
|
326
|
-
not in the base receipt itself.
|
|
327
|
-
|
|
328
|
-
## Verification Contract
|
|
329
|
-
|
|
330
|
-
Verification must produce deterministic outcomes.
|
|
331
|
-
|
|
332
|
-
### Verification result fields
|
|
333
|
-
|
|
334
|
-
- `ok`
|
|
335
|
-
- `code`
|
|
336
|
-
- `message`
|
|
337
|
-
- optional `details`
|
|
338
|
-
|
|
339
|
-
### Canonical failure classes
|
|
340
|
-
|
|
341
|
-
- invalid schema
|
|
342
|
-
- unsupported version
|
|
343
|
-
- hash mismatch
|
|
344
|
-
- signature mismatch
|
|
345
|
-
- receipt mismatch
|
|
346
|
-
- bundle mismatch
|
|
347
|
-
- profile mismatch
|
|
348
|
-
|
|
349
|
-
### Rule
|
|
350
|
-
|
|
351
|
-
The same invalid input must fail the same way across conformant implementations.
|
|
352
|
-
|
|
353
|
-
## Versioning Strategy
|
|
354
|
-
|
|
355
|
-
### v1
|
|
356
|
-
|
|
357
|
-
Freeze:
|
|
358
|
-
|
|
359
|
-
- canonical event bundle v1
|
|
360
|
-
- receipt v1
|
|
361
|
-
- proof bundle v1
|
|
362
|
-
- verification result contract v1
|
|
363
|
-
|
|
364
|
-
### Future versions
|
|
365
|
-
|
|
366
|
-
A new version is justified only when:
|
|
367
|
-
|
|
368
|
-
- commitment semantics change
|
|
369
|
-
- canonicalization semantics change
|
|
370
|
-
- identity/signature semantics change in a breaking way
|
|
371
|
-
- proof container semantics change in a breaking way
|
|
372
|
-
|
|
373
|
-
New profiles do not require a new core proof version unless they change base semantics.
|
|
374
|
-
|
|
375
|
-
## Conformance Requirements
|
|
376
|
-
|
|
377
|
-
Any implementation claiming compatibility must pass:
|
|
378
|
-
|
|
379
|
-
- canonicalization vectors
|
|
380
|
-
- hashing vectors
|
|
381
|
-
- receipt creation vectors
|
|
382
|
-
- receipt verification vectors
|
|
383
|
-
- proof bundle verification vectors
|
|
384
|
-
- adversarial vectors
|
|
385
|
-
|
|
386
|
-
### Adversarial vector classes
|
|
387
|
-
|
|
388
|
-
- field ordering drift
|
|
389
|
-
- null / absent field ambiguity
|
|
390
|
-
- unicode normalization edge cases
|
|
391
|
-
- timestamp representation drift
|
|
392
|
-
- duplicate proof entries
|
|
393
|
-
- wrong anchor references
|
|
394
|
-
- wrong batch inclusion paths
|
|
395
|
-
- signature mismatch
|
|
396
|
-
- tampered metadata
|
|
397
|
-
- version mismatch
|
|
398
|
-
|
|
399
|
-
## Public API Direction
|
|
400
|
-
|
|
401
|
-
The public API of `xoonya` should center on:
|
|
402
|
-
|
|
403
|
-
- `canonicalizeEvent`
|
|
404
|
-
- `hashEvent`
|
|
405
|
-
- `emitReceipt`
|
|
406
|
-
- `verifyReceipt`
|
|
407
|
-
- `buildProofBundle`
|
|
408
|
-
- `verifyProofBundle`
|
|
409
|
-
|
|
410
|
-
Optional profile helpers may be added separately.
|
|
411
|
-
|
|
412
|
-
## What Should Be Carried Forward From Earlier Proof Iterations
|
|
413
|
-
|
|
414
|
-
Keep:
|
|
415
|
-
|
|
416
|
-
- minimal commitment philosophy
|
|
417
|
-
- strict domain separation
|
|
418
|
-
- optional anchoring
|
|
419
|
-
- proof envelope / bundle layering
|
|
420
|
-
- additive profile concept
|
|
421
|
-
- strong conformance vector discipline
|
|
422
|
-
|
|
423
|
-
Do not freeze directly:
|
|
424
|
-
|
|
425
|
-
- historical implementation names
|
|
426
|
-
- historical version labels
|
|
427
|
-
- exact old byte-count decisions as sacred
|
|
428
|
-
- old rail-shaped assumptions
|
|
429
|
-
|
|
430
|
-
## Final Product Position
|
|
431
|
-
|
|
432
|
-
`xoonya` should become:
|
|
433
|
-
|
|
434
|
-
- the neutral machine truth layer
|
|
435
|
-
- the portable proof layer
|
|
436
|
-
- the deterministic evidence layer
|
|
437
|
-
|
|
438
|
-
It should be usable:
|
|
439
|
-
|
|
440
|
-
- independently of `xytara`
|
|
441
|
-
- independently of any chain
|
|
442
|
-
- independently of any specific payment rail
|
|
443
|
-
- independently of any specific runtime
|
|
444
|
-
|
|
445
|
-
That independence is the foundation of the whole stack.
|
|
1
|
+
# xoonya Final Contract
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
`xoonya` is the neutral proof foundation for machine actions.
|
|
6
|
+
|
|
7
|
+
It exists to make machine-action evidence:
|
|
8
|
+
|
|
9
|
+
- deterministic
|
|
10
|
+
- portable
|
|
11
|
+
- minimal
|
|
12
|
+
- verifiable
|
|
13
|
+
- replayable
|
|
14
|
+
- independent of payment rails, settlement systems, and workflow engines
|
|
15
|
+
|
|
16
|
+
`xoonya` is not a commerce system, policy engine, or execution runtime.
|
|
17
|
+
|
|
18
|
+
## Public Release Stance
|
|
19
|
+
|
|
20
|
+
This product is being prepared as a first public release.
|
|
21
|
+
|
|
22
|
+
That means:
|
|
23
|
+
|
|
24
|
+
- prior proof formats are design history, not public obligations
|
|
25
|
+
- useful earlier decisions may be preserved where they strengthen the final product
|
|
26
|
+
- older helper shapes do not automatically become the public contract
|
|
27
|
+
|
|
28
|
+
The public baseline should therefore be chosen for correctness, clarity, determinism, and extensibility, not for backward compatibility with prior private repos.
|
|
29
|
+
|
|
30
|
+
## Product Boundary
|
|
31
|
+
|
|
32
|
+
`xoonya` owns:
|
|
33
|
+
|
|
34
|
+
- canonical event commitment rules
|
|
35
|
+
- canonical hashing rules
|
|
36
|
+
- receipt construction
|
|
37
|
+
- proof bundle construction
|
|
38
|
+
- receipt verification
|
|
39
|
+
- proof bundle verification
|
|
40
|
+
- conformance vectors
|
|
41
|
+
- versioned proof schemas
|
|
42
|
+
|
|
43
|
+
`xoonya` does not own:
|
|
44
|
+
|
|
45
|
+
- pricing
|
|
46
|
+
- balances
|
|
47
|
+
- refunds
|
|
48
|
+
- treasury logic
|
|
49
|
+
- workflow semantics
|
|
50
|
+
- task catalogs
|
|
51
|
+
- execution orchestration
|
|
52
|
+
- settlement orchestration
|
|
53
|
+
- market rules
|
|
54
|
+
- governance policy
|
|
55
|
+
|
|
56
|
+
## Core Doctrine
|
|
57
|
+
|
|
58
|
+
The proof model is layered.
|
|
59
|
+
|
|
60
|
+
### Layer 1: Canonical Event Bundle
|
|
61
|
+
|
|
62
|
+
This is the machine fact being committed.
|
|
63
|
+
|
|
64
|
+
It is the canonical, deterministic representation of an externally consequential machine event.
|
|
65
|
+
|
|
66
|
+
### Layer 2: Receipt
|
|
67
|
+
|
|
68
|
+
This is the minimal commitment artifact.
|
|
69
|
+
|
|
70
|
+
It proves that a specific identity committed to a specific canonical event commitment under a specific versioned receipt contract.
|
|
71
|
+
|
|
72
|
+
### Layer 3: Proof Bundle
|
|
73
|
+
|
|
74
|
+
This carries the richer proof context around the receipt:
|
|
75
|
+
|
|
76
|
+
- anchors
|
|
77
|
+
- attestation references
|
|
78
|
+
- evidence references
|
|
79
|
+
- batch inclusion material
|
|
80
|
+
- metadata
|
|
81
|
+
|
|
82
|
+
### Layer 4: Profiles
|
|
83
|
+
|
|
84
|
+
Profiles are optional domain-specific overlays for things like:
|
|
85
|
+
|
|
86
|
+
- economic handoff
|
|
87
|
+
- registry lifecycle
|
|
88
|
+
- compliance
|
|
89
|
+
- industry-specific evidence rules
|
|
90
|
+
|
|
91
|
+
Profiles must not mutate the base proof contract.
|
|
92
|
+
|
|
93
|
+
## Non-Negotiable Invariants
|
|
94
|
+
|
|
95
|
+
The following invariants must hold for all final versions.
|
|
96
|
+
|
|
97
|
+
### 1. Deterministic canonicalization
|
|
98
|
+
|
|
99
|
+
The same logical event must always produce the same canonical byte representation.
|
|
100
|
+
|
|
101
|
+
No implementation may depend on:
|
|
102
|
+
|
|
103
|
+
- locale
|
|
104
|
+
- timezone
|
|
105
|
+
- object insertion order
|
|
106
|
+
- language-specific serializer behavior
|
|
107
|
+
- non-canonical map ordering
|
|
108
|
+
|
|
109
|
+
### 2. Deterministic hashing
|
|
110
|
+
|
|
111
|
+
The same canonical event bytes must always yield the same commitment hash.
|
|
112
|
+
|
|
113
|
+
Hashing must use explicit domain separation.
|
|
114
|
+
|
|
115
|
+
### 3. Minimal receipt
|
|
116
|
+
|
|
117
|
+
The receipt must stay small and stable.
|
|
118
|
+
|
|
119
|
+
It must not absorb:
|
|
120
|
+
|
|
121
|
+
- economics
|
|
122
|
+
- payment semantics
|
|
123
|
+
- execution transcript detail
|
|
124
|
+
- attestation bodies
|
|
125
|
+
- anchor proofs
|
|
126
|
+
|
|
127
|
+
### 4. Optional anchoring
|
|
128
|
+
|
|
129
|
+
Anchoring is optional.
|
|
130
|
+
|
|
131
|
+
Proof validity must not depend on anchoring.
|
|
132
|
+
|
|
133
|
+
Anchoring strengthens external assurance and chronology, but does not define whether the receipt is well-formed or verifiable.
|
|
134
|
+
|
|
135
|
+
### 5. Single machine truth format
|
|
136
|
+
|
|
137
|
+
There must be one machine-native proof contract.
|
|
138
|
+
|
|
139
|
+
Human-readable renderings are views or encodings of the same proof objects, not separate proof protocols.
|
|
140
|
+
|
|
141
|
+
### 6. Versioned stability
|
|
142
|
+
|
|
143
|
+
Versions are explicit and strict.
|
|
144
|
+
|
|
145
|
+
Older versions remain historically valid.
|
|
146
|
+
|
|
147
|
+
New versions must not silently reinterpret older receipts.
|
|
148
|
+
|
|
149
|
+
## Canonical Event Bundle v1
|
|
150
|
+
|
|
151
|
+
The canonical event bundle is the fact layer.
|
|
152
|
+
|
|
153
|
+
Its purpose is to represent an externally consequential machine event in a deterministic and portable way.
|
|
154
|
+
|
|
155
|
+
### Required fields
|
|
156
|
+
|
|
157
|
+
- `version`
|
|
158
|
+
- `domain_id`
|
|
159
|
+
- `sequence`
|
|
160
|
+
- `actor_id`
|
|
161
|
+
- `adapter_source`
|
|
162
|
+
- `event_type`
|
|
163
|
+
- `event_hash`
|
|
164
|
+
|
|
165
|
+
### Optional fields
|
|
166
|
+
|
|
167
|
+
- `timestamp_ns`
|
|
168
|
+
- `parent_refs`
|
|
169
|
+
- `capability_refs`
|
|
170
|
+
- `attestation_ref`
|
|
171
|
+
- `semantic_slots`
|
|
172
|
+
|
|
173
|
+
### Rules
|
|
174
|
+
|
|
175
|
+
- ordering is determined by explicit replay-safe fields, not by timestamps
|
|
176
|
+
- timestamps may exist, but must not define event ordering
|
|
177
|
+
- semantic slots are interpretation hints and must not change the event commitment semantics
|
|
178
|
+
- attestation references are optional and external
|
|
179
|
+
|
|
180
|
+
### Commitment rule
|
|
181
|
+
|
|
182
|
+
The canonical event bundle commitment must be derived from the canonical serialized form of the full event bundle object, not from a hand-picked concatenation of selected fields.
|
|
183
|
+
|
|
184
|
+
This is the preferred rule because it:
|
|
185
|
+
|
|
186
|
+
- reduces hidden ambiguity
|
|
187
|
+
- reduces implementation drift
|
|
188
|
+
- makes conformance easier to test
|
|
189
|
+
- makes schema evolution cleaner
|
|
190
|
+
|
|
191
|
+
## Receipt v1
|
|
192
|
+
|
|
193
|
+
The receipt is the minimal commitment artifact.
|
|
194
|
+
|
|
195
|
+
### Purpose
|
|
196
|
+
|
|
197
|
+
The receipt proves:
|
|
198
|
+
|
|
199
|
+
- which proof contract version applies
|
|
200
|
+
- which identity issued the commitment
|
|
201
|
+
- which canonical event commitment is being committed
|
|
202
|
+
- that the issuer signed or committed that event commitment
|
|
203
|
+
|
|
204
|
+
### Required fields
|
|
205
|
+
|
|
206
|
+
- `version`
|
|
207
|
+
- `receipt_id`
|
|
208
|
+
- `agent_identity`
|
|
209
|
+
- `domain_id`
|
|
210
|
+
- `sequence`
|
|
211
|
+
- `event_commitment`
|
|
212
|
+
- `signature`
|
|
213
|
+
|
|
214
|
+
### Optional fields
|
|
215
|
+
|
|
216
|
+
- `algorithm`
|
|
217
|
+
|
|
218
|
+
### Rules
|
|
219
|
+
|
|
220
|
+
- `receipt_id` must be deterministic or derivable in a stable way
|
|
221
|
+
- `agent_identity` must be a stable identity reference, not a commerce-specific account handle
|
|
222
|
+
- `event_commitment` must equal the canonical event bundle commitment
|
|
223
|
+
- `signature` must verify against the exact commitment material defined by the contract
|
|
224
|
+
|
|
225
|
+
### Explicit exclusions
|
|
226
|
+
|
|
227
|
+
The receipt must not directly carry:
|
|
228
|
+
|
|
229
|
+
- prices
|
|
230
|
+
- balances
|
|
231
|
+
- refunds
|
|
232
|
+
- quote details
|
|
233
|
+
- settlement details
|
|
234
|
+
- anchor records
|
|
235
|
+
- Merkle paths
|
|
236
|
+
- attestation bodies
|
|
237
|
+
- execution transcripts
|
|
238
|
+
|
|
239
|
+
## Proof Bundle v1
|
|
240
|
+
|
|
241
|
+
The proof bundle is the portable richer proof container.
|
|
242
|
+
|
|
243
|
+
### Required fields
|
|
244
|
+
|
|
245
|
+
- `ceb`
|
|
246
|
+
- `receipt`
|
|
247
|
+
|
|
248
|
+
### Optional fields
|
|
249
|
+
|
|
250
|
+
- `anchors`
|
|
251
|
+
- `attestations`
|
|
252
|
+
- `evidence_refs`
|
|
253
|
+
- `batch_refs`
|
|
254
|
+
- `metadata`
|
|
255
|
+
|
|
256
|
+
### Purpose
|
|
257
|
+
|
|
258
|
+
The proof bundle is where richer proof and portability features live without bloating the receipt.
|
|
259
|
+
|
|
260
|
+
This is the correct place for:
|
|
261
|
+
|
|
262
|
+
- chain or ledger anchors
|
|
263
|
+
- block references
|
|
264
|
+
- batch roots
|
|
265
|
+
- inclusion proofs
|
|
266
|
+
- external evidence references
|
|
267
|
+
- optional attestation references
|
|
268
|
+
|
|
269
|
+
### Rules
|
|
270
|
+
|
|
271
|
+
- the receipt remains valid without a proof bundle
|
|
272
|
+
- the proof bundle must never alter the meaning of the receipt
|
|
273
|
+
- all optional fields must be additive, not redefining
|
|
274
|
+
|
|
275
|
+
## Attestation Relationship
|
|
276
|
+
|
|
277
|
+
Attestation is separate from proof.
|
|
278
|
+
|
|
279
|
+
`xoonya` may reference attestation material, commit to attestation hashes, and verify attestation-shaped adjuncts if needed, but attestation must remain conceptually separate from the receipt core.
|
|
280
|
+
|
|
281
|
+
### Rule
|
|
282
|
+
|
|
283
|
+
Attestation may be consumed.
|
|
284
|
+
It must not become the receipt.
|
|
285
|
+
|
|
286
|
+
## Profiles
|
|
287
|
+
|
|
288
|
+
Profiles are optional structured overlays built on top of base proof primitives.
|
|
289
|
+
|
|
290
|
+
Examples:
|
|
291
|
+
|
|
292
|
+
- economic receipt profile
|
|
293
|
+
- registry lifecycle profile
|
|
294
|
+
- compliance profile
|
|
295
|
+
|
|
296
|
+
### Profile rule
|
|
297
|
+
|
|
298
|
+
Profiles may:
|
|
299
|
+
|
|
300
|
+
- reference receipts
|
|
301
|
+
- reference proof bundles
|
|
302
|
+
- define domain-specific payload semantics
|
|
303
|
+
- define domain-specific verification logic
|
|
304
|
+
|
|
305
|
+
Profiles may not:
|
|
306
|
+
|
|
307
|
+
- redefine base receipt meaning
|
|
308
|
+
- redefine canonical event bundle meaning
|
|
309
|
+
- create hidden alternate proof cores
|
|
310
|
+
|
|
311
|
+
## Batching
|
|
312
|
+
|
|
313
|
+
Batching is supported, but not part of the minimal receipt core.
|
|
314
|
+
|
|
315
|
+
### Rule
|
|
316
|
+
|
|
317
|
+
Multiple proof commitments may be compressed into a deterministic batch root.
|
|
318
|
+
|
|
319
|
+
Batch-related material belongs in:
|
|
320
|
+
|
|
321
|
+
- proof bundle
|
|
322
|
+
- batch metadata
|
|
323
|
+
- inclusion proofs
|
|
324
|
+
- anchor references
|
|
325
|
+
|
|
326
|
+
not in the base receipt itself.
|
|
327
|
+
|
|
328
|
+
## Verification Contract
|
|
329
|
+
|
|
330
|
+
Verification must produce deterministic outcomes.
|
|
331
|
+
|
|
332
|
+
### Verification result fields
|
|
333
|
+
|
|
334
|
+
- `ok`
|
|
335
|
+
- `code`
|
|
336
|
+
- `message`
|
|
337
|
+
- optional `details`
|
|
338
|
+
|
|
339
|
+
### Canonical failure classes
|
|
340
|
+
|
|
341
|
+
- invalid schema
|
|
342
|
+
- unsupported version
|
|
343
|
+
- hash mismatch
|
|
344
|
+
- signature mismatch
|
|
345
|
+
- receipt mismatch
|
|
346
|
+
- bundle mismatch
|
|
347
|
+
- profile mismatch
|
|
348
|
+
|
|
349
|
+
### Rule
|
|
350
|
+
|
|
351
|
+
The same invalid input must fail the same way across conformant implementations.
|
|
352
|
+
|
|
353
|
+
## Versioning Strategy
|
|
354
|
+
|
|
355
|
+
### v1
|
|
356
|
+
|
|
357
|
+
Freeze:
|
|
358
|
+
|
|
359
|
+
- canonical event bundle v1
|
|
360
|
+
- receipt v1
|
|
361
|
+
- proof bundle v1
|
|
362
|
+
- verification result contract v1
|
|
363
|
+
|
|
364
|
+
### Future versions
|
|
365
|
+
|
|
366
|
+
A new version is justified only when:
|
|
367
|
+
|
|
368
|
+
- commitment semantics change
|
|
369
|
+
- canonicalization semantics change
|
|
370
|
+
- identity/signature semantics change in a breaking way
|
|
371
|
+
- proof container semantics change in a breaking way
|
|
372
|
+
|
|
373
|
+
New profiles do not require a new core proof version unless they change base semantics.
|
|
374
|
+
|
|
375
|
+
## Conformance Requirements
|
|
376
|
+
|
|
377
|
+
Any implementation claiming compatibility must pass:
|
|
378
|
+
|
|
379
|
+
- canonicalization vectors
|
|
380
|
+
- hashing vectors
|
|
381
|
+
- receipt creation vectors
|
|
382
|
+
- receipt verification vectors
|
|
383
|
+
- proof bundle verification vectors
|
|
384
|
+
- adversarial vectors
|
|
385
|
+
|
|
386
|
+
### Adversarial vector classes
|
|
387
|
+
|
|
388
|
+
- field ordering drift
|
|
389
|
+
- null / absent field ambiguity
|
|
390
|
+
- unicode normalization edge cases
|
|
391
|
+
- timestamp representation drift
|
|
392
|
+
- duplicate proof entries
|
|
393
|
+
- wrong anchor references
|
|
394
|
+
- wrong batch inclusion paths
|
|
395
|
+
- signature mismatch
|
|
396
|
+
- tampered metadata
|
|
397
|
+
- version mismatch
|
|
398
|
+
|
|
399
|
+
## Public API Direction
|
|
400
|
+
|
|
401
|
+
The public API of `xoonya` should center on:
|
|
402
|
+
|
|
403
|
+
- `canonicalizeEvent`
|
|
404
|
+
- `hashEvent`
|
|
405
|
+
- `emitReceipt`
|
|
406
|
+
- `verifyReceipt`
|
|
407
|
+
- `buildProofBundle`
|
|
408
|
+
- `verifyProofBundle`
|
|
409
|
+
|
|
410
|
+
Optional profile helpers may be added separately.
|
|
411
|
+
|
|
412
|
+
## What Should Be Carried Forward From Earlier Proof Iterations
|
|
413
|
+
|
|
414
|
+
Keep:
|
|
415
|
+
|
|
416
|
+
- minimal commitment philosophy
|
|
417
|
+
- strict domain separation
|
|
418
|
+
- optional anchoring
|
|
419
|
+
- proof envelope / bundle layering
|
|
420
|
+
- additive profile concept
|
|
421
|
+
- strong conformance vector discipline
|
|
422
|
+
|
|
423
|
+
Do not freeze directly:
|
|
424
|
+
|
|
425
|
+
- historical implementation names
|
|
426
|
+
- historical version labels
|
|
427
|
+
- exact old byte-count decisions as sacred
|
|
428
|
+
- old rail-shaped assumptions
|
|
429
|
+
|
|
430
|
+
## Final Product Position
|
|
431
|
+
|
|
432
|
+
`xoonya` should become:
|
|
433
|
+
|
|
434
|
+
- the neutral machine truth layer
|
|
435
|
+
- the portable proof layer
|
|
436
|
+
- the deterministic evidence layer
|
|
437
|
+
|
|
438
|
+
It should be usable:
|
|
439
|
+
|
|
440
|
+
- independently of `xytara`
|
|
441
|
+
- independently of any chain
|
|
442
|
+
- independently of any specific payment rail
|
|
443
|
+
- independently of any specific runtime
|
|
444
|
+
|
|
445
|
+
That independence is the foundation of the whole stack.
|