xoonya 2.5.0 → 2.6.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # xoonya
2
2
 
3
- `xoonya` is the proof foundation for machine actions.
3
+ `xoonya` is the proof and review foundation for machine actions.
4
4
 
5
5
  It exists to make machine evidence:
6
6
 
@@ -14,12 +14,53 @@ This repo is the proof-side half of the final two-repo public stack. It focuses
14
14
 
15
15
  The 10-phase public program is now complete. `xoonya` is in terminal closeout posture rather than active milestone build posture.
16
16
 
17
+ ## Public Boundary
18
+
19
+ The public adoption story is intentionally narrow:
20
+
21
+ - receive a handoff or event bundle
22
+ - review it
23
+ - verify it
24
+ - emit a durable proof bundle
25
+
26
+ `xoonya` should expose proof, review, and continuity. It should not force outside builders to learn runtime treasury or operator internals just to use the proof layer correctly.
27
+
28
+ ## Universal Proof Shape
29
+
30
+ `xoonya` is intended to be usable from:
31
+
32
+ - CLI and terminal
33
+ - direct API calls
34
+ - chat and agent environments that can submit handoff bundles
35
+ - hosted or embedded review flows
36
+ - partner systems that need deterministic proof verification
37
+
38
+ The shortest public proof loop is:
39
+
40
+ - receive a handoff or event bundle
41
+ - review it
42
+ - verify it
43
+ - emit a durable proof bundle
44
+ - preserve governance and continuity context when needed
45
+
46
+ The current proof breadth already includes:
47
+
48
+ - canonical events, receipts, and proof bundles
49
+ - result-package handoff review and run paths
50
+ - bridge and compatibility review surfaces
51
+ - governance, dispute, and signoff support
52
+ - proof-side continuity for economic consequence carry
53
+ - proof-adjacent integration registration and review
54
+
17
55
  ## One-Line After Install
18
56
 
19
57
  If you only run two commands after install, use:
20
58
 
21
59
  - `xoonya start-here`
60
+ - `xoonya first-run`
61
+ - `xoonya first-run --verify-native --pretty`
22
62
  - `xoonya release --summary`
63
+ - `xoonya conformance`
23
64
 
24
65
  If you want the shortest machine-readable discovery path, inspect:
25
66
 
@@ -39,13 +80,10 @@ If you are new to the proof-side package, use this order:
39
80
  3. run `npm run verify:all`
40
81
  4. use [FINAL_CONTRACT.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/FINAL_CONTRACT.md) and [SERVICE_CONTRACT.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/SERVICE_CONTRACT.md) as the durable public contract
41
82
 
42
- If you are evaluating the post-program operating posture, read:
83
+ If you are reading the GitHub repo and want deeper product context beyond the npm starter path, continue with:
43
84
 
44
- - [PROGRAM_STATUS.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/PROGRAM_STATUS.md)
45
- - [OPERATOR_START_HERE.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/OPERATOR_START_HERE.md)
46
- - [OPERATIONS_RUNBOOK.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/OPERATIONS_RUNBOOK.md)
47
- - [PROGRAM_COMPLETE_RELEASE.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/PROGRAM_COMPLETE_RELEASE.md)
48
85
  - [WHY_XYTARA_XOONYA.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/WHY_XYTARA_XOONYA.md)
86
+ - [PARTNER_READY_PATH.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/PARTNER_READY_PATH.md)
49
87
 
50
88
  If you want one concrete cross-repo adoption story, start with:
51
89
 
@@ -188,6 +226,45 @@ That means the center of gravity is now:
188
226
  - `emitReceipt(...)`
189
227
  - `buildProofBundle(...)`
190
228
  - `verifyProofBundle(...)`
