xoonya 3.1.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/.env.example +10 -2
  2. package/CARRIED_HANDOFF_DEMO.md +60 -60
  3. package/COMPATIBILITY_NOTE.md +27 -27
  4. package/CROSS_RUNTIME_POSTURE.md +77 -77
  5. package/EXAMPLE_PATHS.md +53 -53
  6. package/FINAL_CONTRACT.md +445 -445
  7. package/LICENSE +201 -201
  8. package/NOTICE +3 -3
  9. package/PARTNER_READY_PATH.md +67 -67
  10. package/PUBLIC_DEMO_SCRIPT.md +79 -79
  11. package/README.md +843 -808
  12. package/RELEASE_NOTES.md +10 -15
  13. package/SERVICE_CONTRACT.md +207 -207
  14. package/START_HERE.md +159 -159
  15. package/TERMINOLOGY.md +55 -55
  16. package/WHY_XYTARA_XOONYA.md +43 -43
  17. package/XNYA_CONFORMANCE_MARK.md +78 -78
  18. package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -157
  19. package/XOONYA_DEFAULT_PATH_MODEL.md +63 -63
  20. package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +63 -63
  21. package/XOONYA_NATIVE_ATOM_SPEC.md +184 -184
  22. package/XOONYA_NATIVE_PROOF_FORMAT.md +570 -527
  23. package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +119 -119
  24. package/XOONYA_PROOF_TRUTH_MODEL.md +58 -58
  25. package/bin/xoonya-first-run.js +184 -184
  26. package/bin/xoonya-release.js +1367 -1367
  27. package/bin/xoonya-review.js +70 -70
  28. package/bin/xoonya.js +82 -82
  29. package/examples/integration_boundary_walkthrough.js +37 -37
  30. package/examples/package_quickstart.js +1007 -1007
  31. package/examples/partner_proof_walkthrough.js +68 -68
  32. package/examples/proof_review_walkthrough.js +66 -66
  33. package/examples/review_carried_handoff.js +72 -72
  34. package/index.js +31 -31
  35. package/integrations/PROOF_INTEGRATION_PROCESS.md +45 -45
  36. package/integrations/examples/example-third-party-verifier-registration.record.json +22 -22
  37. package/integrations/registration-record.schema.json +99 -99
  38. package/integrations/registry-snapshot.schema.json +36 -36
  39. package/integrations/registry.js +636 -636
  40. package/integrations/views.js +36 -36
  41. package/lib/adapter_certification_contract.js +90 -90
  42. package/lib/announcement_pack.js +61 -61
  43. package/lib/artifact_distribution_lane_contract.js +54 -54
  44. package/lib/asyncapi_contract.js +135 -135
  45. package/lib/auth_interop_contract.js +69 -69
  46. package/lib/authority_binding_lifecycle_contract.js +182 -182
  47. package/lib/bridge_intelligence.js +102 -102
  48. package/lib/cloudevents_contract.js +79 -79
  49. package/lib/crypto_agility_matrix.js +125 -125
  50. package/lib/default_path_contract.js +380 -380
  51. package/lib/ecosystem_entry.js +64 -64
  52. package/lib/erc8004_proof_lane_contract.js +64 -64
  53. package/lib/event_system_lane_contract.js +76 -76
  54. package/lib/external_proof_import_lane_contract.js +87 -87
  55. package/lib/feature_control_lane_contract.js +54 -54
  56. package/lib/followthrough_truth_contract.js +214 -214
  57. package/lib/framework_lane_contract.js +76 -76
  58. package/lib/governance_disputes_summary.js +36 -36
  59. package/lib/governance_intelligence.js +108 -108
  60. package/lib/identity_interop_contract.js +83 -83
  61. package/lib/integration_matrix_contract.js +81 -81
  62. package/lib/launch_narrative.js +53 -53
  63. package/lib/machine_identity_registry_contract.js +199 -199
  64. package/lib/major_rails_proof_lane_contract.js +87 -87
  65. package/lib/offline_verifiability_recovery_contract.js +155 -155
  66. package/lib/openapi_contract.js +227 -227
  67. package/lib/operational_receipt_contract.js +165 -165
  68. package/lib/outreach_proof.js +71 -71
  69. package/lib/phase_10_closeout_pack.js +45 -45
  70. package/lib/phase_10_completion_pack.js +76 -76
  71. package/lib/phase_10_decision_record_pack.js +54 -54
  72. package/lib/phase_10_decision_resolution_pack.js +53 -53
  73. package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -74
  74. package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -74
  75. package/lib/phase_10_freeze_baseline_pack.js +67 -67
  76. package/lib/phase_10_freeze_review_pack.js +64 -64
  77. package/lib/phase_10_gate_pack.js +57 -57
  78. package/lib/phase_10_long_tail_continuity_pack.js +80 -80
  79. package/lib/phase_10_long_tail_ecosystem_pack.js +68 -68
  80. package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -74
  81. package/lib/phase_1_claude_mcp_pack.js +60 -60
  82. package/lib/phase_1_claude_mcp_proof_pack.js +57 -57
  83. package/lib/phase_1_ecosystem_pack.js +51 -51
  84. package/lib/phase_1_openai_codex_pack.js +60 -60
  85. package/lib/phase_1_openai_codex_proof_pack.js +57 -57
  86. package/lib/phase_2_base_proof_pack.js +71 -71
  87. package/lib/phase_2_base_usdc_proof_pack.js +72 -72
  88. package/lib/phase_2_closeout_pack.js +65 -65
  89. package/lib/phase_2_completion_pack.js +113 -113
  90. package/lib/phase_2_decision_record_pack.js +66 -66
  91. package/lib/phase_2_decision_resolution_pack.js +69 -69
  92. package/lib/phase_2_eth_proof_pack.js +70 -70
  93. package/lib/phase_2_evm_base_proof_pack.js +73 -73
  94. package/lib/phase_2_evm_proof_pack.js +71 -71
  95. package/lib/phase_2_flip_preview_pack.js +60 -60
  96. package/lib/phase_2_freeze_review_pack.js +99 -99
  97. package/lib/phase_2_gate_pack.js +77 -77
  98. package/lib/phase_2_payment_rails_pack.js +71 -71
  99. package/lib/phase_2_usdc_proof_pack.js +71 -71
  100. package/lib/phase_3_brc_proof_pack.js +81 -81
  101. package/lib/phase_3_bsv_teranode_proof_pack.js +81 -81
  102. package/lib/phase_3_closeout_pack.js +62 -62
  103. package/lib/phase_3_completion_pack.js +92 -92
  104. package/lib/phase_3_decision_record_pack.js +64 -64
  105. package/lib/phase_3_decision_resolution_pack.js +69 -69
  106. package/lib/phase_3_freeze_baseline_pack.js +67 -67
  107. package/lib/phase_3_freeze_review_pack.js +80 -80
  108. package/lib/phase_3_gate_pack.js +76 -76
  109. package/lib/phase_3_metanet_proof_pack.js +81 -81
  110. package/lib/phase_3_native_bsv_pack.js +89 -89
  111. package/lib/phase_3_native_continuity_pack.js +82 -82
  112. package/lib/phase_4_attestation_proof_pack.js +75 -75
  113. package/lib/phase_4_closeout_pack.js +45 -45
  114. package/lib/phase_4_completion_pack.js +82 -82
  115. package/lib/phase_4_decision_record_pack.js +54 -54
  116. package/lib/phase_4_decision_resolution_pack.js +45 -45
  117. package/lib/phase_4_erc8004_proof_pack.js +76 -76
  118. package/lib/phase_4_freeze_baseline_pack.js +67 -67
  119. package/lib/phase_4_freeze_review_pack.js +68 -68
  120. package/lib/phase_4_gate_pack.js +58 -58
  121. package/lib/phase_4_identity_registry_proof_pack.js +75 -75
  122. package/lib/phase_4_identity_trust_pack.js +73 -73
  123. package/lib/phase_4_trust_continuity_pack.js +86 -86
  124. package/lib/phase_5_antelope_proof_pack.js +76 -76
  125. package/lib/phase_5_closeout_pack.js +44 -44
  126. package/lib/phase_5_completion_pack.js +82 -82
  127. package/lib/phase_5_decision_record_pack.js +54 -54
  128. package/lib/phase_5_decision_resolution_pack.js +45 -45
  129. package/lib/phase_5_freeze_baseline_pack.js +67 -67
  130. package/lib/phase_5_freeze_review_pack.js +68 -68
  131. package/lib/phase_5_gate_pack.js +58 -58
  132. package/lib/phase_5_major_rails_continuity_pack.js +86 -86
  133. package/lib/phase_5_major_rails_pack.js +74 -74
  134. package/lib/phase_5_proton_xpr_proof_pack.js +76 -76
  135. package/lib/phase_5_solana_proof_pack.js +76 -76
  136. package/lib/phase_6_autogen_proof_pack.js +74 -74
  137. package/lib/phase_6_closeout_pack.js +46 -46
  138. package/lib/phase_6_completion_pack.js +77 -77
  139. package/lib/phase_6_decision_record_pack.js +54 -54
  140. package/lib/phase_6_decision_resolution_pack.js +53 -53
  141. package/lib/phase_6_framework_continuity_pack.js +81 -81
  142. package/lib/phase_6_framework_runtime_pack.js +68 -68
  143. package/lib/phase_6_freeze_baseline_pack.js +68 -68
  144. package/lib/phase_6_freeze_review_pack.js +65 -65
  145. package/lib/phase_6_gate_pack.js +59 -59
  146. package/lib/phase_6_langchain_proof_pack.js +74 -74
  147. package/lib/phase_6_langgraph_proof_pack.js +74 -74
  148. package/lib/phase_6_semantic_kernel_proof_pack.js +74 -74
  149. package/lib/phase_7_closeout_pack.js +45 -45
  150. package/lib/phase_7_completion_pack.js +85 -85
  151. package/lib/phase_7_decision_record_pack.js +53 -53
  152. package/lib/phase_7_decision_resolution_pack.js +53 -53
  153. package/lib/phase_7_event_system_continuity_pack.js +89 -89
  154. package/lib/phase_7_event_system_pack.js +76 -76
  155. package/lib/phase_7_freeze_baseline_pack.js +74 -74
  156. package/lib/phase_7_freeze_review_pack.js +65 -65
  157. package/lib/phase_7_gate_pack.js +58 -58
  158. package/lib/phase_7_kafka_proof_pack.js +76 -76
  159. package/lib/phase_7_mqtt_proof_pack.js +76 -76
  160. package/lib/phase_7_nats_proof_pack.js +76 -76
  161. package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -76
  162. package/lib/phase_8_closeout_pack.js +46 -46
  163. package/lib/phase_8_completion_pack.js +82 -82
  164. package/lib/phase_8_decision_record_pack.js +54 -54
  165. package/lib/phase_8_decision_resolution_pack.js +53 -53
  166. package/lib/phase_8_external_receipt_import_proof_pack.js +74 -74
  167. package/lib/phase_8_external_result_import_proof_pack.js +74 -74
  168. package/lib/phase_8_freeze_baseline_pack.js +71 -71
  169. package/lib/phase_8_freeze_review_pack.js +64 -64
  170. package/lib/phase_8_gate_pack.js +58 -58
  171. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
  172. package/lib/phase_8_proof_bridges_pack.js +72 -72
  173. package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -74
  174. package/lib/phase_9_closeout_pack.js +46 -46
  175. package/lib/phase_9_completion_pack.js +82 -82
  176. package/lib/phase_9_custody_refs_proof_pack.js +74 -74
  177. package/lib/phase_9_decision_record_pack.js +54 -54
  178. package/lib/phase_9_decision_resolution_pack.js +53 -53
  179. package/lib/phase_9_freeze_baseline_pack.js +71 -71
  180. package/lib/phase_9_freeze_review_pack.js +64 -64
  181. package/lib/phase_9_gate_pack.js +58 -58
  182. package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -74
  183. package/lib/phase_9_treasury_connectivity_pack.js +72 -72
  184. package/lib/phase_9_treasury_continuity_pack.js +86 -86
  185. package/lib/phase_9_treasury_destinations_proof_pack.js +74 -74
  186. package/lib/phase_program_pack.js +47 -47
  187. package/lib/proof_bridge_lane_contract.js +82 -82
  188. package/lib/proof_truth_contract.js +224 -224
  189. package/lib/provenance_lane_contract.js +54 -54
  190. package/lib/provider_lane_contract.js +67 -67
  191. package/lib/public_surface_policy_contract.js +111 -111
  192. package/lib/publish_plan.js +51 -51
  193. package/lib/release_candidate.js +50 -50
  194. package/lib/release_center.js +1037 -1037
  195. package/lib/release_history.js +206 -206
  196. package/lib/release_manifest.js +114 -114
  197. package/lib/release_pack.js +391 -391
  198. package/lib/result_package_trust_lane_contract.js +74 -74
  199. package/lib/review_intelligence.js +100 -100
  200. package/lib/role_freeze.js +436 -436
  201. package/lib/shared_signals_lane_contract.js +54 -54
  202. package/lib/signed_audit_provenance_contract.js +93 -93
  203. package/lib/telemetry_lane_contract.js +54 -54
  204. package/lib/treasury_proof_lane_contract.js +83 -83
  205. package/lib/trust_intelligence.js +106 -106
  206. package/lib/trust_portability_boundary_contract.js +66 -66
  207. package/lib/trust_portability_pack.js +224 -224
  208. package/lib/verification_service_pack.js +149 -149
  209. package/package.json +98 -97
  210. package/proof_sdk.js +6561 -6265
  211. package/reference/python/README.md +35 -35
  212. package/reference/python/__pycache__/xnya_reference.cpython-314.pyc +0 -0
  213. package/reference/python/requirements-optional.txt +1 -1
  214. package/reference/python/verify_vectors.py +223 -223
  215. package/reference/python/xnya_reference.py +810 -810
  216. package/reference/rust/Cargo.toml +11 -11
  217. package/reference/rust/README.md +28 -28
  218. package/reference/rust/src/lib.rs +87 -87
  219. package/scripts/registry_cli.js +157 -157
  220. package/scripts/verify_all.js +603 -603
  221. package/scripts/verify_control_plane_contracts.js +34 -34
  222. package/scripts/verify_control_plane_routes.js +70 -70
  223. package/scripts/verify_examples.js +19 -19
  224. package/scripts/verify_external_proof_import_gate.js +84 -84
  225. package/scripts/verify_forgery_resistance.js +281 -0
  226. package/scripts/verify_integrations.js +170 -170
  227. package/scripts/verify_native_hybrid_design_gate.js +114 -114
  228. package/scripts/verify_reference_promotion_gate.js +74 -74
  229. package/scripts/verify_reference_python.js +49 -49
  230. package/scripts/verify_reference_python_crypto.js +87 -87
  231. package/scripts/verify_reference_rust_scaffold.js +50 -50
  232. package/scripts/verify_release_candidate.js +131 -131
  233. package/scripts/verify_service.js +3038 -2940
  234. package/scripts/verify_tooling.js +1251 -1251
  235. package/scripts/verify_trust_portability.js +56 -56
  236. package/scripts/verify_vectors.js +192 -192
  237. package/scripts/verify_verification_services.js +56 -56
  238. package/server.js +4223 -4099
  239. package/vectors/adversarial-vectors.json +552 -552
  240. package/vectors/conformance-vectors.json +446 -446
  241. package/vectors/native-atom-vectors.json +101 -101
  242. package/vectors/native-payload-profile-vectors.json +50 -50
  243. package/OPERATIONS_RUNBOOK.md +0 -50
  244. package/OPERATOR_START_HERE.md +0 -67
  245. package/PROGRAM_COMPLETE_RELEASE.md +0 -52
  246. package/PROGRAM_STATUS.md +0 -57
  247. package/PUBLISH_PLAN.md +0 -25
  248. package/RELEASE_CHECKLIST.md +0 -16
