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 +119 -7
- package/RELEASE_NOTES.md +18 -7
- package/SERVICE_CONTRACT.md +22 -0
- package/START_HERE.md +12 -0
- package/XOONYA_NATIVE_ATOM_SPEC.md +184 -0
- package/XOONYA_NATIVE_PROOF_FORMAT.md +502 -0
- package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +116 -0
- package/bin/xoonya-first-run.js +184 -0
- package/bin/xoonya.js +31 -5
- package/lib/release_history.js +16 -0
- package/package.json +10 -15
- package/proof_sdk.js +2391 -44
- package/server.js +125 -2
- package/vectors/adversarial-vectors.json +373 -2
- package/vectors/conformance-vectors.json +342 -1
- package/vectors/native-atom-vectors.json +101 -0
- package/vectors/native-payload-profile-vectors.json +50 -0
- package/OPERATIONS_RUNBOOK.md +0 -50
- package/OPERATOR_START_HERE.md +0 -67
- package/PROGRAM_COMPLETE_RELEASE.md +0 -52
- package/PROGRAM_STATUS.md +0 -57
- package/PUBLISH_PLAN.md +0 -14
- package/RELEASE_CHECKLIST.md +0 -16
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
|
|
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
|
-
-
|
|
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.
|
|
1
|
+
# xoonya 2.6.0 Release Notes
|
|
2
2
|
|
|
3
|
-
`xoonya` 2.
|
|
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/
|
|
23
|
-
6. inspect `/v1/
|
|
24
|
-
7. inspect `/v1/
|
|
25
|
-
8. inspect `/v1/
|
|
26
|
-
9. inspect `/v1/
|
|
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
|
|
package/SERVICE_CONTRACT.md
CHANGED
|
@@ -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.
|