229
+ - `listProofVerificationMethods(...)`
230
+ - `getProofVerificationMethod(...)`
231
+
232
+ ### Verification Methods
233
+
234
+ `xoonya` keeps proof verification method-agnostic. The proof bundle verifier uses a small method registry instead of treating every non-empty signature as equally verified.
235
+
236
+ Current built-in methods:
237
+
238
+ - `legacy-opreturn-v1` verifies the compatibility OP_RETURN receipt path.
239
+ - `detached-assertion-v1` accepts an explicit detached assertion after canonical receipt checks; cryptographic verification is expected to happen outside this helper.
240
+ - `xoonya-native-sha256-v1` verifies Xoonya's native deterministic digest format.
241
+ - `xoonya-native-signed-v1` verifies Xoonya's native signed proof envelope with Ed25519, secp256k1, and P-256 implemented through the explicit suite registry. Other suites stay registry-only until validators exist.
242
+ - `xoonya-native-anchored-v1` verifies Xoonya's native anchor-binding proof envelope for chain, batch, finality, content-hash, or external attestation refs. It verifies the binding, not the external provider or chain truth itself.
243
+ - `jwt-assertion-v1` accepts compact JWT assertion envelopes after canonical receipt checks; JWT signature, issuer, and audience verification remain external to this helper.
244
+ - `did-vc-v1` accepts DID/VC proof envelopes after canonical receipt checks; DID resolution and VC proof validation remain external to this helper.
245
+ - `sd-jwt-vc-v1` accepts SD-JWT VC disclosure envelopes after canonical receipt checks; issuer, holder binding, and disclosure verification remain external to this helper.
246
+ - `signed-envelope-v1` accepts generic signed envelopes after canonical receipt checks; envelope-specific signature verification remains external to this helper.
247
+ - `partner-proof-envelope-v1` accepts partner-specific proof envelopes after canonical receipt checks; partner verifier policy remains external to this helper.
248
+
249
+ `algorithm: "none"` is not a registered verification method and does not verify. External proof methods are first-class registry entries, but Xoonya does not pretend to replace their own cryptographic verifier stacks. The proof core checks the canonical receipt, method registration, and method boundary; issuer-specific validation stays with the relevant JWT, DID/VC, SD-JWT VC, signed-envelope, or partner verifier.
250
+
251
+ ### Xoonya Native Proof Format
252
+
253
+ Xoonya Native is the optional native proof/result/attestation format direction for machine proof. It is not a replacement for JWT, OAuth, OIDC, DID/VC, or SD-JWT VC. Those remain interoperability lanes.
254
+
255
+ The native standard is Xoonya's own fixed-size hot-path commitment atom, cold-path proof envelope, semantic-free core bytes, and deterministic validation. The current implemented native methods are `xoonya-native-sha256-v1`, `xoonya-native-signed-v1`, and `xoonya-native-anchored-v1`. The signed native method verifies Ed25519, secp256k1, and P-256 today and keeps PQ/hybrid suites in the registry until their validators are implemented, so the standard stays agnostic without overclaiming. The anchored native method binds receipts to declared anchor/finality/attestation refs without claiming the external system has been independently verified by Xoonya.
256
+
257
+ The atom ladder is treated as native Xoonya design, not a runtime dependency: `xoonya-native-atom/v1` is the 58-byte classical commitment atom, `xoonya-native-atom/v2` is the 70-byte PQ-horizon identity commitment candidate, and `xoonya-native-atom/v3-contingency` stays reserved for a future digest-family shift only if the underlying hash assumptions materially change.
258
+
259
+ The canonical Xoonya Native atom magic is `XNYA`. No other magic value is part of the Xoonya Native atom standard. The formal atom spec ships inside the `xoonya` package first; a separate standards repo can be extracted later if external governance needs it.
260
+
261
+ XNYA atom conformance now includes stable machine-readable reject codes and adversarial vectors. Passing only the happy-path vectors is not enough to claim Xoonya Native compatibility.
262
+
263
+ The native payload profile is now explicit: `xoonya-native-payload-profile/v1` uses the binary `XNYP` magic and typed fields with deterministic ordering, fixed-width integer encoding, unknown-field policy checks, and no floats or loose JSON semantics. The optional `xoonya-native-line-rate-frame/v1` wraps an existing 58-byte or 70-byte `XNYA` atom with a 2-byte checksum for transport fast rejection; it does not change the atom and does not claim signature, encryption, custody, settlement, or external finality truth.
264
+
265
+ See [XOONYA_NATIVE_PROOF_FORMAT.md](./XOONYA_NATIVE_PROOF_FORMAT.md).
266
+ See [XOONYA_NATIVE_ATOM_SPEC.md](./XOONYA_NATIVE_ATOM_SPEC.md).
267
+ See [XOONYA_NATIVE_STANDARD_GOVERNANCE.md](./XOONYA_NATIVE_STANDARD_GOVERNANCE.md).
191
268
 
