xoonya 3.1.0 → 3.1.1

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 (248) hide show
  1. package/.env.example +10 -2
  2. package/CARRIED_HANDOFF_DEMO.md +60 -60
  3. package/COMPATIBILITY_NOTE.md +27 -27
  4. package/CROSS_RUNTIME_POSTURE.md +77 -77
  5. package/EXAMPLE_PATHS.md +53 -53
  6. package/FINAL_CONTRACT.md +445 -445
  7. package/LICENSE +201 -201
  8. package/NOTICE +3 -3
  9. package/PARTNER_READY_PATH.md +67 -67
  10. package/PUBLIC_DEMO_SCRIPT.md +79 -79
  11. package/README.md +839 -808
  12. package/RELEASE_NOTES.md +18 -15
  13. package/SERVICE_CONTRACT.md +207 -207
  14. package/START_HERE.md +159 -159
  15. package/TERMINOLOGY.md +55 -55
  16. package/WHY_XYTARA_XOONYA.md +43 -43
  17. package/XNYA_CONFORMANCE_MARK.md +78 -78
  18. package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -157
  19. package/XOONYA_DEFAULT_PATH_MODEL.md +63 -63
  20. package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +63 -63
  21. package/XOONYA_NATIVE_ATOM_SPEC.md +184 -184
  22. package/XOONYA_NATIVE_PROOF_FORMAT.md +570 -527
  23. package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +119 -119
  24. package/XOONYA_PROOF_TRUTH_MODEL.md +58 -58
  25. package/bin/xoonya-first-run.js +184 -184
  26. package/bin/xoonya-release.js +1367 -1367
  27. package/bin/xoonya-review.js +70 -70
  28. package/bin/xoonya.js +82 -82
  29. package/examples/integration_boundary_walkthrough.js +37 -37
  30. package/examples/package_quickstart.js +1007 -1007
  31. package/examples/partner_proof_walkthrough.js +68 -68
  32. package/examples/proof_review_walkthrough.js +66 -66
  33. package/examples/review_carried_handoff.js +72 -72
  34. package/index.js +31 -31
  35. package/integrations/PROOF_INTEGRATION_PROCESS.md +45 -45
  36. package/integrations/examples/example-third-party-verifier-registration.record.json +22 -22
  37. package/integrations/registration-record.schema.json +99 -99
  38. package/integrations/registry-snapshot.schema.json +36 -36
  39. package/integrations/registry.js +636 -636
  40. package/integrations/views.js +36 -36
  41. package/lib/adapter_certification_contract.js +90 -90
  42. package/lib/announcement_pack.js +61 -61
  43. package/lib/artifact_distribution_lane_contract.js +54 -54
  44. package/lib/asyncapi_contract.js +135 -135
  45. package/lib/auth_interop_contract.js +69 -69
  46. package/lib/authority_binding_lifecycle_contract.js +182 -182
  47. package/lib/bridge_intelligence.js +102 -102
  48. package/lib/cloudevents_contract.js +79 -79
  49. package/lib/crypto_agility_matrix.js +125 -125
  50. package/lib/default_path_contract.js +380 -380
  51. package/lib/ecosystem_entry.js +64 -64
  52. package/lib/erc8004_proof_lane_contract.js +64 -64
  53. package/lib/event_system_lane_contract.js +76 -76
  54. package/lib/external_proof_import_lane_contract.js +87 -87
  55. package/lib/feature_control_lane_contract.js +54 -54
  56. package/lib/followthrough_truth_contract.js +214 -214
  57. package/lib/framework_lane_contract.js +76 -76
  58. package/lib/governance_disputes_summary.js +36 -36
  59. package/lib/governance_intelligence.js +108 -108
  60. package/lib/identity_interop_contract.js +83 -83
  61. package/lib/integration_matrix_contract.js +81 -81
  62. package/lib/launch_narrative.js +53 -53
  63. package/lib/machine_identity_registry_contract.js +199 -199
  64. package/lib/major_rails_proof_lane_contract.js +87 -87
  65. package/lib/offline_verifiability_recovery_contract.js +155 -155
  66. package/lib/openapi_contract.js +227 -227
  67. package/lib/operational_receipt_contract.js +165 -165
  68. package/lib/outreach_proof.js +71 -71
  69. package/lib/phase_10_closeout_pack.js +45 -45
  70. package/lib/phase_10_completion_pack.js +76 -76
  71. package/lib/phase_10_decision_record_pack.js +54 -54
  72. package/lib/phase_10_decision_resolution_pack.js +53 -53
  73. package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -74
  74. package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -74
  75. package/lib/phase_10_freeze_baseline_pack.js +67 -67
  76. package/lib/phase_10_freeze_review_pack.js +64 -64
  77. package/lib/phase_10_gate_pack.js +57 -57
  78. package/lib/phase_10_long_tail_continuity_pack.js +80 -80
  79. package/lib/phase_10_long_tail_ecosystem_pack.js +68 -68
  80. package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -74
  81. package/lib/phase_1_claude_mcp_pack.js +60 -60
  82. package/lib/phase_1_claude_mcp_proof_pack.js +57 -57
  83. package/lib/phase_1_ecosystem_pack.js +51 -51
  84. package/lib/phase_1_openai_codex_pack.js +60 -60
  85. package/lib/phase_1_openai_codex_proof_pack.js +57 -57
  86. package/lib/phase_2_base_proof_pack.js +71 -71
  87. package/lib/phase_2_base_usdc_proof_pack.js +72 -72
  88. package/lib/phase_2_closeout_pack.js +65 -65
  89. package/lib/phase_2_completion_pack.js +113 -113
  90. package/lib/phase_2_decision_record_pack.js +66 -66
  91. package/lib/phase_2_decision_resolution_pack.js +69 -69
  92. package/lib/phase_2_eth_proof_pack.js +70 -70
  93. package/lib/phase_2_evm_base_proof_pack.js +73 -73
  94. package/lib/phase_2_evm_proof_pack.js +71 -71
  95. package/lib/phase_2_flip_preview_pack.js +60 -60
  96. package/lib/phase_2_freeze_review_pack.js +99 -99
  97. package/lib/phase_2_gate_pack.js +77 -77
  98. package/lib/phase_2_payment_rails_pack.js +71 -71
  99. package/lib/phase_2_usdc_proof_pack.js +71 -71
  100. package/lib/phase_3_brc_proof_pack.js +81 -81
  101. package/lib/phase_3_bsv_teranode_proof_pack.js +81 -81
  102. package/lib/phase_3_closeout_pack.js +62 -62
  103. package/lib/phase_3_completion_pack.js +92 -92
  104. package/lib/phase_3_decision_record_pack.js +64 -64
  105. package/lib/phase_3_decision_resolution_pack.js +69 -69
  106. package/lib/phase_3_freeze_baseline_pack.js +67 -67
  107. package/lib/phase_3_freeze_review_pack.js +80 -80
  108. package/lib/phase_3_gate_pack.js +76 -76
  109. package/lib/phase_3_metanet_proof_pack.js +81 -81
  110. package/lib/phase_3_native_bsv_pack.js +89 -89
  111. package/lib/phase_3_native_continuity_pack.js +82 -82
  112. package/lib/phase_4_attestation_proof_pack.js +75 -75
  113. package/lib/phase_4_closeout_pack.js +45 -45
  114. package/lib/phase_4_completion_pack.js +82 -82
  115. package/lib/phase_4_decision_record_pack.js +54 -54
  116. package/lib/phase_4_decision_resolution_pack.js +45 -45
  117. package/lib/phase_4_erc8004_proof_pack.js +76 -76
  118. package/lib/phase_4_freeze_baseline_pack.js +67 -67
  119. package/lib/phase_4_freeze_review_pack.js +68 -68
  120. package/lib/phase_4_gate_pack.js +58 -58
  121. package/lib/phase_4_identity_registry_proof_pack.js +75 -75
  122. package/lib/phase_4_identity_trust_pack.js +73 -73
  123. package/lib/phase_4_trust_continuity_pack.js +86 -86
  124. package/lib/phase_5_antelope_proof_pack.js +76 -76
  125. package/lib/phase_5_closeout_pack.js +44 -44
  126. package/lib/phase_5_completion_pack.js +82 -82
  127. package/lib/phase_5_decision_record_pack.js +54 -54
  128. package/lib/phase_5_decision_resolution_pack.js +45 -45
  129. package/lib/phase_5_freeze_baseline_pack.js +67 -67
  130. package/lib/phase_5_freeze_review_pack.js +68 -68
  131. package/lib/phase_5_gate_pack.js +58 -58
  132. package/lib/phase_5_major_rails_continuity_pack.js +86 -86
  133. package/lib/phase_5_major_rails_pack.js +74 -74
  134. package/lib/phase_5_proton_xpr_proof_pack.js +76 -76
  135. package/lib/phase_5_solana_proof_pack.js +76 -76
  136. package/lib/phase_6_autogen_proof_pack.js +74 -74
  137. package/lib/phase_6_closeout_pack.js +46 -46
  138. package/lib/phase_6_completion_pack.js +77 -77
  139. package/lib/phase_6_decision_record_pack.js +54 -54
  140. package/lib/phase_6_decision_resolution_pack.js +53 -53
  141. package/lib/phase_6_framework_continuity_pack.js +81 -81
  142. package/lib/phase_6_framework_runtime_pack.js +68 -68
  143. package/lib/phase_6_freeze_baseline_pack.js +68 -68
  144. package/lib/phase_6_freeze_review_pack.js +65 -65
  145. package/lib/phase_6_gate_pack.js +59 -59
  146. package/lib/phase_6_langchain_proof_pack.js +74 -74
  147. package/lib/phase_6_langgraph_proof_pack.js +74 -74
  148. package/lib/phase_6_semantic_kernel_proof_pack.js +74 -74
  149. package/lib/phase_7_closeout_pack.js +45 -45
  150. package/lib/phase_7_completion_pack.js +85 -85
  151. package/lib/phase_7_decision_record_pack.js +53 -53
  152. package/lib/phase_7_decision_resolution_pack.js +53 -53
  153. package/lib/phase_7_event_system_continuity_pack.js +89 -89
  154. package/lib/phase_7_event_system_pack.js +76 -76
  155. package/lib/phase_7_freeze_baseline_pack.js +74 -74
  156. package/lib/phase_7_freeze_review_pack.js +65 -65
  157. package/lib/phase_7_gate_pack.js +58 -58
  158. package/lib/phase_7_kafka_proof_pack.js +76 -76
  159. package/lib/phase_7_mqtt_proof_pack.js +76 -76
  160. package/lib/phase_7_nats_proof_pack.js +76 -76
  161. package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -76
  162. package/lib/phase_8_closeout_pack.js +46 -46
  163. package/lib/phase_8_completion_pack.js +82 -82
  164. package/lib/phase_8_decision_record_pack.js +54 -54
  165. package/lib/phase_8_decision_resolution_pack.js +53 -53
  166. package/lib/phase_8_external_receipt_import_proof_pack.js +74 -74
  167. package/lib/phase_8_external_result_import_proof_pack.js +74 -74
  168. package/lib/phase_8_freeze_baseline_pack.js +71 -71
  169. package/lib/phase_8_freeze_review_pack.js +64 -64
  170. package/lib/phase_8_gate_pack.js +58 -58
  171. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
  172. package/lib/phase_8_proof_bridges_pack.js +72 -72
  173. package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -74
  174. package/lib/phase_9_closeout_pack.js +46 -46
  175. package/lib/phase_9_completion_pack.js +82 -82
  176. package/lib/phase_9_custody_refs_proof_pack.js +74 -74
  177. package/lib/phase_9_decision_record_pack.js +54 -54
  178. package/lib/phase_9_decision_resolution_pack.js +53 -53
  179. package/lib/phase_9_freeze_baseline_pack.js +71 -71
  180. package/lib/phase_9_freeze_review_pack.js +64 -64
  181. package/lib/phase_9_gate_pack.js +58 -58
  182. package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -74
  183. package/lib/phase_9_treasury_connectivity_pack.js +72 -72
  184. package/lib/phase_9_treasury_continuity_pack.js +86 -86
  185. package/lib/phase_9_treasury_destinations_proof_pack.js +74 -74
  186. package/lib/phase_program_pack.js +47 -47
  187. package/lib/proof_bridge_lane_contract.js +82 -82
  188. package/lib/proof_truth_contract.js +224 -224
  189. package/lib/provenance_lane_contract.js +54 -54
  190. package/lib/provider_lane_contract.js +67 -67
  191. package/lib/public_surface_policy_contract.js +111 -111
  192. package/lib/publish_plan.js +51 -51
  193. package/lib/release_candidate.js +50 -50
  194. package/lib/release_center.js +1037 -1037
  195. package/lib/release_history.js +206 -206
  196. package/lib/release_manifest.js +114 -114
  197. package/lib/release_pack.js +391 -391
  198. package/lib/result_package_trust_lane_contract.js +74 -74
  199. package/lib/review_intelligence.js +100 -100
  200. package/lib/role_freeze.js +436 -436
  201. package/lib/shared_signals_lane_contract.js +54 -54
  202. package/lib/signed_audit_provenance_contract.js +93 -93
  203. package/lib/telemetry_lane_contract.js +54 -54
  204. package/lib/treasury_proof_lane_contract.js +83 -83
  205. package/lib/trust_intelligence.js +106 -106
  206. package/lib/trust_portability_boundary_contract.js +66 -66
  207. package/lib/trust_portability_pack.js +224 -224
  208. package/lib/verification_service_pack.js +149 -149
  209. package/package.json +98 -97
  210. package/proof_sdk.js +6561 -6265
  211. package/reference/python/README.md +35 -35
  212. package/reference/python/__pycache__/xnya_reference.cpython-314.pyc +0 -0
  213. package/reference/python/requirements-optional.txt +1 -1
  214. package/reference/python/verify_vectors.py +223 -223
  215. package/reference/python/xnya_reference.py +810 -810
  216. package/reference/rust/Cargo.toml +11 -11
  217. package/reference/rust/README.md +28 -28
  218. package/reference/rust/src/lib.rs +87 -87
  219. package/scripts/registry_cli.js +157 -157
  220. package/scripts/verify_all.js +603 -603
  221. package/scripts/verify_control_plane_contracts.js +34 -34
  222. package/scripts/verify_control_plane_routes.js +70 -70
  223. package/scripts/verify_examples.js +19 -19
  224. package/scripts/verify_external_proof_import_gate.js +84 -84
  225. package/scripts/verify_forgery_resistance.js +281 -0
  226. package/scripts/verify_integrations.js +170 -170
  227. package/scripts/verify_native_hybrid_design_gate.js +114 -114
  228. package/scripts/verify_reference_promotion_gate.js +74 -74
  229. package/scripts/verify_reference_python.js +49 -49
  230. package/scripts/verify_reference_python_crypto.js +87 -87
  231. package/scripts/verify_reference_rust_scaffold.js +50 -50
  232. package/scripts/verify_release_candidate.js +131 -131
  233. package/scripts/verify_service.js +3038 -2940
  234. package/scripts/verify_tooling.js +1251 -1251
  235. package/scripts/verify_trust_portability.js +56 -56
  236. package/scripts/verify_vectors.js +192 -192
  237. package/scripts/verify_verification_services.js +56 -56
  238. package/server.js +4223 -4099
  239. package/vectors/adversarial-vectors.json +552 -552
  240. package/vectors/conformance-vectors.json +446 -446
  241. package/vectors/native-atom-vectors.json +101 -101
  242. package/vectors/native-payload-profile-vectors.json +50 -50
  243. package/OPERATIONS_RUNBOOK.md +0 -50
  244. package/OPERATOR_START_HERE.md +0 -67
  245. package/PROGRAM_COMPLETE_RELEASE.md +0 -52
  246. package/PROGRAM_STATUS.md +0 -57
  247. package/PUBLISH_PLAN.md +0 -25
  248. package/RELEASE_CHECKLIST.md +0 -16
