xoonya 3.1.16 → 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.
- package/README.md +97 -74
- package/RELEASE_NOTES.md +7 -1
- package/START_HERE.md +38 -134
- package/bin/xoonya-first-run.js +22 -10
- package/bin/xoonya.js +61 -29
- package/lib/native_verify.js +1918 -0
- package/package.json +19 -42
- package/scripts/verify_release_candidate.js +243 -116
- package/scripts/verify_vectors.js +351 -104
- package/verify.js +95 -0
- package/.env.example +0 -10
- package/CARRIED_HANDOFF_DEMO.md +0 -60
- package/COMPATIBILITY_NOTE.md +0 -27
- package/CROSS_RUNTIME_POSTURE.md +0 -77
- package/EXAMPLE_PATHS.md +0 -53
- package/FINAL_CONTRACT.md +0 -445
- package/PARTNER_READY_PATH.md +0 -67
- package/PUBLIC_DEMO_SCRIPT.md +0 -79
- package/SERVICE_CONTRACT.md +0 -207
- package/TERMINOLOGY.md +0 -55
- package/WHY_XYTARA_XOONYA.md +0 -43
- package/XNYA_CONFORMANCE_MARK.md +0 -78
- package/XNYA_REFERENCE_IMPLEMENTATIONS.md +0 -157
- package/XOONYA_DEFAULT_PATH_MODEL.md +0 -63
- package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +0 -63
- package/XOONYA_NATIVE_ATOM_SPEC.md +0 -184
- package/XOONYA_NATIVE_PROOF_FORMAT.md +0 -570
- package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +0 -119
- package/XOONYA_PROOF_TRUTH_MODEL.md +0 -58
- package/bin/xoonya-release.js +0 -1367
- package/bin/xoonya-review.js +0 -70
- package/examples/integration_boundary_walkthrough.js +0 -37
- package/examples/package_quickstart.js +0 -1007
- package/examples/partner_proof_walkthrough.js +0 -68
- package/examples/proof_review_walkthrough.js +0 -66
- package/examples/review_carried_handoff.js +0 -72
- package/index.js +0 -31
- package/integrations/PROOF_INTEGRATION_PROCESS.md +0 -45
- package/integrations/examples/example-third-party-verifier-registration.record.json +0 -22
- package/integrations/registration-record.schema.json +0 -99
- package/integrations/registry-snapshot.schema.json +0 -36
- package/integrations/registry.js +0 -636
- package/integrations/views.js +0 -36
- package/lib/adapter_certification_contract.js +0 -90
- package/lib/announcement_pack.js +0 -61
- package/lib/artifact_distribution_lane_contract.js +0 -54
- package/lib/asyncapi_contract.js +0 -135
- package/lib/auth_interop_contract.js +0 -69
- package/lib/authority_binding_lifecycle_contract.js +0 -182
- package/lib/bridge_intelligence.js +0 -102
- package/lib/cloudevents_contract.js +0 -79
- package/lib/crypto_agility_matrix.js +0 -131
- package/lib/default_path_contract.js +0 -380
- package/lib/ecosystem_entry.js +0 -64
- package/lib/erc8004_proof_lane_contract.js +0 -64
- package/lib/event_system_lane_contract.js +0 -76
- package/lib/external_proof_import_lane_contract.js +0 -87
- package/lib/feature_control_lane_contract.js +0 -54
- package/lib/followthrough_truth_contract.js +0 -214
- package/lib/framework_lane_contract.js +0 -76
- package/lib/governance_disputes_summary.js +0 -36
- package/lib/governance_intelligence.js +0 -108
- package/lib/identity_interop_contract.js +0 -83
- package/lib/integration_matrix_contract.js +0 -81
- package/lib/launch_narrative.js +0 -53
- package/lib/machine_identity_registry_contract.js +0 -199
- package/lib/major_rails_proof_lane_contract.js +0 -87
- package/lib/offline_verifiability_recovery_contract.js +0 -155
- package/lib/openapi_contract.js +0 -227
- package/lib/operational_receipt_contract.js +0 -165
- package/lib/outreach_proof.js +0 -71
- package/lib/phase_10_closeout_pack.js +0 -45
- package/lib/phase_10_completion_pack.js +0 -76
- package/lib/phase_10_decision_record_pack.js +0 -54
- package/lib/phase_10_decision_resolution_pack.js +0 -53
- package/lib/phase_10_demand_signal_adapters_proof_pack.js +0 -74
- package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +0 -74
- package/lib/phase_10_freeze_baseline_pack.js +0 -67
- package/lib/phase_10_freeze_review_pack.js +0 -64
- package/lib/phase_10_gate_pack.js +0 -57
- package/lib/phase_10_long_tail_continuity_pack.js +0 -80
- package/lib/phase_10_long_tail_ecosystem_pack.js +0 -68
- package/lib/phase_10_niche_extension_registry_proof_pack.js +0 -74
- package/lib/phase_1_claude_mcp_pack.js +0 -60
- package/lib/phase_1_claude_mcp_proof_pack.js +0 -57
- package/lib/phase_1_ecosystem_pack.js +0 -51
- package/lib/phase_1_openai_codex_pack.js +0 -60
- package/lib/phase_1_openai_codex_proof_pack.js +0 -57
- package/lib/phase_2_base_proof_pack.js +0 -71
- package/lib/phase_2_base_usdc_proof_pack.js +0 -72
- package/lib/phase_2_closeout_pack.js +0 -65
- package/lib/phase_2_completion_pack.js +0 -113
- package/lib/phase_2_decision_record_pack.js +0 -66
- package/lib/phase_2_decision_resolution_pack.js +0 -69
- package/lib/phase_2_eth_proof_pack.js +0 -70
- package/lib/phase_2_evm_base_proof_pack.js +0 -73
- package/lib/phase_2_evm_proof_pack.js +0 -71
- package/lib/phase_2_flip_preview_pack.js +0 -60
- package/lib/phase_2_freeze_review_pack.js +0 -99
- package/lib/phase_2_gate_pack.js +0 -77
- package/lib/phase_2_payment_rails_pack.js +0 -71
- package/lib/phase_2_usdc_proof_pack.js +0 -71
- package/lib/phase_3_brc_proof_pack.js +0 -81
- package/lib/phase_3_bsv_teranode_proof_pack.js +0 -81
- package/lib/phase_3_closeout_pack.js +0 -62
- package/lib/phase_3_completion_pack.js +0 -92
- package/lib/phase_3_decision_record_pack.js +0 -64
- package/lib/phase_3_decision_resolution_pack.js +0 -69
- package/lib/phase_3_freeze_baseline_pack.js +0 -67
- package/lib/phase_3_freeze_review_pack.js +0 -80
- package/lib/phase_3_gate_pack.js +0 -76
- package/lib/phase_3_metanet_proof_pack.js +0 -81
- package/lib/phase_3_native_bsv_pack.js +0 -89
- package/lib/phase_3_native_continuity_pack.js +0 -82
- package/lib/phase_4_attestation_proof_pack.js +0 -75
- package/lib/phase_4_closeout_pack.js +0 -45
- package/lib/phase_4_completion_pack.js +0 -82
- package/lib/phase_4_decision_record_pack.js +0 -54
- package/lib/phase_4_decision_resolution_pack.js +0 -45
- package/lib/phase_4_erc8004_proof_pack.js +0 -76
- package/lib/phase_4_freeze_baseline_pack.js +0 -67
- package/lib/phase_4_freeze_review_pack.js +0 -68
- package/lib/phase_4_gate_pack.js +0 -58
- package/lib/phase_4_identity_registry_proof_pack.js +0 -75
- package/lib/phase_4_identity_trust_pack.js +0 -73
- package/lib/phase_4_trust_continuity_pack.js +0 -86
- package/lib/phase_5_antelope_proof_pack.js +0 -76
- package/lib/phase_5_closeout_pack.js +0 -44
- package/lib/phase_5_completion_pack.js +0 -82
- package/lib/phase_5_decision_record_pack.js +0 -54
- package/lib/phase_5_decision_resolution_pack.js +0 -45
- package/lib/phase_5_freeze_baseline_pack.js +0 -67
- package/lib/phase_5_freeze_review_pack.js +0 -68
- package/lib/phase_5_gate_pack.js +0 -58
- package/lib/phase_5_major_rails_continuity_pack.js +0 -86
- package/lib/phase_5_major_rails_pack.js +0 -74
- package/lib/phase_5_proton_xpr_proof_pack.js +0 -76
- package/lib/phase_5_solana_proof_pack.js +0 -76
- package/lib/phase_6_autogen_proof_pack.js +0 -74
- package/lib/phase_6_closeout_pack.js +0 -46
- package/lib/phase_6_completion_pack.js +0 -77
- package/lib/phase_6_decision_record_pack.js +0 -54
- package/lib/phase_6_decision_resolution_pack.js +0 -53
- package/lib/phase_6_framework_continuity_pack.js +0 -81
- package/lib/phase_6_framework_runtime_pack.js +0 -68
- package/lib/phase_6_freeze_baseline_pack.js +0 -68
- package/lib/phase_6_freeze_review_pack.js +0 -65
- package/lib/phase_6_gate_pack.js +0 -59
- package/lib/phase_6_langchain_proof_pack.js +0 -74
- package/lib/phase_6_langgraph_proof_pack.js +0 -74
- package/lib/phase_6_semantic_kernel_proof_pack.js +0 -74
- package/lib/phase_7_closeout_pack.js +0 -45
- package/lib/phase_7_completion_pack.js +0 -85
- package/lib/phase_7_decision_record_pack.js +0 -53
- package/lib/phase_7_decision_resolution_pack.js +0 -53
- package/lib/phase_7_event_system_continuity_pack.js +0 -89
- package/lib/phase_7_event_system_pack.js +0 -76
- package/lib/phase_7_freeze_baseline_pack.js +0 -74
- package/lib/phase_7_freeze_review_pack.js +0 -65
- package/lib/phase_7_gate_pack.js +0 -58
- package/lib/phase_7_kafka_proof_pack.js +0 -76
- package/lib/phase_7_mqtt_proof_pack.js +0 -76
- package/lib/phase_7_nats_proof_pack.js +0 -76
- package/lib/phase_7_webhook_event_bus_proof_pack.js +0 -76
- package/lib/phase_8_closeout_pack.js +0 -46
- package/lib/phase_8_completion_pack.js +0 -82
- package/lib/phase_8_decision_record_pack.js +0 -54
- package/lib/phase_8_decision_resolution_pack.js +0 -53
- package/lib/phase_8_external_receipt_import_proof_pack.js +0 -74
- package/lib/phase_8_external_result_import_proof_pack.js +0 -74
- package/lib/phase_8_freeze_baseline_pack.js +0 -71
- package/lib/phase_8_freeze_review_pack.js +0 -64
- package/lib/phase_8_gate_pack.js +0 -58
- package/lib/phase_8_proof_bridge_continuity_pack.js +0 -86
- package/lib/phase_8_proof_bridges_pack.js +0 -72
- package/lib/phase_8_proof_bundle_normalization_proof_pack.js +0 -74
- package/lib/phase_9_closeout_pack.js +0 -46
- package/lib/phase_9_completion_pack.js +0 -82
- package/lib/phase_9_custody_refs_proof_pack.js +0 -74
- package/lib/phase_9_decision_record_pack.js +0 -54
- package/lib/phase_9_decision_resolution_pack.js +0 -53
- package/lib/phase_9_freeze_baseline_pack.js +0 -71
- package/lib/phase_9_freeze_review_pack.js +0 -64
- package/lib/phase_9_gate_pack.js +0 -58
- package/lib/phase_9_operator_accounting_bridges_proof_pack.js +0 -74
- package/lib/phase_9_treasury_connectivity_pack.js +0 -72
- package/lib/phase_9_treasury_continuity_pack.js +0 -86
- package/lib/phase_9_treasury_destinations_proof_pack.js +0 -74
- package/lib/phase_program_pack.js +0 -47
- package/lib/proof_bridge_lane_contract.js +0 -82
- package/lib/proof_truth_contract.js +0 -224
- package/lib/provenance_lane_contract.js +0 -54
- package/lib/provider_lane_contract.js +0 -67
- package/lib/public_surface_policy_contract.js +0 -111
- package/lib/publish_plan.js +0 -51
- package/lib/release_candidate.js +0 -50
- package/lib/release_center.js +0 -1037
- package/lib/release_history.js +0 -206
- package/lib/release_manifest.js +0 -114
- package/lib/release_pack.js +0 -391
- package/lib/result_package_trust_lane_contract.js +0 -74
- package/lib/review_intelligence.js +0 -100
- package/lib/role_freeze.js +0 -436
- package/lib/shared_signals_lane_contract.js +0 -54
- package/lib/signed_audit_provenance_contract.js +0 -93
- package/lib/telemetry_lane_contract.js +0 -54
- package/lib/treasury_proof_lane_contract.js +0 -83
- package/lib/trust_intelligence.js +0 -106
- package/lib/trust_portability_boundary_contract.js +0 -66
- package/lib/trust_portability_pack.js +0 -224
- package/lib/verification_service_pack.js +0 -149
- package/proof_sdk.js +0 -6692
- package/reference/python/README.md +0 -35
- package/reference/python/requirements-optional.txt +0 -1
- package/reference/python/verify_vectors.py +0 -223
- package/reference/python/xnya_reference.py +0 -810
- package/reference/rust/Cargo.toml +0 -11
- package/reference/rust/README.md +0 -28
- package/reference/rust/src/lib.rs +0 -87
- package/scripts/registry_cli.js +0 -157
- package/scripts/verify_all.js +0 -603
- package/scripts/verify_control_plane_contracts.js +0 -34
- package/scripts/verify_control_plane_routes.js +0 -70
- package/scripts/verify_examples.js +0 -19
- package/scripts/verify_external_proof_import_gate.js +0 -84
- package/scripts/verify_external_proof_signature.js +0 -142
- package/scripts/verify_forgery_resistance.js +0 -281
- package/scripts/verify_integrations.js +0 -170
- package/scripts/verify_native_hybrid_design_gate.js +0 -114
- package/scripts/verify_paid_execute.js +0 -133
- package/scripts/verify_paywall_flag.js +0 -86
- package/scripts/verify_reference_promotion_gate.js +0 -74
- package/scripts/verify_reference_python.js +0 -49
- package/scripts/verify_reference_python_crypto.js +0 -87
- package/scripts/verify_reference_rust_scaffold.js +0 -50
- package/scripts/verify_service.js +0 -3038
- package/scripts/verify_tooling.js +0 -1251
- package/scripts/verify_trust_portability.js +0 -56
- package/scripts/verify_verification_services.js +0 -56
- 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.
|