192
269
  ## Compatibility Surface
193
270
 
@@ -199,6 +276,9 @@ Legacy compact receipt and profile helpers are still available during alignment:
199
276
  - `verifyReceiptV2(...)`
200
277
  - `createProofEnvelopeV1(...)`
201
278
  - `verifyProofEnvelopeV1(...)`
279
+ - `createXoonyaNativeAtomV1(...)`
280
+ - `createXoonyaNativeAtomV2(...)`
281
+ - `verifyXoonyaNativeAtom(...)`
202
282
  - `createEconomicReceiptProfileV1(...)`
203
283
  - `verifyEconomicReceiptProfileV1(...)`
204
284
  - `createRegistryProfileV1(...)`
@@ -254,6 +334,23 @@ Primary proof-model routes:
254
334
  - `GET /health`
255
335
  - `GET /v1/proof-center`
256
336
  - `GET /v1/proof-center/summary`
337
+ - `GET /v1/proof-center/native-standard`
338
+ - `GET /v1/proof-center/native-standard/summary`
339
+ - `GET /v1/proof-center/native-atom-spec`
340
+ - `GET /v1/proof-center/native-atom-spec/summary`
341
+ - `GET /v1/proof-center/native-atom-conformance`
342
+ - `GET /v1/proof-center/native-atom-conformance/summary`
343
+ - `GET /v1/proof-center/native-anchor-profile`
344
+ - `GET /v1/proof-center/native-anchor-profile/summary`
345
+ - `GET /v1/proof-center/native-payload-profile`
346
+ - `GET /v1/proof-center/native-payload-profile/summary`
347
+ - `GET /v1/proof-center/native-line-rate-frame`
348
+ - `GET /v1/proof-center/native-line-rate-frame/summary`
349
+ - `GET /v1/proof-center/import-adapter`
350
+ - `GET /v1/proof-center/import-adapter/summary`
351
+ - `POST /v1/proof-center/import-adapter/review`
352
+ - `POST /v1/proof-center/import-adapter/review/summary`
353
+ - `POST /v1/proof-center/import-adapter/run`
257
354
  - `GET /v1/proof-center/default-loops`
258
355
  - `GET /v1/proof-center/default-loops/summary`
259
356
  - `GET /v1/proof-center/default-loop`
@@ -476,6 +573,7 @@ Preserved compatibility routes:
476
573
  Local verification commands:
477
574
 
478
575
  - `npm run verify:package`
576
+ - `npm run verify:conformance`
479
577
  - `npm run verify:vectors`
480
578
  - `npm run verify:examples`
481
579
  - `npm run verify:service`
@@ -489,11 +587,21 @@ The current verification covers:
489
587
  - package export presence
490
588
  - deterministic event hashing
491
589
  - proof-bundle tamper detection
590
+ - public conformance CLI execution through `xoonya conformance --json`
492
591
  - published conformance vectors
493
592
  - published adversarial vectors
494
593
  - package quickstart flow
495
594
  - service routes for both the primary proof model and the legacy compatibility layer
496
595
 
