xoonya 3.1.17 → 3.2.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.
Files changed (240) hide show
  1. package/README.md +97 -74
  2. package/RELEASE_NOTES.md +7 -1
  3. package/START_HERE.md +38 -134
  4. package/bin/xoonya-first-run.js +22 -10
  5. package/bin/xoonya.js +61 -29
  6. package/lib/native_verify.js +1918 -0
  7. package/package.json +19 -42
  8. package/scripts/verify_release_candidate.js +243 -116
  9. package/scripts/verify_vectors.js +351 -104
  10. package/verify.js +95 -0
  11. package/.env.example +0 -10
  12. package/CARRIED_HANDOFF_DEMO.md +0 -60
  13. package/COMPATIBILITY_NOTE.md +0 -27
  14. package/CROSS_RUNTIME_POSTURE.md +0 -77
  15. package/EXAMPLE_PATHS.md +0 -53
  16. package/FINAL_CONTRACT.md +0 -445
  17. package/PARTNER_READY_PATH.md +0 -67
  18. package/PUBLIC_DEMO_SCRIPT.md +0 -79
  19. package/SERVICE_CONTRACT.md +0 -207
  20. package/TERMINOLOGY.md +0 -55
  21. package/WHY_XYTARA_XOONYA.md +0 -43
  22. package/XNYA_CONFORMANCE_MARK.md +0 -78
  23. package/XNYA_REFERENCE_IMPLEMENTATIONS.md +0 -157
  24. package/XOONYA_DEFAULT_PATH_MODEL.md +0 -63
  25. package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +0 -63
  26. package/XOONYA_NATIVE_ATOM_SPEC.md +0 -184
  27. package/XOONYA_NATIVE_PROOF_FORMAT.md +0 -570
  28. package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +0 -119
  29. package/XOONYA_PROOF_TRUTH_MODEL.md +0 -58
  30. package/bin/xoonya-release.js +0 -1367
  31. package/bin/xoonya-review.js +0 -70
  32. package/examples/integration_boundary_walkthrough.js +0 -37
  33. package/examples/package_quickstart.js +0 -1007
  34. package/examples/partner_proof_walkthrough.js +0 -68
  35. package/examples/proof_review_walkthrough.js +0 -66
  36. package/examples/review_carried_handoff.js +0 -72
  37. package/index.js +0 -31
  38. package/integrations/PROOF_INTEGRATION_PROCESS.md +0 -45
  39. package/integrations/examples/example-third-party-verifier-registration.record.json +0 -22
  40. package/integrations/registration-record.schema.json +0 -99
  41. package/integrations/registry-snapshot.schema.json +0 -36
  42. package/integrations/registry.js +0 -636
  43. package/integrations/views.js +0 -36
  44. package/lib/adapter_certification_contract.js +0 -90
  45. package/lib/announcement_pack.js +0 -61
  46. package/lib/artifact_distribution_lane_contract.js +0 -54
  47. package/lib/asyncapi_contract.js +0 -135
  48. package/lib/auth_interop_contract.js +0 -69
  49. package/lib/authority_binding_lifecycle_contract.js +0 -182
  50. package/lib/bridge_intelligence.js +0 -102
  51. package/lib/cloudevents_contract.js +0 -79
  52. package/lib/crypto_agility_matrix.js +0 -131
  53. package/lib/default_path_contract.js +0 -380
  54. package/lib/ecosystem_entry.js +0 -64
  55. package/lib/erc8004_proof_lane_contract.js +0 -64
  56. package/lib/event_system_lane_contract.js +0 -76
  57. package/lib/external_proof_import_lane_contract.js +0 -87
  58. package/lib/feature_control_lane_contract.js +0 -54
  59. package/lib/followthrough_truth_contract.js +0 -214
  60. package/lib/framework_lane_contract.js +0 -76
  61. package/lib/governance_disputes_summary.js +0 -36
  62. package/lib/governance_intelligence.js +0 -108
  63. package/lib/identity_interop_contract.js +0 -83
  64. package/lib/integration_matrix_contract.js +0 -81
  65. package/lib/launch_narrative.js +0 -53
  66. package/lib/machine_identity_registry_contract.js +0 -199
  67. package/lib/major_rails_proof_lane_contract.js +0 -87
  68. package/lib/offline_verifiability_recovery_contract.js +0 -155
  69. package/lib/openapi_contract.js +0 -227
  70. package/lib/operational_receipt_contract.js +0 -165
  71. package/lib/outreach_proof.js +0 -71
  72. package/lib/phase_10_closeout_pack.js +0 -45
  73. package/lib/phase_10_completion_pack.js +0 -76
  74. package/lib/phase_10_decision_record_pack.js +0 -54
  75. package/lib/phase_10_decision_resolution_pack.js +0 -53
  76. package/lib/phase_10_demand_signal_adapters_proof_pack.js +0 -74
  77. package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +0 -74
  78. package/lib/phase_10_freeze_baseline_pack.js +0 -67
  79. package/lib/phase_10_freeze_review_pack.js +0 -64
  80. package/lib/phase_10_gate_pack.js +0 -57
  81. package/lib/phase_10_long_tail_continuity_pack.js +0 -80
  82. package/lib/phase_10_long_tail_ecosystem_pack.js +0 -68
  83. package/lib/phase_10_niche_extension_registry_proof_pack.js +0 -74
  84. package/lib/phase_1_claude_mcp_pack.js +0 -60
  85. package/lib/phase_1_claude_mcp_proof_pack.js +0 -57
  86. package/lib/phase_1_ecosystem_pack.js +0 -51
  87. package/lib/phase_1_openai_codex_pack.js +0 -60
  88. package/lib/phase_1_openai_codex_proof_pack.js +0 -57
  89. package/lib/phase_2_base_proof_pack.js +0 -71
  90. package/lib/phase_2_base_usdc_proof_pack.js +0 -72
  91. package/lib/phase_2_closeout_pack.js +0 -65
  92. package/lib/phase_2_completion_pack.js +0 -113
  93. package/lib/phase_2_decision_record_pack.js +0 -66
  94. package/lib/phase_2_decision_resolution_pack.js +0 -69
  95. package/lib/phase_2_eth_proof_pack.js +0 -70
  96. package/lib/phase_2_evm_base_proof_pack.js +0 -73
  97. package/lib/phase_2_evm_proof_pack.js +0 -71
  98. package/lib/phase_2_flip_preview_pack.js +0 -60
  99. package/lib/phase_2_freeze_review_pack.js +0 -99
  100. package/lib/phase_2_gate_pack.js +0 -77
  101. package/lib/phase_2_payment_rails_pack.js +0 -71
  102. package/lib/phase_2_usdc_proof_pack.js +0 -71
  103. package/lib/phase_3_brc_proof_pack.js +0 -81
  104. package/lib/phase_3_bsv_teranode_proof_pack.js +0 -81
  105. package/lib/phase_3_closeout_pack.js +0 -62
  106. package/lib/phase_3_completion_pack.js +0 -92
  107. package/lib/phase_3_decision_record_pack.js +0 -64
  108. package/lib/phase_3_decision_resolution_pack.js +0 -69
  109. package/lib/phase_3_freeze_baseline_pack.js +0 -67
  110. package/lib/phase_3_freeze_review_pack.js +0 -80
  111. package/lib/phase_3_gate_pack.js +0 -76
  112. package/lib/phase_3_metanet_proof_pack.js +0 -81
  113. package/lib/phase_3_native_bsv_pack.js +0 -89
  114. package/lib/phase_3_native_continuity_pack.js +0 -82
  115. package/lib/phase_4_attestation_proof_pack.js +0 -75
  116. package/lib/phase_4_closeout_pack.js +0 -45
  117. package/lib/phase_4_completion_pack.js +0 -82
  118. package/lib/phase_4_decision_record_pack.js +0 -54
  119. package/lib/phase_4_decision_resolution_pack.js +0 -45
  120. package/lib/phase_4_erc8004_proof_pack.js +0 -76
  121. package/lib/phase_4_freeze_baseline_pack.js +0 -67
  122. package/lib/phase_4_freeze_review_pack.js +0 -68
  123. package/lib/phase_4_gate_pack.js +0 -58
  124. package/lib/phase_4_identity_registry_proof_pack.js +0 -75
  125. package/lib/phase_4_identity_trust_pack.js +0 -73
  126. package/lib/phase_4_trust_continuity_pack.js +0 -86
  127. package/lib/phase_5_antelope_proof_pack.js +0 -76
  128. package/lib/phase_5_closeout_pack.js +0 -44
  129. package/lib/phase_5_completion_pack.js +0 -82
  130. package/lib/phase_5_decision_record_pack.js +0 -54
  131. package/lib/phase_5_decision_resolution_pack.js +0 -45
  132. package/lib/phase_5_freeze_baseline_pack.js +0 -67
  133. package/lib/phase_5_freeze_review_pack.js +0 -68
  134. package/lib/phase_5_gate_pack.js +0 -58
  135. package/lib/phase_5_major_rails_continuity_pack.js +0 -86
  136. package/lib/phase_5_major_rails_pack.js +0 -74
  137. package/lib/phase_5_proton_xpr_proof_pack.js +0 -76
  138. package/lib/phase_5_solana_proof_pack.js +0 -76
  139. package/lib/phase_6_autogen_proof_pack.js +0 -74
  140. package/lib/phase_6_closeout_pack.js +0 -46
  141. package/lib/phase_6_completion_pack.js +0 -77
  142. package/lib/phase_6_decision_record_pack.js +0 -54
  143. package/lib/phase_6_decision_resolution_pack.js +0 -53
  144. package/lib/phase_6_framework_continuity_pack.js +0 -81
  145. package/lib/phase_6_framework_runtime_pack.js +0 -68
  146. package/lib/phase_6_freeze_baseline_pack.js +0 -68
  147. package/lib/phase_6_freeze_review_pack.js +0 -65
  148. package/lib/phase_6_gate_pack.js +0 -59
  149. package/lib/phase_6_langchain_proof_pack.js +0 -74
  150. package/lib/phase_6_langgraph_proof_pack.js +0 -74
  151. package/lib/phase_6_semantic_kernel_proof_pack.js +0 -74
  152. package/lib/phase_7_closeout_pack.js +0 -45
  153. package/lib/phase_7_completion_pack.js +0 -85
  154. package/lib/phase_7_decision_record_pack.js +0 -53
  155. package/lib/phase_7_decision_resolution_pack.js +0 -53
  156. package/lib/phase_7_event_system_continuity_pack.js +0 -89
  157. package/lib/phase_7_event_system_pack.js +0 -76
  158. package/lib/phase_7_freeze_baseline_pack.js +0 -74
  159. package/lib/phase_7_freeze_review_pack.js +0 -65
  160. package/lib/phase_7_gate_pack.js +0 -58
  161. package/lib/phase_7_kafka_proof_pack.js +0 -76
  162. package/lib/phase_7_mqtt_proof_pack.js +0 -76
  163. package/lib/phase_7_nats_proof_pack.js +0 -76
  164. package/lib/phase_7_webhook_event_bus_proof_pack.js +0 -76
  165. package/lib/phase_8_closeout_pack.js +0 -46
  166. package/lib/phase_8_completion_pack.js +0 -82
  167. package/lib/phase_8_decision_record_pack.js +0 -54
  168. package/lib/phase_8_decision_resolution_pack.js +0 -53
  169. package/lib/phase_8_external_receipt_import_proof_pack.js +0 -74
  170. package/lib/phase_8_external_result_import_proof_pack.js +0 -74
  171. package/lib/phase_8_freeze_baseline_pack.js +0 -71
  172. package/lib/phase_8_freeze_review_pack.js +0 -64
  173. package/lib/phase_8_gate_pack.js +0 -58
  174. package/lib/phase_8_proof_bridge_continuity_pack.js +0 -86
  175. package/lib/phase_8_proof_bridges_pack.js +0 -72
  176. package/lib/phase_8_proof_bundle_normalization_proof_pack.js +0 -74
  177. package/lib/phase_9_closeout_pack.js +0 -46
  178. package/lib/phase_9_completion_pack.js +0 -82
  179. package/lib/phase_9_custody_refs_proof_pack.js +0 -74
  180. package/lib/phase_9_decision_record_pack.js +0 -54
  181. package/lib/phase_9_decision_resolution_pack.js +0 -53
  182. package/lib/phase_9_freeze_baseline_pack.js +0 -71
  183. package/lib/phase_9_freeze_review_pack.js +0 -64
  184. package/lib/phase_9_gate_pack.js +0 -58
  185. package/lib/phase_9_operator_accounting_bridges_proof_pack.js +0 -74
  186. package/lib/phase_9_treasury_connectivity_pack.js +0 -72
  187. package/lib/phase_9_treasury_continuity_pack.js +0 -86
  188. package/lib/phase_9_treasury_destinations_proof_pack.js +0 -74
  189. package/lib/phase_program_pack.js +0 -47
  190. package/lib/proof_bridge_lane_contract.js +0 -82
  191. package/lib/proof_truth_contract.js +0 -224
  192. package/lib/provenance_lane_contract.js +0 -54
  193. package/lib/provider_lane_contract.js +0 -67
  194. package/lib/public_surface_policy_contract.js +0 -111
  195. package/lib/publish_plan.js +0 -51
  196. package/lib/release_candidate.js +0 -50
  197. package/lib/release_center.js +0 -1037
  198. package/lib/release_history.js +0 -206
  199. package/lib/release_manifest.js +0 -114
  200. package/lib/release_pack.js +0 -391
  201. package/lib/result_package_trust_lane_contract.js +0 -74
  202. package/lib/review_intelligence.js +0 -100
  203. package/lib/role_freeze.js +0 -436
  204. package/lib/shared_signals_lane_contract.js +0 -54
  205. package/lib/signed_audit_provenance_contract.js +0 -93
  206. package/lib/telemetry_lane_contract.js +0 -54
  207. package/lib/treasury_proof_lane_contract.js +0 -83
  208. package/lib/trust_intelligence.js +0 -106
  209. package/lib/trust_portability_boundary_contract.js +0 -66
  210. package/lib/trust_portability_pack.js +0 -224
  211. package/lib/verification_service_pack.js +0 -149
  212. package/proof_sdk.js +0 -6692
  213. package/reference/python/README.md +0 -35
  214. package/reference/python/requirements-optional.txt +0 -1
  215. package/reference/python/verify_vectors.py +0 -223
  216. package/reference/python/xnya_reference.py +0 -810
  217. package/reference/rust/Cargo.toml +0 -11
  218. package/reference/rust/README.md +0 -28
  219. package/reference/rust/src/lib.rs +0 -87
  220. package/scripts/registry_cli.js +0 -157
  221. package/scripts/verify_all.js +0 -603
  222. package/scripts/verify_control_plane_contracts.js +0 -34
  223. package/scripts/verify_control_plane_routes.js +0 -70
  224. package/scripts/verify_examples.js +0 -19
  225. package/scripts/verify_external_proof_import_gate.js +0 -84
  226. package/scripts/verify_external_proof_signature.js +0 -142
  227. package/scripts/verify_forgery_resistance.js +0 -281
  228. package/scripts/verify_integrations.js +0 -170
  229. package/scripts/verify_native_hybrid_design_gate.js +0 -114
  230. package/scripts/verify_paid_execute.js +0 -133
  231. package/scripts/verify_paywall_flag.js +0 -86
  232. package/scripts/verify_reference_promotion_gate.js +0 -74
  233. package/scripts/verify_reference_python.js +0 -49
  234. package/scripts/verify_reference_python_crypto.js +0 -87
  235. package/scripts/verify_reference_rust_scaffold.js +0 -50
  236. package/scripts/verify_service.js +0 -3038
  237. package/scripts/verify_tooling.js +0 -1251
  238. package/scripts/verify_trust_portability.js +0 -56
  239. package/scripts/verify_verification_services.js +0 -56
  240. package/server.js +0 -4430