@@ -1,114 +1,114 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const crypto = require("crypto");
5
- const sdk = require("..");
6
-
7
- function runNativeHybridVerification() {
8
- const readiness = sdk.summarizexoonyaNativeHybridReadinessPack();
9
- assert.strictEqual(readiness.status, "implemented", "hybrid readiness must be implemented");
10
- assert.strictEqual(readiness.implemented_hybrid_suite_count >= 1, true, "hybrid readiness must expose implemented suites");
11
- assert.strictEqual(
12
- readiness.current_decision.includes("runtime_supported"),
13
- true,
14
- "hybrid readiness must describe runtime-supported suites"
15
- );
16
-
17
- const event = sdk.canonicalizeEvent({
18
- version: "canonical-event-bundle/v1",
19
- domain_id: "hybrid.live",
20
- sequence: "1",
21
- actor_id: "agent-hybrid",
22
- adapter_source: "verify_native_hybrid_design_gate",
23
- event_type: "native.hybrid.verify",
24
- event_hash: "89".repeat(32)
25
- });
26
-
27
- const classical = crypto.generateKeyPairSync("ed25519");
28
- const pq = crypto.generateKeyPairSync("ml-dsa-65");
29
- const receipt = sdk.emitReceipt(event, {
30
- agent_identity: "agent-hybrid-signing",
31
- algorithm: "xoonya-native-hybrid-v1",
32
- identity_ref: "did:xoonya:agent-hybrid-signing",
33
- classical_signature_suite: "ed25519",
34
- pq_signature_suite: "ml-dsa-65",
35
- classical_public_key_pem: classical.publicKey.export({ type: "spki", format: "pem" }),
36
- classical_private_key_pem: classical.privateKey.export({ type: "pkcs8", format: "pem" }),
37
- pq_public_key_pem: pq.publicKey.export({ type: "spki", format: "pem" }),
38
- pq_private_key_pem: pq.privateKey.export({ type: "pkcs8", format: "pem" })
39
- });
40
-
41
- const verification = sdk.verifyProofBundle(sdk.buildProofBundle({
42
- ceb: event,
43
- receipt
44
- }));
45
- assert.strictEqual(verification.valid, true, "hybrid method must verify");
46
- assert.strictEqual(
47
- verification.verification_state,
48
- "verified_native_hybrid_signature",
49
- "hybrid method verification state mismatch"
50
- );
51
-
52
- const downgradeEvent = sdk.canonicalizeEvent({
53
- version: "canonical-event-bundle/v1",
54
- domain_id: "hybrid.downgrade",
55
- sequence: "1",
56
- actor_id: "agent-hybrid",
57
- adapter_source: "verify_native_hybrid_design_gate",
58
- event_type: "native.hybrid.downgrade",
59
- event_hash: "90".repeat(32)
60
- });
61
- const detachedReceipt = sdk.emitReceipt(downgradeEvent, {
62
- agent_identity: "agent-hybrid-signing",
63
- algorithm: "detached-assertion-v1",
64
- signature: receipt.signature
65
- });
66
- const downgradeVerification = sdk.verifyProofBundle(sdk.buildProofBundle({
67
- ceb: downgradeEvent,
68
- receipt: detachedReceipt
69
- }));
70
- assert.strictEqual(downgradeVerification.valid, false, "hybrid-looking signature must not verify as detached");
71
- assert.strictEqual(
72
- downgradeVerification.reason,
73
- "signature_method_mismatch",
74
- "hybrid-looking external signature must fail as method mismatch"
75
- );
76
-
77
- return {
78
- ok: true,
79
- product: "xoonya",
80
- category: "xoonya-native-hybrid-verification",
81
- method: "xoonya-native-hybrid-v1",
82
- readiness_status: readiness.status,
83
- implemented_hybrid_suites: readiness.implemented_hybrid_suites,
84
- verification_state: verification.verification_state,
85
- downgrade_reject_reason: downgradeVerification.reason,
86
- boundary: "registered_runtime_supported_vector_covered_hybrid_suites_may_be_claimed"
87
- };
88
- }
89
-
90
- function main() {
91
- const json = process.argv.includes("--json");
92
- const summary = runNativeHybridVerification();
93
- if (json) {
94
- process.stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
95
- return;
96
- }
97
- process.stdout.write(
98
- [
99
- "xoonya verify:native-hybrid-gate passed",
100
- `method: ${summary.method}`,
101
- `readiness: ${summary.readiness_status}`,
102
- `verification state: ${summary.verification_state}`,
103
- `downgrade reject: ${summary.downgrade_reject_reason}`
104
- ].join("\n") + "\n"
105
- );
106
- }
107
-
108
- if (require.main === module) {
109
- main();
110
- }
111
-
112
- module.exports = {
113
- runNativeHybridVerification
114
- };
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const crypto = require("crypto");
5
+ const sdk = require("..");
6
+
7
+ function runNativeHybridVerification() {
8
+ const readiness = sdk.summarizexoonyaNativeHybridReadinessPack();
9
+ assert.strictEqual(readiness.status, "implemented", "hybrid readiness must be implemented");
10
+ assert.strictEqual(readiness.implemented_hybrid_suite_count >= 1, true, "hybrid readiness must expose implemented suites");
11
+ assert.strictEqual(
12
+ readiness.current_decision.includes("runtime_supported"),
13
+ true,
14
+ "hybrid readiness must describe runtime-supported suites"
15
+ );
16
+
17
+ const event = sdk.canonicalizeEvent({
18
+ version: "canonical-event-bundle/v1",
19
+ domain_id: "hybrid.live",
20
+ sequence: "1",
21
+ actor_id: "agent-hybrid",
22
+ adapter_source: "verify_native_hybrid_design_gate",
23
+ event_type: "native.hybrid.verify",
24
+ event_hash: "89".repeat(32)
25
+ });
26
+
27
+ const classical = crypto.generateKeyPairSync("ed25519");
28
+ const pq = crypto.generateKeyPairSync("ml-dsa-65");
29
+ const receipt = sdk.emitReceipt(event, {
30
+ agent_identity: "agent-hybrid-signing",
31
+ algorithm: "xoonya-native-hybrid-v1",
32
+ identity_ref: "did:xoonya:agent-hybrid-signing",
33
+ classical_signature_suite: "ed25519",
34
+ pq_signature_suite: "ml-dsa-65",
35
+ classical_public_key_pem: classical.publicKey.export({ type: "spki", format: "pem" }),
36
+ classical_private_key_pem: classical.privateKey.export({ type: "pkcs8", format: "pem" }),
37
+ pq_public_key_pem: pq.publicKey.export({ type: "spki", format: "pem" }),
38
+ pq_private_key_pem: pq.privateKey.export({ type: "pkcs8", format: "pem" })
39
+ });
40
+
41
+ const verification = sdk.verifyProofBundle(sdk.buildProofBundle({
42
+ ceb: event,
43
+ receipt
44
+ }));
45
+ assert.strictEqual(verification.valid, true, "hybrid method must verify");
46
+ assert.strictEqual(
47
+ verification.verification_state,
48
+ "verified_native_hybrid_signature",
49
+ "hybrid method verification state mismatch"
50
+ );
51
+
52
+ const downgradeEvent = sdk.canonicalizeEvent({
53
+ version: "canonical-event-bundle/v1",
54
+ domain_id: "hybrid.downgrade",
55
+ sequence: "1",
56
+ actor_id: "agent-hybrid",
57
+ adapter_source: "verify_native_hybrid_design_gate",
58
+ event_type: "native.hybrid.downgrade",
59
+ event_hash: "90".repeat(32)
60
+ });
61
+ const detachedReceipt = sdk.emitReceipt(downgradeEvent, {
62
+ agent_identity: "agent-hybrid-signing",
63
+ algorithm: "detached-assertion-v1",
64
+ signature: receipt.signature
65
+ });
66
+ const downgradeVerification = sdk.verifyProofBundle(sdk.buildProofBundle({
67
+ ceb: downgradeEvent,
68
+ receipt: detachedReceipt
69
+ }));
70
+ assert.strictEqual(downgradeVerification.valid, false, "hybrid-looking signature must not verify as detached");
71
+ assert.strictEqual(
72
+ downgradeVerification.reason,
73
+ "signature_method_mismatch",
74
+ "hybrid-looking external signature must fail as method mismatch"
75
+ );
76
+
77
+ return {
78
+ ok: true,
79
+ product: "xoonya",
80
+ category: "xoonya-native-hybrid-verification",
81
+ method: "xoonya-native-hybrid-v1",
82
+ readiness_status: readiness.status,
83
+ implemented_hybrid_suites: readiness.implemented_hybrid_suites,
84
+ verification_state: verification.verification_state,
85
+ downgrade_reject_reason: downgradeVerification.reason,
86
+ boundary: "registered_runtime_supported_vector_covered_hybrid_suites_may_be_claimed"
87
+ };
88
+ }
89
+
90
+ function main() {
91
+ const json = process.argv.includes("--json");
92
+ const summary = runNativeHybridVerification();
93
+ if (json) {
94
+ process.stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
95
+ return;
96
+ }
97
+ process.stdout.write(
98
+ [
99
+ "xoonya verify:native-hybrid-gate passed",
100
+ `method: ${summary.method}`,
101
+ `readiness: ${summary.readiness_status}`,
102
+ `verification state: ${summary.verification_state}`,
103
+ `downgrade reject: ${summary.downgrade_reject_reason}`
104
+ ].join("\n") + "\n"
105
+ );
106
+ }
107
+
108
+ if (require.main === module) {
109
+ main();
110
+ }
111
+
112
+ module.exports = {
113
+ runNativeHybridVerification
114
+ };
@@ -1,74 +1,74 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const {
5
- buildxoonyaNativeReferenceImplementationPack,
6
- summarizexoonyaNativeReferenceImplementationPack,
7
- validatexoonyaNativeReferencePromotionEvidence
8
- } = require("../proof_sdk");
9
-
10
- function buildValidPromotionEvidence(pack, language = "python") {
11
- return {
12
- language,
13
- candidate_repository_ref: `xoonya-native-${language}@candidate`,
14
- vector_sets_passed: pack.required_vector_sets.slice(),
15
- deterministic_error_code_parity_ref: `xnya.reference.error_codes.${language}.2026-04-22`,
16
- independent_parser_ref: `xnya.reference.parser.${language}.2026-04-22`,
17
- signature_crypto_parity_ref: `xnya.reference.crypto.${language}.2026-04-22`,
18
- round_trip_ref: `xnya.reference.round_trip.${language}.2026-04-22`,
19
- conformance_mark_review_ref: `xnya.reference.conformance_mark.${language}.2026-04-22`,
20
- forbidden_claim_review_ref: `xnya.reference.claim_boundary.${language}.2026-04-22`,
21
- wraps_javascript_runtime: false
22
- };
23
- }
24
-
25
- function assertRejected(pack, evidence, expectedCode) {
26
- const validation = validatexoonyaNativeReferencePromotionEvidence(pack, evidence);
27
- assert.strictEqual(validation.promotion_allowed, false, `expected ${expectedCode} to block reference promotion`);
28
- assert.strictEqual(
29
- validation.rejection_codes.includes(expectedCode),
30
- true,
31
- `missing deterministic rejection code ${expectedCode}`
32
- );
33
- return validation;
34
- }
35
-
36
- function main() {
37
- const pack = buildxoonyaNativeReferenceImplementationPack();
38
- const summary = summarizexoonyaNativeReferenceImplementationPack();
39
- const validPythonEvidence = buildValidPromotionEvidence(pack, "python");
40
- const validPythonPromotion = validatexoonyaNativeReferencePromotionEvidence(pack, validPythonEvidence);
41
-
42
- assert.strictEqual(pack.category, "xoonya-native-reference-implementation-pack", "native reference pack category mismatch");
43
- assert.strictEqual(summary.category, "xoonya-native-reference-implementation-summary", "native reference summary category mismatch");
44
- assert.strictEqual(pack.implemented_reference_implementations.length, 1, "only JavaScript should be implemented today");
45
- assert.strictEqual(pack.deterministic_rejection_codes.length >= 11, true, "reference promotion rejection codes missing");
46
- assert.strictEqual(summary.deterministic_rejection_code_count, pack.deterministic_rejection_codes.length, "summary rejection code count mismatch");
47
- assert.strictEqual(validPythonPromotion.promotion_allowed, true, "complete Python promotion evidence should pass validation");
48
- assert.deepStrictEqual(validPythonPromotion.rejection_codes, [], "complete Python evidence should not carry rejection codes");
49
-
50
- assertRejected(pack, buildValidPromotionEvidence(pack, "javascript"), "reference_language_not_registered");
51
- assertRejected(pack, { ...validPythonEvidence, candidate_repository_ref: null }, "candidate_repository_missing");
52
- assertRejected(pack, { ...validPythonEvidence, vector_sets_passed: pack.required_vector_sets.slice(0, 1) }, "required_vector_set_missing");
53
- assertRejected(pack, { ...validPythonEvidence, deterministic_error_code_parity_ref: null }, "deterministic_error_code_parity_missing");
54
- assertRejected(pack, { ...validPythonEvidence, independent_parser_ref: null }, "independent_parser_evidence_missing");
55
- assertRejected(pack, { ...validPythonEvidence, signature_crypto_parity_ref: null }, "signature_crypto_parity_missing");
56
- assertRejected(pack, { ...validPythonEvidence, round_trip_ref: null }, "round_trip_evidence_missing");
57
- assertRejected(pack, { ...validPythonEvidence, conformance_mark_review_ref: null }, "conformance_mark_review_missing");
58
- assertRejected(pack, { ...validPythonEvidence, forbidden_claim_review_ref: null }, "forbidden_claim_review_missing");
59
- assertRejected(pack, { ...validPythonEvidence, wraps_javascript_runtime: true }, "javascript_wrapper_forbidden");
60
- assertRejected(pack, { ...validPythonEvidence, npm_token: "npm_accidental_secret" }, "secret_material_forbidden");
61
-
62
- const output = {
63
- ok: true,
64
- product: "xoonya",
65
- category: "xoonya-native-reference-promotion-gate-verification",
66
- status: "reference_promotion_requires_independent_vector_crypto_round_trip_and_mark_evidence",
67
- deterministic_rejection_code_count: pack.deterministic_rejection_codes.length,
68
- adversarial_case_count: 11,
69
- boundary: "python_and_rust_reference_claims_remain_gated_until_independent_promotion_evidence_is_complete"
70
- };
71
- process.stdout.write(`${JSON.stringify(output, null, 2)}\n`);
72
- }
73
-
74
- main();
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const {
5
+ buildxoonyaNativeReferenceImplementationPack,
6
+ summarizexoonyaNativeReferenceImplementationPack,
7
+ validatexoonyaNativeReferencePromotionEvidence
8
+ } = require("../proof_sdk");
9
+
10
+ function buildValidPromotionEvidence(pack, language = "python") {
11
+ return {
12
+ language,
13
+ candidate_repository_ref: `xoonya-native-${language}@candidate`,
14
+ vector_sets_passed: pack.required_vector_sets.slice(),
15
+ deterministic_error_code_parity_ref: `xnya.reference.error_codes.${language}.2026-04-22`,
16
+ independent_parser_ref: `xnya.reference.parser.${language}.2026-04-22`,
17
+ signature_crypto_parity_ref: `xnya.reference.crypto.${language}.2026-04-22`,
18
+ round_trip_ref: `xnya.reference.round_trip.${language}.2026-04-22`,
19
+ conformance_mark_review_ref: `xnya.reference.conformance_mark.${language}.2026-04-22`,
20
+ forbidden_claim_review_ref: `xnya.reference.claim_boundary.${language}.2026-04-22`,
21
+ wraps_javascript_runtime: false
22
+ };
23
+ }
24
+
25
+ function assertRejected(pack, evidence, expectedCode) {
26
+ const validation = validatexoonyaNativeReferencePromotionEvidence(pack, evidence);
27
+ assert.strictEqual(validation.promotion_allowed, false, `expected ${expectedCode} to block reference promotion`);
28
+ assert.strictEqual(
29
+ validation.rejection_codes.includes(expectedCode),
30
+ true,
31
+ `missing deterministic rejection code ${expectedCode}`
32
+ );
33
+ return validation;
34
+ }
35
+
36
+ function main() {
37
+ const pack = buildxoonyaNativeReferenceImplementationPack();
38
+ const summary = summarizexoonyaNativeReferenceImplementationPack();
39
+ const validPythonEvidence = buildValidPromotionEvidence(pack, "python");
40
+ const validPythonPromotion = validatexoonyaNativeReferencePromotionEvidence(pack, validPythonEvidence);
41
+
42
+ assert.strictEqual(pack.category, "xoonya-native-reference-implementation-pack", "native reference pack category mismatch");
43
+ assert.strictEqual(summary.category, "xoonya-native-reference-implementation-summary", "native reference summary category mismatch");
44
+ assert.strictEqual(pack.implemented_reference_implementations.length, 1, "only JavaScript should be implemented today");
45
+ assert.strictEqual(pack.deterministic_rejection_codes.length >= 11, true, "reference promotion rejection codes missing");
46
+ assert.strictEqual(summary.deterministic_rejection_code_count, pack.deterministic_rejection_codes.length, "summary rejection code count mismatch");
47
+ assert.strictEqual(validPythonPromotion.promotion_allowed, true, "complete Python promotion evidence should pass validation");
48
+ assert.deepStrictEqual(validPythonPromotion.rejection_codes, [], "complete Python evidence should not carry rejection codes");
49
+
50
+ assertRejected(pack, buildValidPromotionEvidence(pack, "javascript"), "reference_language_not_registered");
51
+ assertRejected(pack, { ...validPythonEvidence, candidate_repository_ref: null }, "candidate_repository_missing");
52
+ assertRejected(pack, { ...validPythonEvidence, vector_sets_passed: pack.required_vector_sets.slice(0, 1) }, "required_vector_set_missing");
53
+ assertRejected(pack, { ...validPythonEvidence, deterministic_error_code_parity_ref: null }, "deterministic_error_code_parity_missing");
54
+ assertRejected(pack, { ...validPythonEvidence, independent_parser_ref: null }, "independent_parser_evidence_missing");
55
+ assertRejected(pack, { ...validPythonEvidence, signature_crypto_parity_ref: null }, "signature_crypto_parity_missing");
56
+ assertRejected(pack, { ...validPythonEvidence, round_trip_ref: null }, "round_trip_evidence_missing");
57
+ assertRejected(pack, { ...validPythonEvidence, conformance_mark_review_ref: null }, "conformance_mark_review_missing");
58
+ assertRejected(pack, { ...validPythonEvidence, forbidden_claim_review_ref: null }, "forbidden_claim_review_missing");
59
+ assertRejected(pack, { ...validPythonEvidence, wraps_javascript_runtime: true }, "javascript_wrapper_forbidden");
60
+ assertRejected(pack, { ...validPythonEvidence, npm_token: "npm_accidental_secret" }, "secret_material_forbidden");
61
+
62
+ const output = {
63
+ ok: true,
64
+ product: "xoonya",
65
+ category: "xoonya-native-reference-promotion-gate-verification",
66
+ status: "reference_promotion_requires_independent_vector_crypto_round_trip_and_mark_evidence",
67
+ deterministic_rejection_code_count: pack.deterministic_rejection_codes.length,
68
+ adversarial_case_count: 11,
69
+ boundary: "python_and_rust_reference_claims_remain_gated_until_independent_promotion_evidence_is_complete"
70
+ };
71
+ process.stdout.write(`${JSON.stringify(output, null, 2)}\n`);
72
+ }
73
+
74
+ main();
@@ -1,49 +1,49 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const path = require("path");
5
- const { spawnSync } = require("child_process");
6
-
7
- function runPython(command, args) {
8
- return spawnSync(command, args, {
9
- cwd: path.resolve(__dirname, ".."),
10
- encoding: "utf8"
11
- });
12
- }
13
-
14
- function main() {
15
- const script = path.resolve(__dirname, "..", "reference", "python", "verify_vectors.py");
16
- let result = runPython("python", [script]);
17
- if (result.error && result.error.code === "ENOENT") {
18
- result = runPython("py", ["-3", script]);
19
- }
20
- if (result.error) {
21
- throw result.error;
22
- }
23
- if (result.status !== 0) {
24
- process.stderr.write(result.stdout || "");
25
- process.stderr.write(result.stderr || "");
26
- throw new Error("Python XNYA reference vector verification failed");
27
- }
28
- const summary = JSON.parse(result.stdout);
29
- assert.strictEqual(summary.ok, true, "Python XNYA reference summary did not pass");
30
- assert.strictEqual(summary.category, "xnya-python-reference-vector-parity", "Python XNYA reference category mismatch");
31
- assert.strictEqual(summary.atom_vector_count >= 4, true, "Python XNYA atom vectors missing");
32
- assert.strictEqual(summary.atom_adversarial_count >= 9, true, "Python XNYA adversarial vectors missing");
33
- assert.strictEqual(summary.payload_profile_vector_count, 1, "Python XNYP payload vector missing");
34
- assert.strictEqual(summary.proof_bundle_vector_count >= 10, true, "Python proof bundle vectors missing");
35
- assert.strictEqual(summary.proof_bundle_verified_vector_count >= 9, true, "Python proof bundle verified vectors missing");
36
- assert.strictEqual(
37
- summary.native_signed_crypto_gated_vector_count + summary.native_signed_crypto_verified_vector_count,
38
- 1,
39
- "Python native signed crypto vector accounting mismatch"
40
- );
41
- assert.strictEqual(
42
- summary.verified_signature_suite_count === 0 || summary.verified_signature_suite_count === 1,
43
- true,
44
- "Python verified signature suite count mismatch"
45
- );
46
- process.stdout.write("xoonya verify:reference-python passed\n");
47
- }
48
-
49
- main();
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const path = require("path");
5
+ const { spawnSync } = require("child_process");
6
+
7
+ function runPython(command, args) {
8
+ return spawnSync(command, args, {
9
+ cwd: path.resolve(__dirname, ".."),
10
+ encoding: "utf8"
11
+ });
12
+ }
13
+
14
+ function main() {
15
+ const script = path.resolve(__dirname, "..", "reference", "python", "verify_vectors.py");
16
+ let result = runPython("python", [script]);
17
+ if (result.error && result.error.code === "ENOENT") {
18
+ result = runPython("py", ["-3", script]);
19
+ }
20
+ if (result.error) {
21
+ throw result.error;
22
+ }
23
+ if (result.status !== 0) {
24
+ process.stderr.write(result.stdout || "");
25
+ process.stderr.write(result.stderr || "");
26
+ throw new Error("Python XNYA reference vector verification failed");
27
+ }
28
+ const summary = JSON.parse(result.stdout);
29
+ assert.strictEqual(summary.ok, true, "Python XNYA reference summary did not pass");
30
+ assert.strictEqual(summary.category, "xnya-python-reference-vector-parity", "Python XNYA reference category mismatch");
31
+ assert.strictEqual(summary.atom_vector_count >= 4, true, "Python XNYA atom vectors missing");
32
+ assert.strictEqual(summary.atom_adversarial_count >= 9, true, "Python XNYA adversarial vectors missing");
33
+ assert.strictEqual(summary.payload_profile_vector_count, 1, "Python XNYP payload vector missing");
34
+ assert.strictEqual(summary.proof_bundle_vector_count >= 10, true, "Python proof bundle vectors missing");
35
+ assert.strictEqual(summary.proof_bundle_verified_vector_count >= 9, true, "Python proof bundle verified vectors missing");
36
+ assert.strictEqual(
37
+ summary.native_signed_crypto_gated_vector_count + summary.native_signed_crypto_verified_vector_count,
38
+ 1,
39
+ "Python native signed crypto vector accounting mismatch"
40
+ );
41
+ assert.strictEqual(
42
+ summary.verified_signature_suite_count === 0 || summary.verified_signature_suite_count === 1,
43
+ true,
44
+ "Python verified signature suite count mismatch"
45
+ );
46
+ process.stdout.write("xoonya verify:reference-python passed\n");
47
+ }
48
+
49
+ main();
@@ -1,87 +1,87 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const fs = require("fs");
5
- const os = require("os");
6
- const path = require("path");
7
- const { spawnSync } = require("child_process");
8
-
9
- const rootDir = path.resolve(__dirname, "..");
10
-
11
- function run(command, args, options = {}) {
12
- return spawnSync(command, args, {
13
- cwd: rootDir,
14
- encoding: "utf8",
15
- ...options
16
- });
17
- }
18
-
19
- function findPython() {
20
- const direct = run("python", ["--version"]);
21
- if (!direct.error && direct.status === 0) {
22
- return { command: "python", prefixArgs: [] };
23
- }
24
- const launcher = run("py", ["-3", "--version"]);
25
- if (!launcher.error && launcher.status === 0) {
26
- return { command: "py", prefixArgs: ["-3"] };
27
- }
28
- throw new Error("Python 3 is required for the XNYA Python crypto reference check");
29
- }
30
-
31
- function venvPythonPath(venvDir) {
32
- return process.platform === "win32"
33
- ? path.join(venvDir, "Scripts", "python.exe")
34
- : path.join(venvDir, "bin", "python");
35
- }
36
-
37
- function assertOk(result, label) {
38
- if (result.error) {
39
- throw result.error;
40
- }
41
- if (result.status !== 0) {
42
- process.stderr.write(result.stdout || "");
43
- process.stderr.write(result.stderr || "");
44
- throw new Error(`${label} failed`);
45
- }
46
- }
47
-
48
- function main() {
49
- const python = findPython();
50
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "xoonya-python-crypto-"));
51
- const keepVenv = process.env.XOONYA_KEEP_REFERENCE_PYTHON_CRYPTO_VENV === "1";
52
- try {
53
- const venvDir = path.join(tempDir, "venv");
54
- assertOk(
55
- run(python.command, [...python.prefixArgs, "-m", "venv", venvDir]),
56
- "Python venv creation"
57
- );
58
- const venvPython = venvPythonPath(venvDir);
59
- assertOk(
60
- run(venvPython, [
61
- "-m",
62
- "pip",
63
- "install",
64
- "--disable-pip-version-check",
65
- "-r",
66
- path.join(rootDir, "reference", "python", "requirements-optional.txt")
67
- ]),
68
- "Python optional crypto dependency install"
69
- );
70
- const result = run(venvPython, [path.join(rootDir, "reference", "python", "verify_vectors.py")]);
71
- assertOk(result, "Python crypto-enabled XNYA vector verification");
72
- const summary = JSON.parse(result.stdout);
73
- assert.strictEqual(summary.ok, true, "Python crypto-enabled XNYA summary did not pass");
74
- assert.strictEqual(summary.native_signed_crypto_verified_vector_count, 1, "Python Ed25519 vector was not verified");
75
- assert.strictEqual(summary.verified_signature_suite_count, 1, "Python verified signature suite count mismatch");
76
- assert.strictEqual(summary.native_signature_crypto_dependency_missing_count, 0, "Python crypto dependency should be present in isolated venv");
77
- process.stdout.write("xoonya verify:reference-python-crypto passed\n");
78
- } finally {
79
- if (!keepVenv) {
80
- fs.rmSync(tempDir, { recursive: true, force: true });
81
- } else {
82
- process.stdout.write(`kept Python crypto venv at ${tempDir}\n`);
83
- }
84
- }
85
- }
86
-
87
- main();
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const fs = require("fs");
5
+ const os = require("os");
6
+ const path = require("path");
7
+ const { spawnSync } = require("child_process");
8
+
9
+ const rootDir = path.resolve(__dirname, "..");
10
+
11
+ function run(command, args, options = {}) {
12
+ return spawnSync(command, args, {
13
+ cwd: rootDir,
14
+ encoding: "utf8",
15
+ ...options
16
+ });
17
+ }
18
+
19
+ function findPython() {
20
+ const direct = run("python", ["--version"]);
21
+ if (!direct.error && direct.status === 0) {
22
+ return { command: "python", prefixArgs: [] };
23
+ }
24
+ const launcher = run("py", ["-3", "--version"]);
25
+ if (!launcher.error && launcher.status === 0) {
26
+ return { command: "py", prefixArgs: ["-3"] };
27
+ }
28
+ throw new Error("Python 3 is required for the XNYA Python crypto reference check");
29
+ }
30
+
31
+ function venvPythonPath(venvDir) {
32
+ return process.platform === "win32"
33
+ ? path.join(venvDir, "Scripts", "python.exe")
34
+ : path.join(venvDir, "bin", "python");
35
+ }
36
+
37
+ function assertOk(result, label) {
38
+ if (result.error) {
39
+ throw result.error;
40
+ }
41
+ if (result.status !== 0) {
42
+ process.stderr.write(result.stdout || "");
43
+ process.stderr.write(result.stderr || "");
44
+ throw new Error(`${label} failed`);
45
+ }
46
+ }
47
+
48
+ function main() {
49
+ const python = findPython();
50
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "xoonya-python-crypto-"));
51
+ const keepVenv = process.env.XOONYA_KEEP_REFERENCE_PYTHON_CRYPTO_VENV === "1";
52
+ try {
53
+ const venvDir = path.join(tempDir, "venv");
54
+ assertOk(
55
+ run(python.command, [...python.prefixArgs, "-m", "venv", venvDir]),
56
+ "Python venv creation"
57
+ );
58
+ const venvPython = venvPythonPath(venvDir);
59
+ assertOk(
60
+ run(venvPython, [
61
+ "-m",
62
+ "pip",
63
+ "install",
64
+ "--disable-pip-version-check",
65
+ "-r",
66
+ path.join(rootDir, "reference", "python", "requirements-optional.txt")
67
+ ]),
68
+ "Python optional crypto dependency install"
69
+ );
70
+ const result = run(venvPython, [path.join(rootDir, "reference", "python", "verify_vectors.py")]);
71
+ assertOk(result, "Python crypto-enabled XNYA vector verification");
72
+ const summary = JSON.parse(result.stdout);
73
+ assert.strictEqual(summary.ok, true, "Python crypto-enabled XNYA summary did not pass");
74
+ assert.strictEqual(summary.native_signed_crypto_verified_vector_count, 1, "Python Ed25519 vector was not verified");
75
+ assert.strictEqual(summary.verified_signature_suite_count, 1, "Python verified signature suite count mismatch");
76
+ assert.strictEqual(summary.native_signature_crypto_dependency_missing_count, 0, "Python crypto dependency should be present in isolated venv");
77
+ process.stdout.write("xoonya verify:reference-python-crypto passed\n");
78
+ } finally {
79
+ if (!keepVenv) {
80
+ fs.rmSync(tempDir, { recursive: true, force: true });
81
+ } else {
82
+ process.stdout.write(`kept Python crypto venv at ${tempDir}\n`);
83
+ }
84
+ }
85
+ }
86
+
87
+ main();