596
+ Public conformance command:
597
+
598
+ ```bash
599
+ xoonya conformance
600
+ xoonya conformance --json
601
+ ```
602
+
603
+ The conformance command verifies the published vector files shipped in the package. The positive set covers `legacy-opreturn-v1`, `detached-assertion-v1`, `xoonya-native-sha256-v1`, `xoonya-native-signed-v1`, `xoonya-native-anchored-v1`, `jwt-assertion-v1`, `did-vc-v1`, `sd-jwt-vc-v1`, `signed-envelope-v1`, and `partner-proof-envelope-v1`. The adversarial set covers bad event versions, missing signatures, mismatched commitments, unsupported methods, ambiguous `none`, replayed receipt context, native digest tampering, native signed proof tampering, native anchored proof tampering, native-to-detached downgrade attempts, and receipt-id mismatches.
604
+
497
605
  Published proof hardening artifacts:
498
606
 
499
607
  - [conformance-vectors.json](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xoonya/vectors/conformance-vectors.json)
@@ -513,8 +621,12 @@ Published proof hardening artifacts:
513
621
  `xoonya` keeps its integration model narrower than `xytara`. The proof-side toolkit is for additive proof helpers only:
514
622
 
515
623
  - identity-material providers
516
- - proof-bundle reference adapters
624
+ - attestation and evidence reference adapters
625
+ - anchor reference adapters
517
626
  - profile verification helpers
627
+ - compatibility-oriented proof integrations
628
+
629
+ This integration toolkit is broader than the proof verification method registry. Verification methods describe how a receipt or proof envelope is admitted at the proof boundary; integrations describe additive proof-side helpers, references, profiles, and staged third-party support that can be reviewed without changing the proof kernel.
518
630
 
519
631
  The package now includes:
520
632
 
package/RELEASE_NOTES.md CHANGED
@@ -1,10 +1,17 @@
1
- # xoonya 2.5.0 Release Notes
1
+ # xoonya 2.6.0 Release Notes
2
2
 
3
- `xoonya` 2.5.0 is the adoption-surface proof line for contracts, provider and framework discovery, bridge trust, observability, provenance, artifact distribution, shared signals, and rollout portability.
3
+ `xoonya` 2.6.0 is the expansion release line for Xoonya Native standard hardening, external proof import, native signed and anchored verification, and strict XNYA payload/frame profile work.
4
4
 
5
5
  Highlights:
6
6
 
7
7
  - umbrella CLI entrypoint with `xoonya start-here`, plus `xoonya review` and `xoonya release`
8
+ - `xoonya-native-signed-v1` verification with Ed25519, secp256k1, and P-256 through the explicit signature-suite registry
9
+ - `xoonya-native-anchored-v1` anchor binding for chain, finality, batch, content-hash, and external attestation refs without claiming external provider truth
10
+ - `xoonya-native-payload-profile/v1` with `XNYP` binary payload canonicalization, typed fields, fixed-width integers, canonical ordering, and unknown-field policy checks
11
+ - `xoonya-native-line-rate-frame/v1` as an optional 60/72-byte transport fast-reject wrapper around existing `XNYA` atoms
12
+ - native payload profile vectors and line-rate frame vectors
13
+ - external proof import adapter for JWT, DID/VC, SD-JWT VC, detached assertions, signed envelopes, and partner proof envelopes
14
+ - native hybrid/PQ readiness and standardization packs that keep `xoonya-native-hybrid-v1` design-gated until validators and vectors are real
8
15
  - first-class public contract lanes for `OpenAPI`, `AsyncAPI`, and `CloudEvents`
9
16
  - first-class provider, framework, and integration-matrix discovery surfaces for the proof side
10
17
  - surfaced proof breadth across `proof-bridge`, `external-proof-import`, `result-package-trust`, major rails, treasury, and registry-backed integrations
@@ -19,11 +26,15 @@ Recommended first checks:
19
26
  2. `xoonya start-here`
20
27
  3. `npm run verify:release-candidate`
21
28
  4. `node examples/partner_proof_walkthrough.js`