@@ -1,63 +0,0 @@
1
- # xoonya Default Path Model
2
-
3
- `xoonya` should feel immediate from the surface the caller already uses.
4
-
5
- For `3.0.0`, the public proof story cannot only live across scattered review routes and helper commands.
6
-
7
- It needs one frozen answer to:
8
-
9
- - how a caller brings proof-side input in
10
- - how they review it
11
- - how they verify or run proof followthrough
12
- - how they emit durable proof artifacts
13
- - how bridge and governance followthrough remain attached
14
-
15
- ## Core Rule
16
-
17
- All supported proof entry surfaces must converge on one spine:
18
-
19
- `receive -> review -> run/emit -> verify -> inspect/governance`
20
-
21
- Surface-specific ergonomics are allowed.
22
- Surface-specific proof truth models are not.
23
-
24
- ## Supported Surface Families
25
-
26
- The frozen `3.0.0` default-path model covers:
27
-
28
- - CLI and terminal
29
- - direct API
30
- - carried handoff review
31
- - native proof loop
32
- - service-to-service and embedded review
33
-
34
- ## What Changes Across Surfaces
35
-
36
- What may change:
37
-
38
- - the first entrypoint
39
- - whether the caller starts from a handoff review, a proof loop, or a verification command
40
- - whether output is returned as CLI JSON, API JSON, or embedded review state
41
-
42
- What must not change:
43
-
44
- - proof truth
45
- - review posture
46
- - verification posture
47
- - bridge carry
48
- - governance followthrough
49
-
50
- ## Machine-Readable Surfaces
51
-
52
- - `GET /v1/default-path`
53
- - `GET /v1/default-path/summary`
54
- - `GET /v1/default-path/:surface_id`
55
-
56
- ## Launch Standard
57
-
58
- For `3.0.0`, this model is considered real only if:
59
-
60
- - each listed surface has a callable first path
61
- - each listed surface can review or verify before claiming completion
62
- - each listed surface converges into the shared proof truth model
63
- - each listed surface can preserve bridge and governance followthrough where needed
@@ -1,63 +0,0 @@
1
- # xoonya Followthrough Truth Model
2
-
3
- `xoonya` cannot reach a truthful `3.0.0` if its followthrough story is left as scattered bridge, governance, trust-portability, and verification endpoints.
4
-
5
- For the public launch line, it needs one frozen answer to:
6
-
7
- - what proof-side followthrough is publicly claimable
8
- - what trust portability is real and bounded
9
- - what bridge carry is real and bounded
10
- - what governance and dispute posture is real and bounded
11
- - what must remain outside the public `xoonya` claim boundary
12
-
13
- ## Core Rule
14
-
15
- All public followthrough claims must stay inside one bounded proof-side truth:
16
-
17
- `verify -> carry -> review -> govern -> preserve continuity`
18
-
19
- `xoonya` may expose many helper routes.
20
- It may not imply unbounded scope.
21
-
22
- ## Covered Followthrough Families
23
-
24
- The frozen `3.0.0` followthrough truth model covers:
25
-
26
- - verification services
27
- - trust portability
28
- - bridge followthrough
29
- - governance followthrough
30
-
31
- ## What This Model Allows Us To Claim
32
-
33
- We can publicly claim:
34
-
35
- - proof bundles, receipts, and handoffs can be verified and replayed through real public surfaces
36
- - trust can remain portable across the listed identity, delegation, delivery, and settlement-linked review lanes
37
- - bridge carry can preserve operator and compatibility review without becoming the runtime owner
38
- - governance can preserve disputes, signoff, interpretation, and handoff continuity without pretending to be universal legal truth
39
-
40
- ## What This Model Does Not Allow Us To Claim
41
-
42
- We do not publicly claim:
43
-
44
- - unbounded runtime execution truth
45
- - universal external chain truth
46
- - universal custody truth
47
- - universal identity truth
48
- - universal legal or regulatory judgment truth
49
-
50
- ## Machine-Readable Surfaces
51
-
52
- - `GET /v1/followthrough-truth`
53
- - `GET /v1/followthrough-truth/summary`
54
- - `GET /v1/followthrough-truth/:profile_id`
55
-
56
- ## Launch Standard
57
-
58
- For `3.0.0`, this model is considered real only if:
59
-
60
- - each listed profile has callable first-party surfaces
61
- - each listed profile stays attached to proof truth and proof review
62
- - each listed profile has an explicit claim boundary
63
- - no launch copy overstates `xoonya` beyond these frozen followthrough profiles
@@ -1,184 +0,0 @@
1
- # xoonya Native Atom Specification
2
-
3
- Status: formal spec pack active
4
-
5
- Spec version: `xoonya-native-atom-spec/v1`
6
-
7
- ## Decision
8
-
9
- The canonical xoonya Native atom magic is `XNYA`.
10
-
11
- No other magic value is part of the xoonya Native atom standard. Implementations that use a different discriminator are separate formats and must not claim xoonya Native atom compatibility.
12
-
13
- `XNYA` is four bytes, not three, because a fixed 4-byte ASCII discriminator is easier to index, validate, debug, and defend than a shorter clever header.
14
-
15
- ## Repository Strategy
16
-
17
- The native atom spec ships inside the `xoonya` package first.
18
-
19
- This is intentional:
20
-
21
- - there is one public website and one xoonya package surface today
22
- - the verifier implementation and conformance vectors live beside the spec
23
- - builders should not need another repo to understand the native proof path
24
-
25
- A separate standards repo can be created later if external adoption, independent governance, or standards-body work needs it. Until then, separate extraction would add coordination overhead before the standard has enough external pressure to justify it.
26
-
27
- ## Atom Purpose
28
-
29
- The xoonya Native atom is a fixed-size commitment record.
30
-
31
- It answers:
32
-
33
- > Which typed machine identity committed to which payload hash under which frozen xoonya Native version line?
34
-
35
- It does not contain:
36
-
37
- - signatures
38
- - timestamps
39
- - prices
40
- - balances
41
- - settlement references
42
- - custody references
43
- - chain identifiers
44
- - runtime metadata
45
- - policy decisions
46
- - governance outcomes
47
-
48
- Those belong in canonical payloads, proof envelopes, profiles, and runtime consumers.
49
-
50
- ## Version 1
51
-
52
- Atom version: `xoonya-native-atom/v1`
53
-
54
- Fixed size: `58` bytes
55
-
56
- Purpose: classical minimal identity and payload commitment.
57
-
58
- Layout:
59
-
60
- ```text
61
- MAGIC(4) | VERSION(1) | TYPE(1) | AGENT_ID(20) | PAYLOAD_HASH(32)
62
- ```
63
-
64
- Fields:
65
-
66
- | Field | Size | Rule |
67
- | --- | ---: | --- |
68
- | `MAGIC` | 4 | ASCII `XNYA` |
69
- | `VERSION` | 1 | `0x01` |
70
- | `TYPE` | 1 | `0x01`, `0x02`, or `0x03` |
71
- | `AGENT_ID` | 20 | `HASH160("xoonya:agent:v1:" || identity_material)` |
72
- | `PAYLOAD_HASH` | 32 | `SHA256("xoonya:payload:v1:" || payload_bytes)` or all-zero sentinel when absent |
73
-
74
- ## Version 2
75
-
76
- Atom version: `xoonya-native-atom/v2`
77
-
78
- Fixed size: `70` bytes
79
-
80
- Purpose: PQ-horizon identity commitment with 32-byte agent digest.
81
-
82
- Layout:
83
-
84
- ```text
85
- MAGIC(4) | VERSION(1) | TYPE(1) | AGENT_ID(32) | PAYLOAD_HASH(32)
86
- ```
87
-
88
- Fields:
89
-
90
- | Field | Size | Rule |
91
- | --- | ---: | --- |
92
- | `MAGIC` | 4 | ASCII `XNYA` |
93
- | `VERSION` | 1 | `0x02` |
94
- | `TYPE` | 1 | `0x01`, `0x02`, or `0x03` |
95
- | `AGENT_ID` | 32 | `SHA256("xoonya:agent:v2:" || identity_material)` |
96
- | `PAYLOAD_HASH` | 32 | `SHA256("xoonya:payload:v2:" || payload_bytes)` or all-zero sentinel when absent |
97
-
98
- ## Record Types
99
-
100
- | Code | Name | Meaning |
101
- | --- | --- | --- |
102
- | `0x01` | register | registration or first commitment |
103
- | `0x02` | update | update or lifecycle continuation |
104
- | `0x03` | revoke | revoke or lifecycle close |
105
-
106
- The atom does not define lifecycle policy. Profiles define evidence semantics above the atom.
107
-
108
- ## Identity Material
109
-
110
- `identity_material = type_prefix || raw_identity_bytes`
111
-
112
- Initial type registry:
113
-
114
- | Prefix | ID | Canonical Material |
115
- | --- | --- | --- |
116
- | `0x01` | `secp256k1-public-key` | compressed SEC1 public key |
117
- | `0x02` | `device-identifier` | raw device identifier bytes |
118
- | `0x03` | `did-string` | UTF-8 DID string, no BOM, no normalization |
119
- | `0x04` | `opaque-agent-key` | opaque agent key bytes |
120
- | `0x05` | `dilithium-public-key` | suite-defined PQ public key bytes |
121
- | `0x06` | `falcon-public-key` | suite-defined PQ public key bytes |
122
- | `0x07` | `sphincs-plus-public-key` | suite-defined PQ public key bytes |
123
-
124
- Implementations must not lowercase, normalize, trim, parse, or reinterpret `raw_identity_bytes` after canonicalization by the type-specific producer.
125
-
126
- ## Payload Sentinel Rule
127
-
128
- If there is no payload, `PAYLOAD_HASH` is exactly 32 zero bytes.
129
-
130
- If payload bytes are present, implementations must compute the domain-separated payload hash and must not accept a present payload as the all-zero sentinel.
131
-
132
- ## Validation Rules
133
-
134
- Validators must reject:
135
-
136
- - non-hex display input
137
- - byte length other than 58 or 70
138
- - bad magic
139
- - version/length mismatch
140
- - unsupported type
141
- - unsupported identity type prefix when identity material is supplied
142
- - agent ID mismatch when identity material is supplied
143
- - payload hash mismatch when payload bytes are supplied
144
- - ambiguous all-zero payload hash for a present payload
145
-
146
- Validation must be deterministic: the same bytes produce the same accept/reject reason.
147
-
148
- ## Deterministic Error Codes
149
-
150
- Validators should return stable machine-readable error codes alongside any human-readable reason.
151
-
152
- Current reject codes:
153
-
154
- | Code | Meaning |
155
- | --- | --- |
156
- | `atom_hex_not_hex` | Input is not hex display form. |
157
- | `atom_unsupported_length` | Byte length is not a supported XNYA atom length. |
158
- | `atom_bad_magic` | Magic is not `XNYA`. |
159
- | `atom_unsupported_record_type` | Record type is not `0x01`, `0x02`, or `0x03`. |
160
- | `atom_version_length_mismatch` | Version byte and atom length do not match. |
161
- | `identity_unsupported_type_prefix` | Supplied identity material uses an unregistered prefix. |
162
- | `identity_missing_raw_bytes` | Supplied identity material contains only the type prefix. |
163
- | `agent_id_mismatch` | Supplied identity material does not derive the atom agent id. |
164
- | `payload_hash_mismatch` | Supplied payload bytes do not derive the atom payload hash. |
165
-
166
- Error-code stability matters because third-party validators and agents should be able to compare failures without parsing prose.
167
-
168
- ## Version Freeze Rule
169
-
170
- Once a version line is published:
171
-
172
- - field order must not change
173
- - field sizes must not change
174
- - hash derivation must not change
175
- - validation semantics must not change
176
- - reserved behavior must not be silently introduced
177
-
178
- Any breaking change requires a new version line.
179
-
180
- ## V3 Contingency
181
-
182
- `xoonya-native-atom/v3-contingency` is not an implementation target.
183
-
184
- It is reserved for a material digest-family shift, such as a practical break in SHA-256 assumptions. If it is ever needed, it should remain fixed length, deterministic, and semantic-free.