xoonya 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/.env.example +2 -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/OPERATIONS_RUNBOOK.md +50 -0
  10. package/OPERATOR_START_HERE.md +67 -0
  11. package/PARTNER_READY_PATH.md +67 -67
  12. package/PROGRAM_COMPLETE_RELEASE.md +52 -0
  13. package/PROGRAM_STATUS.md +57 -0
  14. package/PUBLIC_DEMO_SCRIPT.md +79 -79
  15. package/PUBLISH_PLAN.md +25 -0
  16. package/README.md +807 -732
  17. package/RELEASE_CHECKLIST.md +16 -0
  18. package/RELEASE_NOTES.md +15 -15
  19. package/SERVICE_CONTRACT.md +207 -195
  20. package/START_HERE.md +159 -150
  21. package/TERMINOLOGY.md +55 -55
  22. package/WHY_XYTARA_XOONYA.md +43 -43
  23. package/XNYA_CONFORMANCE_MARK.md +78 -78
  24. package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -157
  25. package/XOONYA_DEFAULT_PATH_MODEL.md +63 -63
  26. package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +63 -63
  27. package/XOONYA_NATIVE_ATOM_SPEC.md +184 -184
  28. package/XOONYA_NATIVE_PROOF_FORMAT.md +527 -527
  29. package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +119 -119
  30. package/XOONYA_PROOF_TRUTH_MODEL.md +58 -58
  31. package/bin/xoonya-first-run.js +184 -184
  32. package/bin/xoonya-release.js +1367 -1367
  33. package/bin/xoonya-review.js +70 -70
  34. package/bin/xoonya.js +82 -82
  35. package/examples/integration_boundary_walkthrough.js +37 -37
  36. package/examples/package_quickstart.js +1007 -1007
  37. package/examples/partner_proof_walkthrough.js +68 -68
  38. package/examples/proof_review_walkthrough.js +66 -66
  39. package/examples/review_carried_handoff.js +72 -72
  40. package/index.js +31 -22
  41. package/integrations/PROOF_INTEGRATION_PROCESS.md +45 -45
  42. package/integrations/examples/example-third-party-verifier-registration.record.json +22 -22
  43. package/integrations/registration-record.schema.json +99 -99
  44. package/integrations/registry-snapshot.schema.json +36 -36
  45. package/integrations/registry.js +636 -636
  46. package/integrations/views.js +36 -36
  47. package/lib/adapter_certification_contract.js +90 -0
  48. package/lib/announcement_pack.js +61 -61
  49. package/lib/artifact_distribution_lane_contract.js +54 -54
  50. package/lib/asyncapi_contract.js +135 -135
  51. package/lib/auth_interop_contract.js +69 -69
  52. package/lib/authority_binding_lifecycle_contract.js +182 -0
  53. package/lib/bridge_intelligence.js +102 -102
  54. package/lib/cloudevents_contract.js +79 -79
  55. package/lib/crypto_agility_matrix.js +125 -0
  56. package/lib/default_path_contract.js +380 -380
  57. package/lib/ecosystem_entry.js +64 -64
  58. package/lib/erc8004_proof_lane_contract.js +64 -64
  59. package/lib/event_system_lane_contract.js +76 -76
  60. package/lib/external_proof_import_lane_contract.js +87 -87
  61. package/lib/feature_control_lane_contract.js +54 -54
  62. package/lib/followthrough_truth_contract.js +214 -214
  63. package/lib/framework_lane_contract.js +76 -76
  64. package/lib/governance_disputes_summary.js +36 -36
  65. package/lib/governance_intelligence.js +108 -108
  66. package/lib/identity_interop_contract.js +83 -83
  67. package/lib/integration_matrix_contract.js +81 -81
  68. package/lib/launch_narrative.js +53 -53
  69. package/lib/machine_identity_registry_contract.js +199 -0
  70. package/lib/major_rails_proof_lane_contract.js +87 -87
  71. package/lib/offline_verifiability_recovery_contract.js +155 -0
  72. package/lib/openapi_contract.js +227 -227
  73. package/lib/operational_receipt_contract.js +165 -0
  74. package/lib/outreach_proof.js +71 -71
  75. package/lib/phase_10_closeout_pack.js +45 -45
  76. package/lib/phase_10_completion_pack.js +76 -76
  77. package/lib/phase_10_decision_record_pack.js +54 -54
  78. package/lib/phase_10_decision_resolution_pack.js +53 -53
  79. package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -74
  80. package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -74
  81. package/lib/phase_10_freeze_baseline_pack.js +67 -67
  82. package/lib/phase_10_freeze_review_pack.js +64 -64
  83. package/lib/phase_10_gate_pack.js +57 -57
  84. package/lib/phase_10_long_tail_continuity_pack.js +80 -80
  85. package/lib/phase_10_long_tail_ecosystem_pack.js +68 -68
  86. package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -74
  87. package/lib/phase_1_claude_mcp_pack.js +60 -60
  88. package/lib/phase_1_claude_mcp_proof_pack.js +57 -57
  89. package/lib/phase_1_ecosystem_pack.js +51 -51
  90. package/lib/phase_1_openai_codex_pack.js +60 -60
  91. package/lib/phase_1_openai_codex_proof_pack.js +57 -57
  92. package/lib/phase_2_base_proof_pack.js +71 -71
  93. package/lib/phase_2_base_usdc_proof_pack.js +72 -72
  94. package/lib/phase_2_closeout_pack.js +65 -65
  95. package/lib/phase_2_completion_pack.js +113 -113
  96. package/lib/phase_2_decision_record_pack.js +66 -66
  97. package/lib/phase_2_decision_resolution_pack.js +69 -69
  98. package/lib/phase_2_eth_proof_pack.js +70 -70
  99. package/lib/phase_2_evm_base_proof_pack.js +73 -73
  100. package/lib/phase_2_evm_proof_pack.js +71 -71
  101. package/lib/phase_2_flip_preview_pack.js +60 -60
  102. package/lib/phase_2_freeze_review_pack.js +99 -99
  103. package/lib/phase_2_gate_pack.js +77 -77
  104. package/lib/phase_2_payment_rails_pack.js +71 -71
  105. package/lib/phase_2_usdc_proof_pack.js +71 -71
  106. package/lib/phase_3_brc_proof_pack.js +81 -81
  107. package/lib/phase_3_bsv_teranode_proof_pack.js +81 -81
  108. package/lib/phase_3_closeout_pack.js +62 -62
  109. package/lib/phase_3_completion_pack.js +92 -92
  110. package/lib/phase_3_decision_record_pack.js +64 -64
  111. package/lib/phase_3_decision_resolution_pack.js +69 -69
  112. package/lib/phase_3_freeze_baseline_pack.js +67 -67
  113. package/lib/phase_3_freeze_review_pack.js +80 -80
  114. package/lib/phase_3_gate_pack.js +76 -76
  115. package/lib/phase_3_metanet_proof_pack.js +81 -81
  116. package/lib/phase_3_native_bsv_pack.js +89 -89
  117. package/lib/phase_3_native_continuity_pack.js +82 -82
  118. package/lib/phase_4_attestation_proof_pack.js +75 -75
  119. package/lib/phase_4_closeout_pack.js +45 -45
  120. package/lib/phase_4_completion_pack.js +82 -82
  121. package/lib/phase_4_decision_record_pack.js +54 -54
  122. package/lib/phase_4_decision_resolution_pack.js +45 -45
  123. package/lib/phase_4_erc8004_proof_pack.js +76 -76
  124. package/lib/phase_4_freeze_baseline_pack.js +67 -67
  125. package/lib/phase_4_freeze_review_pack.js +68 -68
  126. package/lib/phase_4_gate_pack.js +58 -58
  127. package/lib/phase_4_identity_registry_proof_pack.js +75 -75
  128. package/lib/phase_4_identity_trust_pack.js +73 -73
  129. package/lib/phase_4_trust_continuity_pack.js +86 -86
  130. package/lib/phase_5_antelope_proof_pack.js +76 -76
  131. package/lib/phase_5_closeout_pack.js +44 -44
  132. package/lib/phase_5_completion_pack.js +82 -82
  133. package/lib/phase_5_decision_record_pack.js +54 -54
  134. package/lib/phase_5_decision_resolution_pack.js +45 -45
  135. package/lib/phase_5_freeze_baseline_pack.js +67 -67
  136. package/lib/phase_5_freeze_review_pack.js +68 -68
  137. package/lib/phase_5_gate_pack.js +58 -58
  138. package/lib/phase_5_major_rails_continuity_pack.js +86 -86
  139. package/lib/phase_5_major_rails_pack.js +74 -74
  140. package/lib/phase_5_proton_xpr_proof_pack.js +76 -76
  141. package/lib/phase_5_solana_proof_pack.js +76 -76
  142. package/lib/phase_6_autogen_proof_pack.js +74 -74
  143. package/lib/phase_6_closeout_pack.js +46 -46
  144. package/lib/phase_6_completion_pack.js +77 -77
  145. package/lib/phase_6_decision_record_pack.js +54 -54
  146. package/lib/phase_6_decision_resolution_pack.js +53 -53
  147. package/lib/phase_6_framework_continuity_pack.js +81 -81
  148. package/lib/phase_6_framework_runtime_pack.js +68 -68
  149. package/lib/phase_6_freeze_baseline_pack.js +68 -68
  150. package/lib/phase_6_freeze_review_pack.js +65 -65
  151. package/lib/phase_6_gate_pack.js +59 -59
  152. package/lib/phase_6_langchain_proof_pack.js +74 -74
  153. package/lib/phase_6_langgraph_proof_pack.js +74 -74
  154. package/lib/phase_6_semantic_kernel_proof_pack.js +74 -74
  155. package/lib/phase_7_closeout_pack.js +45 -45
  156. package/lib/phase_7_completion_pack.js +85 -85
  157. package/lib/phase_7_decision_record_pack.js +53 -53
  158. package/lib/phase_7_decision_resolution_pack.js +53 -53
  159. package/lib/phase_7_event_system_continuity_pack.js +89 -89
  160. package/lib/phase_7_event_system_pack.js +76 -76
  161. package/lib/phase_7_freeze_baseline_pack.js +74 -74
  162. package/lib/phase_7_freeze_review_pack.js +65 -65
  163. package/lib/phase_7_gate_pack.js +58 -58
  164. package/lib/phase_7_kafka_proof_pack.js +76 -76
  165. package/lib/phase_7_mqtt_proof_pack.js +76 -76
  166. package/lib/phase_7_nats_proof_pack.js +76 -76
  167. package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -76
  168. package/lib/phase_8_closeout_pack.js +46 -46
  169. package/lib/phase_8_completion_pack.js +82 -82
  170. package/lib/phase_8_decision_record_pack.js +54 -54
  171. package/lib/phase_8_decision_resolution_pack.js +53 -53
  172. package/lib/phase_8_external_receipt_import_proof_pack.js +74 -74
  173. package/lib/phase_8_external_result_import_proof_pack.js +74 -74
  174. package/lib/phase_8_freeze_baseline_pack.js +71 -71
  175. package/lib/phase_8_freeze_review_pack.js +64 -64
  176. package/lib/phase_8_gate_pack.js +58 -58
  177. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
  178. package/lib/phase_8_proof_bridges_pack.js +72 -72
  179. package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -74
  180. package/lib/phase_9_closeout_pack.js +46 -46
  181. package/lib/phase_9_completion_pack.js +82 -82
  182. package/lib/phase_9_custody_refs_proof_pack.js +74 -74
  183. package/lib/phase_9_decision_record_pack.js +54 -54
  184. package/lib/phase_9_decision_resolution_pack.js +53 -53
  185. package/lib/phase_9_freeze_baseline_pack.js +71 -71
  186. package/lib/phase_9_freeze_review_pack.js +64 -64
  187. package/lib/phase_9_gate_pack.js +58 -58
  188. package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -74
  189. package/lib/phase_9_treasury_connectivity_pack.js +72 -72
  190. package/lib/phase_9_treasury_continuity_pack.js +86 -86
  191. package/lib/phase_9_treasury_destinations_proof_pack.js +74 -74
  192. package/lib/phase_program_pack.js +47 -47
  193. package/lib/proof_bridge_lane_contract.js +82 -82
  194. package/lib/proof_truth_contract.js +224 -224
  195. package/lib/provenance_lane_contract.js +54 -54
  196. package/lib/provider_lane_contract.js +67 -67
  197. package/lib/public_surface_policy_contract.js +111 -0
  198. package/lib/publish_plan.js +51 -51
  199. package/lib/release_candidate.js +50 -50
  200. package/lib/release_center.js +1037 -1037
  201. package/lib/release_history.js +206 -206
  202. package/lib/release_manifest.js +114 -114
  203. package/lib/release_pack.js +391 -391
  204. package/lib/result_package_trust_lane_contract.js +74 -74
  205. package/lib/review_intelligence.js +100 -100
  206. package/lib/role_freeze.js +436 -436
  207. package/lib/shared_signals_lane_contract.js +54 -54
  208. package/lib/signed_audit_provenance_contract.js +93 -0
  209. package/lib/telemetry_lane_contract.js +54 -54
  210. package/lib/treasury_proof_lane_contract.js +83 -83
  211. package/lib/trust_intelligence.js +106 -106
  212. package/lib/trust_portability_boundary_contract.js +66 -0
  213. package/lib/trust_portability_pack.js +224 -224
  214. package/lib/verification_service_pack.js +149 -149
  215. package/package.json +97 -95
  216. package/proof_sdk.js +6265 -6265
  217. package/reference/python/README.md +35 -35
  218. package/reference/python/requirements-optional.txt +1 -1
  219. package/reference/python/verify_vectors.py +223 -223
  220. package/reference/python/xnya_reference.py +810 -810
  221. package/reference/rust/Cargo.toml +11 -11
  222. package/reference/rust/README.md +28 -28
  223. package/reference/rust/src/lib.rs +87 -87
  224. package/scripts/registry_cli.js +157 -157
  225. package/scripts/verify_all.js +603 -603
  226. package/scripts/verify_control_plane_contracts.js +34 -0
  227. package/scripts/verify_control_plane_routes.js +70 -0
  228. package/scripts/verify_examples.js +19 -19
  229. package/scripts/verify_external_proof_import_gate.js +84 -84
  230. package/scripts/verify_integrations.js +170 -170
  231. package/scripts/verify_native_hybrid_design_gate.js +114 -114
  232. package/scripts/verify_reference_promotion_gate.js +74 -74
  233. package/scripts/verify_reference_python.js +49 -49
  234. package/scripts/verify_reference_python_crypto.js +87 -87
  235. package/scripts/verify_reference_rust_scaffold.js +50 -50
  236. package/scripts/verify_release_candidate.js +131 -131
  237. package/scripts/verify_service.js +2940 -2940
  238. package/scripts/verify_tooling.js +1251 -1251
  239. package/scripts/verify_trust_portability.js +56 -56
  240. package/scripts/verify_vectors.js +192 -192
  241. package/scripts/verify_verification_services.js +56 -56
  242. package/server.js +4099 -3997
  243. package/vectors/adversarial-vectors.json +552 -552
  244. package/vectors/conformance-vectors.json +446 -446
  245. package/vectors/native-atom-vectors.json +101 -101
  246. package/vectors/native-payload-profile-vectors.json +50 -50