22
- 5. inspect `/v1/providers`, `/v1/frameworks`, `/v1/integration-matrix`, and `/v1/proof-bridge`
23
- 6. inspect `/v1/telemetry`, `/v1/provenance`, `/v1/artifact-distribution`, `/v1/shared-signals`, and `/v1/feature-control`
24
- 7. inspect `/v1/role-freeze/package`
25
- 8. inspect `/v1/role-transition` and `/v1/capability-registry-home`
26
- 9. inspect `/v1/proof-center/summary` on the deployed service
29
+ 5. inspect `/v1/proof-center/native-standard/summary`
30
+ 6. inspect `/v1/proof-center/native-payload-profile/summary`
31
+ 7. inspect `/v1/proof-center/native-line-rate-frame/summary`
32
+ 8. inspect `/v1/proof-center/import-adapter/summary`
33
+ 9. inspect `/v1/providers`, `/v1/frameworks`, `/v1/integration-matrix`, and `/v1/proof-bridge`
34
+ 10. inspect `/v1/telemetry`, `/v1/provenance`, `/v1/artifact-distribution`, `/v1/shared-signals`, and `/v1/feature-control`
35
+ 11. inspect `/v1/role-freeze/package`
36
+ 12. inspect `/v1/role-transition` and `/v1/capability-registry-home`
37
+ 13. inspect `/v1/proof-center/summary` on the deployed service
27
38
 
28
39
  Recommended first docs:
29
40
 
@@ -57,6 +57,27 @@ Primary proof-model routes:
57
57
  - `GET /v1/integrations/promotion-workflow`
58
58
  - `GET /v1/proof-center`
59
59
  - `GET /v1/proof-center/summary`
60
+ - `GET /v1/proof-center/native-standard`
61
+ - `GET /v1/proof-center/native-standard/summary`
62
+ - `GET /v1/proof-center/native-hybrid-readiness`
63
+ - `GET /v1/proof-center/native-hybrid-readiness/summary`
64
+ - `GET /v1/proof-center/native-standardization`
65
+ - `GET /v1/proof-center/native-standardization/summary`
66
+ - `GET /v1/proof-center/native-atom-spec`
67
+ - `GET /v1/proof-center/native-atom-spec/summary`
68
+ - `GET /v1/proof-center/native-atom-conformance`
69
+ - `GET /v1/proof-center/native-atom-conformance/summary`
70
+ - `GET /v1/proof-center/native-anchor-profile`
71
+ - `GET /v1/proof-center/native-anchor-profile/summary`
72
+ - `GET /v1/proof-center/native-payload-profile`
73
+ - `GET /v1/proof-center/native-payload-profile/summary`
74
+ - `GET /v1/proof-center/native-line-rate-frame`
75
+ - `GET /v1/proof-center/native-line-rate-frame/summary`
76
+ - `GET /v1/proof-center/import-adapter`
77
+ - `GET /v1/proof-center/import-adapter/summary`
78
+ - `POST /v1/proof-center/import-adapter/review`
79
+ - `POST /v1/proof-center/import-adapter/review/summary`
80
+ - `POST /v1/proof-center/import-adapter/run`
60
81
  - `GET /v1/proof-center/governance`
61
82
  - `GET /v1/proof-center/governance/summary`
62
83
  - `GET /v1/proof-center/bridge`
@@ -167,3 +188,4 @@ This loop is exercised through:
167
188
  - example verification
168
189
  - service verification
169
190
  - conformance/adversarial vector verification
191
+ - public `xoonya conformance` and `xoonya conformance --json` commands
package/START_HERE.md CHANGED
@@ -15,6 +15,18 @@ Its job is to let a caller:
15
15
  3. emit proof-native completion artifacts
16
16
  4. verify the final proof bundle
17
17
 
18
+ For the full public quote -> execute -> prove path, start from:
19
+
20
+ ```text
21
+ https://www.naxytra.com/v1/first-run-kit
22
+ ```
23
+
24
+ Then run the local proof followthrough:
25
+
26
+ ```bash
27
+ xoonya first-run --verify-native --pretty
28
+ ```
29
+
18
30
  ## 2. Run The Fastest Real Example
19
31
 
20
32
  Run:
@@ -0,0 +1,184 @@
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.