@@ -1,155 +1,155 @@
1
- "use strict";
2
-
3
- const packageJson = require("../package.json");
4
-
5
- function buildOfflineVerifiabilityRecoveryContractPack() {
6
- return {
7
- ok: true,
8
- product: packageJson.name,
9
- category: "naxytra-offline-verifiability-recovery-contract",
10
- pack_version: "naxytra-offline-verifiability-recovery-contract-v1",
11
- doctrine: "xoonya_keeps_evidence_verifiable_and_recoverable_when_live_provider_paths_are_unavailable",
12
- model_state: "core_now",
13
- core_claim: "offline mode remains a bounded operational mode with explicit verification restore and evidence lineage rules",
14
- offline_states: [
15
- { state: "online", description: "normal live operation" },
16
- { state: "degraded", description: "limited live capability but still operational" },
17
- { state: "offline_verify_only", description: "local evidence verification without live provider dependence" },
18
- { state: "restore_pending", description: "durable data is being restored or validated" },
19
- { state: "restored", description: "state has been restored and revalidated" }
20
- ],
21
- verifiable_offline_inputs: [
22
- "operational_receipts",
23
- "proof_bundles",
24
- "registry_records",
25
- "identity_or_authority_bindings",
26
- "release_and_provenance_artifacts",
27
- "checksum_or_hash_manifests"
28
- ],
29
- recovery_inputs: [
30
- "receipts",
31
- "proof_bundles",
32
- "registry_snapshots",
33
- "operator_notes_where_required",
34
- "release_evidence",
35
- "backup_manifests"
36
- ],
37
- recovery_rules: [
38
- "backups_must_be_versioned",
39
- "restore_targets_must_be_explicit",
40
- "restore_actions_must_be_replayable_or_at_least_auditable",
41
- "restored_state_must_preserve_evidence_lineage",
42
- "restore_procedures_must_not_silently_rewrite_the_canonical_record"
43
- ],
44
- offline_verification_rules: [
45
- "local_verification_must_not_depend_on_live_provider_truth_for_the_base_evidence_record",
46
- "imported_evidence_must_keep_its_source_boundary_explicit",
47
- "cryptographic_checks_must_be_deterministic",
48
- "if_an_external_claim_cannot_be_verified_locally_that_limitation_must_be_recorded"
49
- ],
50
- canonical_objects: [
51
- {
52
- object_id: "offline_verification_record",
53
- role: "local_verification_or_restore_state_record",
54
- required_fields: [
55
- "version",
56
- "state",
57
- "record_id",
58
- "created_at_iso",
59
- "actor_id",
60
- "evidence_refs"
61
- ],
62
- recommended_fields: [
63
- "backup_ref",
64
- "restore_ref",
65
- "proof_ref",
66
- "registry_snapshot_ref",
67
- "hash_manifest_ref"
68
- ],
69
- optional_fields: [
70
- "limitation_notes",
71
- "metadata"
72
- ],
73
- primary_surfaces: [
74
- "/v1/proof-truth",
75
- "/v1/proof-truth/summary",
76
- "/v1/provenance",
77
- "/v1/provenance/summary",
78
- "/v1/security-reliability-drills"
79
- ]
80
- }
81
- ],
82
- lineage_model: [
83
- {
84
- layer_id: "offline_verification",
85
- order_index: 1,
86
- objects: ["offline_verification_record"],
87
- invariants: [
88
- "local_verification_can_run_without_live_provider_truth",
89
- "evidence_boundary_remains_explicit"
90
- ]
91
- },
92
- {
93
- layer_id: "restore_and_replay",
94
- order_index: 2,
95
- objects: ["offline_verification_record"],
96
- invariants: [
97
- "restores_preserve_lineage",
98
- "restore_state_is_auditable"
99
- ]
100
- },
101
- {
102
- layer_id: "post_restore_followthrough",
103
- order_index: 3,
104
- objects: ["offline_verification_record"],
105
- invariants: [
106
- "restored_state_can_rejoin_live_operation_after_revalidation",
107
- "offline_verification_does_not_redefine_core_truth"
108
- ]
109
- }
110
- ],
111
- invariants: [
112
- "offline_mode_is_bounded",
113
- "restore_events_are_evidence_events",
114
- "local_verification_does_not_require_live_provider_truth_for_base_evidence",
115
- "restore_procedures_preserve_lineage",
116
- "offline_verification_is_a_proof_followthrough_mode_not_a_new_proof_standard"
117
- ],
118
- linked_surfaces: {
119
- proof_truth_ref: "/v1/proof-truth",
120
- proof_truth_summary_ref: "/v1/proof-truth/summary",
121
- provenance_ref: "/v1/provenance",
122
- security_reliability_drills_ref: "/v1/security-reliability-drills",
123
- release_verification_receipt_ref: "/v1/release-verification-receipt"
124
- },
125
- claim_boundary: "claim_the_offline_verification_and_recovery_followthrough_only_without_claiming_live_provider_truth_or_universal_availability"
126
- };
127
- }
128
-
129
- function summarizeOfflineVerifiabilityRecoveryContractPack() {
130
- const pack = buildOfflineVerifiabilityRecoveryContractPack();
131
- return {
132
- ok: true,
133
- product: pack.product,
134
- category: pack.category,
135
- summary_version: "naxytra-offline-verifiability-recovery-contract-summary-v1",
136
- pack_version: pack.pack_version,
137
- model_state: pack.model_state,
138
- offline_state_count: pack.offline_states.length,
139
- offline_input_count: pack.verifiable_offline_inputs.length,
140
- recovery_input_count: pack.recovery_inputs.length,
141
- rule_count: pack.recovery_rules.length,
142
- linked_surfaces: pack.linked_surfaces
143
- };
144
- }
145
-
146
- function getOfflineStateDetail(state) {
147
- const normalized = String(state || "").trim().toLowerCase();
148
- return (buildOfflineVerifiabilityRecoveryContractPack().offline_states || []).find((entry) => entry.state === normalized) || null;
149
- }
150
-
151
- module.exports = {
152
- buildOfflineVerifiabilityRecoveryContractPack,
153
- summarizeOfflineVerifiabilityRecoveryContractPack,
154
- getOfflineStateDetail
155
- };
1
+ "use strict";
2
+
3
+ const packageJson = require("../package.json");
4
+
5
+ function buildOfflineVerifiabilityRecoveryContractPack() {
6
+ return {
7
+ ok: true,
8
+ product: packageJson.name,
9
+ category: "naxytra-offline-verifiability-recovery-contract",
10
+ pack_version: "naxytra-offline-verifiability-recovery-contract-v1",
11
+ doctrine: "xoonya_keeps_evidence_verifiable_and_recoverable_when_live_provider_paths_are_unavailable",
12
+ model_state: "core_now",
13
+ core_claim: "offline mode remains a bounded operational mode with explicit verification restore and evidence lineage rules",
14
+ offline_states: [
15
+ { state: "online", description: "normal live operation" },
16
+ { state: "degraded", description: "limited live capability but still operational" },
17
+ { state: "offline_verify_only", description: "local evidence verification without live provider dependence" },
18
+ { state: "restore_pending", description: "durable data is being restored or validated" },
19
+ { state: "restored", description: "state has been restored and revalidated" }
20
+ ],
21
+ verifiable_offline_inputs: [
22
+ "operational_receipts",
23
+ "proof_bundles",
24
+ "registry_records",
25
+ "identity_or_authority_bindings",
26
+ "release_and_provenance_artifacts",
27
+ "checksum_or_hash_manifests"
28
+ ],
29
+ recovery_inputs: [
30
+ "receipts",
31
+ "proof_bundles",
32
+ "registry_snapshots",
33
+ "operator_notes_where_required",
34
+ "release_evidence",
35
+ "backup_manifests"
36
+ ],
37
+ recovery_rules: [
38
+ "backups_must_be_versioned",
39
+ "restore_targets_must_be_explicit",
40
+ "restore_actions_must_be_replayable_or_at_least_auditable",
41
+ "restored_state_must_preserve_evidence_lineage",
42
+ "restore_procedures_must_not_silently_rewrite_the_canonical_record"
43
+ ],
44
+ offline_verification_rules: [
45
+ "local_verification_must_not_depend_on_live_provider_truth_for_the_base_evidence_record",
46
+ "imported_evidence_must_keep_its_source_boundary_explicit",
47
+ "cryptographic_checks_must_be_deterministic",
48
+ "if_an_external_claim_cannot_be_verified_locally_that_limitation_must_be_recorded"
49
+ ],
50
+ canonical_objects: [
51
+ {
52
+ object_id: "offline_verification_record",
53
+ role: "local_verification_or_restore_state_record",
54
+ required_fields: [
55
+ "version",
56
+ "state",
57
+ "record_id",
58
+ "created_at_iso",
59
+ "actor_id",
60
+ "evidence_refs"
61
+ ],
62
+ recommended_fields: [
63
+ "backup_ref",
64
+ "restore_ref",
65
+ "proof_ref",
66
+ "registry_snapshot_ref",
67
+ "hash_manifest_ref"
68
+ ],
69
+ optional_fields: [
70
+ "limitation_notes",
71
+ "metadata"
72
+ ],
73
+ primary_surfaces: [
74
+ "/v1/proof-truth",
75
+ "/v1/proof-truth/summary",
76
+ "/v1/provenance",
77
+ "/v1/provenance/summary",
78
+ "/v1/security-reliability-drills"
79
+ ]
80
+ }
81
+ ],
82
+ lineage_model: [
83
+ {
84
+ layer_id: "offline_verification",
85
+ order_index: 1,
86
+ objects: ["offline_verification_record"],
87
+ invariants: [
88
+ "local_verification_can_run_without_live_provider_truth",
89
+ "evidence_boundary_remains_explicit"
90
+ ]
91
+ },
92
+ {
93
+ layer_id: "restore_and_replay",
94
+ order_index: 2,
95
+ objects: ["offline_verification_record"],
96
+ invariants: [
97
+ "restores_preserve_lineage",
98
+ "restore_state_is_auditable"
99
+ ]
100
+ },
101
+ {
102
+ layer_id: "post_restore_followthrough",
103
+ order_index: 3,
104
+ objects: ["offline_verification_record"],
105
+ invariants: [
106
+ "restored_state_can_rejoin_live_operation_after_revalidation",
107
+ "offline_verification_does_not_redefine_core_truth"
108
+ ]
109
+ }
110
+ ],
111
+ invariants: [
112
+ "offline_mode_is_bounded",
113
+ "restore_events_are_evidence_events",
114
+ "local_verification_does_not_require_live_provider_truth_for_base_evidence",
115
+ "restore_procedures_preserve_lineage",
116
+ "offline_verification_is_a_proof_followthrough_mode_not_a_new_proof_standard"
117
+ ],
118
+ linked_surfaces: {
119
+ proof_truth_ref: "/v1/proof-truth",
120
+ proof_truth_summary_ref: "/v1/proof-truth/summary",
121
+ provenance_ref: "/v1/provenance",
122
+ security_reliability_drills_ref: "/v1/security-reliability-drills",
123
+ release_verification_receipt_ref: "/v1/release-verification-receipt"
124
+ },
125
+ claim_boundary: "claim_the_offline_verification_and_recovery_followthrough_only_without_claiming_live_provider_truth_or_universal_availability"
126
+ };
127
+ }
128
+
129
+ function summarizeOfflineVerifiabilityRecoveryContractPack() {
130
+ const pack = buildOfflineVerifiabilityRecoveryContractPack();
131
+ return {
132
+ ok: true,
133
+ product: pack.product,
134
+ category: pack.category,
135
+ summary_version: "naxytra-offline-verifiability-recovery-contract-summary-v1",
136
+ pack_version: pack.pack_version,
137
+ model_state: pack.model_state,
138
+ offline_state_count: pack.offline_states.length,
139
+ offline_input_count: pack.verifiable_offline_inputs.length,
140
+ recovery_input_count: pack.recovery_inputs.length,
141
+ rule_count: pack.recovery_rules.length,
142
+ linked_surfaces: pack.linked_surfaces
143
+ };
144
+ }
145
+
146
+ function getOfflineStateDetail(state) {
147
+ const normalized = String(state || "").trim().toLowerCase();
148
+ return (buildOfflineVerifiabilityRecoveryContractPack().offline_states || []).find((entry) => entry.state === normalized) || null;
149
+ }
150
+
151
+ module.exports = {
152
+ buildOfflineVerifiabilityRecoveryContractPack,
153
+ summarizeOfflineVerifiabilityRecoveryContractPack,
154
+ getOfflineStateDetail
155
+ };