@@ -1,1251 +1,1251 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const { execFileSync } = require("child_process");
5
- const path = require("path");
6
-
7
- function runCli(args) {
8
- const output = execFileSync(process.execPath, [
9
- path.resolve(__dirname, "registry_cli.js"),
10
- ...args
11
- ], {
12
- cwd: path.resolve(__dirname, ".."),
13
- encoding: "utf8"
14
- });
15
- return JSON.parse(output);
16
- }
17
-
18
- function main() {
19
- const validation = runCli(["validate-registration", "--example", "verifier"]);
20
- assert.strictEqual(validation.ok, true, "proof registration validation via cli mismatch");
21
- assert.strictEqual(validation.descriptor.integration_id, "partner.verifier.lattice_notary", "proof registration descriptor mismatch");
22
-
23
- const stagedSnapshot = runCli(["export-snapshot", "--registration_state", "staging_registered"]);
24
- assert.strictEqual(stagedSnapshot.snapshot.integration_count >= 1, true, "proof snapshot export via cli mismatch");
25
- assert.strictEqual(stagedSnapshot.snapshot.filters.registration_state, "staging_registered", "proof snapshot filter mismatch");
26
-
27
- const bundledSnapshot = runCli(["export-snapshot", "--bundled", "true", "--proof_scope", "profile_verification"]);
28
- assert.strictEqual(bundledSnapshot.snapshot.integration_count >= 2, true, "proof bundled snapshot export via cli mismatch");
29
- assert.strictEqual(bundledSnapshot.snapshot.filters.proof_scope, "profile_verification", "proof bundled snapshot proof_scope mismatch");
30
-
31
- const promotionReadiness = runCli(["promotion-readiness", "--integration", "partner.verifier.lattice_notary"]);
32
- assert.strictEqual(promotionReadiness.review.ok, true, "proof promotion readiness via cli mismatch");
33
- assert.strictEqual(promotionReadiness.review.integration_id, "partner.verifier.lattice_notary", "proof promotion readiness integration mismatch");
34
- assert.strictEqual(promotionReadiness.review.promotion_readiness.review_ready, true, "proof promotion readiness review-ready mismatch");
35
- assert.strictEqual(promotionReadiness.review.promotion_readiness.production_default_ready, false, "proof promotion readiness production-default mismatch");
36
-
37
- const promotionWorkflow = runCli(["promotion-workflow", "--integration", "partner.verifier.lattice_notary"]);
38
- assert.strictEqual(promotionWorkflow.review.ok, true, "proof promotion workflow via cli mismatch");
39
- assert.strictEqual(promotionWorkflow.review.next_transition.action, "complete_certification", "proof promotion workflow next-transition mismatch");
40
- assert.strictEqual(
41
- promotionWorkflow.review.promotion_recommendation.recommendation,
42
- "keep_staged_until_requirements_clear",
43
- "proof promotion workflow recommendation mismatch"
44
- );
45
-
46
- const promotionWorkflowSummary = runCli([
47
- "promotion-workflow-summary",
48
- "--source", "third_party_example",
49
- "--registration_state", "staging_registered",
50
- "--bundled", "false"
51
- ]);
52
- assert.strictEqual(promotionWorkflowSummary.review.ok, true, "proof promotion workflow summary via cli mismatch");
53
- assert.strictEqual(promotionWorkflowSummary.review.integration_count >= 1, true, "proof promotion workflow summary breadth mismatch");
54
- assert.strictEqual(
55
- promotionWorkflowSummary.review.next_actions.some((entry) => entry.action === "complete_certification"),
56
- true,
57
- "proof promotion workflow summary next-action mismatch"
58
- );
59
-
60
- const reviewOutput = execFileSync(process.execPath, [
61
- path.resolve(__dirname, "..", "bin", "xoonya-review.js"),
62
- "--json",
63
- JSON.stringify({
64
- handoff_bundle: {
65
- result_package_ref: "result.spine.job.commitment",
66
- source_ref: "spine.job.commitment",
67
- transaction_id: "txn_tooling_demo",
68
- receipt_id: "rcpt_tooling_demo",
69
- proof_ref: "memory://proof/tooling-demo",
70
- payment_protocol: "x402",
71
- settlement_mode: "bsv_teranode",
72
- treasury_destination_id: "treasury_tooling_demo",
73
- task_refs: ["trust.verify"],
74
- seam_layers: ["execution_consequence", "payment_settlement_treasury", "proof_handoff"],
75
- economic_consequence_handoff_bundle: {
76
- contract_version: "naxytra-economic-consequence-handoff-v1",
77
- source_system: "xytara",
78
- account_ref: "acct_tooling_demo",
79
- usage_meter_ref: "usage_meter_tooling_demo",
80
- meter_profile_ref: "meter_profile.trust.verify",
81
- credit_spend_ref: "credit_spend_tooling_demo",
82
- payment_ref: "pay_tooling_demo",
83
- settlement_ref: "settlement_tooling_demo",
84
- settlement_txid: "tooling-settlement-txid",
85
- settlement_status: "finalized",
86
- settlement_finality_status: "finalized",
87
- treasury_receipt_ref: "treasury_rcpt_tooling_demo",
88
- proof_ref: "memory://proof/tooling-demo",
89
- usage_meter: {
90
- usage_meter_id: "usage_meter_tooling_demo",
91
- account_id: "acct_tooling_demo",
92
- credit_spend_id: "credit_spend_tooling_demo",
93
- units: 3,
94
- pricing_band: "task_standard"
95
- },
96
- credit_spend: {
97
- credit_spend_id: "credit_spend_tooling_demo",
98
- account_id: "acct_tooling_demo",
99
- units: 3
100
- }
101
- }
102
- }
103
- }),
104
- "--summary"
105
- ], {
106
- cwd: path.resolve(__dirname, ".."),
107
- encoding: "utf8"
108
- });
109
- const reviewSummary = JSON.parse(reviewOutput);
110
- assert.strictEqual(reviewSummary.economic_audit_summary.settlement_ref, "settlement_tooling_demo", "xoonya-review cli settlement ref mismatch");
111
- assert.strictEqual(reviewSummary.economic_audit_summary.treasury_receipt_ref, "treasury_rcpt_tooling_demo", "xoonya-review cli treasury receipt mismatch");
112
-
113
- const releaseOutput = execFileSync(process.execPath, [
114
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
115
- "--summary"
116
- ], {
117
- cwd: path.resolve(__dirname, ".."),
118
- encoding: "utf8"
119
- });
120
- const releaseSummary = JSON.parse(releaseOutput);
121
- assert.strictEqual(releaseSummary.product, "xoonya", "xoonya-release cli product mismatch");
122
- assert.strictEqual(releaseSummary.release_cli, "xoonya-release --summary", "xoonya-release cli release command mismatch");
123
- assert.strictEqual(releaseSummary.install_command, "npm install xoonya", "xoonya-release cli install command mismatch");
124
- const nativeConformanceMarkOutput = execFileSync(process.execPath, [
125
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
126
- "--native-conformance-mark",
127
- "--summary"
128
- ], {
129
- cwd: path.resolve(__dirname, ".."),
130
- encoding: "utf8"
131
- });
132
- const nativeConformanceMarkSummary = JSON.parse(nativeConformanceMarkOutput);
133
- assert.strictEqual(nativeConformanceMarkSummary.category, "xoonya-native-conformance-mark-summary", "xoonya native conformance mark cli category mismatch");
134
- assert.strictEqual(nativeConformanceMarkSummary.mark, "XNYA-compatible", "xoonya native conformance mark cli mark mismatch");
135
- const nativeReferenceImplementationOutput = execFileSync(process.execPath, [
136
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
137
- "--native-reference-implementations",
138
- "--summary"
139
- ], {
140
- cwd: path.resolve(__dirname, ".."),
141
- encoding: "utf8"
142
- });
143
- const nativeReferenceImplementationSummary = JSON.parse(nativeReferenceImplementationOutput);
144
- assert.strictEqual(nativeReferenceImplementationSummary.category, "xoonya-native-reference-implementation-summary", "xoonya native reference implementation cli category mismatch");
145
- assert.strictEqual(nativeReferenceImplementationSummary.implemented_reference_count, 1, "xoonya native reference implementation cli count mismatch");
146
- assert.strictEqual(nativeReferenceImplementationSummary.verified_candidate_scaffold_count >= 1, true, "xoonya native reference implementation cli scaffold mismatch");
147
- const comparisonOutput = execFileSync(process.execPath, [
148
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
149
- "--comparison",
150
- "--summary"
151
- ], {
152
- cwd: path.resolve(__dirname, ".."),
153
- encoding: "utf8"
154
- });
155
- const comparisonSummary = JSON.parse(comparisonOutput);
156
- assert.strictEqual(comparisonSummary.product, "xoonya", "xoonya comparison cli product mismatch");
157
- assert.strictEqual(comparisonSummary.comparison_count >= 3, true, "xoonya comparison cli count mismatch");
158
- const adoptionOutput = execFileSync(process.execPath, [
159
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
160
- "--adoption",
161
- "--summary"
162
- ], {
163
- cwd: path.resolve(__dirname, ".."),
164
- encoding: "utf8"
165
- });
166
- const adoptionSummary = JSON.parse(adoptionOutput);
167
- assert.strictEqual(adoptionSummary.product, "xoonya", "xoonya adoption cli product mismatch");
168
- assert.strictEqual(adoptionSummary.target_count >= 4, true, "xoonya adoption cli count mismatch");
169
- const scenarioOutput = execFileSync(process.execPath, [
170
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
171
- "--scenarios",
172
- "--summary"
173
- ], {
174
- cwd: path.resolve(__dirname, ".."),
175
- encoding: "utf8"
176
- });
177
- const scenarioSummary = JSON.parse(scenarioOutput);
178
- assert.strictEqual(scenarioSummary.product, "xoonya", "xoonya scenario cli product mismatch");
179
- assert.strictEqual(scenarioSummary.scenario_count >= 3, true, "xoonya scenario cli count mismatch");
180
- const launchOutput = execFileSync(process.execPath, [
181
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
182
- "--launch",
183
- "--summary"
184
- ], {
185
- cwd: path.resolve(__dirname, ".."),
186
- encoding: "utf8"
187
- });
188
- const launchSummary = JSON.parse(launchOutput);
189
- assert.strictEqual(launchSummary.product, "xoonya", "xoonya launch cli product mismatch");
190
- assert.strictEqual(launchSummary.operator_check_count >= 7, true, "xoonya launch cli check count mismatch");
191
- const manifestOutput = execFileSync(process.execPath, [
192
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
193
- "--manifest",
194
- "--summary"
195
- ], {
196
- cwd: path.resolve(__dirname, ".."),
197
- encoding: "utf8"
198
- });
199
- const manifestSummary = JSON.parse(manifestOutput);
200
- assert.strictEqual(manifestSummary.product, "xoonya", "xoonya manifest cli product mismatch");
201
- assert.strictEqual(manifestSummary.release_track, "public_release", "xoonya manifest cli track mismatch");
202
- const notesOutput = execFileSync(process.execPath, [
203
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
204
- "--notes",
205
- "--summary"
206
- ], {
207
- cwd: path.resolve(__dirname, ".."),
208
- encoding: "utf8"
209
- });
210
- const notesSummary = JSON.parse(notesOutput);
211
- assert.strictEqual(notesSummary.product, "xoonya", "xoonya notes cli product mismatch");
212
- assert.strictEqual(notesSummary.operator_check_count >= 5, true, "xoonya notes cli check count mismatch");
213
- const centerOutput = execFileSync(process.execPath, [
214
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
215
- "--center",
216
- "--summary"
217
- ], {
218
- cwd: path.resolve(__dirname, ".."),
219
- encoding: "utf8"
220
- });
221
- const centerSummary = JSON.parse(centerOutput);
222
- assert.strictEqual(centerSummary.product, "xoonya", "xoonya center cli product mismatch");
223
- assert.strictEqual(centerSummary.category, "proof-release-center", "xoonya center cli category mismatch");
224
- assert.strictEqual(centerSummary.verification_surface_count >= 6, true, "xoonya center cli verification count mismatch");
225
- const historyOutput = execFileSync(process.execPath, [
226
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
227
- "--history",
228
- "--summary"
229
- ], {
230
- cwd: path.resolve(__dirname, ".."),
231
- encoding: "utf8"
232
- });
233
- const historySummary = JSON.parse(historyOutput);
234
- assert.strictEqual(historySummary.product, "xoonya", "xoonya history cli product mismatch");
235
- assert.strictEqual(historySummary.category, "proof-release-history", "xoonya history cli category mismatch");
236
- assert.strictEqual(historySummary.release_count >= 2, true, "xoonya history cli release count mismatch");
237
- const phaseProgramOutput = execFileSync(process.execPath, [
238
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
239
- "--phases",
240
- "--summary"
241
- ], {
242
- cwd: path.resolve(__dirname, ".."),
243
- encoding: "utf8"
244
- });
245
- const phaseProgramSummary = JSON.parse(phaseProgramOutput);
246
- assert.strictEqual(phaseProgramSummary.product, "xoonya", "xoonya phase program cli product mismatch");
247
- assert.strictEqual(phaseProgramSummary.category, "proof-phase-program-pack", "xoonya phase program cli category mismatch");
248
- assert.strictEqual(phaseProgramSummary.phase_count >= 10, true, "xoonya phase program cli phase count mismatch");
249
- assert.strictEqual(phaseProgramSummary.current_phase, "program_closed", "xoonya phase program current phase mismatch");
250
- const phase1Output = execFileSync(process.execPath, [
251
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
252
- "--phase-1",
253
- "--summary"
254
- ], {
255
- cwd: path.resolve(__dirname, ".."),
256
- encoding: "utf8"
257
- });
258
- const phase1Summary = JSON.parse(phase1Output);
259
- assert.strictEqual(phase1Summary.product, "xoonya", "xoonya phase 1 cli product mismatch");
260
- assert.strictEqual(phase1Summary.category, "proof-phase-1-ecosystem-pack", "xoonya phase 1 cli category mismatch");
261
- assert.strictEqual(phase1Summary.ecosystem_count >= 2, true, "xoonya phase 1 cli ecosystem count mismatch");
262
- const phase1OpenaiCodexOutput = execFileSync(process.execPath, [
263
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
264
- "--phase-1-openai-codex",
265
- "--summary"
266
- ], {
267
- cwd: path.resolve(__dirname, ".."),
268
- encoding: "utf8"
269
- });
270
- const phase1OpenaiCodexSummary = JSON.parse(phase1OpenaiCodexOutput);
271
- assert.strictEqual(phase1OpenaiCodexSummary.product, "xoonya", "xoonya phase 1 openai/codex cli product mismatch");
272
- assert.strictEqual(phase1OpenaiCodexSummary.category, "proof-phase-1-openai-codex-pack", "xoonya phase 1 openai/codex cli category mismatch");
273
- assert.strictEqual(phase1OpenaiCodexSummary.surface_count >= 4, true, "xoonya phase 1 openai/codex cli surface count mismatch");
274
- const phase1OpenaiCodexProofOutput = execFileSync(process.execPath, [
275
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
276
- "--phase-1-openai-codex-proof",
277
- "--summary"
278
- ], {
279
- cwd: path.resolve(__dirname, ".."),
280
- encoding: "utf8"
281
- });
282
- const phase1OpenaiCodexProofSummary = JSON.parse(phase1OpenaiCodexProofOutput);
283
- assert.strictEqual(phase1OpenaiCodexProofSummary.product, "xoonya", "xoonya phase 1 openai/codex proof cli product mismatch");
284
- assert.strictEqual(phase1OpenaiCodexProofSummary.category, "proof-phase-1-openai-codex-proof-pack", "xoonya phase 1 openai/codex proof cli category mismatch");
285
- assert.strictEqual(phase1OpenaiCodexProofSummary.http_step_count >= 3, true, "xoonya phase 1 openai/codex proof cli step count mismatch");
286
- const phase1ClaudeMcpOutput = execFileSync(process.execPath, [
287
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
288
- "--phase-1-claude-mcp",
289
- "--summary"
290
- ], {
291
- cwd: path.resolve(__dirname, ".."),
292
- encoding: "utf8"
293
- });
294
- const phase1ClaudeMcpSummary = JSON.parse(phase1ClaudeMcpOutput);
295
- assert.strictEqual(phase1ClaudeMcpSummary.product, "xoonya", "xoonya phase 1 claude/mcp cli product mismatch");
296
- assert.strictEqual(phase1ClaudeMcpSummary.category, "proof-phase-1-claude-mcp-pack", "xoonya phase 1 claude/mcp cli category mismatch");
297
- assert.strictEqual(phase1ClaudeMcpSummary.surface_count >= 4, true, "xoonya phase 1 claude/mcp cli surface count mismatch");
298
- const phase1ClaudeMcpProofOutput = execFileSync(process.execPath, [
299
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
300
- "--phase-1-claude-mcp-proof",
301
- "--summary"
302
- ], {
303
- cwd: path.resolve(__dirname, ".."),
304
- encoding: "utf8"
305
- });
306
- const phase1ClaudeMcpProofSummary = JSON.parse(phase1ClaudeMcpProofOutput);
307
- assert.strictEqual(phase1ClaudeMcpProofSummary.product, "xoonya", "xoonya phase 1 claude/mcp proof cli product mismatch");
308
- assert.strictEqual(phase1ClaudeMcpProofSummary.category, "proof-phase-1-claude-mcp-proof-pack", "xoonya phase 1 claude/mcp proof cli category mismatch");
309
- assert.strictEqual(phase1ClaudeMcpProofSummary.http_step_count >= 3, true, "xoonya phase 1 claude/mcp proof cli step count mismatch");
310
- const phase2Output = execFileSync(process.execPath, [
311
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
312
- "--phase-2",
313
- "--summary"
314
- ], {
315
- cwd: path.resolve(__dirname, ".."),
316
- encoding: "utf8"
317
- });
318
- const phase2Summary = JSON.parse(phase2Output);
319
- assert.strictEqual(phase2Summary.product, "xoonya", "xoonya phase 2 cli product mismatch");
320
- assert.strictEqual(phase2Summary.category, "proof-phase-2-payment-rails-pack", "xoonya phase 2 cli category mismatch");
321
- assert.strictEqual(phase2Summary.ecosystem_count >= 4, true, "xoonya phase 2 cli ecosystem count mismatch");
322
- assert.strictEqual(phase2Summary.proof_mode_count >= 1, true, "xoonya phase 2 cli proof mode count mismatch");
323
- const phase2CompletionOutput = execFileSync(process.execPath, [
324
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
325
- "--phase-2-completion",
326
- "--summary"
327
- ], {
328
- cwd: path.resolve(__dirname, ".."),
329
- encoding: "utf8"
330
- });
331
- const phase2CompletionSummary = JSON.parse(phase2CompletionOutput);
332
- assert.strictEqual(phase2CompletionSummary.product, "xoonya", "xoonya phase 2 completion cli product mismatch");
333
- assert.strictEqual(phase2CompletionSummary.category, "proof-phase-2-completion-pack", "xoonya phase 2 completion cli category mismatch");
334
- assert.strictEqual(phase2CompletionSummary.completion_check_count >= 5, true, "xoonya phase 2 completion cli check count mismatch");
335
- const phase2FreezeReviewOutput = execFileSync(process.execPath, [
336
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
337
- "--phase-2-freeze-review",
338
- "--summary"
339
- ], {
340
- cwd: path.resolve(__dirname, ".."),
341
- encoding: "utf8"
342
- });
343
- const phase2FreezeReviewSummary = JSON.parse(phase2FreezeReviewOutput);
344
- assert.strictEqual(phase2FreezeReviewSummary.product, "xoonya", "xoonya phase 2 freeze review cli product mismatch");
345
- assert.strictEqual(phase2FreezeReviewSummary.category, "proof-phase-2-freeze-review-pack", "xoonya phase 2 freeze review cli category mismatch");
346
- assert.strictEqual(phase2FreezeReviewSummary.blocker_count, 0, "xoonya phase 2 freeze review blocker count mismatch");
347
- const phase2GateOutput = execFileSync(process.execPath, [
348
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
349
- "--phase-2-gate",
350
- "--summary"
351
- ], {
352
- cwd: path.resolve(__dirname, ".."),
353
- encoding: "utf8"
354
- });
355
- const phase2GateSummary = JSON.parse(phase2GateOutput);
356
- assert.strictEqual(phase2GateSummary.product, "xoonya", "xoonya phase 2 gate cli product mismatch");
357
- assert.strictEqual(phase2GateSummary.category, "proof-phase-2-gate-pack", "xoonya phase 2 gate cli category mismatch");
358
- assert.strictEqual(phase2GateSummary.unsatisfied_gate_count, 0, "xoonya phase 2 gate unsatisfied count mismatch");
359
- assert.strictEqual(phase2GateSummary.ready_for_next_phase, true, "xoonya phase 2 gate ready state mismatch");
360
- const phase2CloseoutOutput = execFileSync(process.execPath, [
361
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
362
- "--phase-2-closeout",
363
- "--summary"
364
- ], {
365
- cwd: path.resolve(__dirname, ".."),
366
- encoding: "utf8"
367
- });
368
- const phase2CloseoutSummary = JSON.parse(phase2CloseoutOutput);
369
- assert.strictEqual(phase2CloseoutSummary.product, "xoonya", "xoonya phase 2 closeout cli product mismatch");
370
- assert.strictEqual(phase2CloseoutSummary.category, "proof-phase-2-closeout-pack", "xoonya phase 2 closeout cli category mismatch");
371
- assert.strictEqual(phase2CloseoutSummary.blocking_action_count, 0, "xoonya phase 2 closeout blocking action count mismatch");
372
- assert.strictEqual(phase2CloseoutSummary.current_decision, "ready_for_phase_3", "xoonya phase 2 closeout decision mismatch");
373
- const phase2DecisionRecordOutput = execFileSync(process.execPath, [
374
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
375
- "--phase-2-decision-record",
376
- "--summary"
377
- ], {
378
- cwd: path.resolve(__dirname, ".."),
379
- encoding: "utf8"
380
- });
381
- const phase2DecisionRecordSummary = JSON.parse(phase2DecisionRecordOutput);
382
- assert.strictEqual(phase2DecisionRecordSummary.product, "xoonya", "xoonya phase 2 decision-record cli product mismatch");
383
- assert.strictEqual(phase2DecisionRecordSummary.category, "proof-phase-2-decision-record-pack", "xoonya phase 2 decision-record cli category mismatch");
384
- assert.strictEqual(phase2DecisionRecordSummary.pending_record_count, 0, "xoonya phase 2 decision-record pending count mismatch");
385
- assert.strictEqual(phase2DecisionRecordSummary.freeze_decision_status, "recorded", "xoonya phase 2 freeze decision status mismatch");
386
- assert.strictEqual(phase2DecisionRecordSummary.gate_review_status, "recorded", "xoonya phase 2 gate review status mismatch");
387
- const phase2DecisionResolutionOutput = execFileSync(process.execPath, [
388
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
389
- "--phase-2-decision-resolution",
390
- "--summary"
391
- ], {
392
- cwd: path.resolve(__dirname, ".."),
393
- encoding: "utf8"
394
- });
395
- const phase2DecisionResolutionSummary = JSON.parse(phase2DecisionResolutionOutput);
396
- assert.strictEqual(phase2DecisionResolutionSummary.product, "xoonya", "xoonya phase 2 decision-resolution cli product mismatch");
397
- assert.strictEqual(phase2DecisionResolutionSummary.category, "proof-phase-2-decision-resolution-pack", "xoonya phase 2 decision-resolution cli category mismatch");
398
- assert.strictEqual(phase2DecisionResolutionSummary.transition_count >= 2, true, "xoonya phase 2 decision-resolution transition count mismatch");
399
- const phase2FlipPreviewOutput = execFileSync(process.execPath, [
400
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
401
- "--phase-2-flip-preview",
402
- "--summary"
403
- ], {
404
- cwd: path.resolve(__dirname, ".."),
405
- encoding: "utf8"
406
- });
407
- const phase2FlipPreviewSummary = JSON.parse(phase2FlipPreviewOutput);
408
- assert.strictEqual(phase2FlipPreviewSummary.product, "xoonya", "xoonya phase 2 flip-preview cli product mismatch");
409
- assert.strictEqual(phase2FlipPreviewSummary.category, "proof-phase-2-flip-preview-pack", "xoonya phase 2 flip-preview cli category mismatch");
410
- assert.strictEqual(phase2FlipPreviewSummary.ready_for_next_phase, true, "xoonya phase 2 flip-preview ready state mismatch");
411
- const phase2EvmBaseOutput = execFileSync(process.execPath, [
412
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
413
- "--phase-2-evm-base-proof",
414
- "--summary"
415
- ], {
416
- cwd: path.resolve(__dirname, ".."),
417
- encoding: "utf8"
418
- });
419
- const phase2EvmBaseSummary = JSON.parse(phase2EvmBaseOutput);
420
- assert.strictEqual(phase2EvmBaseSummary.product, "xoonya", "xoonya phase 2 evm/base cli product mismatch");
421
- assert.strictEqual(phase2EvmBaseSummary.category, "proof-phase-2-evm-base-proof-pack", "xoonya phase 2 evm/base cli category mismatch");
422
- assert.strictEqual(phase2EvmBaseSummary.http_step_count >= 3, true, "xoonya phase 2 evm/base cli step count mismatch");
423
- const phase2BaseUsdcOutput = execFileSync(process.execPath, [
424
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
425
- "--phase-2-base-usdc-proof",
426
- "--summary"
427
- ], {
428
- cwd: path.resolve(__dirname, ".."),
429
- encoding: "utf8"
430
- });
431
- const phase2BaseUsdcSummary = JSON.parse(phase2BaseUsdcOutput);
432
- assert.strictEqual(phase2BaseUsdcSummary.product, "xoonya", "xoonya phase 2 base/usdc cli product mismatch");
433
- assert.strictEqual(phase2BaseUsdcSummary.category, "proof-phase-2-base-usdc-proof-pack", "xoonya phase 2 base/usdc cli category mismatch");
434
- assert.strictEqual(phase2BaseUsdcSummary.http_step_count >= 3, true, "xoonya phase 2 base/usdc cli step count mismatch");
435
- assert.strictEqual(phase2BaseUsdcSummary.signal_count >= 3, true, "xoonya phase 2 base/usdc cli signal count mismatch");
436
- const phase2EthOutput = execFileSync(process.execPath, [
437
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
438
- "--phase-2-eth-proof",
439
- "--summary"
440
- ], {
441
- cwd: path.resolve(__dirname, ".."),
442
- encoding: "utf8"
443
- });
444
- const phase2EthSummary = JSON.parse(phase2EthOutput);
445
- assert.strictEqual(phase2EthSummary.product, "xoonya", "xoonya phase 2 eth cli product mismatch");
446
- assert.strictEqual(phase2EthSummary.category, "proof-phase-2-eth-proof-pack", "xoonya phase 2 eth cli category mismatch");
447
- assert.strictEqual(phase2EthSummary.proof_surface_count >= 2, true, "xoonya phase 2 eth cli proof surface count mismatch");
448
- const phase2EvmOutput = execFileSync(process.execPath, [
449
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
450
- "--phase-2-evm-proof",
451
- "--summary"
452
- ], {
453
- cwd: path.resolve(__dirname, ".."),
454
- encoding: "utf8"
455
- });
456
- const phase2EvmSummary = JSON.parse(phase2EvmOutput);
457
- assert.strictEqual(phase2EvmSummary.product, "xoonya", "xoonya phase 2 evm cli product mismatch");
458
- assert.strictEqual(phase2EvmSummary.category, "proof-phase-2-evm-proof-pack", "xoonya phase 2 evm cli category mismatch");
459
- assert.strictEqual(phase2EvmSummary.proof_mode_count >= 1, true, "xoonya phase 2 evm cli proof mode count mismatch");
460
- const phase2BaseOutput = execFileSync(process.execPath, [
461
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
462
- "--phase-2-base-proof",
463
- "--summary"
464
- ], {
465
- cwd: path.resolve(__dirname, ".."),
466
- encoding: "utf8"
467
- });
468
- const phase2BaseSummary = JSON.parse(phase2BaseOutput);
469
- assert.strictEqual(phase2BaseSummary.product, "xoonya", "xoonya phase 2 base cli product mismatch");
470
- assert.strictEqual(phase2BaseSummary.category, "proof-phase-2-base-proof-pack", "xoonya phase 2 base cli category mismatch");
471
- assert.strictEqual(phase2BaseSummary.proof_surface_count >= 2, true, "xoonya phase 2 base cli proof surface count mismatch");
472
- const phase2UsdcOutput = execFileSync(process.execPath, [
473
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
474
- "--phase-2-usdc-proof",
475
- "--summary"
476
- ], {
477
- cwd: path.resolve(__dirname, ".."),
478
- encoding: "utf8"
479
- });
480
- const phase2UsdcSummary = JSON.parse(phase2UsdcOutput);
481
- assert.strictEqual(phase2UsdcSummary.product, "xoonya", "xoonya phase 2 usdc cli product mismatch");
482
- assert.strictEqual(phase2UsdcSummary.category, "proof-phase-2-usdc-proof-pack", "xoonya phase 2 usdc cli category mismatch");
483
- assert.strictEqual(phase2UsdcSummary.proof_surface_count >= 2, true, "xoonya phase 2 usdc cli proof surface count mismatch");
484
- const phase3Output = execFileSync(process.execPath, [
485
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
486
- "--phase-3",
487
- "--summary"
488
- ], {
489
- cwd: path.resolve(__dirname, ".."),
490
- encoding: "utf8"
491
- });
492
- const phase3Summary = JSON.parse(phase3Output);
493
- assert.strictEqual(phase3Summary.product, "xoonya", "xoonya phase 3 cli product mismatch");
494
- assert.strictEqual(phase3Summary.category, "proof-phase-3-native-bsv-pack", "xoonya phase 3 cli category mismatch");
495
- assert.strictEqual(phase3Summary.ecosystem_count >= 4, true, "xoonya phase 3 cli ecosystem count mismatch");
496
- const phase3NativeContinuityOutput = execFileSync(process.execPath, [
497
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
498
- "--phase-3-native-continuity",
499
- "--summary"
500
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
501
- const phase3NativeContinuitySummary = JSON.parse(phase3NativeContinuityOutput);
502
- assert.strictEqual(phase3NativeContinuitySummary.category, "proof-phase-3-native-continuity-pack", "xoonya phase 3 native continuity cli category mismatch");
503
- assert.strictEqual(phase3NativeContinuitySummary.signal_count >= 4, true, "xoonya phase 3 native continuity signal count mismatch");
504
- const phase3FreezeBaselineOutput = execFileSync(process.execPath, [
505
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
506
- "--phase-3-freeze-baseline",
507
- "--summary"
508
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
509
- const phase3FreezeBaselineSummary = JSON.parse(phase3FreezeBaselineOutput);
510
- assert.strictEqual(phase3FreezeBaselineSummary.category, "proof-phase-3-freeze-baseline-pack", "xoonya phase 3 freeze baseline cli category mismatch");
511
- assert.strictEqual(phase3FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 3 freeze baseline status mismatch");
512
- const phase3CompletionOutput = execFileSync(process.execPath, [
513
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
514
- "--phase-3-completion",
515
- "--summary"
516
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
517
- const phase3CompletionSummary = JSON.parse(phase3CompletionOutput);
518
- assert.strictEqual(phase3CompletionSummary.category, "proof-phase-3-completion-pack", "xoonya phase 3 completion cli category mismatch");
519
- assert.strictEqual(phase3CompletionSummary.completion_check_count >= 5, true, "xoonya phase 3 completion cli check count mismatch");
520
- const phase3FreezeReviewOutput = execFileSync(process.execPath, [
521
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
522
- "--phase-3-freeze-review",
523
- "--summary"
524
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
525
- const phase3FreezeReviewSummary = JSON.parse(phase3FreezeReviewOutput);
526
- assert.strictEqual(phase3FreezeReviewSummary.category, "proof-phase-3-freeze-review-pack", "xoonya phase 3 freeze review cli category mismatch");
527
- assert.strictEqual(phase3FreezeReviewSummary.blocker_count, 0, "xoonya phase 3 freeze review blocker count mismatch");
528
- const phase3GateOutput = execFileSync(process.execPath, [
529
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
530
- "--phase-3-gate",
531
- "--summary"
532
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
533
- const phase3GateSummary = JSON.parse(phase3GateOutput);
534
- assert.strictEqual(phase3GateSummary.category, "proof-phase-3-gate-pack", "xoonya phase 3 gate cli category mismatch");
535
- assert.strictEqual(phase3GateSummary.unsatisfied_gate_count, 0, "xoonya phase 3 gate unsatisfied count mismatch");
536
- const phase3CloseoutOutput = execFileSync(process.execPath, [
537
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
538
- "--phase-3-closeout",
539
- "--summary"
540
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
541
- const phase3CloseoutSummary = JSON.parse(phase3CloseoutOutput);
542
- assert.strictEqual(phase3CloseoutSummary.category, "proof-phase-3-closeout-pack", "xoonya phase 3 closeout cli category mismatch");
543
- assert.strictEqual(phase3CloseoutSummary.blocking_action_count, 0, "xoonya phase 3 closeout blocking action count mismatch");
544
- const phase3DecisionRecordOutput = execFileSync(process.execPath, [
545
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
546
- "--phase-3-decision-record",
547
- "--summary"
548
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
549
- const phase3DecisionRecordSummary = JSON.parse(phase3DecisionRecordOutput);
550
- assert.strictEqual(phase3DecisionRecordSummary.category, "proof-phase-3-decision-record-pack", "xoonya phase 3 decision-record cli category mismatch");
551
- assert.strictEqual(phase3DecisionRecordSummary.pending_record_count, 0, "xoonya phase 3 decision-record pending count mismatch");
552
- const phase3DecisionResolutionOutput = execFileSync(process.execPath, [
553
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
554
- "--phase-3-decision-resolution",
555
- "--summary"
556
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
557
- const phase3DecisionResolutionSummary = JSON.parse(phase3DecisionResolutionOutput);
558
- assert.strictEqual(phase3DecisionResolutionSummary.category, "proof-phase-3-decision-resolution-pack", "xoonya phase 3 decision-resolution cli category mismatch");
559
- assert.strictEqual(phase3DecisionResolutionSummary.transition_count >= 2, true, "xoonya phase 3 decision-resolution transition count mismatch");
560
- const phase3BsvTeranodeOutput = execFileSync(process.execPath, [
561
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
562
- "--phase-3-bsv-teranode-proof",
563
- "--summary"
564
- ], {
565
- cwd: path.resolve(__dirname, ".."),
566
- encoding: "utf8"
567
- });
568
- const phase3BsvTeranodeSummary = JSON.parse(phase3BsvTeranodeOutput);
569
- assert.strictEqual(phase3BsvTeranodeSummary.product, "xoonya", "xoonya phase 3 bsv/teranode cli product mismatch");
570
- assert.strictEqual(phase3BsvTeranodeSummary.category, "proof-phase-3-bsv-teranode-proof-pack", "xoonya phase 3 bsv/teranode cli category mismatch");
571
- assert.strictEqual(phase3BsvTeranodeSummary.http_step_count >= 3, true, "xoonya phase 3 bsv/teranode cli step count mismatch");
572
- const phase3MetanetOutput = execFileSync(process.execPath, [
573
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
574
- "--phase-3-metanet-proof",
575
- "--summary"
576
- ], {
577
- cwd: path.resolve(__dirname, ".."),
578
- encoding: "utf8"
579
- });
580
- const phase3MetanetSummary = JSON.parse(phase3MetanetOutput);
581
- assert.strictEqual(phase3MetanetSummary.product, "xoonya", "xoonya phase 3 metanet cli product mismatch");
582
- assert.strictEqual(phase3MetanetSummary.category, "proof-phase-3-metanet-proof-pack", "xoonya phase 3 metanet cli category mismatch");
583
- assert.strictEqual(phase3MetanetSummary.http_step_count >= 3, true, "xoonya phase 3 metanet cli step count mismatch");
584
- const phase3BrcOutput = execFileSync(process.execPath, [
585
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
586
- "--phase-3-brc-proof",
587
- "--summary"
588
- ], {
589
- cwd: path.resolve(__dirname, ".."),
590
- encoding: "utf8"
591
- });
592
- const phase3BrcSummary = JSON.parse(phase3BrcOutput);
593
- assert.strictEqual(phase3BrcSummary.product, "xoonya", "xoonya phase 3 brc cli product mismatch");
594
- assert.strictEqual(phase3BrcSummary.category, "proof-phase-3-brc-proof-pack", "xoonya phase 3 brc cli category mismatch");
595
- assert.strictEqual(phase3BrcSummary.http_step_count >= 3, true, "xoonya phase 3 brc cli step count mismatch");
596
- const phase4Output = execFileSync(process.execPath, [
597
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
598
- "--phase-4",
599
- "--summary"
600
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
601
- const phase4Summary = JSON.parse(phase4Output);
602
- assert.strictEqual(phase4Summary.category, "proof-phase-4-identity-trust-pack", "xoonya phase 4 cli category mismatch");
603
- assert.strictEqual(phase4Summary.erc8004_mode_count >= 3, true, "xoonya phase 4 cli erc8004 mode count mismatch");
604
- const phase5Output = execFileSync(process.execPath, [
605
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
606
- "--phase-5",
607
- "--summary"
608
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
609
- const phase5Summary = JSON.parse(phase5Output);
610
- assert.strictEqual(phase5Summary.category, "proof-phase-5-major-rails-pack", "xoonya phase 5 cli category mismatch");
611
- const phase5ContinuityOutput = execFileSync(process.execPath, [
612
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
613
- "--phase-5-major-rails-continuity",
614
- "--summary"
615
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
616
- const phase5ContinuitySummary = JSON.parse(phase5ContinuityOutput);
617
- assert.strictEqual(phase5ContinuitySummary.category, "proof-phase-5-major-rails-continuity-pack", "xoonya phase 5 continuity cli category mismatch");
618
- const phase5CompletionOutput = execFileSync(process.execPath, [
619
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
620
- "--phase-5-completion",
621
- "--summary"
622
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
623
- const phase5CompletionSummary = JSON.parse(phase5CompletionOutput);
624
- assert.strictEqual(phase5CompletionSummary.category, "proof-phase-5-completion-pack", "xoonya phase 5 completion cli category mismatch");
625
- const phase5FreezeBaselineOutput = execFileSync(process.execPath, [
626
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
627
- "--phase-5-freeze-baseline",
628
- "--summary"
629
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
630
- const phase5FreezeBaselineSummary = JSON.parse(phase5FreezeBaselineOutput);
631
- assert.strictEqual(phase5FreezeBaselineSummary.category, "proof-phase-5-freeze-baseline-pack", "xoonya phase 5 freeze baseline cli category mismatch");
632
- const phase5GateOutput = execFileSync(process.execPath, [
633
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
634
- "--phase-5-gate",
635
- "--summary"
636
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
637
- const phase5GateSummary = JSON.parse(phase5GateOutput);
638
- assert.strictEqual(phase5GateSummary.category, "proof-phase-5-gate-pack", "xoonya phase 5 gate cli category mismatch");
639
- assert.strictEqual(phase5GateSummary.decision, "ready_for_phase_6", "xoonya phase 5 gate decision mismatch");
640
- const phase5SolanaOutput = execFileSync(process.execPath, [
641
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
642
- "--phase-5-solana-proof",
643
- "--summary"
644
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
645
- const phase5SolanaSummary = JSON.parse(phase5SolanaOutput);
646
- assert.strictEqual(phase5SolanaSummary.category, "proof-phase-5-solana-proof-pack", "xoonya phase 5 solana cli category mismatch");
647
- assert.strictEqual(phase5SolanaSummary.evidence_mode_count >= 3, true, "xoonya phase 5 solana cli evidence count mismatch");
648
- const phase5AntelopeOutput = execFileSync(process.execPath, [
649
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
650
- "--phase-5-antelope-proof",
651
- "--summary"
652
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
653
- const phase5AntelopeSummary = JSON.parse(phase5AntelopeOutput);
654
- assert.strictEqual(phase5AntelopeSummary.category, "proof-phase-5-antelope-proof-pack", "xoonya phase 5 antelope cli category mismatch");
655
- assert.strictEqual(phase5AntelopeSummary.evidence_mode_count >= 3, true, "xoonya phase 5 antelope cli evidence count mismatch");
656
- const phase5ProtonXprOutput = execFileSync(process.execPath, [
657
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
658
- "--phase-5-proton-xpr-proof",
659
- "--summary"
660
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
661
- const phase5ProtonXprSummary = JSON.parse(phase5ProtonXprOutput);
662
- assert.strictEqual(phase5ProtonXprSummary.category, "proof-phase-5-proton-xpr-proof-pack", "xoonya phase 5 proton xpr cli category mismatch");
663
- assert.strictEqual(phase5ProtonXprSummary.evidence_mode_count >= 3, true, "xoonya phase 5 proton xpr cli evidence count mismatch");
664
- const phase6Output = execFileSync(process.execPath, [
665
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
666
- "--phase-6",
667
- "--summary"
668
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
669
- const phase6Summary = JSON.parse(phase6Output);
670
- assert.strictEqual(phase6Summary.category, "proof-phase-6-framework-runtime-pack", "xoonya phase 6 cli category mismatch");
671
- assert.strictEqual(phase6Summary.proof_mode_count >= 3, true, "xoonya phase 6 cli proof mode count mismatch");
672
- const phase6LanggraphOutput = execFileSync(process.execPath, [
673
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
674
- "--phase-6-langgraph-proof",
675
- "--summary"
676
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
677
- const phase6LanggraphSummary = JSON.parse(phase6LanggraphOutput);
678
- assert.strictEqual(phase6LanggraphSummary.category, "proof-phase-6-langgraph-proof-pack", "xoonya phase 6 langgraph cli category mismatch");
679
- assert.strictEqual(phase6LanggraphSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 langgraph cli followthrough count mismatch");
680
- const phase6LangchainOutput = execFileSync(process.execPath, [
681
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
682
- "--phase-6-langchain-proof",
683
- "--summary"
684
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
685
- const phase6LangchainSummary = JSON.parse(phase6LangchainOutput);
686
- assert.strictEqual(phase6LangchainSummary.category, "proof-phase-6-langchain-proof-pack", "xoonya phase 6 langchain cli category mismatch");
687
- assert.strictEqual(phase6LangchainSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 langchain cli followthrough count mismatch");
688
- const phase6AutogenOutput = execFileSync(process.execPath, [
689
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
690
- "--phase-6-autogen-proof",
691
- "--summary"
692
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
693
- const phase6AutogenSummary = JSON.parse(phase6AutogenOutput);
694
- assert.strictEqual(phase6AutogenSummary.category, "proof-phase-6-autogen-proof-pack", "xoonya phase 6 autogen cli category mismatch");
695
- assert.strictEqual(phase6AutogenSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 autogen cli followthrough count mismatch");
696
- const phase6SemanticKernelOutput = execFileSync(process.execPath, [
697
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
698
- "--phase-6-semantic-kernel-proof",
699
- "--summary"
700
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
701
- const phase6SemanticKernelSummary = JSON.parse(phase6SemanticKernelOutput);
702
- assert.strictEqual(phase6SemanticKernelSummary.category, "proof-phase-6-semantic-kernel-proof-pack", "xoonya phase 6 semantic kernel cli category mismatch");
703
- assert.strictEqual(phase6SemanticKernelSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 semantic kernel cli followthrough count mismatch");
704
- const phase6ContinuityOutput = execFileSync(process.execPath, [
705
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
706
- "--phase-6-framework-continuity",
707
- "--summary"
708
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
709
- const phase6ContinuitySummary = JSON.parse(phase6ContinuityOutput);
710
- assert.strictEqual(phase6ContinuitySummary.category, "proof-phase-6-framework-continuity-pack", "xoonya phase 6 continuity cli category mismatch");
711
- const phase6CompletionOutput = execFileSync(process.execPath, [
712
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
713
- "--phase-6-completion",
714
- "--summary"
715
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
716
- const phase6CompletionSummary = JSON.parse(phase6CompletionOutput);
717
- assert.strictEqual(phase6CompletionSummary.category, "proof-phase-6-completion-pack", "xoonya phase 6 completion cli category mismatch");
718
- assert.strictEqual(phase6CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 6 completion cli state mismatch");
719
- const phase6FreezeBaselineOutput = execFileSync(process.execPath, [
720
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
721
- "--phase-6-freeze-baseline",
722
- "--summary"
723
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
724
- const phase6FreezeBaselineSummary = JSON.parse(phase6FreezeBaselineOutput);
725
- assert.strictEqual(phase6FreezeBaselineSummary.category, "proof-phase-6-freeze-baseline-pack", "xoonya phase 6 freeze baseline cli category mismatch");
726
- const phase6GateOutput = execFileSync(process.execPath, [
727
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
728
- "--phase-6-gate",
729
- "--summary"
730
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
731
- const phase6GateSummary = JSON.parse(phase6GateOutput);
732
- assert.strictEqual(phase6GateSummary.category, "proof-phase-6-gate-pack", "xoonya phase 6 gate cli category mismatch");
733
- assert.strictEqual(phase6GateSummary.decision, "ready_for_phase_7", "xoonya phase 6 gate cli decision mismatch");
734
- const phase7Output = execFileSync(process.execPath, [
735
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
736
- "--phase-7",
737
- "--summary"
738
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
739
- const phase7Summary = JSON.parse(phase7Output);
740
- assert.strictEqual(phase7Summary.category, "proof-phase-7-event-system-pack", "xoonya phase 7 cli category mismatch");
741
- assert.strictEqual(phase7Summary.lane_count >= 4, true, "xoonya phase 7 cli lane count mismatch");
742
- const phase7KafkaOutput = execFileSync(process.execPath, [
743
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
744
- "--phase-7-kafka-proof",
745
- "--summary"
746
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
747
- const phase7KafkaSummary = JSON.parse(phase7KafkaOutput);
748
- assert.strictEqual(phase7KafkaSummary.category, "proof-phase-7-kafka-proof-pack", "xoonya phase 7 kafka cli category mismatch");
749
- const phase7NatsOutput = execFileSync(process.execPath, [
750
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
751
- "--phase-7-nats-proof",
752
- "--summary"
753
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
754
- const phase7NatsSummary = JSON.parse(phase7NatsOutput);
755
- assert.strictEqual(phase7NatsSummary.category, "proof-phase-7-nats-proof-pack", "xoonya phase 7 nats cli category mismatch");
756
- const phase7MqttOutput = execFileSync(process.execPath, [
757
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
758
- "--phase-7-mqtt-proof",
759
- "--summary"
760
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
761
- const phase7MqttSummary = JSON.parse(phase7MqttOutput);
762
- assert.strictEqual(phase7MqttSummary.category, "proof-phase-7-mqtt-proof-pack", "xoonya phase 7 mqtt cli category mismatch");
763
- const phase7WebhookEventBusOutput = execFileSync(process.execPath, [
764
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
765
- "--phase-7-webhook-event-bus-proof",
766
- "--summary"
767
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
768
- const phase7WebhookEventBusSummary = JSON.parse(phase7WebhookEventBusOutput);
769
- assert.strictEqual(
770
- phase7WebhookEventBusSummary.category,
771
- "proof-phase-7-webhook-event-bus-proof-pack",
772
- "xoonya phase 7 webhook event bus cli category mismatch"
773
- );
774
- const phase7ContinuityOutput = execFileSync(process.execPath, [
775
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
776
- "--phase-7-event-system-continuity",
777
- "--summary"
778
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
779
- const phase7ContinuitySummary = JSON.parse(phase7ContinuityOutput);
780
- assert.strictEqual(phase7ContinuitySummary.category, "proof-phase-7-event-system-continuity-pack", "xoonya phase 7 continuity cli category mismatch");
781
- const phase7CompletionOutput = execFileSync(process.execPath, [
782
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
783
- "--phase-7-completion",
784
- "--summary"
785
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
786
- const phase7CompletionSummary = JSON.parse(phase7CompletionOutput);
787
- assert.strictEqual(phase7CompletionSummary.category, "proof-phase-7-completion-pack", "xoonya phase 7 completion cli category mismatch");
788
- assert.strictEqual(phase7CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 7 completion cli state mismatch");
789
- const phase7FreezeBaselineOutput = execFileSync(process.execPath, [
790
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
791
- "--phase-7-freeze-baseline",
792
- "--summary"
793
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
794
- const phase7FreezeBaselineSummary = JSON.parse(phase7FreezeBaselineOutput);
795
- assert.strictEqual(phase7FreezeBaselineSummary.category, "proof-phase-7-freeze-baseline-pack", "xoonya phase 7 freeze baseline cli category mismatch");
796
- const phase7FreezeReviewOutput = execFileSync(process.execPath, [
797
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
798
- "--phase-7-freeze-review",
799
- "--summary"
800
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
801
- const phase7FreezeReviewSummary = JSON.parse(phase7FreezeReviewOutput);
802
- assert.strictEqual(phase7FreezeReviewSummary.category, "proof-phase-7-freeze-review-pack", "xoonya phase 7 freeze review cli category mismatch");
803
- const phase7GateOutput = execFileSync(process.execPath, [
804
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
805
- "--phase-7-gate",
806
- "--summary"
807
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
808
- const phase7GateSummary = JSON.parse(phase7GateOutput);
809
- assert.strictEqual(phase7GateSummary.category, "proof-phase-7-gate-pack", "xoonya phase 7 gate cli category mismatch");
810
- assert.strictEqual(phase7GateSummary.decision, "ready_for_phase_8", "xoonya phase 7 gate cli decision mismatch");
811
- assert.strictEqual(phase7GateSummary.unsatisfied_gate_count, 0, "xoonya phase 7 gate cli state mismatch");
812
- const phase7CloseoutOutput = execFileSync(process.execPath, [
813
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
814
- "--phase-7-closeout",
815
- "--summary"
816
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
817
- const phase7CloseoutSummary = JSON.parse(phase7CloseoutOutput);
818
- assert.strictEqual(phase7CloseoutSummary.category, "proof-phase-7-closeout-pack", "xoonya phase 7 closeout cli category mismatch");
819
- const phase7DecisionRecordOutput = execFileSync(process.execPath, [
820
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
821
- "--phase-7-decision-record",
822
- "--summary"
823
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
824
- const phase7DecisionRecordSummary = JSON.parse(phase7DecisionRecordOutput);
825
- assert.strictEqual(phase7DecisionRecordSummary.category, "proof-phase-7-decision-record-pack", "xoonya phase 7 decision-record cli category mismatch");
826
- assert.strictEqual(phase7DecisionRecordSummary.pending_record_count, 0, "xoonya phase 7 decision-record cli state mismatch");
827
- const phase8Output = execFileSync(process.execPath, [
828
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
829
- "--phase-8",
830
- "--summary"
831
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
832
- const phase8Summary = JSON.parse(phase8Output);
833
- assert.strictEqual(phase8Summary.category, "proof-phase-8-proof-bridges-pack", "xoonya phase 8 cli category mismatch");
834
- const phase8ProofBridgeContinuityOutput = execFileSync(process.execPath, [
835
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
836
- "--phase-8-proof-bridge-continuity",
837
- "--summary"
838
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
839
- const phase8ProofBridgeContinuitySummary = JSON.parse(phase8ProofBridgeContinuityOutput);
840
- assert.strictEqual(phase8ProofBridgeContinuitySummary.category, "proof-phase-8-proof-bridge-continuity-pack", "xoonya phase 8 proof-bridge continuity cli category mismatch");
841
- const phase8CompletionOutput = execFileSync(process.execPath, [
842
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
843
- "--phase-8-completion",
844
- "--summary"
845
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
846
- const phase8CompletionSummary = JSON.parse(phase8CompletionOutput);
847
- assert.strictEqual(phase8CompletionSummary.category, "proof-phase-8-completion-pack", "xoonya phase 8 completion cli category mismatch");
848
- assert.strictEqual(phase8CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 8 completion cli state mismatch");
849
- const phase8FreezeBaselineOutput = execFileSync(process.execPath, [
850
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
851
- "--phase-8-freeze-baseline",
852
- "--summary"
853
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
854
- const phase8FreezeBaselineSummary = JSON.parse(phase8FreezeBaselineOutput);
855
- assert.strictEqual(phase8FreezeBaselineSummary.category, "proof-phase-8-freeze-baseline-pack", "xoonya phase 8 freeze baseline cli category mismatch");
856
- assert.strictEqual(phase8FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 8 freeze baseline status mismatch");
857
- const phase8FreezeReviewOutput = execFileSync(process.execPath, [
858
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
859
- "--phase-8-freeze-review",
860
- "--summary"
861
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
862
- const phase8FreezeReviewSummary = JSON.parse(phase8FreezeReviewOutput);
863
- assert.strictEqual(phase8FreezeReviewSummary.category, "proof-phase-8-freeze-review-pack", "xoonya phase 8 freeze review cli category mismatch");
864
- const phase8GateOutput = execFileSync(process.execPath, [
865
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
866
- "--phase-8-gate",
867
- "--summary"
868
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
869
- const phase8GateSummary = JSON.parse(phase8GateOutput);
870
- assert.strictEqual(phase8GateSummary.category, "proof-phase-8-gate-pack", "xoonya phase 8 gate cli category mismatch");
871
- assert.strictEqual(phase8GateSummary.decision, "ready_for_phase_9", "xoonya phase 8 gate cli decision mismatch");
872
- assert.strictEqual(phase8GateSummary.unsatisfied_gate_count, 0, "xoonya phase 8 gate cli state mismatch");
873
- const phase8CloseoutOutput = execFileSync(process.execPath, [
874
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
875
- "--phase-8-closeout",
876
- "--summary"
877
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
878
- const phase8CloseoutSummary = JSON.parse(phase8CloseoutOutput);
879
- assert.strictEqual(phase8CloseoutSummary.category, "proof-phase-8-closeout-pack", "xoonya phase 8 closeout cli category mismatch");
880
- const phase8DecisionRecordOutput = execFileSync(process.execPath, [
881
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
882
- "--phase-8-decision-record",
883
- "--summary"
884
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
885
- const phase8DecisionRecordSummary = JSON.parse(phase8DecisionRecordOutput);
886
- assert.strictEqual(phase8DecisionRecordSummary.category, "proof-phase-8-decision-record-pack", "xoonya phase 8 decision-record cli category mismatch");
887
- assert.strictEqual(phase8DecisionRecordSummary.pending_record_count, 0, "xoonya phase 8 decision-record cli state mismatch");
888
- const phase8DecisionResolutionOutput = execFileSync(process.execPath, [
889
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
890
- "--phase-8-decision-resolution",
891
- "--summary"
892
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
893
- const phase8DecisionResolutionSummary = JSON.parse(phase8DecisionResolutionOutput);
894
- assert.strictEqual(phase8DecisionResolutionSummary.category, "proof-phase-8-decision-resolution-pack", "xoonya phase 8 decision-resolution cli category mismatch");
895
- const phase8ExternalResultImportOutput = execFileSync(process.execPath, [
896
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
897
- "--phase-8-external-result-import-proof",
898
- "--summary"
899
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
900
- const phase8ExternalResultImportSummary = JSON.parse(phase8ExternalResultImportOutput);
901
- assert.strictEqual(phase8ExternalResultImportSummary.category, "proof-phase-8-external-result-import-proof-pack", "xoonya phase 8 external-result-import cli category mismatch");
902
- const phase8ExternalReceiptImportOutput = execFileSync(process.execPath, [
903
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
904
- "--phase-8-external-receipt-import-proof",
905
- "--summary"
906
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
907
- const phase8ExternalReceiptImportSummary = JSON.parse(phase8ExternalReceiptImportOutput);
908
- assert.strictEqual(phase8ExternalReceiptImportSummary.category, "proof-phase-8-external-receipt-import-proof-pack", "xoonya phase 8 external-receipt-import cli category mismatch");
909
- const phase8BundleNormalizationOutput = execFileSync(process.execPath, [
910
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
911
- "--phase-8-proof-bundle-normalization-proof",
912
- "--summary"
913
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
914
- const phase8BundleNormalizationSummary = JSON.parse(phase8BundleNormalizationOutput);
915
- assert.strictEqual(phase8BundleNormalizationSummary.category, "proof-phase-8-proof-bundle-normalization-proof-pack", "xoonya phase 8 proof-bundle-normalization cli category mismatch");
916
- const phase9Output = execFileSync(process.execPath, [
917
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
918
- "--phase-9",
919
- "--summary"
920
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
921
- const phase9Summary = JSON.parse(phase9Output);
922
- assert.strictEqual(phase9Summary.category, "proof-phase-9-treasury-connectivity-pack", "xoonya phase 9 cli category mismatch");
923
- assert.strictEqual(phase9Summary.destination_mode_count >= 3, true, "xoonya phase 9 destination mode count mismatch");
924
- assert.strictEqual(phase9Summary.custody_mode_count >= 3, true, "xoonya phase 9 custody mode count mismatch");
925
- assert.strictEqual(phase9Summary.accounting_mode_count >= 3, true, "xoonya phase 9 accounting mode count mismatch");
926
- const phase9TreasuryContinuityOutput = execFileSync(process.execPath, [
927
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
928
- "--phase-9-treasury-continuity",
929
- "--summary"
930
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
931
- const phase9TreasuryContinuitySummary = JSON.parse(phase9TreasuryContinuityOutput);
932
- assert.strictEqual(phase9TreasuryContinuitySummary.category, "proof-phase-9-treasury-continuity-pack", "xoonya phase 9 treasury continuity cli category mismatch");
933
- const phase9CompletionOutput = execFileSync(process.execPath, [
934
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
935
- "--phase-9-completion",
936
- "--summary"
937
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
938
- const phase9CompletionSummary = JSON.parse(phase9CompletionOutput);
939
- assert.strictEqual(phase9CompletionSummary.category, "proof-phase-9-completion-pack", "xoonya phase 9 completion cli category mismatch");
940
- assert.strictEqual(phase9CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 9 completion cli state mismatch");
941
- const phase9FreezeBaselineOutput = execFileSync(process.execPath, [
942
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
943
- "--phase-9-freeze-baseline",
944
- "--summary"
945
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
946
- const phase9FreezeBaselineSummary = JSON.parse(phase9FreezeBaselineOutput);
947
- assert.strictEqual(phase9FreezeBaselineSummary.category, "proof-phase-9-freeze-baseline-pack", "xoonya phase 9 freeze baseline cli category mismatch");
948
- assert.strictEqual(phase9FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 9 freeze baseline cli status mismatch");
949
- const phase9FreezeReviewOutput = execFileSync(process.execPath, [
950
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
951
- "--phase-9-freeze-review",
952
- "--summary"
953
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
954
- const phase9FreezeReviewSummary = JSON.parse(phase9FreezeReviewOutput);
955
- assert.strictEqual(phase9FreezeReviewSummary.category, "proof-phase-9-freeze-review-pack", "xoonya phase 9 freeze review cli category mismatch");
956
- assert.strictEqual(phase9FreezeReviewSummary.unsatisfied_resolution_count, 0, "xoonya phase 9 freeze review cli state mismatch");
957
- const phase9GateOutput = execFileSync(process.execPath, [
958
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
959
- "--phase-9-gate",
960
- "--summary"
961
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
962
- const phase9GateSummary = JSON.parse(phase9GateOutput);
963
- assert.strictEqual(phase9GateSummary.category, "proof-phase-9-gate-pack", "xoonya phase 9 gate cli category mismatch");
964
- assert.strictEqual(phase9GateSummary.decision, "ready_for_phase_10", "xoonya phase 9 gate cli decision mismatch");
965
- assert.strictEqual(phase9GateSummary.unsatisfied_gate_count, 0, "xoonya phase 9 gate cli state mismatch");
966
- const phase9CloseoutOutput = execFileSync(process.execPath, [
967
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
968
- "--phase-9-closeout",
969
- "--summary"
970
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
971
- const phase9CloseoutSummary = JSON.parse(phase9CloseoutOutput);
972
- assert.strictEqual(phase9CloseoutSummary.category, "proof-phase-9-closeout-pack", "xoonya phase 9 closeout cli category mismatch");
973
- const phase9DecisionRecordOutput = execFileSync(process.execPath, [
974
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
975
- "--phase-9-decision-record",
976
- "--summary"
977
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
978
- const phase9DecisionRecordSummary = JSON.parse(phase9DecisionRecordOutput);
979
- assert.strictEqual(phase9DecisionRecordSummary.category, "proof-phase-9-decision-record-pack", "xoonya phase 9 decision-record cli category mismatch");
980
- assert.strictEqual(phase9DecisionRecordSummary.pending_record_count, 0, "xoonya phase 9 decision-record cli state mismatch");
981
- const phase9DecisionResolutionOutput = execFileSync(process.execPath, [
982
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
983
- "--phase-9-decision-resolution",
984
- "--summary"
985
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
986
- const phase9DecisionResolutionSummary = JSON.parse(phase9DecisionResolutionOutput);
987
- assert.strictEqual(phase9DecisionResolutionSummary.category, "proof-phase-9-decision-resolution-pack", "xoonya phase 9 decision-resolution cli category mismatch");
988
- const phase9TreasuryDestinationsOutput = execFileSync(process.execPath, [
989
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
990
- "--phase-9-treasury-destinations-proof",
991
- "--summary"
992
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
993
- const phase9TreasuryDestinationsSummary = JSON.parse(phase9TreasuryDestinationsOutput);
994
- assert.strictEqual(
995
- phase9TreasuryDestinationsSummary.category,
996
- "proof-phase-9-treasury-destinations-proof-pack",
997
- "xoonya phase 9 treasury-destinations cli category mismatch"
998
- );
999
- assert.strictEqual(phase9TreasuryDestinationsSummary.destination_mode_count >= 3, true, "xoonya phase 9 treasury-destinations destination count mismatch");
1000
- const phase9CustodyRefsOutput = execFileSync(process.execPath, [
1001
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1002
- "--phase-9-custody-refs-proof",
1003
- "--summary"
1004
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1005
- const phase9CustodyRefsSummary = JSON.parse(phase9CustodyRefsOutput);
1006
- assert.strictEqual(phase9CustodyRefsSummary.category, "proof-phase-9-custody-refs-proof-pack", "xoonya phase 9 custody-refs cli category mismatch");
1007
- assert.strictEqual(phase9CustodyRefsSummary.custody_mode_count >= 3, true, "xoonya phase 9 custody mode count mismatch");
1008
- const phase9OperatorAccountingBridgesOutput = execFileSync(process.execPath, [
1009
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1010
- "--phase-9-operator-accounting-bridges-proof",
1011
- "--summary"
1012
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1013
- const phase9OperatorAccountingBridgesSummary = JSON.parse(phase9OperatorAccountingBridgesOutput);
1014
- assert.strictEqual(
1015
- phase9OperatorAccountingBridgesSummary.category,
1016
- "proof-phase-9-operator-accounting-bridges-proof-pack",
1017
- "xoonya phase 9 operator-accounting-bridges cli category mismatch"
1018
- );
1019
- assert.strictEqual(phase9OperatorAccountingBridgesSummary.accounting_mode_count >= 3, true, "xoonya phase 9 accounting bridge mode count mismatch");
1020
- const phase10Output = execFileSync(process.execPath, [
1021
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1022
- "--phase-10",
1023
- "--summary"
1024
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1025
- const phase10Summary = JSON.parse(phase10Output);
1026
- assert.strictEqual(phase10Summary.category, "proof-phase-10-long-tail-ecosystem-pack", "xoonya phase 10 cli category mismatch");
1027
- assert.strictEqual(phase10Summary.lane_count >= 3, true, "xoonya phase 10 lane count mismatch");
1028
- assert.strictEqual(phase10Summary.proof_mode_count >= 3, true, "xoonya phase 10 proof mode count mismatch");
1029
- const phase10DemandSignalAdaptersOutput = execFileSync(process.execPath, [
1030
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1031
- "--phase-10-demand-signal-adapters-proof",
1032
- "--summary"
1033
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1034
- const phase10DemandSignalAdaptersSummary = JSON.parse(phase10DemandSignalAdaptersOutput);
1035
- assert.strictEqual(
1036
- phase10DemandSignalAdaptersSummary.category,
1037
- "proof-phase-10-demand-signal-adapters-proof-pack",
1038
- "xoonya phase 10 demand-signal-adapters cli category mismatch"
1039
- );
1040
- assert.strictEqual(phase10DemandSignalAdaptersSummary.demand_mode_count >= 3, true, "xoonya phase 10 demand mode count mismatch");
1041
- const phase10NicheExtensionRegistryOutput = execFileSync(process.execPath, [
1042
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1043
- "--phase-10-niche-extension-registry-proof",
1044
- "--summary"
1045
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1046
- const phase10NicheExtensionRegistrySummary = JSON.parse(phase10NicheExtensionRegistryOutput);
1047
- assert.strictEqual(
1048
- phase10NicheExtensionRegistrySummary.category,
1049
- "proof-phase-10-niche-extension-registry-proof-pack",
1050
- "xoonya phase 10 niche-extension-registry cli category mismatch"
1051
- );
1052
- assert.strictEqual(phase10NicheExtensionRegistrySummary.demand_mode_count >= 3, true, "xoonya phase 10 niche-extension-registry demand mode count mismatch");
1053
- const phase10EcosystemBacklogTriageOutput = execFileSync(process.execPath, [
1054
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1055
- "--phase-10-ecosystem-backlog-triage-proof",
1056
- "--summary"
1057
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1058
- const phase10EcosystemBacklogTriageSummary = JSON.parse(phase10EcosystemBacklogTriageOutput);
1059
- assert.strictEqual(
1060
- phase10EcosystemBacklogTriageSummary.category,
1061
- "proof-phase-10-ecosystem-backlog-triage-proof-pack",
1062
- "xoonya phase 10 ecosystem-backlog-triage cli category mismatch"
1063
- );
1064
- assert.strictEqual(phase10EcosystemBacklogTriageSummary.demand_mode_count >= 3, true, "xoonya phase 10 ecosystem-backlog-triage demand mode count mismatch");
1065
- const phase10LongTailContinuityOutput = execFileSync(process.execPath, [
1066
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1067
- "--phase-10-long-tail-continuity",
1068
- "--summary"
1069
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1070
- const phase10LongTailContinuitySummary = JSON.parse(phase10LongTailContinuityOutput);
1071
- assert.strictEqual(phase10LongTailContinuitySummary.category, "proof-phase-10-long-tail-continuity-pack", "xoonya phase 10 long-tail continuity cli category mismatch");
1072
- const phase10CompletionOutput = execFileSync(process.execPath, [
1073
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1074
- "--phase-10-completion",
1075
- "--summary"
1076
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1077
- const phase10CompletionSummary = JSON.parse(phase10CompletionOutput);
1078
- assert.strictEqual(phase10CompletionSummary.category, "proof-phase-10-completion-pack", "xoonya phase 10 completion cli category mismatch");
1079
- assert.strictEqual(phase10CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 10 completion unsatisfied criteria mismatch");
1080
- const phase10FreezeBaselineOutput = execFileSync(process.execPath, [
1081
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1082
- "--phase-10-freeze-baseline",
1083
- "--summary"
1084
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1085
- const phase10FreezeBaselineSummary = JSON.parse(phase10FreezeBaselineOutput);
1086
- assert.strictEqual(phase10FreezeBaselineSummary.category, "proof-phase-10-freeze-baseline-pack", "xoonya phase 10 freeze baseline cli category mismatch");
1087
- assert.strictEqual(phase10FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 10 freeze baseline status mismatch");
1088
- const phase10FreezeReviewOutput = execFileSync(process.execPath, [
1089
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1090
- "--phase-10-freeze-review",
1091
- "--summary"
1092
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1093
- const phase10FreezeReviewSummary = JSON.parse(phase10FreezeReviewOutput);
1094
- assert.strictEqual(phase10FreezeReviewSummary.category, "proof-phase-10-freeze-review-pack", "xoonya phase 10 freeze review cli category mismatch");
1095
- const phase10GateOutput = execFileSync(process.execPath, [
1096
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1097
- "--phase-10-gate",
1098
- "--summary"
1099
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1100
- const phase10GateSummary = JSON.parse(phase10GateOutput);
1101
- assert.strictEqual(phase10GateSummary.category, "proof-phase-10-gate-pack", "xoonya phase 10 gate cli category mismatch");
1102
- assert.strictEqual(phase10GateSummary.decision, "ready_for_program_closeout", "xoonya phase 10 gate decision mismatch");
1103
- assert.strictEqual(phase10GateSummary.unsatisfied_gate_count, 0, "xoonya phase 10 gate unsatisfied count mismatch");
1104
- const phase10CloseoutOutput = execFileSync(process.execPath, [
1105
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1106
- "--phase-10-closeout",
1107
- "--summary"
1108
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1109
- const phase10CloseoutSummary = JSON.parse(phase10CloseoutOutput);
1110
- assert.strictEqual(phase10CloseoutSummary.category, "proof-phase-10-closeout-pack", "xoonya phase 10 closeout cli category mismatch");
1111
- const phase10DecisionRecordOutput = execFileSync(process.execPath, [
1112
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1113
- "--phase-10-decision-record",
1114
- "--summary"
1115
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1116
- const phase10DecisionRecordSummary = JSON.parse(phase10DecisionRecordOutput);
1117
- assert.strictEqual(phase10DecisionRecordSummary.category, "proof-phase-10-decision-record-pack", "xoonya phase 10 decision-record cli category mismatch");
1118
- assert.strictEqual(phase10DecisionRecordSummary.pending_record_count, 0, "xoonya phase 10 decision-record pending count mismatch");
1119
- const phase10DecisionResolutionOutput = execFileSync(process.execPath, [
1120
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1121
- "--phase-10-decision-resolution",
1122
- "--summary"
1123
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1124
- const phase10DecisionResolutionSummary = JSON.parse(phase10DecisionResolutionOutput);
1125
- assert.strictEqual(phase10DecisionResolutionSummary.category, "proof-phase-10-decision-resolution-pack", "xoonya phase 10 decision-resolution cli category mismatch");
1126
- const phase4Erc8004Output = execFileSync(process.execPath, [
1127
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1128
- "--phase-4-erc8004-proof",
1129
- "--summary"
1130
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1131
- const phase4Erc8004Summary = JSON.parse(phase4Erc8004Output);
1132
- assert.strictEqual(phase4Erc8004Summary.category, "proof-phase-4-erc8004-proof-pack", "xoonya phase 4 erc8004 cli category mismatch");
1133
- assert.strictEqual(phase4Erc8004Summary.http_step_count >= 3, true, "xoonya phase 4 erc8004 cli step count mismatch");
1134
- assert.strictEqual(phase4Erc8004Summary.erc8004_mode_count >= 3, true, "xoonya phase 4 erc8004 cli mode count mismatch");
1135
- const phase4IdentityRegistryOutput = execFileSync(process.execPath, [
1136
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1137
- "--phase-4-identity-registry-proof",
1138
- "--summary"
1139
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1140
- const phase4IdentityRegistrySummary = JSON.parse(phase4IdentityRegistryOutput);
1141
- assert.strictEqual(phase4IdentityRegistrySummary.category, "proof-phase-4-identity-registry-proof-pack", "xoonya phase 4 identity registry cli category mismatch");
1142
- assert.strictEqual(phase4IdentityRegistrySummary.http_step_count >= 3, true, "xoonya phase 4 identity registry cli step count mismatch");
1143
- assert.strictEqual(phase4IdentityRegistrySummary.resolution_mode_count >= 3, true, "xoonya phase 4 identity registry cli resolution count mismatch");
1144
- const phase4AttestationOutput = execFileSync(process.execPath, [
1145
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1146
- "--phase-4-attestation-proof",
1147
- "--summary"
1148
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1149
- const phase4AttestationSummary = JSON.parse(phase4AttestationOutput);
1150
- assert.strictEqual(phase4AttestationSummary.category, "proof-phase-4-attestation-proof-pack", "xoonya phase 4 attestation cli category mismatch");
1151
- assert.strictEqual(phase4AttestationSummary.http_step_count >= 3, true, "xoonya phase 4 attestation cli step count mismatch");
1152
- assert.strictEqual(phase4AttestationSummary.review_mode_count >= 3, true, "xoonya phase 4 attestation cli review count mismatch");
1153
- const phase4TrustContinuityOutput = execFileSync(process.execPath, [
1154
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1155
- "--phase-4-trust-continuity",
1156
- "--summary"
1157
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1158
- const phase4TrustContinuitySummary = JSON.parse(phase4TrustContinuityOutput);
1159
- assert.strictEqual(phase4TrustContinuitySummary.category, "proof-phase-4-trust-continuity-pack", "xoonya phase 4 trust continuity cli category mismatch");
1160
- const phase4CompletionOutput = execFileSync(process.execPath, [
1161
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1162
- "--phase-4-completion",
1163
- "--summary"
1164
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1165
- const phase4CompletionSummary = JSON.parse(phase4CompletionOutput);
1166
- assert.strictEqual(phase4CompletionSummary.category, "proof-phase-4-completion-pack", "xoonya phase 4 completion cli category mismatch");
1167
- const phase4FreezeBaselineOutput = execFileSync(process.execPath, [
1168
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1169
- "--phase-4-freeze-baseline",
1170
- "--summary"
1171
- ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1172
- const phase4FreezeBaselineSummary = JSON.parse(phase4FreezeBaselineOutput);
1173
- assert.strictEqual(phase4FreezeBaselineSummary.category, "proof-phase-4-freeze-baseline-pack", "xoonya phase 4 freeze baseline cli category mismatch");
1174
- assert.strictEqual(phase4FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 4 freeze baseline status mismatch");
1175
- const publishPlanOutput = execFileSync(process.execPath, [
1176
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1177
- "--publish-plan",
1178
- "--summary"
1179
- ], {
1180
- cwd: path.resolve(__dirname, ".."),
1181
- encoding: "utf8"
1182
- });
1183
- const publishPlanSummary = JSON.parse(publishPlanOutput);
1184
- assert.strictEqual(publishPlanSummary.product, "xoonya", "xoonya publish plan cli product mismatch");
1185
- assert.strictEqual(publishPlanSummary.category, "proof-publish-plan", "xoonya publish plan cli category mismatch");
1186
- assert.strictEqual(publishPlanSummary.publish_step_count >= 5, true, "xoonya publish plan cli step count mismatch");
1187
- const ecosystemOutput = execFileSync(process.execPath, [
1188
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1189
- "--ecosystem",
1190
- "--summary"
1191
- ], {
1192
- cwd: path.resolve(__dirname, ".."),
1193
- encoding: "utf8"
1194
- });
1195
- const ecosystemSummary = JSON.parse(ecosystemOutput);
1196
- assert.strictEqual(ecosystemSummary.product, "xoonya", "xoonya ecosystem cli product mismatch");
1197
- assert.strictEqual(ecosystemSummary.category, "proof-ecosystem-entry", "xoonya ecosystem cli category mismatch");
1198
- assert.strictEqual(ecosystemSummary.audience_count >= 4, true, "xoonya ecosystem cli audience count mismatch");
1199
- const narrativeOutput = execFileSync(process.execPath, [
1200
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1201
- "--narrative",
1202
- "--summary"
1203
- ], {
1204
- cwd: path.resolve(__dirname, ".."),
1205
- encoding: "utf8"
1206
- });
1207
- const narrativeSummary = JSON.parse(narrativeOutput);
1208
- assert.strictEqual(narrativeSummary.product, "xoonya", "xoonya narrative cli product mismatch");
1209
- assert.strictEqual(narrativeSummary.category, "proof-launch-narrative", "xoonya narrative cli category mismatch");
1210
- assert.strictEqual(narrativeSummary.immediate_audience_count >= 4, true, "xoonya narrative cli audience count mismatch");
1211
- const outreachProofOutput = execFileSync(process.execPath, [
1212
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1213
- "--outreach-proof",
1214
- "--summary"
1215
- ], {
1216
- cwd: path.resolve(__dirname, ".."),
1217
- encoding: "utf8"
1218
- });
1219
- const outreachProofSummary = JSON.parse(outreachProofOutput);
1220
- assert.strictEqual(outreachProofSummary.product, "xoonya", "xoonya outreach proof cli product mismatch");
1221
- assert.strictEqual(outreachProofSummary.category, "proof-outreach-proof", "xoonya outreach proof cli category mismatch");
1222
- assert.strictEqual(outreachProofSummary.live_rail_count >= 3, true, "xoonya outreach proof cli rail count mismatch");
1223
- const announcementOutput = execFileSync(process.execPath, [
1224
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1225
- "--announcement",
1226
- "--summary"
1227
- ], {
1228
- cwd: path.resolve(__dirname, ".."),
1229
- encoding: "utf8"
1230
- });
1231
- const announcementSummary = JSON.parse(announcementOutput);
1232
- assert.strictEqual(announcementSummary.product, "xoonya", "xoonya announcement cli product mismatch");
1233
- assert.strictEqual(announcementSummary.category, "proof-announcement-pack", "xoonya announcement cli category mismatch");
1234
- assert.strictEqual(announcementSummary.publish_step_count >= 5, true, "xoonya announcement cli publish step mismatch");
1235
- const releaseCandidateOutput = execFileSync(process.execPath, [
1236
- path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1237
- "--candidate",
1238
- "--summary"
1239
- ], {
1240
- cwd: path.resolve(__dirname, ".."),
1241
- encoding: "utf8"
1242
- });
1243
- const releaseCandidateSummary = JSON.parse(releaseCandidateOutput);
1244
- assert.strictEqual(releaseCandidateSummary.product, "xoonya", "xoonya release candidate cli product mismatch");
1245
- assert.strictEqual(releaseCandidateSummary.category, "proof-release-candidate", "xoonya release candidate cli category mismatch");
1246
- assert.strictEqual(releaseCandidateSummary.checklist_count >= 5, true, "xoonya release candidate cli checklist mismatch");
1247
-
1248
- console.log("xoonya verify:tooling passed");
1249
- }
1250
-
1251
- main();
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const { execFileSync } = require("child_process");
5
+ const path = require("path");
6
+
7
+ function runCli(args) {
8
+ const output = execFileSync(process.execPath, [
9
+ path.resolve(__dirname, "registry_cli.js"),
10
+ ...args
11
+ ], {
12
+ cwd: path.resolve(__dirname, ".."),
13
+ encoding: "utf8"
14
+ });
15
+ return JSON.parse(output);
16
+ }
17
+
18
+ function main() {
19
+ const validation = runCli(["validate-registration", "--example", "verifier"]);
20
+ assert.strictEqual(validation.ok, true, "proof registration validation via cli mismatch");
21
+ assert.strictEqual(validation.descriptor.integration_id, "partner.verifier.lattice_notary", "proof registration descriptor mismatch");
22
+
23
+ const stagedSnapshot = runCli(["export-snapshot", "--registration_state", "staging_registered"]);
24
+ assert.strictEqual(stagedSnapshot.snapshot.integration_count >= 1, true, "proof snapshot export via cli mismatch");
25
+ assert.strictEqual(stagedSnapshot.snapshot.filters.registration_state, "staging_registered", "proof snapshot filter mismatch");
26
+
27
+ const bundledSnapshot = runCli(["export-snapshot", "--bundled", "true", "--proof_scope", "profile_verification"]);
28
+ assert.strictEqual(bundledSnapshot.snapshot.integration_count >= 2, true, "proof bundled snapshot export via cli mismatch");
29
+ assert.strictEqual(bundledSnapshot.snapshot.filters.proof_scope, "profile_verification", "proof bundled snapshot proof_scope mismatch");
30
+
31
+ const promotionReadiness = runCli(["promotion-readiness", "--integration", "partner.verifier.lattice_notary"]);
32
+ assert.strictEqual(promotionReadiness.review.ok, true, "proof promotion readiness via cli mismatch");
33
+ assert.strictEqual(promotionReadiness.review.integration_id, "partner.verifier.lattice_notary", "proof promotion readiness integration mismatch");
34
+ assert.strictEqual(promotionReadiness.review.promotion_readiness.review_ready, true, "proof promotion readiness review-ready mismatch");
35
+ assert.strictEqual(promotionReadiness.review.promotion_readiness.production_default_ready, false, "proof promotion readiness production-default mismatch");
36
+
37
+ const promotionWorkflow = runCli(["promotion-workflow", "--integration", "partner.verifier.lattice_notary"]);
38
+ assert.strictEqual(promotionWorkflow.review.ok, true, "proof promotion workflow via cli mismatch");
39
+ assert.strictEqual(promotionWorkflow.review.next_transition.action, "complete_certification", "proof promotion workflow next-transition mismatch");
40
+ assert.strictEqual(
41
+ promotionWorkflow.review.promotion_recommendation.recommendation,
42
+ "keep_staged_until_requirements_clear",
43
+ "proof promotion workflow recommendation mismatch"
44
+ );
45
+
46
+ const promotionWorkflowSummary = runCli([
47
+ "promotion-workflow-summary",
48
+ "--source", "third_party_example",
49
+ "--registration_state", "staging_registered",
50
+ "--bundled", "false"
51
+ ]);
52
+ assert.strictEqual(promotionWorkflowSummary.review.ok, true, "proof promotion workflow summary via cli mismatch");
53
+ assert.strictEqual(promotionWorkflowSummary.review.integration_count >= 1, true, "proof promotion workflow summary breadth mismatch");
54
+ assert.strictEqual(
55
+ promotionWorkflowSummary.review.next_actions.some((entry) => entry.action === "complete_certification"),
56
+ true,
57
+ "proof promotion workflow summary next-action mismatch"
58
+ );
59
+
60
+ const reviewOutput = execFileSync(process.execPath, [
61
+ path.resolve(__dirname, "..", "bin", "xoonya-review.js"),
62
+ "--json",
63
+ JSON.stringify({
64
+ handoff_bundle: {
65
+ result_package_ref: "result.spine.job.commitment",
66
+ source_ref: "spine.job.commitment",
67
+ transaction_id: "txn_tooling_demo",
68
+ receipt_id: "rcpt_tooling_demo",
69
+ proof_ref: "memory://proof/tooling-demo",
70
+ payment_protocol: "x402",
71
+ settlement_mode: "bsv_teranode",
72
+ treasury_destination_id: "treasury_tooling_demo",
73
+ task_refs: ["trust.verify"],
74
+ seam_layers: ["execution_consequence", "payment_settlement_treasury", "proof_handoff"],
75
+ economic_consequence_handoff_bundle: {
76
+ contract_version: "naxytra-economic-consequence-handoff-v1",
77
+ source_system: "xytara",
78
+ account_ref: "acct_tooling_demo",
79
+ usage_meter_ref: "usage_meter_tooling_demo",
80
+ meter_profile_ref: "meter_profile.trust.verify",
81
+ credit_spend_ref: "credit_spend_tooling_demo",
82
+ payment_ref: "pay_tooling_demo",
83
+ settlement_ref: "settlement_tooling_demo",
84
+ settlement_txid: "tooling-settlement-txid",
85
+ settlement_status: "finalized",
86
+ settlement_finality_status: "finalized",
87
+ treasury_receipt_ref: "treasury_rcpt_tooling_demo",
88
+ proof_ref: "memory://proof/tooling-demo",
89
+ usage_meter: {
90
+ usage_meter_id: "usage_meter_tooling_demo",
91
+ account_id: "acct_tooling_demo",
92
+ credit_spend_id: "credit_spend_tooling_demo",
93
+ units: 3,
94
+ pricing_band: "task_standard"
95
+ },
96
+ credit_spend: {
97
+ credit_spend_id: "credit_spend_tooling_demo",
98
+ account_id: "acct_tooling_demo",
99
+ units: 3
100
+ }
101
+ }
102
+ }
103
+ }),
104
+ "--summary"
105
+ ], {
106
+ cwd: path.resolve(__dirname, ".."),
107
+ encoding: "utf8"
108
+ });
109
+ const reviewSummary = JSON.parse(reviewOutput);
110
+ assert.strictEqual(reviewSummary.economic_audit_summary.settlement_ref, "settlement_tooling_demo", "xoonya-review cli settlement ref mismatch");
111
+ assert.strictEqual(reviewSummary.economic_audit_summary.treasury_receipt_ref, "treasury_rcpt_tooling_demo", "xoonya-review cli treasury receipt mismatch");
112
+
113
+ const releaseOutput = execFileSync(process.execPath, [
114
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
115
+ "--summary"
116
+ ], {
117
+ cwd: path.resolve(__dirname, ".."),
118
+ encoding: "utf8"
119
+ });
120
+ const releaseSummary = JSON.parse(releaseOutput);
121
+ assert.strictEqual(releaseSummary.product, "xoonya", "xoonya-release cli product mismatch");
122
+ assert.strictEqual(releaseSummary.release_cli, "xoonya-release --summary", "xoonya-release cli release command mismatch");
123
+ assert.strictEqual(releaseSummary.install_command, "npm install xoonya", "xoonya-release cli install command mismatch");
124
+ const nativeConformanceMarkOutput = execFileSync(process.execPath, [
125
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
126
+ "--native-conformance-mark",
127
+ "--summary"
128
+ ], {
129
+ cwd: path.resolve(__dirname, ".."),
130
+ encoding: "utf8"
131
+ });
132
+ const nativeConformanceMarkSummary = JSON.parse(nativeConformanceMarkOutput);
133
+ assert.strictEqual(nativeConformanceMarkSummary.category, "xoonya-native-conformance-mark-summary", "xoonya native conformance mark cli category mismatch");
134
+ assert.strictEqual(nativeConformanceMarkSummary.mark, "XNYA-compatible", "xoonya native conformance mark cli mark mismatch");
135
+ const nativeReferenceImplementationOutput = execFileSync(process.execPath, [
136
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
137
+ "--native-reference-implementations",
138
+ "--summary"
139
+ ], {
140
+ cwd: path.resolve(__dirname, ".."),
141
+ encoding: "utf8"
142
+ });
143
+ const nativeReferenceImplementationSummary = JSON.parse(nativeReferenceImplementationOutput);
144
+ assert.strictEqual(nativeReferenceImplementationSummary.category, "xoonya-native-reference-implementation-summary", "xoonya native reference implementation cli category mismatch");
145
+ assert.strictEqual(nativeReferenceImplementationSummary.implemented_reference_count, 1, "xoonya native reference implementation cli count mismatch");
146
+ assert.strictEqual(nativeReferenceImplementationSummary.verified_candidate_scaffold_count >= 1, true, "xoonya native reference implementation cli scaffold mismatch");
147
+ const comparisonOutput = execFileSync(process.execPath, [
148
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
149
+ "--comparison",
150
+ "--summary"
151
+ ], {
152
+ cwd: path.resolve(__dirname, ".."),
153
+ encoding: "utf8"
154
+ });
155
+ const comparisonSummary = JSON.parse(comparisonOutput);
156
+ assert.strictEqual(comparisonSummary.product, "xoonya", "xoonya comparison cli product mismatch");
157
+ assert.strictEqual(comparisonSummary.comparison_count >= 3, true, "xoonya comparison cli count mismatch");
158
+ const adoptionOutput = execFileSync(process.execPath, [
159
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
160
+ "--adoption",
161
+ "--summary"
162
+ ], {
163
+ cwd: path.resolve(__dirname, ".."),
164
+ encoding: "utf8"
165
+ });
166
+ const adoptionSummary = JSON.parse(adoptionOutput);
167
+ assert.strictEqual(adoptionSummary.product, "xoonya", "xoonya adoption cli product mismatch");
168
+ assert.strictEqual(adoptionSummary.target_count >= 4, true, "xoonya adoption cli count mismatch");
169
+ const scenarioOutput = execFileSync(process.execPath, [
170
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
171
+ "--scenarios",
172
+ "--summary"
173
+ ], {
174
+ cwd: path.resolve(__dirname, ".."),
175
+ encoding: "utf8"
176
+ });
177
+ const scenarioSummary = JSON.parse(scenarioOutput);
178
+ assert.strictEqual(scenarioSummary.product, "xoonya", "xoonya scenario cli product mismatch");
179
+ assert.strictEqual(scenarioSummary.scenario_count >= 3, true, "xoonya scenario cli count mismatch");
180
+ const launchOutput = execFileSync(process.execPath, [
181
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
182
+ "--launch",
183
+ "--summary"
184
+ ], {
185
+ cwd: path.resolve(__dirname, ".."),
186
+ encoding: "utf8"
187
+ });
188
+ const launchSummary = JSON.parse(launchOutput);
189
+ assert.strictEqual(launchSummary.product, "xoonya", "xoonya launch cli product mismatch");
190
+ assert.strictEqual(launchSummary.operator_check_count >= 7, true, "xoonya launch cli check count mismatch");
191
+ const manifestOutput = execFileSync(process.execPath, [
192
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
193
+ "--manifest",
194
+ "--summary"
195
+ ], {
196
+ cwd: path.resolve(__dirname, ".."),
197
+ encoding: "utf8"
198
+ });
199
+ const manifestSummary = JSON.parse(manifestOutput);
200
+ assert.strictEqual(manifestSummary.product, "xoonya", "xoonya manifest cli product mismatch");
201
+ assert.strictEqual(manifestSummary.release_track, "public_release", "xoonya manifest cli track mismatch");
202
+ const notesOutput = execFileSync(process.execPath, [
203
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
204
+ "--notes",
205
+ "--summary"
206
+ ], {
207
+ cwd: path.resolve(__dirname, ".."),
208
+ encoding: "utf8"
209
+ });
210
+ const notesSummary = JSON.parse(notesOutput);
211
+ assert.strictEqual(notesSummary.product, "xoonya", "xoonya notes cli product mismatch");
212
+ assert.strictEqual(notesSummary.operator_check_count >= 5, true, "xoonya notes cli check count mismatch");
213
+ const centerOutput = execFileSync(process.execPath, [
214
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
215
+ "--center",
216
+ "--summary"
217
+ ], {
218
+ cwd: path.resolve(__dirname, ".."),
219
+ encoding: "utf8"
220
+ });
221
+ const centerSummary = JSON.parse(centerOutput);
222
+ assert.strictEqual(centerSummary.product, "xoonya", "xoonya center cli product mismatch");
223
+ assert.strictEqual(centerSummary.category, "proof-release-center", "xoonya center cli category mismatch");
224
+ assert.strictEqual(centerSummary.verification_surface_count >= 6, true, "xoonya center cli verification count mismatch");
225
+ const historyOutput = execFileSync(process.execPath, [
226
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
227
+ "--history",
228
+ "--summary"
229
+ ], {
230
+ cwd: path.resolve(__dirname, ".."),
231
+ encoding: "utf8"
232
+ });
233
+ const historySummary = JSON.parse(historyOutput);
234
+ assert.strictEqual(historySummary.product, "xoonya", "xoonya history cli product mismatch");
235
+ assert.strictEqual(historySummary.category, "proof-release-history", "xoonya history cli category mismatch");
236
+ assert.strictEqual(historySummary.release_count >= 2, true, "xoonya history cli release count mismatch");
237
+ const phaseProgramOutput = execFileSync(process.execPath, [
238
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
239
+ "--phases",
240
+ "--summary"
241
+ ], {
242
+ cwd: path.resolve(__dirname, ".."),
243
+ encoding: "utf8"
244
+ });
245
+ const phaseProgramSummary = JSON.parse(phaseProgramOutput);
246
+ assert.strictEqual(phaseProgramSummary.product, "xoonya", "xoonya phase program cli product mismatch");
247
+ assert.strictEqual(phaseProgramSummary.category, "proof-phase-program-pack", "xoonya phase program cli category mismatch");
248
+ assert.strictEqual(phaseProgramSummary.phase_count >= 10, true, "xoonya phase program cli phase count mismatch");
249
+ assert.strictEqual(phaseProgramSummary.current_phase, "program_closed", "xoonya phase program current phase mismatch");
250
+ const phase1Output = execFileSync(process.execPath, [
251
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
252
+ "--phase-1",
253
+ "--summary"
254
+ ], {
255
+ cwd: path.resolve(__dirname, ".."),
256
+ encoding: "utf8"
257
+ });
258
+ const phase1Summary = JSON.parse(phase1Output);
259
+ assert.strictEqual(phase1Summary.product, "xoonya", "xoonya phase 1 cli product mismatch");
260
+ assert.strictEqual(phase1Summary.category, "proof-phase-1-ecosystem-pack", "xoonya phase 1 cli category mismatch");
261
+ assert.strictEqual(phase1Summary.ecosystem_count >= 2, true, "xoonya phase 1 cli ecosystem count mismatch");
262
+ const phase1OpenaiCodexOutput = execFileSync(process.execPath, [
263
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
264
+ "--phase-1-openai-codex",
265
+ "--summary"
266
+ ], {
267
+ cwd: path.resolve(__dirname, ".."),
268
+ encoding: "utf8"
269
+ });
270
+ const phase1OpenaiCodexSummary = JSON.parse(phase1OpenaiCodexOutput);
271
+ assert.strictEqual(phase1OpenaiCodexSummary.product, "xoonya", "xoonya phase 1 openai/codex cli product mismatch");
272
+ assert.strictEqual(phase1OpenaiCodexSummary.category, "proof-phase-1-openai-codex-pack", "xoonya phase 1 openai/codex cli category mismatch");
273
+ assert.strictEqual(phase1OpenaiCodexSummary.surface_count >= 4, true, "xoonya phase 1 openai/codex cli surface count mismatch");
274
+ const phase1OpenaiCodexProofOutput = execFileSync(process.execPath, [
275
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
276
+ "--phase-1-openai-codex-proof",
277
+ "--summary"
278
+ ], {
279
+ cwd: path.resolve(__dirname, ".."),
280
+ encoding: "utf8"
281
+ });
282
+ const phase1OpenaiCodexProofSummary = JSON.parse(phase1OpenaiCodexProofOutput);
283
+ assert.strictEqual(phase1OpenaiCodexProofSummary.product, "xoonya", "xoonya phase 1 openai/codex proof cli product mismatch");
284
+ assert.strictEqual(phase1OpenaiCodexProofSummary.category, "proof-phase-1-openai-codex-proof-pack", "xoonya phase 1 openai/codex proof cli category mismatch");
285
+ assert.strictEqual(phase1OpenaiCodexProofSummary.http_step_count >= 3, true, "xoonya phase 1 openai/codex proof cli step count mismatch");
286
+ const phase1ClaudeMcpOutput = execFileSync(process.execPath, [
287
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
288
+ "--phase-1-claude-mcp",
289
+ "--summary"
290
+ ], {
291
+ cwd: path.resolve(__dirname, ".."),
292
+ encoding: "utf8"
293
+ });
294
+ const phase1ClaudeMcpSummary = JSON.parse(phase1ClaudeMcpOutput);
295
+ assert.strictEqual(phase1ClaudeMcpSummary.product, "xoonya", "xoonya phase 1 claude/mcp cli product mismatch");
296
+ assert.strictEqual(phase1ClaudeMcpSummary.category, "proof-phase-1-claude-mcp-pack", "xoonya phase 1 claude/mcp cli category mismatch");
297
+ assert.strictEqual(phase1ClaudeMcpSummary.surface_count >= 4, true, "xoonya phase 1 claude/mcp cli surface count mismatch");
298
+ const phase1ClaudeMcpProofOutput = execFileSync(process.execPath, [
299
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
300
+ "--phase-1-claude-mcp-proof",
301
+ "--summary"
302
+ ], {
303
+ cwd: path.resolve(__dirname, ".."),
304
+ encoding: "utf8"
305
+ });
306
+ const phase1ClaudeMcpProofSummary = JSON.parse(phase1ClaudeMcpProofOutput);
307
+ assert.strictEqual(phase1ClaudeMcpProofSummary.product, "xoonya", "xoonya phase 1 claude/mcp proof cli product mismatch");
308
+ assert.strictEqual(phase1ClaudeMcpProofSummary.category, "proof-phase-1-claude-mcp-proof-pack", "xoonya phase 1 claude/mcp proof cli category mismatch");
309
+ assert.strictEqual(phase1ClaudeMcpProofSummary.http_step_count >= 3, true, "xoonya phase 1 claude/mcp proof cli step count mismatch");
310
+ const phase2Output = execFileSync(process.execPath, [
311
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
312
+ "--phase-2",
313
+ "--summary"
314
+ ], {
315
+ cwd: path.resolve(__dirname, ".."),
316
+ encoding: "utf8"
317
+ });
318
+ const phase2Summary = JSON.parse(phase2Output);
319
+ assert.strictEqual(phase2Summary.product, "xoonya", "xoonya phase 2 cli product mismatch");
320
+ assert.strictEqual(phase2Summary.category, "proof-phase-2-payment-rails-pack", "xoonya phase 2 cli category mismatch");
321
+ assert.strictEqual(phase2Summary.ecosystem_count >= 4, true, "xoonya phase 2 cli ecosystem count mismatch");
322
+ assert.strictEqual(phase2Summary.proof_mode_count >= 1, true, "xoonya phase 2 cli proof mode count mismatch");
323
+ const phase2CompletionOutput = execFileSync(process.execPath, [
324
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
325
+ "--phase-2-completion",
326
+ "--summary"
327
+ ], {
328
+ cwd: path.resolve(__dirname, ".."),
329
+ encoding: "utf8"
330
+ });
331
+ const phase2CompletionSummary = JSON.parse(phase2CompletionOutput);
332
+ assert.strictEqual(phase2CompletionSummary.product, "xoonya", "xoonya phase 2 completion cli product mismatch");
333
+ assert.strictEqual(phase2CompletionSummary.category, "proof-phase-2-completion-pack", "xoonya phase 2 completion cli category mismatch");
334
+ assert.strictEqual(phase2CompletionSummary.completion_check_count >= 5, true, "xoonya phase 2 completion cli check count mismatch");
335
+ const phase2FreezeReviewOutput = execFileSync(process.execPath, [
336
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
337
+ "--phase-2-freeze-review",
338
+ "--summary"
339
+ ], {
340
+ cwd: path.resolve(__dirname, ".."),
341
+ encoding: "utf8"
342
+ });
343
+ const phase2FreezeReviewSummary = JSON.parse(phase2FreezeReviewOutput);
344
+ assert.strictEqual(phase2FreezeReviewSummary.product, "xoonya", "xoonya phase 2 freeze review cli product mismatch");
345
+ assert.strictEqual(phase2FreezeReviewSummary.category, "proof-phase-2-freeze-review-pack", "xoonya phase 2 freeze review cli category mismatch");
346
+ assert.strictEqual(phase2FreezeReviewSummary.blocker_count, 0, "xoonya phase 2 freeze review blocker count mismatch");
347
+ const phase2GateOutput = execFileSync(process.execPath, [
348
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
349
+ "--phase-2-gate",
350
+ "--summary"
351
+ ], {
352
+ cwd: path.resolve(__dirname, ".."),
353
+ encoding: "utf8"
354
+ });
355
+ const phase2GateSummary = JSON.parse(phase2GateOutput);
356
+ assert.strictEqual(phase2GateSummary.product, "xoonya", "xoonya phase 2 gate cli product mismatch");
357
+ assert.strictEqual(phase2GateSummary.category, "proof-phase-2-gate-pack", "xoonya phase 2 gate cli category mismatch");
358
+ assert.strictEqual(phase2GateSummary.unsatisfied_gate_count, 0, "xoonya phase 2 gate unsatisfied count mismatch");
359
+ assert.strictEqual(phase2GateSummary.ready_for_next_phase, true, "xoonya phase 2 gate ready state mismatch");
360
+ const phase2CloseoutOutput = execFileSync(process.execPath, [
361
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
362
+ "--phase-2-closeout",
363
+ "--summary"
364
+ ], {
365
+ cwd: path.resolve(__dirname, ".."),
366
+ encoding: "utf8"
367
+ });
368
+ const phase2CloseoutSummary = JSON.parse(phase2CloseoutOutput);
369
+ assert.strictEqual(phase2CloseoutSummary.product, "xoonya", "xoonya phase 2 closeout cli product mismatch");
370
+ assert.strictEqual(phase2CloseoutSummary.category, "proof-phase-2-closeout-pack", "xoonya phase 2 closeout cli category mismatch");
371
+ assert.strictEqual(phase2CloseoutSummary.blocking_action_count, 0, "xoonya phase 2 closeout blocking action count mismatch");
372
+ assert.strictEqual(phase2CloseoutSummary.current_decision, "ready_for_phase_3", "xoonya phase 2 closeout decision mismatch");
373
+ const phase2DecisionRecordOutput = execFileSync(process.execPath, [
374
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
375
+ "--phase-2-decision-record",
376
+ "--summary"
377
+ ], {
378
+ cwd: path.resolve(__dirname, ".."),
379
+ encoding: "utf8"
380
+ });
381
+ const phase2DecisionRecordSummary = JSON.parse(phase2DecisionRecordOutput);
382
+ assert.strictEqual(phase2DecisionRecordSummary.product, "xoonya", "xoonya phase 2 decision-record cli product mismatch");
383
+ assert.strictEqual(phase2DecisionRecordSummary.category, "proof-phase-2-decision-record-pack", "xoonya phase 2 decision-record cli category mismatch");
384
+ assert.strictEqual(phase2DecisionRecordSummary.pending_record_count, 0, "xoonya phase 2 decision-record pending count mismatch");
385
+ assert.strictEqual(phase2DecisionRecordSummary.freeze_decision_status, "recorded", "xoonya phase 2 freeze decision status mismatch");
386
+ assert.strictEqual(phase2DecisionRecordSummary.gate_review_status, "recorded", "xoonya phase 2 gate review status mismatch");
387
+ const phase2DecisionResolutionOutput = execFileSync(process.execPath, [
388
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
389
+ "--phase-2-decision-resolution",
390
+ "--summary"
391
+ ], {
392
+ cwd: path.resolve(__dirname, ".."),
393
+ encoding: "utf8"
394
+ });
395
+ const phase2DecisionResolutionSummary = JSON.parse(phase2DecisionResolutionOutput);
396
+ assert.strictEqual(phase2DecisionResolutionSummary.product, "xoonya", "xoonya phase 2 decision-resolution cli product mismatch");
397
+ assert.strictEqual(phase2DecisionResolutionSummary.category, "proof-phase-2-decision-resolution-pack", "xoonya phase 2 decision-resolution cli category mismatch");
398
+ assert.strictEqual(phase2DecisionResolutionSummary.transition_count >= 2, true, "xoonya phase 2 decision-resolution transition count mismatch");
399
+ const phase2FlipPreviewOutput = execFileSync(process.execPath, [
400
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
401
+ "--phase-2-flip-preview",
402
+ "--summary"
403
+ ], {
404
+ cwd: path.resolve(__dirname, ".."),
405
+ encoding: "utf8"
406
+ });
407
+ const phase2FlipPreviewSummary = JSON.parse(phase2FlipPreviewOutput);
408
+ assert.strictEqual(phase2FlipPreviewSummary.product, "xoonya", "xoonya phase 2 flip-preview cli product mismatch");
409
+ assert.strictEqual(phase2FlipPreviewSummary.category, "proof-phase-2-flip-preview-pack", "xoonya phase 2 flip-preview cli category mismatch");
410
+ assert.strictEqual(phase2FlipPreviewSummary.ready_for_next_phase, true, "xoonya phase 2 flip-preview ready state mismatch");
411
+ const phase2EvmBaseOutput = execFileSync(process.execPath, [
412
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
413
+ "--phase-2-evm-base-proof",
414
+ "--summary"
415
+ ], {
416
+ cwd: path.resolve(__dirname, ".."),
417
+ encoding: "utf8"
418
+ });
419
+ const phase2EvmBaseSummary = JSON.parse(phase2EvmBaseOutput);
420
+ assert.strictEqual(phase2EvmBaseSummary.product, "xoonya", "xoonya phase 2 evm/base cli product mismatch");
421
+ assert.strictEqual(phase2EvmBaseSummary.category, "proof-phase-2-evm-base-proof-pack", "xoonya phase 2 evm/base cli category mismatch");
422
+ assert.strictEqual(phase2EvmBaseSummary.http_step_count >= 3, true, "xoonya phase 2 evm/base cli step count mismatch");
423
+ const phase2BaseUsdcOutput = execFileSync(process.execPath, [
424
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
425
+ "--phase-2-base-usdc-proof",
426
+ "--summary"
427
+ ], {
428
+ cwd: path.resolve(__dirname, ".."),
429
+ encoding: "utf8"
430
+ });
431
+ const phase2BaseUsdcSummary = JSON.parse(phase2BaseUsdcOutput);
432
+ assert.strictEqual(phase2BaseUsdcSummary.product, "xoonya", "xoonya phase 2 base/usdc cli product mismatch");
433
+ assert.strictEqual(phase2BaseUsdcSummary.category, "proof-phase-2-base-usdc-proof-pack", "xoonya phase 2 base/usdc cli category mismatch");
434
+ assert.strictEqual(phase2BaseUsdcSummary.http_step_count >= 3, true, "xoonya phase 2 base/usdc cli step count mismatch");
435
+ assert.strictEqual(phase2BaseUsdcSummary.signal_count >= 3, true, "xoonya phase 2 base/usdc cli signal count mismatch");
436
+ const phase2EthOutput = execFileSync(process.execPath, [
437
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
438
+ "--phase-2-eth-proof",
439
+ "--summary"
440
+ ], {
441
+ cwd: path.resolve(__dirname, ".."),
442
+ encoding: "utf8"
443
+ });
444
+ const phase2EthSummary = JSON.parse(phase2EthOutput);
445
+ assert.strictEqual(phase2EthSummary.product, "xoonya", "xoonya phase 2 eth cli product mismatch");
446
+ assert.strictEqual(phase2EthSummary.category, "proof-phase-2-eth-proof-pack", "xoonya phase 2 eth cli category mismatch");
447
+ assert.strictEqual(phase2EthSummary.proof_surface_count >= 2, true, "xoonya phase 2 eth cli proof surface count mismatch");
448
+ const phase2EvmOutput = execFileSync(process.execPath, [
449
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
450
+ "--phase-2-evm-proof",
451
+ "--summary"
452
+ ], {
453
+ cwd: path.resolve(__dirname, ".."),
454
+ encoding: "utf8"
455
+ });
456
+ const phase2EvmSummary = JSON.parse(phase2EvmOutput);
457
+ assert.strictEqual(phase2EvmSummary.product, "xoonya", "xoonya phase 2 evm cli product mismatch");
458
+ assert.strictEqual(phase2EvmSummary.category, "proof-phase-2-evm-proof-pack", "xoonya phase 2 evm cli category mismatch");
459
+ assert.strictEqual(phase2EvmSummary.proof_mode_count >= 1, true, "xoonya phase 2 evm cli proof mode count mismatch");
460
+ const phase2BaseOutput = execFileSync(process.execPath, [
461
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
462
+ "--phase-2-base-proof",
463
+ "--summary"
464
+ ], {
465
+ cwd: path.resolve(__dirname, ".."),
466
+ encoding: "utf8"
467
+ });
468
+ const phase2BaseSummary = JSON.parse(phase2BaseOutput);
469
+ assert.strictEqual(phase2BaseSummary.product, "xoonya", "xoonya phase 2 base cli product mismatch");
470
+ assert.strictEqual(phase2BaseSummary.category, "proof-phase-2-base-proof-pack", "xoonya phase 2 base cli category mismatch");
471
+ assert.strictEqual(phase2BaseSummary.proof_surface_count >= 2, true, "xoonya phase 2 base cli proof surface count mismatch");
472
+ const phase2UsdcOutput = execFileSync(process.execPath, [
473
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
474
+ "--phase-2-usdc-proof",
475
+ "--summary"
476
+ ], {
477
+ cwd: path.resolve(__dirname, ".."),
478
+ encoding: "utf8"
479
+ });
480
+ const phase2UsdcSummary = JSON.parse(phase2UsdcOutput);
481
+ assert.strictEqual(phase2UsdcSummary.product, "xoonya", "xoonya phase 2 usdc cli product mismatch");
482
+ assert.strictEqual(phase2UsdcSummary.category, "proof-phase-2-usdc-proof-pack", "xoonya phase 2 usdc cli category mismatch");
483
+ assert.strictEqual(phase2UsdcSummary.proof_surface_count >= 2, true, "xoonya phase 2 usdc cli proof surface count mismatch");
484
+ const phase3Output = execFileSync(process.execPath, [
485
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
486
+ "--phase-3",
487
+ "--summary"
488
+ ], {
489
+ cwd: path.resolve(__dirname, ".."),
490
+ encoding: "utf8"
491
+ });
492
+ const phase3Summary = JSON.parse(phase3Output);
493
+ assert.strictEqual(phase3Summary.product, "xoonya", "xoonya phase 3 cli product mismatch");
494
+ assert.strictEqual(phase3Summary.category, "proof-phase-3-native-bsv-pack", "xoonya phase 3 cli category mismatch");
495
+ assert.strictEqual(phase3Summary.ecosystem_count >= 4, true, "xoonya phase 3 cli ecosystem count mismatch");
496
+ const phase3NativeContinuityOutput = execFileSync(process.execPath, [
497
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
498
+ "--phase-3-native-continuity",
499
+ "--summary"
500
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
501
+ const phase3NativeContinuitySummary = JSON.parse(phase3NativeContinuityOutput);
502
+ assert.strictEqual(phase3NativeContinuitySummary.category, "proof-phase-3-native-continuity-pack", "xoonya phase 3 native continuity cli category mismatch");
503
+ assert.strictEqual(phase3NativeContinuitySummary.signal_count >= 4, true, "xoonya phase 3 native continuity signal count mismatch");
504
+ const phase3FreezeBaselineOutput = execFileSync(process.execPath, [
505
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
506
+ "--phase-3-freeze-baseline",
507
+ "--summary"
508
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
509
+ const phase3FreezeBaselineSummary = JSON.parse(phase3FreezeBaselineOutput);
510
+ assert.strictEqual(phase3FreezeBaselineSummary.category, "proof-phase-3-freeze-baseline-pack", "xoonya phase 3 freeze baseline cli category mismatch");
511
+ assert.strictEqual(phase3FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 3 freeze baseline status mismatch");
512
+ const phase3CompletionOutput = execFileSync(process.execPath, [
513
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
514
+ "--phase-3-completion",
515
+ "--summary"
516
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
517
+ const phase3CompletionSummary = JSON.parse(phase3CompletionOutput);
518
+ assert.strictEqual(phase3CompletionSummary.category, "proof-phase-3-completion-pack", "xoonya phase 3 completion cli category mismatch");
519
+ assert.strictEqual(phase3CompletionSummary.completion_check_count >= 5, true, "xoonya phase 3 completion cli check count mismatch");
520
+ const phase3FreezeReviewOutput = execFileSync(process.execPath, [
521
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
522
+ "--phase-3-freeze-review",
523
+ "--summary"
524
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
525
+ const phase3FreezeReviewSummary = JSON.parse(phase3FreezeReviewOutput);
526
+ assert.strictEqual(phase3FreezeReviewSummary.category, "proof-phase-3-freeze-review-pack", "xoonya phase 3 freeze review cli category mismatch");
527
+ assert.strictEqual(phase3FreezeReviewSummary.blocker_count, 0, "xoonya phase 3 freeze review blocker count mismatch");
528
+ const phase3GateOutput = execFileSync(process.execPath, [
529
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
530
+ "--phase-3-gate",
531
+ "--summary"
532
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
533
+ const phase3GateSummary = JSON.parse(phase3GateOutput);
534
+ assert.strictEqual(phase3GateSummary.category, "proof-phase-3-gate-pack", "xoonya phase 3 gate cli category mismatch");
535
+ assert.strictEqual(phase3GateSummary.unsatisfied_gate_count, 0, "xoonya phase 3 gate unsatisfied count mismatch");
536
+ const phase3CloseoutOutput = execFileSync(process.execPath, [
537
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
538
+ "--phase-3-closeout",
539
+ "--summary"
540
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
541
+ const phase3CloseoutSummary = JSON.parse(phase3CloseoutOutput);
542
+ assert.strictEqual(phase3CloseoutSummary.category, "proof-phase-3-closeout-pack", "xoonya phase 3 closeout cli category mismatch");
543
+ assert.strictEqual(phase3CloseoutSummary.blocking_action_count, 0, "xoonya phase 3 closeout blocking action count mismatch");
544
+ const phase3DecisionRecordOutput = execFileSync(process.execPath, [
545
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
546
+ "--phase-3-decision-record",
547
+ "--summary"
548
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
549
+ const phase3DecisionRecordSummary = JSON.parse(phase3DecisionRecordOutput);
550
+ assert.strictEqual(phase3DecisionRecordSummary.category, "proof-phase-3-decision-record-pack", "xoonya phase 3 decision-record cli category mismatch");
551
+ assert.strictEqual(phase3DecisionRecordSummary.pending_record_count, 0, "xoonya phase 3 decision-record pending count mismatch");
552
+ const phase3DecisionResolutionOutput = execFileSync(process.execPath, [
553
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
554
+ "--phase-3-decision-resolution",
555
+ "--summary"
556
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
557
+ const phase3DecisionResolutionSummary = JSON.parse(phase3DecisionResolutionOutput);
558
+ assert.strictEqual(phase3DecisionResolutionSummary.category, "proof-phase-3-decision-resolution-pack", "xoonya phase 3 decision-resolution cli category mismatch");
559
+ assert.strictEqual(phase3DecisionResolutionSummary.transition_count >= 2, true, "xoonya phase 3 decision-resolution transition count mismatch");
560
+ const phase3BsvTeranodeOutput = execFileSync(process.execPath, [
561
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
562
+ "--phase-3-bsv-teranode-proof",
563
+ "--summary"
564
+ ], {
565
+ cwd: path.resolve(__dirname, ".."),
566
+ encoding: "utf8"
567
+ });
568
+ const phase3BsvTeranodeSummary = JSON.parse(phase3BsvTeranodeOutput);
569
+ assert.strictEqual(phase3BsvTeranodeSummary.product, "xoonya", "xoonya phase 3 bsv/teranode cli product mismatch");
570
+ assert.strictEqual(phase3BsvTeranodeSummary.category, "proof-phase-3-bsv-teranode-proof-pack", "xoonya phase 3 bsv/teranode cli category mismatch");
571
+ assert.strictEqual(phase3BsvTeranodeSummary.http_step_count >= 3, true, "xoonya phase 3 bsv/teranode cli step count mismatch");
572
+ const phase3MetanetOutput = execFileSync(process.execPath, [
573
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
574
+ "--phase-3-metanet-proof",
575
+ "--summary"
576
+ ], {
577
+ cwd: path.resolve(__dirname, ".."),
578
+ encoding: "utf8"
579
+ });
580
+ const phase3MetanetSummary = JSON.parse(phase3MetanetOutput);
581
+ assert.strictEqual(phase3MetanetSummary.product, "xoonya", "xoonya phase 3 metanet cli product mismatch");
582
+ assert.strictEqual(phase3MetanetSummary.category, "proof-phase-3-metanet-proof-pack", "xoonya phase 3 metanet cli category mismatch");
583
+ assert.strictEqual(phase3MetanetSummary.http_step_count >= 3, true, "xoonya phase 3 metanet cli step count mismatch");
584
+ const phase3BrcOutput = execFileSync(process.execPath, [
585
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
586
+ "--phase-3-brc-proof",
587
+ "--summary"
588
+ ], {
589
+ cwd: path.resolve(__dirname, ".."),
590
+ encoding: "utf8"
591
+ });
592
+ const phase3BrcSummary = JSON.parse(phase3BrcOutput);
593
+ assert.strictEqual(phase3BrcSummary.product, "xoonya", "xoonya phase 3 brc cli product mismatch");
594
+ assert.strictEqual(phase3BrcSummary.category, "proof-phase-3-brc-proof-pack", "xoonya phase 3 brc cli category mismatch");
595
+ assert.strictEqual(phase3BrcSummary.http_step_count >= 3, true, "xoonya phase 3 brc cli step count mismatch");
596
+ const phase4Output = execFileSync(process.execPath, [
597
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
598
+ "--phase-4",
599
+ "--summary"
600
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
601
+ const phase4Summary = JSON.parse(phase4Output);
602
+ assert.strictEqual(phase4Summary.category, "proof-phase-4-identity-trust-pack", "xoonya phase 4 cli category mismatch");
603
+ assert.strictEqual(phase4Summary.erc8004_mode_count >= 3, true, "xoonya phase 4 cli erc8004 mode count mismatch");
604
+ const phase5Output = execFileSync(process.execPath, [
605
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
606
+ "--phase-5",
607
+ "--summary"
608
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
609
+ const phase5Summary = JSON.parse(phase5Output);
610
+ assert.strictEqual(phase5Summary.category, "proof-phase-5-major-rails-pack", "xoonya phase 5 cli category mismatch");
611
+ const phase5ContinuityOutput = execFileSync(process.execPath, [
612
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
613
+ "--phase-5-major-rails-continuity",
614
+ "--summary"
615
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
616
+ const phase5ContinuitySummary = JSON.parse(phase5ContinuityOutput);
617
+ assert.strictEqual(phase5ContinuitySummary.category, "proof-phase-5-major-rails-continuity-pack", "xoonya phase 5 continuity cli category mismatch");
618
+ const phase5CompletionOutput = execFileSync(process.execPath, [
619
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
620
+ "--phase-5-completion",
621
+ "--summary"
622
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
623
+ const phase5CompletionSummary = JSON.parse(phase5CompletionOutput);
624
+ assert.strictEqual(phase5CompletionSummary.category, "proof-phase-5-completion-pack", "xoonya phase 5 completion cli category mismatch");
625
+ const phase5FreezeBaselineOutput = execFileSync(process.execPath, [
626
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
627
+ "--phase-5-freeze-baseline",
628
+ "--summary"
629
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
630
+ const phase5FreezeBaselineSummary = JSON.parse(phase5FreezeBaselineOutput);
631
+ assert.strictEqual(phase5FreezeBaselineSummary.category, "proof-phase-5-freeze-baseline-pack", "xoonya phase 5 freeze baseline cli category mismatch");
632
+ const phase5GateOutput = execFileSync(process.execPath, [
633
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
634
+ "--phase-5-gate",
635
+ "--summary"
636
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
637
+ const phase5GateSummary = JSON.parse(phase5GateOutput);
638
+ assert.strictEqual(phase5GateSummary.category, "proof-phase-5-gate-pack", "xoonya phase 5 gate cli category mismatch");
639
+ assert.strictEqual(phase5GateSummary.decision, "ready_for_phase_6", "xoonya phase 5 gate decision mismatch");
640
+ const phase5SolanaOutput = execFileSync(process.execPath, [
641
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
642
+ "--phase-5-solana-proof",
643
+ "--summary"
644
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
645
+ const phase5SolanaSummary = JSON.parse(phase5SolanaOutput);
646
+ assert.strictEqual(phase5SolanaSummary.category, "proof-phase-5-solana-proof-pack", "xoonya phase 5 solana cli category mismatch");
647
+ assert.strictEqual(phase5SolanaSummary.evidence_mode_count >= 3, true, "xoonya phase 5 solana cli evidence count mismatch");
648
+ const phase5AntelopeOutput = execFileSync(process.execPath, [
649
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
650
+ "--phase-5-antelope-proof",
651
+ "--summary"
652
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
653
+ const phase5AntelopeSummary = JSON.parse(phase5AntelopeOutput);
654
+ assert.strictEqual(phase5AntelopeSummary.category, "proof-phase-5-antelope-proof-pack", "xoonya phase 5 antelope cli category mismatch");
655
+ assert.strictEqual(phase5AntelopeSummary.evidence_mode_count >= 3, true, "xoonya phase 5 antelope cli evidence count mismatch");
656
+ const phase5ProtonXprOutput = execFileSync(process.execPath, [
657
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
658
+ "--phase-5-proton-xpr-proof",
659
+ "--summary"
660
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
661
+ const phase5ProtonXprSummary = JSON.parse(phase5ProtonXprOutput);
662
+ assert.strictEqual(phase5ProtonXprSummary.category, "proof-phase-5-proton-xpr-proof-pack", "xoonya phase 5 proton xpr cli category mismatch");
663
+ assert.strictEqual(phase5ProtonXprSummary.evidence_mode_count >= 3, true, "xoonya phase 5 proton xpr cli evidence count mismatch");
664
+ const phase6Output = execFileSync(process.execPath, [
665
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
666
+ "--phase-6",
667
+ "--summary"
668
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
669
+ const phase6Summary = JSON.parse(phase6Output);
670
+ assert.strictEqual(phase6Summary.category, "proof-phase-6-framework-runtime-pack", "xoonya phase 6 cli category mismatch");
671
+ assert.strictEqual(phase6Summary.proof_mode_count >= 3, true, "xoonya phase 6 cli proof mode count mismatch");
672
+ const phase6LanggraphOutput = execFileSync(process.execPath, [
673
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
674
+ "--phase-6-langgraph-proof",
675
+ "--summary"
676
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
677
+ const phase6LanggraphSummary = JSON.parse(phase6LanggraphOutput);
678
+ assert.strictEqual(phase6LanggraphSummary.category, "proof-phase-6-langgraph-proof-pack", "xoonya phase 6 langgraph cli category mismatch");
679
+ assert.strictEqual(phase6LanggraphSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 langgraph cli followthrough count mismatch");
680
+ const phase6LangchainOutput = execFileSync(process.execPath, [
681
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
682
+ "--phase-6-langchain-proof",
683
+ "--summary"
684
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
685
+ const phase6LangchainSummary = JSON.parse(phase6LangchainOutput);
686
+ assert.strictEqual(phase6LangchainSummary.category, "proof-phase-6-langchain-proof-pack", "xoonya phase 6 langchain cli category mismatch");
687
+ assert.strictEqual(phase6LangchainSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 langchain cli followthrough count mismatch");
688
+ const phase6AutogenOutput = execFileSync(process.execPath, [
689
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
690
+ "--phase-6-autogen-proof",
691
+ "--summary"
692
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
693
+ const phase6AutogenSummary = JSON.parse(phase6AutogenOutput);
694
+ assert.strictEqual(phase6AutogenSummary.category, "proof-phase-6-autogen-proof-pack", "xoonya phase 6 autogen cli category mismatch");
695
+ assert.strictEqual(phase6AutogenSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 autogen cli followthrough count mismatch");
696
+ const phase6SemanticKernelOutput = execFileSync(process.execPath, [
697
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
698
+ "--phase-6-semantic-kernel-proof",
699
+ "--summary"
700
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
701
+ const phase6SemanticKernelSummary = JSON.parse(phase6SemanticKernelOutput);
702
+ assert.strictEqual(phase6SemanticKernelSummary.category, "proof-phase-6-semantic-kernel-proof-pack", "xoonya phase 6 semantic kernel cli category mismatch");
703
+ assert.strictEqual(phase6SemanticKernelSummary.followthrough_mode_count >= 3, true, "xoonya phase 6 semantic kernel cli followthrough count mismatch");
704
+ const phase6ContinuityOutput = execFileSync(process.execPath, [
705
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
706
+ "--phase-6-framework-continuity",
707
+ "--summary"
708
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
709
+ const phase6ContinuitySummary = JSON.parse(phase6ContinuityOutput);
710
+ assert.strictEqual(phase6ContinuitySummary.category, "proof-phase-6-framework-continuity-pack", "xoonya phase 6 continuity cli category mismatch");
711
+ const phase6CompletionOutput = execFileSync(process.execPath, [
712
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
713
+ "--phase-6-completion",
714
+ "--summary"
715
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
716
+ const phase6CompletionSummary = JSON.parse(phase6CompletionOutput);
717
+ assert.strictEqual(phase6CompletionSummary.category, "proof-phase-6-completion-pack", "xoonya phase 6 completion cli category mismatch");
718
+ assert.strictEqual(phase6CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 6 completion cli state mismatch");
719
+ const phase6FreezeBaselineOutput = execFileSync(process.execPath, [
720
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
721
+ "--phase-6-freeze-baseline",
722
+ "--summary"
723
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
724
+ const phase6FreezeBaselineSummary = JSON.parse(phase6FreezeBaselineOutput);
725
+ assert.strictEqual(phase6FreezeBaselineSummary.category, "proof-phase-6-freeze-baseline-pack", "xoonya phase 6 freeze baseline cli category mismatch");
726
+ const phase6GateOutput = execFileSync(process.execPath, [
727
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
728
+ "--phase-6-gate",
729
+ "--summary"
730
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
731
+ const phase6GateSummary = JSON.parse(phase6GateOutput);
732
+ assert.strictEqual(phase6GateSummary.category, "proof-phase-6-gate-pack", "xoonya phase 6 gate cli category mismatch");
733
+ assert.strictEqual(phase6GateSummary.decision, "ready_for_phase_7", "xoonya phase 6 gate cli decision mismatch");
734
+ const phase7Output = execFileSync(process.execPath, [
735
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
736
+ "--phase-7",
737
+ "--summary"
738
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
739
+ const phase7Summary = JSON.parse(phase7Output);
740
+ assert.strictEqual(phase7Summary.category, "proof-phase-7-event-system-pack", "xoonya phase 7 cli category mismatch");
741
+ assert.strictEqual(phase7Summary.lane_count >= 4, true, "xoonya phase 7 cli lane count mismatch");
742
+ const phase7KafkaOutput = execFileSync(process.execPath, [
743
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
744
+ "--phase-7-kafka-proof",
745
+ "--summary"
746
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
747
+ const phase7KafkaSummary = JSON.parse(phase7KafkaOutput);
748
+ assert.strictEqual(phase7KafkaSummary.category, "proof-phase-7-kafka-proof-pack", "xoonya phase 7 kafka cli category mismatch");
749
+ const phase7NatsOutput = execFileSync(process.execPath, [
750
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
751
+ "--phase-7-nats-proof",
752
+ "--summary"
753
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
754
+ const phase7NatsSummary = JSON.parse(phase7NatsOutput);
755
+ assert.strictEqual(phase7NatsSummary.category, "proof-phase-7-nats-proof-pack", "xoonya phase 7 nats cli category mismatch");
756
+ const phase7MqttOutput = execFileSync(process.execPath, [
757
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
758
+ "--phase-7-mqtt-proof",
759
+ "--summary"
760
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
761
+ const phase7MqttSummary = JSON.parse(phase7MqttOutput);
762
+ assert.strictEqual(phase7MqttSummary.category, "proof-phase-7-mqtt-proof-pack", "xoonya phase 7 mqtt cli category mismatch");
763
+ const phase7WebhookEventBusOutput = execFileSync(process.execPath, [
764
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
765
+ "--phase-7-webhook-event-bus-proof",
766
+ "--summary"
767
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
768
+ const phase7WebhookEventBusSummary = JSON.parse(phase7WebhookEventBusOutput);
769
+ assert.strictEqual(
770
+ phase7WebhookEventBusSummary.category,
771
+ "proof-phase-7-webhook-event-bus-proof-pack",
772
+ "xoonya phase 7 webhook event bus cli category mismatch"
773
+ );
774
+ const phase7ContinuityOutput = execFileSync(process.execPath, [
775
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
776
+ "--phase-7-event-system-continuity",
777
+ "--summary"
778
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
779
+ const phase7ContinuitySummary = JSON.parse(phase7ContinuityOutput);
780
+ assert.strictEqual(phase7ContinuitySummary.category, "proof-phase-7-event-system-continuity-pack", "xoonya phase 7 continuity cli category mismatch");
781
+ const phase7CompletionOutput = execFileSync(process.execPath, [
782
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
783
+ "--phase-7-completion",
784
+ "--summary"
785
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
786
+ const phase7CompletionSummary = JSON.parse(phase7CompletionOutput);
787
+ assert.strictEqual(phase7CompletionSummary.category, "proof-phase-7-completion-pack", "xoonya phase 7 completion cli category mismatch");
788
+ assert.strictEqual(phase7CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 7 completion cli state mismatch");
789
+ const phase7FreezeBaselineOutput = execFileSync(process.execPath, [
790
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
791
+ "--phase-7-freeze-baseline",
792
+ "--summary"
793
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
794
+ const phase7FreezeBaselineSummary = JSON.parse(phase7FreezeBaselineOutput);
795
+ assert.strictEqual(phase7FreezeBaselineSummary.category, "proof-phase-7-freeze-baseline-pack", "xoonya phase 7 freeze baseline cli category mismatch");
796
+ const phase7FreezeReviewOutput = execFileSync(process.execPath, [
797
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
798
+ "--phase-7-freeze-review",
799
+ "--summary"
800
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
801
+ const phase7FreezeReviewSummary = JSON.parse(phase7FreezeReviewOutput);
802
+ assert.strictEqual(phase7FreezeReviewSummary.category, "proof-phase-7-freeze-review-pack", "xoonya phase 7 freeze review cli category mismatch");
803
+ const phase7GateOutput = execFileSync(process.execPath, [
804
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
805
+ "--phase-7-gate",
806
+ "--summary"
807
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
808
+ const phase7GateSummary = JSON.parse(phase7GateOutput);
809
+ assert.strictEqual(phase7GateSummary.category, "proof-phase-7-gate-pack", "xoonya phase 7 gate cli category mismatch");
810
+ assert.strictEqual(phase7GateSummary.decision, "ready_for_phase_8", "xoonya phase 7 gate cli decision mismatch");
811
+ assert.strictEqual(phase7GateSummary.unsatisfied_gate_count, 0, "xoonya phase 7 gate cli state mismatch");
812
+ const phase7CloseoutOutput = execFileSync(process.execPath, [
813
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
814
+ "--phase-7-closeout",
815
+ "--summary"
816
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
817
+ const phase7CloseoutSummary = JSON.parse(phase7CloseoutOutput);
818
+ assert.strictEqual(phase7CloseoutSummary.category, "proof-phase-7-closeout-pack", "xoonya phase 7 closeout cli category mismatch");
819
+ const phase7DecisionRecordOutput = execFileSync(process.execPath, [
820
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
821
+ "--phase-7-decision-record",
822
+ "--summary"
823
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
824
+ const phase7DecisionRecordSummary = JSON.parse(phase7DecisionRecordOutput);
825
+ assert.strictEqual(phase7DecisionRecordSummary.category, "proof-phase-7-decision-record-pack", "xoonya phase 7 decision-record cli category mismatch");
826
+ assert.strictEqual(phase7DecisionRecordSummary.pending_record_count, 0, "xoonya phase 7 decision-record cli state mismatch");
827
+ const phase8Output = execFileSync(process.execPath, [
828
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
829
+ "--phase-8",
830
+ "--summary"
831
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
832
+ const phase8Summary = JSON.parse(phase8Output);
833
+ assert.strictEqual(phase8Summary.category, "proof-phase-8-proof-bridges-pack", "xoonya phase 8 cli category mismatch");
834
+ const phase8ProofBridgeContinuityOutput = execFileSync(process.execPath, [
835
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
836
+ "--phase-8-proof-bridge-continuity",
837
+ "--summary"
838
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
839
+ const phase8ProofBridgeContinuitySummary = JSON.parse(phase8ProofBridgeContinuityOutput);
840
+ assert.strictEqual(phase8ProofBridgeContinuitySummary.category, "proof-phase-8-proof-bridge-continuity-pack", "xoonya phase 8 proof-bridge continuity cli category mismatch");
841
+ const phase8CompletionOutput = execFileSync(process.execPath, [
842
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
843
+ "--phase-8-completion",
844
+ "--summary"
845
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
846
+ const phase8CompletionSummary = JSON.parse(phase8CompletionOutput);
847
+ assert.strictEqual(phase8CompletionSummary.category, "proof-phase-8-completion-pack", "xoonya phase 8 completion cli category mismatch");
848
+ assert.strictEqual(phase8CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 8 completion cli state mismatch");
849
+ const phase8FreezeBaselineOutput = execFileSync(process.execPath, [
850
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
851
+ "--phase-8-freeze-baseline",
852
+ "--summary"
853
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
854
+ const phase8FreezeBaselineSummary = JSON.parse(phase8FreezeBaselineOutput);
855
+ assert.strictEqual(phase8FreezeBaselineSummary.category, "proof-phase-8-freeze-baseline-pack", "xoonya phase 8 freeze baseline cli category mismatch");
856
+ assert.strictEqual(phase8FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 8 freeze baseline status mismatch");
857
+ const phase8FreezeReviewOutput = execFileSync(process.execPath, [
858
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
859
+ "--phase-8-freeze-review",
860
+ "--summary"
861
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
862
+ const phase8FreezeReviewSummary = JSON.parse(phase8FreezeReviewOutput);
863
+ assert.strictEqual(phase8FreezeReviewSummary.category, "proof-phase-8-freeze-review-pack", "xoonya phase 8 freeze review cli category mismatch");
864
+ const phase8GateOutput = execFileSync(process.execPath, [
865
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
866
+ "--phase-8-gate",
867
+ "--summary"
868
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
869
+ const phase8GateSummary = JSON.parse(phase8GateOutput);
870
+ assert.strictEqual(phase8GateSummary.category, "proof-phase-8-gate-pack", "xoonya phase 8 gate cli category mismatch");
871
+ assert.strictEqual(phase8GateSummary.decision, "ready_for_phase_9", "xoonya phase 8 gate cli decision mismatch");
872
+ assert.strictEqual(phase8GateSummary.unsatisfied_gate_count, 0, "xoonya phase 8 gate cli state mismatch");
873
+ const phase8CloseoutOutput = execFileSync(process.execPath, [
874
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
875
+ "--phase-8-closeout",
876
+ "--summary"
877
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
878
+ const phase8CloseoutSummary = JSON.parse(phase8CloseoutOutput);
879
+ assert.strictEqual(phase8CloseoutSummary.category, "proof-phase-8-closeout-pack", "xoonya phase 8 closeout cli category mismatch");
880
+ const phase8DecisionRecordOutput = execFileSync(process.execPath, [
881
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
882
+ "--phase-8-decision-record",
883
+ "--summary"
884
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
885
+ const phase8DecisionRecordSummary = JSON.parse(phase8DecisionRecordOutput);
886
+ assert.strictEqual(phase8DecisionRecordSummary.category, "proof-phase-8-decision-record-pack", "xoonya phase 8 decision-record cli category mismatch");
887
+ assert.strictEqual(phase8DecisionRecordSummary.pending_record_count, 0, "xoonya phase 8 decision-record cli state mismatch");
888
+ const phase8DecisionResolutionOutput = execFileSync(process.execPath, [
889
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
890
+ "--phase-8-decision-resolution",
891
+ "--summary"
892
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
893
+ const phase8DecisionResolutionSummary = JSON.parse(phase8DecisionResolutionOutput);
894
+ assert.strictEqual(phase8DecisionResolutionSummary.category, "proof-phase-8-decision-resolution-pack", "xoonya phase 8 decision-resolution cli category mismatch");
895
+ const phase8ExternalResultImportOutput = execFileSync(process.execPath, [
896
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
897
+ "--phase-8-external-result-import-proof",
898
+ "--summary"
899
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
900
+ const phase8ExternalResultImportSummary = JSON.parse(phase8ExternalResultImportOutput);
901
+ assert.strictEqual(phase8ExternalResultImportSummary.category, "proof-phase-8-external-result-import-proof-pack", "xoonya phase 8 external-result-import cli category mismatch");
902
+ const phase8ExternalReceiptImportOutput = execFileSync(process.execPath, [
903
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
904
+ "--phase-8-external-receipt-import-proof",
905
+ "--summary"
906
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
907
+ const phase8ExternalReceiptImportSummary = JSON.parse(phase8ExternalReceiptImportOutput);
908
+ assert.strictEqual(phase8ExternalReceiptImportSummary.category, "proof-phase-8-external-receipt-import-proof-pack", "xoonya phase 8 external-receipt-import cli category mismatch");
909
+ const phase8BundleNormalizationOutput = execFileSync(process.execPath, [
910
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
911
+ "--phase-8-proof-bundle-normalization-proof",
912
+ "--summary"
913
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
914
+ const phase8BundleNormalizationSummary = JSON.parse(phase8BundleNormalizationOutput);
915
+ assert.strictEqual(phase8BundleNormalizationSummary.category, "proof-phase-8-proof-bundle-normalization-proof-pack", "xoonya phase 8 proof-bundle-normalization cli category mismatch");
916
+ const phase9Output = execFileSync(process.execPath, [
917
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
918
+ "--phase-9",
919
+ "--summary"
920
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
921
+ const phase9Summary = JSON.parse(phase9Output);
922
+ assert.strictEqual(phase9Summary.category, "proof-phase-9-treasury-connectivity-pack", "xoonya phase 9 cli category mismatch");
923
+ assert.strictEqual(phase9Summary.destination_mode_count >= 3, true, "xoonya phase 9 destination mode count mismatch");
924
+ assert.strictEqual(phase9Summary.custody_mode_count >= 3, true, "xoonya phase 9 custody mode count mismatch");
925
+ assert.strictEqual(phase9Summary.accounting_mode_count >= 3, true, "xoonya phase 9 accounting mode count mismatch");
926
+ const phase9TreasuryContinuityOutput = execFileSync(process.execPath, [
927
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
928
+ "--phase-9-treasury-continuity",
929
+ "--summary"
930
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
931
+ const phase9TreasuryContinuitySummary = JSON.parse(phase9TreasuryContinuityOutput);
932
+ assert.strictEqual(phase9TreasuryContinuitySummary.category, "proof-phase-9-treasury-continuity-pack", "xoonya phase 9 treasury continuity cli category mismatch");
933
+ const phase9CompletionOutput = execFileSync(process.execPath, [
934
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
935
+ "--phase-9-completion",
936
+ "--summary"
937
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
938
+ const phase9CompletionSummary = JSON.parse(phase9CompletionOutput);
939
+ assert.strictEqual(phase9CompletionSummary.category, "proof-phase-9-completion-pack", "xoonya phase 9 completion cli category mismatch");
940
+ assert.strictEqual(phase9CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 9 completion cli state mismatch");
941
+ const phase9FreezeBaselineOutput = execFileSync(process.execPath, [
942
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
943
+ "--phase-9-freeze-baseline",
944
+ "--summary"
945
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
946
+ const phase9FreezeBaselineSummary = JSON.parse(phase9FreezeBaselineOutput);
947
+ assert.strictEqual(phase9FreezeBaselineSummary.category, "proof-phase-9-freeze-baseline-pack", "xoonya phase 9 freeze baseline cli category mismatch");
948
+ assert.strictEqual(phase9FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 9 freeze baseline cli status mismatch");
949
+ const phase9FreezeReviewOutput = execFileSync(process.execPath, [
950
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
951
+ "--phase-9-freeze-review",
952
+ "--summary"
953
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
954
+ const phase9FreezeReviewSummary = JSON.parse(phase9FreezeReviewOutput);
955
+ assert.strictEqual(phase9FreezeReviewSummary.category, "proof-phase-9-freeze-review-pack", "xoonya phase 9 freeze review cli category mismatch");
956
+ assert.strictEqual(phase9FreezeReviewSummary.unsatisfied_resolution_count, 0, "xoonya phase 9 freeze review cli state mismatch");
957
+ const phase9GateOutput = execFileSync(process.execPath, [
958
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
959
+ "--phase-9-gate",
960
+ "--summary"
961
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
962
+ const phase9GateSummary = JSON.parse(phase9GateOutput);
963
+ assert.strictEqual(phase9GateSummary.category, "proof-phase-9-gate-pack", "xoonya phase 9 gate cli category mismatch");
964
+ assert.strictEqual(phase9GateSummary.decision, "ready_for_phase_10", "xoonya phase 9 gate cli decision mismatch");
965
+ assert.strictEqual(phase9GateSummary.unsatisfied_gate_count, 0, "xoonya phase 9 gate cli state mismatch");
966
+ const phase9CloseoutOutput = execFileSync(process.execPath, [
967
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
968
+ "--phase-9-closeout",
969
+ "--summary"
970
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
971
+ const phase9CloseoutSummary = JSON.parse(phase9CloseoutOutput);
972
+ assert.strictEqual(phase9CloseoutSummary.category, "proof-phase-9-closeout-pack", "xoonya phase 9 closeout cli category mismatch");
973
+ const phase9DecisionRecordOutput = execFileSync(process.execPath, [
974
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
975
+ "--phase-9-decision-record",
976
+ "--summary"
977
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
978
+ const phase9DecisionRecordSummary = JSON.parse(phase9DecisionRecordOutput);
979
+ assert.strictEqual(phase9DecisionRecordSummary.category, "proof-phase-9-decision-record-pack", "xoonya phase 9 decision-record cli category mismatch");
980
+ assert.strictEqual(phase9DecisionRecordSummary.pending_record_count, 0, "xoonya phase 9 decision-record cli state mismatch");
981
+ const phase9DecisionResolutionOutput = execFileSync(process.execPath, [
982
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
983
+ "--phase-9-decision-resolution",
984
+ "--summary"
985
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
986
+ const phase9DecisionResolutionSummary = JSON.parse(phase9DecisionResolutionOutput);
987
+ assert.strictEqual(phase9DecisionResolutionSummary.category, "proof-phase-9-decision-resolution-pack", "xoonya phase 9 decision-resolution cli category mismatch");
988
+ const phase9TreasuryDestinationsOutput = execFileSync(process.execPath, [
989
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
990
+ "--phase-9-treasury-destinations-proof",
991
+ "--summary"
992
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
993
+ const phase9TreasuryDestinationsSummary = JSON.parse(phase9TreasuryDestinationsOutput);
994
+ assert.strictEqual(
995
+ phase9TreasuryDestinationsSummary.category,
996
+ "proof-phase-9-treasury-destinations-proof-pack",
997
+ "xoonya phase 9 treasury-destinations cli category mismatch"
998
+ );
999
+ assert.strictEqual(phase9TreasuryDestinationsSummary.destination_mode_count >= 3, true, "xoonya phase 9 treasury-destinations destination count mismatch");
1000
+ const phase9CustodyRefsOutput = execFileSync(process.execPath, [
1001
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1002
+ "--phase-9-custody-refs-proof",
1003
+ "--summary"
1004
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1005
+ const phase9CustodyRefsSummary = JSON.parse(phase9CustodyRefsOutput);
1006
+ assert.strictEqual(phase9CustodyRefsSummary.category, "proof-phase-9-custody-refs-proof-pack", "xoonya phase 9 custody-refs cli category mismatch");
1007
+ assert.strictEqual(phase9CustodyRefsSummary.custody_mode_count >= 3, true, "xoonya phase 9 custody mode count mismatch");
1008
+ const phase9OperatorAccountingBridgesOutput = execFileSync(process.execPath, [
1009
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1010
+ "--phase-9-operator-accounting-bridges-proof",
1011
+ "--summary"
1012
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1013
+ const phase9OperatorAccountingBridgesSummary = JSON.parse(phase9OperatorAccountingBridgesOutput);
1014
+ assert.strictEqual(
1015
+ phase9OperatorAccountingBridgesSummary.category,
1016
+ "proof-phase-9-operator-accounting-bridges-proof-pack",
1017
+ "xoonya phase 9 operator-accounting-bridges cli category mismatch"
1018
+ );
1019
+ assert.strictEqual(phase9OperatorAccountingBridgesSummary.accounting_mode_count >= 3, true, "xoonya phase 9 accounting bridge mode count mismatch");
1020
+ const phase10Output = execFileSync(process.execPath, [
1021
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1022
+ "--phase-10",
1023
+ "--summary"
1024
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1025
+ const phase10Summary = JSON.parse(phase10Output);
1026
+ assert.strictEqual(phase10Summary.category, "proof-phase-10-long-tail-ecosystem-pack", "xoonya phase 10 cli category mismatch");
1027
+ assert.strictEqual(phase10Summary.lane_count >= 3, true, "xoonya phase 10 lane count mismatch");
1028
+ assert.strictEqual(phase10Summary.proof_mode_count >= 3, true, "xoonya phase 10 proof mode count mismatch");
1029
+ const phase10DemandSignalAdaptersOutput = execFileSync(process.execPath, [
1030
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1031
+ "--phase-10-demand-signal-adapters-proof",
1032
+ "--summary"
1033
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1034
+ const phase10DemandSignalAdaptersSummary = JSON.parse(phase10DemandSignalAdaptersOutput);
1035
+ assert.strictEqual(
1036
+ phase10DemandSignalAdaptersSummary.category,
1037
+ "proof-phase-10-demand-signal-adapters-proof-pack",
1038
+ "xoonya phase 10 demand-signal-adapters cli category mismatch"
1039
+ );
1040
+ assert.strictEqual(phase10DemandSignalAdaptersSummary.demand_mode_count >= 3, true, "xoonya phase 10 demand mode count mismatch");
1041
+ const phase10NicheExtensionRegistryOutput = execFileSync(process.execPath, [
1042
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1043
+ "--phase-10-niche-extension-registry-proof",
1044
+ "--summary"
1045
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1046
+ const phase10NicheExtensionRegistrySummary = JSON.parse(phase10NicheExtensionRegistryOutput);
1047
+ assert.strictEqual(
1048
+ phase10NicheExtensionRegistrySummary.category,
1049
+ "proof-phase-10-niche-extension-registry-proof-pack",
1050
+ "xoonya phase 10 niche-extension-registry cli category mismatch"
1051
+ );
1052
+ assert.strictEqual(phase10NicheExtensionRegistrySummary.demand_mode_count >= 3, true, "xoonya phase 10 niche-extension-registry demand mode count mismatch");
1053
+ const phase10EcosystemBacklogTriageOutput = execFileSync(process.execPath, [
1054
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1055
+ "--phase-10-ecosystem-backlog-triage-proof",
1056
+ "--summary"
1057
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1058
+ const phase10EcosystemBacklogTriageSummary = JSON.parse(phase10EcosystemBacklogTriageOutput);
1059
+ assert.strictEqual(
1060
+ phase10EcosystemBacklogTriageSummary.category,
1061
+ "proof-phase-10-ecosystem-backlog-triage-proof-pack",
1062
+ "xoonya phase 10 ecosystem-backlog-triage cli category mismatch"
1063
+ );
1064
+ assert.strictEqual(phase10EcosystemBacklogTriageSummary.demand_mode_count >= 3, true, "xoonya phase 10 ecosystem-backlog-triage demand mode count mismatch");
1065
+ const phase10LongTailContinuityOutput = execFileSync(process.execPath, [
1066
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1067
+ "--phase-10-long-tail-continuity",
1068
+ "--summary"
1069
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1070
+ const phase10LongTailContinuitySummary = JSON.parse(phase10LongTailContinuityOutput);
1071
+ assert.strictEqual(phase10LongTailContinuitySummary.category, "proof-phase-10-long-tail-continuity-pack", "xoonya phase 10 long-tail continuity cli category mismatch");
1072
+ const phase10CompletionOutput = execFileSync(process.execPath, [
1073
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1074
+ "--phase-10-completion",
1075
+ "--summary"
1076
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1077
+ const phase10CompletionSummary = JSON.parse(phase10CompletionOutput);
1078
+ assert.strictEqual(phase10CompletionSummary.category, "proof-phase-10-completion-pack", "xoonya phase 10 completion cli category mismatch");
1079
+ assert.strictEqual(phase10CompletionSummary.unsatisfied_criteria_count, 0, "xoonya phase 10 completion unsatisfied criteria mismatch");
1080
+ const phase10FreezeBaselineOutput = execFileSync(process.execPath, [
1081
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1082
+ "--phase-10-freeze-baseline",
1083
+ "--summary"
1084
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1085
+ const phase10FreezeBaselineSummary = JSON.parse(phase10FreezeBaselineOutput);
1086
+ assert.strictEqual(phase10FreezeBaselineSummary.category, "proof-phase-10-freeze-baseline-pack", "xoonya phase 10 freeze baseline cli category mismatch");
1087
+ assert.strictEqual(phase10FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 10 freeze baseline status mismatch");
1088
+ const phase10FreezeReviewOutput = execFileSync(process.execPath, [
1089
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1090
+ "--phase-10-freeze-review",
1091
+ "--summary"
1092
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1093
+ const phase10FreezeReviewSummary = JSON.parse(phase10FreezeReviewOutput);
1094
+ assert.strictEqual(phase10FreezeReviewSummary.category, "proof-phase-10-freeze-review-pack", "xoonya phase 10 freeze review cli category mismatch");
1095
+ const phase10GateOutput = execFileSync(process.execPath, [
1096
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1097
+ "--phase-10-gate",
1098
+ "--summary"
1099
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1100
+ const phase10GateSummary = JSON.parse(phase10GateOutput);
1101
+ assert.strictEqual(phase10GateSummary.category, "proof-phase-10-gate-pack", "xoonya phase 10 gate cli category mismatch");
1102
+ assert.strictEqual(phase10GateSummary.decision, "ready_for_program_closeout", "xoonya phase 10 gate decision mismatch");
1103
+ assert.strictEqual(phase10GateSummary.unsatisfied_gate_count, 0, "xoonya phase 10 gate unsatisfied count mismatch");
1104
+ const phase10CloseoutOutput = execFileSync(process.execPath, [
1105
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1106
+ "--phase-10-closeout",
1107
+ "--summary"
1108
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1109
+ const phase10CloseoutSummary = JSON.parse(phase10CloseoutOutput);
1110
+ assert.strictEqual(phase10CloseoutSummary.category, "proof-phase-10-closeout-pack", "xoonya phase 10 closeout cli category mismatch");
1111
+ const phase10DecisionRecordOutput = execFileSync(process.execPath, [
1112
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1113
+ "--phase-10-decision-record",
1114
+ "--summary"
1115
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1116
+ const phase10DecisionRecordSummary = JSON.parse(phase10DecisionRecordOutput);
1117
+ assert.strictEqual(phase10DecisionRecordSummary.category, "proof-phase-10-decision-record-pack", "xoonya phase 10 decision-record cli category mismatch");
1118
+ assert.strictEqual(phase10DecisionRecordSummary.pending_record_count, 0, "xoonya phase 10 decision-record pending count mismatch");
1119
+ const phase10DecisionResolutionOutput = execFileSync(process.execPath, [
1120
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1121
+ "--phase-10-decision-resolution",
1122
+ "--summary"
1123
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1124
+ const phase10DecisionResolutionSummary = JSON.parse(phase10DecisionResolutionOutput);
1125
+ assert.strictEqual(phase10DecisionResolutionSummary.category, "proof-phase-10-decision-resolution-pack", "xoonya phase 10 decision-resolution cli category mismatch");
1126
+ const phase4Erc8004Output = execFileSync(process.execPath, [
1127
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1128
+ "--phase-4-erc8004-proof",
1129
+ "--summary"
1130
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1131
+ const phase4Erc8004Summary = JSON.parse(phase4Erc8004Output);
1132
+ assert.strictEqual(phase4Erc8004Summary.category, "proof-phase-4-erc8004-proof-pack", "xoonya phase 4 erc8004 cli category mismatch");
1133
+ assert.strictEqual(phase4Erc8004Summary.http_step_count >= 3, true, "xoonya phase 4 erc8004 cli step count mismatch");
1134
+ assert.strictEqual(phase4Erc8004Summary.erc8004_mode_count >= 3, true, "xoonya phase 4 erc8004 cli mode count mismatch");
1135
+ const phase4IdentityRegistryOutput = execFileSync(process.execPath, [
1136
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1137
+ "--phase-4-identity-registry-proof",
1138
+ "--summary"
1139
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1140
+ const phase4IdentityRegistrySummary = JSON.parse(phase4IdentityRegistryOutput);
1141
+ assert.strictEqual(phase4IdentityRegistrySummary.category, "proof-phase-4-identity-registry-proof-pack", "xoonya phase 4 identity registry cli category mismatch");
1142
+ assert.strictEqual(phase4IdentityRegistrySummary.http_step_count >= 3, true, "xoonya phase 4 identity registry cli step count mismatch");
1143
+ assert.strictEqual(phase4IdentityRegistrySummary.resolution_mode_count >= 3, true, "xoonya phase 4 identity registry cli resolution count mismatch");
1144
+ const phase4AttestationOutput = execFileSync(process.execPath, [
1145
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1146
+ "--phase-4-attestation-proof",
1147
+ "--summary"
1148
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1149
+ const phase4AttestationSummary = JSON.parse(phase4AttestationOutput);
1150
+ assert.strictEqual(phase4AttestationSummary.category, "proof-phase-4-attestation-proof-pack", "xoonya phase 4 attestation cli category mismatch");
1151
+ assert.strictEqual(phase4AttestationSummary.http_step_count >= 3, true, "xoonya phase 4 attestation cli step count mismatch");
1152
+ assert.strictEqual(phase4AttestationSummary.review_mode_count >= 3, true, "xoonya phase 4 attestation cli review count mismatch");
1153
+ const phase4TrustContinuityOutput = execFileSync(process.execPath, [
1154
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1155
+ "--phase-4-trust-continuity",
1156
+ "--summary"
1157
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1158
+ const phase4TrustContinuitySummary = JSON.parse(phase4TrustContinuityOutput);
1159
+ assert.strictEqual(phase4TrustContinuitySummary.category, "proof-phase-4-trust-continuity-pack", "xoonya phase 4 trust continuity cli category mismatch");
1160
+ const phase4CompletionOutput = execFileSync(process.execPath, [
1161
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1162
+ "--phase-4-completion",
1163
+ "--summary"
1164
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1165
+ const phase4CompletionSummary = JSON.parse(phase4CompletionOutput);
1166
+ assert.strictEqual(phase4CompletionSummary.category, "proof-phase-4-completion-pack", "xoonya phase 4 completion cli category mismatch");
1167
+ const phase4FreezeBaselineOutput = execFileSync(process.execPath, [
1168
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1169
+ "--phase-4-freeze-baseline",
1170
+ "--summary"
1171
+ ], { cwd: path.resolve(__dirname, ".."), encoding: "utf8" });
1172
+ const phase4FreezeBaselineSummary = JSON.parse(phase4FreezeBaselineOutput);
1173
+ assert.strictEqual(phase4FreezeBaselineSummary.category, "proof-phase-4-freeze-baseline-pack", "xoonya phase 4 freeze baseline cli category mismatch");
1174
+ assert.strictEqual(phase4FreezeBaselineSummary.baseline_status, "recorded", "xoonya phase 4 freeze baseline status mismatch");
1175
+ const publishPlanOutput = execFileSync(process.execPath, [
1176
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1177
+ "--publish-plan",
1178
+ "--summary"
1179
+ ], {
1180
+ cwd: path.resolve(__dirname, ".."),
1181
+ encoding: "utf8"
1182
+ });
1183
+ const publishPlanSummary = JSON.parse(publishPlanOutput);
1184
+ assert.strictEqual(publishPlanSummary.product, "xoonya", "xoonya publish plan cli product mismatch");
1185
+ assert.strictEqual(publishPlanSummary.category, "proof-publish-plan", "xoonya publish plan cli category mismatch");
1186
+ assert.strictEqual(publishPlanSummary.publish_step_count >= 5, true, "xoonya publish plan cli step count mismatch");
1187
+ const ecosystemOutput = execFileSync(process.execPath, [
1188
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1189
+ "--ecosystem",
1190
+ "--summary"
1191
+ ], {
1192
+ cwd: path.resolve(__dirname, ".."),
1193
+ encoding: "utf8"
1194
+ });
1195
+ const ecosystemSummary = JSON.parse(ecosystemOutput);
1196
+ assert.strictEqual(ecosystemSummary.product, "xoonya", "xoonya ecosystem cli product mismatch");
1197
+ assert.strictEqual(ecosystemSummary.category, "proof-ecosystem-entry", "xoonya ecosystem cli category mismatch");
1198
+ assert.strictEqual(ecosystemSummary.audience_count >= 4, true, "xoonya ecosystem cli audience count mismatch");
1199
+ const narrativeOutput = execFileSync(process.execPath, [
1200
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1201
+ "--narrative",
1202
+ "--summary"
1203
+ ], {
1204
+ cwd: path.resolve(__dirname, ".."),
1205
+ encoding: "utf8"
1206
+ });
1207
+ const narrativeSummary = JSON.parse(narrativeOutput);
1208
+ assert.strictEqual(narrativeSummary.product, "xoonya", "xoonya narrative cli product mismatch");
1209
+ assert.strictEqual(narrativeSummary.category, "proof-launch-narrative", "xoonya narrative cli category mismatch");
1210
+ assert.strictEqual(narrativeSummary.immediate_audience_count >= 4, true, "xoonya narrative cli audience count mismatch");
1211
+ const outreachProofOutput = execFileSync(process.execPath, [
1212
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1213
+ "--outreach-proof",
1214
+ "--summary"
1215
+ ], {
1216
+ cwd: path.resolve(__dirname, ".."),
1217
+ encoding: "utf8"
1218
+ });
1219
+ const outreachProofSummary = JSON.parse(outreachProofOutput);
1220
+ assert.strictEqual(outreachProofSummary.product, "xoonya", "xoonya outreach proof cli product mismatch");
1221
+ assert.strictEqual(outreachProofSummary.category, "proof-outreach-proof", "xoonya outreach proof cli category mismatch");
1222
+ assert.strictEqual(outreachProofSummary.live_rail_count >= 3, true, "xoonya outreach proof cli rail count mismatch");
1223
+ const announcementOutput = execFileSync(process.execPath, [
1224
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1225
+ "--announcement",
1226
+ "--summary"
1227
+ ], {
1228
+ cwd: path.resolve(__dirname, ".."),
1229
+ encoding: "utf8"
1230
+ });
1231
+ const announcementSummary = JSON.parse(announcementOutput);
1232
+ assert.strictEqual(announcementSummary.product, "xoonya", "xoonya announcement cli product mismatch");
1233
+ assert.strictEqual(announcementSummary.category, "proof-announcement-pack", "xoonya announcement cli category mismatch");
1234
+ assert.strictEqual(announcementSummary.publish_step_count >= 5, true, "xoonya announcement cli publish step mismatch");
1235
+ const releaseCandidateOutput = execFileSync(process.execPath, [
1236
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
1237
+ "--candidate",
1238
+ "--summary"
1239
+ ], {
1240
+ cwd: path.resolve(__dirname, ".."),
1241
+ encoding: "utf8"
1242
+ });
1243
+ const releaseCandidateSummary = JSON.parse(releaseCandidateOutput);
1244
+ assert.strictEqual(releaseCandidateSummary.product, "xoonya", "xoonya release candidate cli product mismatch");
1245
+ assert.strictEqual(releaseCandidateSummary.category, "proof-release-candidate", "xoonya release candidate cli category mismatch");
1246
+ assert.strictEqual(releaseCandidateSummary.checklist_count >= 5, true, "xoonya release candidate cli checklist mismatch");
1247
+
1248
+ console.log("xoonya verify:tooling passed");
1249
+ }
1250
+
1251
+ main();