settld 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +93 -3
  2. package/SETTLD_VERSION +1 -1
  3. package/bin/settld-mcp +2 -0
  4. package/bin/settld.js +71 -0
  5. package/conformance/kernel-v0/README.md +7 -0
  6. package/conformance/kernel-v0/run.mjs +292 -4
  7. package/docs/ACCESS.md +57 -0
  8. package/docs/ADOPTION_CHECKLIST.md +44 -0
  9. package/docs/ALERTS.md +198 -0
  10. package/docs/ARCHITECTURE.md +69 -0
  11. package/docs/ARCHITECTURE_FOUNDER_GUIDE.md +284 -0
  12. package/docs/ARTIFACTS.md +60 -0
  13. package/docs/CERTIFICATION_CHECKLIST.md +33 -0
  14. package/docs/CIRCLE_SANDBOX_E2E.md +152 -0
  15. package/docs/CONFIG.md +297 -0
  16. package/docs/CONTRACTS_APIS.md +23 -0
  17. package/docs/DEPRECATION.md +31 -0
  18. package/docs/DOMAIN_MODEL.md +92 -0
  19. package/docs/EVENT_ENVELOPE.md +53 -0
  20. package/docs/FINANCE_PACK_FORMAT.md +53 -0
  21. package/docs/INCIDENT_TAXONOMY.md +30 -0
  22. package/docs/JOB_STATE_MACHINE.md +66 -0
  23. package/docs/KERNEL_COMPATIBLE.md +60 -0
  24. package/docs/KERNEL_V0.md +40 -0
  25. package/docs/KEY_ROTATION.md +80 -0
  26. package/docs/LEDGER.md +82 -0
  27. package/docs/LIVENESS.md +76 -0
  28. package/docs/MVP_BUILD_ORDER.md +36 -0
  29. package/docs/ONCALL_PLAYBOOK.md +39 -0
  30. package/docs/OPERATIONS_SIGNING.md +20 -0
  31. package/docs/OVERVIEW.md +190 -0
  32. package/docs/PERF_BASELINE.md +85 -0
  33. package/docs/PRD.md +77 -0
  34. package/docs/QUICKSTART_KERNEL_V0.md +96 -0
  35. package/docs/QUICKSTART_MCP.md +377 -0
  36. package/docs/QUICKSTART_MCP_HOSTS.md +210 -0
  37. package/docs/QUICKSTART_POLICY_PACKS.md +65 -0
  38. package/docs/QUICKSTART_PRODUCE.md +61 -0
  39. package/docs/QUICKSTART_PROFILES.md +198 -0
  40. package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
  41. package/docs/QUICKSTART_SDK.md +125 -0
  42. package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
  43. package/docs/QUICKSTART_VERIFY.md +54 -0
  44. package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
  45. package/docs/README.md +33 -0
  46. package/docs/RELEASE_CHECKLIST.md +182 -0
  47. package/docs/RELEASING.md +82 -0
  48. package/docs/REPO_SETTINGS.md +37 -0
  49. package/docs/RUNBOOK.md +86 -0
  50. package/docs/SKILLS.md +42 -0
  51. package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
  52. package/docs/SLO.md +131 -0
  53. package/docs/SUMMARY.md +17 -0
  54. package/docs/SUPPORT.md +31 -0
  55. package/docs/THREAT_MODEL.md +36 -0
  56. package/docs/TRUST.md +59 -0
  57. package/docs/WORKFLOW.md +35 -0
  58. package/docs/X402_BATCH_SETTLEMENT.md +126 -0
  59. package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
  60. package/docs/examples/x402-provider-payout-registry.example.json +14 -0
  61. package/docs/gitbook/README.md +64 -0
  62. package/docs/gitbook/SETUP.md +25 -0
  63. package/docs/gitbook/SUMMARY.md +15 -0
  64. package/docs/gitbook/api-reference.md +73 -0
  65. package/docs/gitbook/closepacks.md +55 -0
  66. package/docs/gitbook/conformance.md +59 -0
  67. package/docs/gitbook/core-primitives.md +85 -0
  68. package/docs/gitbook/dispute-lifecycle.md +33 -0
  69. package/docs/gitbook/faq.md +21 -0
  70. package/docs/gitbook/guides.md +49 -0
  71. package/docs/gitbook/operations-runbook.md +36 -0
  72. package/docs/gitbook/quickstart.md +103 -0
  73. package/docs/gitbook/replay-and-audit.md +30 -0
  74. package/docs/gitbook/sdk-reference.md +35 -0
  75. package/docs/gitbook/security-model.md +58 -0
  76. package/docs/integrations/README.md +15 -0
  77. package/docs/integrations/github-actions-verify.yml +31 -0
  78. package/docs/integrations/github-actions.md +34 -0
  79. package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
  80. package/docs/integrations/openclaw/PUBLIC_QUICKSTART.md +95 -0
  81. package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
  82. package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
  83. package/docs/kernel-compatible/capabilities.json +36 -0
  84. package/docs/marketing/agent-commerce-substrate.md +78 -0
  85. package/docs/marketing/hn-repost-2026-02-17.md +102 -0
  86. package/docs/marketing/show-hn-post.md +45 -0
  87. package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
  88. package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
  89. package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
  90. package/docs/ops/DISPUTE_FINANCE_RECONCILIATION_PACKET.md +56 -0
  91. package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
  92. package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
  93. package/docs/ops/KERNEL_V0_SHIP_GATE.md +69 -0
  94. package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
  95. package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +30 -0
  96. package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
  97. package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
  98. package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
  99. package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
  100. package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +140 -0
  101. package/docs/ops/R1_SLOS.md +66 -0
  102. package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
  103. package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
  104. package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
  105. package/docs/ops/TRUST_CONFIG_WIZARD.md +60 -0
  106. package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
  107. package/docs/ops/tool-call-disputes-holdback.md +52 -0
  108. package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
  109. package/docs/pilot-kit/README.md +29 -0
  110. package/docs/pilot-kit/architecture-one-pager.md +48 -0
  111. package/docs/pilot-kit/buyer-email.txt +19 -0
  112. package/docs/pilot-kit/buyer-one-pager.md +31 -0
  113. package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
  114. package/docs/pilot-kit/offline-verify.md +33 -0
  115. package/docs/pilot-kit/procurement-one-pager.md +50 -0
  116. package/docs/pilot-kit/rfp-clause.md +46 -0
  117. package/docs/pilot-kit/roi-calculator-template.csv +2 -0
  118. package/docs/pilot-kit/security-qa.md +153 -0
  119. package/docs/pilot-kit/security-summary.md +35 -0
  120. package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
  121. package/docs/plans/2026-02-20-trust-os-v1-jira-backlog.md +348 -0
  122. package/docs/plans/2026-02-21-agent-economic-actor-operating-model.md +169 -0
  123. package/docs/plans/2026-02-21-trust-os-v1-strategy.md +241 -0
  124. package/docs/research/2026-02-21-agent-spend-host-landscape.md +57 -0
  125. package/docs/spec/AcceptanceCriteria.v1.md +17 -0
  126. package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
  127. package/docs/spec/AgentEvent.v1.md +47 -0
  128. package/docs/spec/AgentIdentity.v1.md +62 -0
  129. package/docs/spec/AgentPassport.v1.md +95 -0
  130. package/docs/spec/AgentReputation.v1.md +59 -0
  131. package/docs/spec/AgentReputation.v2.md +52 -0
  132. package/docs/spec/AgentRun.v1.md +47 -0
  133. package/docs/spec/AgentRunSettlement.v1.md +52 -0
  134. package/docs/spec/AgentWallet.v1.md +43 -0
  135. package/docs/spec/AgreementDelegation.v1.md +109 -0
  136. package/docs/spec/ArbitrationCase.v1.md +67 -0
  137. package/docs/spec/ArbitrationOutcomeMapping.v1.md +62 -0
  138. package/docs/spec/ArbitrationVerdict.v1.md +60 -0
  139. package/docs/spec/BundleHeadAttestation.v1.md +32 -0
  140. package/docs/spec/CANONICAL_JSON.md +31 -0
  141. package/docs/spec/CRYPTOGRAPHY.md +61 -0
  142. package/docs/spec/ClosePack.v1.md +49 -0
  143. package/docs/spec/ClosePackManifest.v1.md +24 -0
  144. package/docs/spec/DelegationGrant.v1.md +90 -0
  145. package/docs/spec/DisputeCaseLifecycle.v1.md +51 -0
  146. package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
  147. package/docs/spec/ERRORS.md +76 -0
  148. package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
  149. package/docs/spec/EvidenceIndex.v1.md +20 -0
  150. package/docs/spec/ExecutionIntent.v1.md +90 -0
  151. package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
  152. package/docs/spec/FundingHold.v1.md +60 -0
  153. package/docs/spec/GovernancePolicy.v1.md +34 -0
  154. package/docs/spec/GovernancePolicy.v2.md +30 -0
  155. package/docs/spec/INVARIANTS.md +389 -0
  156. package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
  157. package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
  158. package/docs/spec/InvoiceClaim.v1.md +11 -0
  159. package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
  160. package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
  161. package/docs/spec/MarketplaceOffer.v2.md +54 -0
  162. package/docs/spec/MeteringReport.v1.md +18 -0
  163. package/docs/spec/OperatorAction.v1.md +90 -0
  164. package/docs/spec/PRODUCER_ERRORS.md +42 -0
  165. package/docs/spec/PolicyDecision.v1.md +83 -0
  166. package/docs/spec/PricingMatrix.v1.md +20 -0
  167. package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
  168. package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
  169. package/docs/spec/ProduceCliOutput.v1.md +46 -0
  170. package/docs/spec/ProofBundleManifest.v1.md +24 -0
  171. package/docs/spec/README.md +109 -0
  172. package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
  173. package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
  174. package/docs/spec/REMOTE_SIGNER.md +66 -0
  175. package/docs/spec/ReleaseIndex.v1.md +32 -0
  176. package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
  177. package/docs/spec/ReleaseTrust.v1.md +13 -0
  178. package/docs/spec/ReleaseTrust.v2.md +26 -0
  179. package/docs/spec/RemoteSignerRequest.v1.md +21 -0
  180. package/docs/spec/RemoteSignerResponse.v1.md +16 -0
  181. package/docs/spec/ReputationEvent.v1.md +63 -0
  182. package/docs/spec/RevocationList.v1.md +28 -0
  183. package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
  184. package/docs/spec/STRICTNESS.md +68 -0
  185. package/docs/spec/SUPPLY_CHAIN.md +33 -0
  186. package/docs/spec/SettlementAdjustment.v1.md +45 -0
  187. package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
  188. package/docs/spec/SettlementDecisionRecord.v2.md +53 -0
  189. package/docs/spec/SettlementDecisionReport.v1.md +44 -0
  190. package/docs/spec/SettlementKernel.v1.md +59 -0
  191. package/docs/spec/SettlementReceipt.v1.md +63 -0
  192. package/docs/spec/SlaDefinition.v1.md +24 -0
  193. package/docs/spec/SlaEvaluation.v1.md +12 -0
  194. package/docs/spec/THREAT_MODEL.md +113 -0
  195. package/docs/spec/TOOL_PROVENANCE.md +30 -0
  196. package/docs/spec/TRUST_ANCHORS.md +84 -0
  197. package/docs/spec/TenantSettings.v1.md +90 -0
  198. package/docs/spec/TenantSettings.v2.md +99 -0
  199. package/docs/spec/TimestampProof.v1.md +25 -0
  200. package/docs/spec/ToolCallAgreement.v1.md +34 -0
  201. package/docs/spec/ToolCallEvidence.v1.md +47 -0
  202. package/docs/spec/ToolManifest.v1.md +47 -0
  203. package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
  204. package/docs/spec/VERSIONING.md +107 -0
  205. package/docs/spec/VerificationReport.v1.md +50 -0
  206. package/docs/spec/VerifyAboutOutput.v1.md +10 -0
  207. package/docs/spec/VerifyCliOutput.v1.md +28 -0
  208. package/docs/spec/WARNINGS.md +83 -0
  209. package/docs/spec/error-codes.v1.txt +285 -0
  210. package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
  211. package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
  212. package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
  213. package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
  214. package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
  215. package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
  216. package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
  217. package/docs/spec/examples/release_index_v1.example.json +15 -0
  218. package/docs/spec/examples/release_trust_v1.example.json +7 -0
  219. package/docs/spec/examples/release_trust_v2.example.json +22 -0
  220. package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
  221. package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
  222. package/docs/spec/examples/reputation_event_v1.example.json +29 -0
  223. package/docs/spec/examples/verification_report_v1.example.json +24 -0
  224. package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
  225. package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
  226. package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
  227. package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
  228. package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
  229. package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
  230. package/docs/spec/producer-error-codes.v1.txt +14 -0
  231. package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
  232. package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
  233. package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
  234. package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
  235. package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
  236. package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
  237. package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
  238. package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
  239. package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
  240. package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
  241. package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
  242. package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
  243. package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
  244. package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
  245. package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
  246. package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
  247. package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
  248. package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
  249. package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
  250. package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
  251. package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
  252. package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
  253. package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
  254. package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
  255. package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
  256. package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
  257. package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
  258. package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
  259. package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
  260. package/docs/spec/schemas/OperatorAction.v1.schema.json +113 -0
  261. package/docs/spec/schemas/PolicyDecision.v1.schema.json +74 -0
  262. package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
  263. package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
  264. package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
  265. package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
  266. package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
  267. package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
  268. package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
  269. package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
  270. package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
  271. package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
  272. package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
  273. package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
  274. package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
  275. package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
  276. package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
  277. package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
  278. package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
  279. package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
  280. package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
  281. package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
  282. package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +149 -0
  283. package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
  284. package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
  285. package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
  286. package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
  287. package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
  288. package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
  289. package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
  290. package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
  291. package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
  292. package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
  293. package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
  294. package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
  295. package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
  296. package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
  297. package/docs/spec/x402-error-codes.v1.txt +35 -0
  298. package/docs/templates/buyer-email.txt +18 -0
  299. package/docs/templates/buyer-one-pager.md +24 -0
  300. package/package.json +53 -6
  301. package/scripts/acceptance/full-stack.mjs +734 -0
  302. package/scripts/acceptance/full-stack.sh +99 -0
  303. package/scripts/audit/build-audit-packet.mjs +242 -0
  304. package/scripts/backup-pg.sh +45 -0
  305. package/scripts/backup-restore/README.md +18 -0
  306. package/scripts/backup-restore/capture-state.mjs +130 -0
  307. package/scripts/backup-restore/client.mjs +97 -0
  308. package/scripts/backup-restore/seed-workload.mjs +235 -0
  309. package/scripts/backup-restore/verify-state.mjs +139 -0
  310. package/scripts/backup-restore-test.sh +217 -0
  311. package/scripts/chaos.js +221 -0
  312. package/scripts/ci/build-launch-cutover-packet.mjs +304 -0
  313. package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
  314. package/scripts/ci/changelog-guard.mjs +145 -0
  315. package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
  316. package/scripts/ci/check-secret-hygiene.mjs +78 -0
  317. package/scripts/ci/check-version-consistency.mjs +42 -0
  318. package/scripts/ci/cli-pack-smoke.mjs +160 -0
  319. package/scripts/ci/flake-budget-guard.mjs +68 -0
  320. package/scripts/ci/generate-error-codes.mjs +54 -0
  321. package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
  322. package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
  323. package/scripts/ci/npm-pack-smoke.mjs +454 -0
  324. package/scripts/ci/run-10x-throughput-drill.mjs +318 -0
  325. package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +368 -0
  326. package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
  327. package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
  328. package/scripts/ci/run-go-live-gate.mjs +150 -0
  329. package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
  330. package/scripts/ci/run-mcp-host-cert-matrix.mjs +201 -0
  331. package/scripts/ci/run-mcp-host-smoke.mjs +473 -0
  332. package/scripts/ci/run-offline-verification-parity-gate.mjs +762 -0
  333. package/scripts/ci/run-onboarding-host-success-gate.mjs +516 -0
  334. package/scripts/ci/run-onboarding-policy-slo-gate.mjs +537 -0
  335. package/scripts/ci/run-production-cutover-gate.mjs +540 -0
  336. package/scripts/ci/run-public-openclaw-npx-smoke.mjs +148 -0
  337. package/scripts/ci/run-release-promotion-guard.mjs +756 -0
  338. package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
  339. package/scripts/ci/runtime-import-smoke.mjs +58 -0
  340. package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
  341. package/scripts/closepack/lib.mjs +286 -0
  342. package/scripts/collect-debug.sh +263 -0
  343. package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
  344. package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
  345. package/scripts/demo/delivery-robot/generate.mjs +377 -0
  346. package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
  347. package/scripts/demo/magic-link-first-green.mjs +118 -0
  348. package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
  349. package/scripts/demo/mcp-paid-exa.mjs +1110 -0
  350. package/scripts/dev/billing-doctor.sh +145 -0
  351. package/scripts/dev/billing-smoke-prod.sh +219 -0
  352. package/scripts/dev/billing-webhook-replay.sh +161 -0
  353. package/scripts/dev/env.dev.example +29 -0
  354. package/scripts/dev/env.sh +37 -0
  355. package/scripts/dev/new-sdk-key.sh +81 -0
  356. package/scripts/dev/sdk-first-run.sh +21 -0
  357. package/scripts/dev/smoke-x402-gateway.sh +115 -0
  358. package/scripts/dev/start-api.sh +24 -0
  359. package/scripts/doctor/mcp-host.mjs +120 -0
  360. package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
  361. package/scripts/examples/sdk-first-paid-rfq.py +105 -0
  362. package/scripts/examples/sdk-first-verified-run.mjs +85 -0
  363. package/scripts/examples/sdk-first-verified-run.py +99 -0
  364. package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
  365. package/scripts/examples/sdk-tenant-analytics.py +118 -0
  366. package/scripts/finance-pack/bundle.mjs +284 -0
  367. package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
  368. package/scripts/governance/export.mjs +169 -0
  369. package/scripts/load/delivery-stress.k6.js +183 -0
  370. package/scripts/load/ingest-burst.k6.js +236 -0
  371. package/scripts/load/run-delivery-load.js +66 -0
  372. package/scripts/load/webhook-receiver.js +131 -0
  373. package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
  374. package/scripts/mcp/probe.mjs +238 -0
  375. package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
  376. package/scripts/mcp/settld-mcp-server.mjs +1511 -0
  377. package/scripts/openapi/write.mjs +13 -0
  378. package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
  379. package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
  380. package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
  381. package/scripts/ops/design-partner-run-packet.mjs +466 -0
  382. package/scripts/ops/dispute-finance-reconciliation-packet.mjs +313 -0
  383. package/scripts/ops/hosted-baseline-evidence.mjs +890 -0
  384. package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
  385. package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
  386. package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
  387. package/scripts/ops/run-x402-hitl-smoke.mjs +607 -0
  388. package/scripts/pilot/finance-pack.mjs +495 -0
  389. package/scripts/pilot/fixtures/robot-keypair.json +4 -0
  390. package/scripts/pilot/fixtures/server-signer.json +4 -0
  391. package/scripts/policy/cli.mjs +600 -0
  392. package/scripts/profile/cli.mjs +1324 -0
  393. package/scripts/proof-bundle/job.mjs +109 -0
  394. package/scripts/proof-bundle/lib.mjs +92 -0
  395. package/scripts/proof-bundle/month.mjs +103 -0
  396. package/scripts/provider/conformance-run.mjs +159 -0
  397. package/scripts/provider/keys-generate.mjs +135 -0
  398. package/scripts/provider/publish.mjs +420 -0
  399. package/scripts/quickstart/x402.mjs +334 -0
  400. package/scripts/register-entity-secret.mjs +102 -0
  401. package/scripts/release/build-artifacts.mjs +181 -0
  402. package/scripts/release/generate-release-index.mjs +112 -0
  403. package/scripts/release/release-index-lib.mjs +232 -0
  404. package/scripts/release/sign-release-index.mjs +85 -0
  405. package/scripts/release/validate-release-assets.mjs +170 -0
  406. package/scripts/release/verify-release.mjs +261 -0
  407. package/scripts/restore-pg.sh +34 -0
  408. package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
  409. package/scripts/sdk/smoke-python.py +30 -0
  410. package/scripts/sdk/smoke.mjs +16 -0
  411. package/scripts/settlement/x402-batch-worker.mjs +1091 -0
  412. package/scripts/setup/circle-bootstrap.mjs +310 -0
  413. package/scripts/setup/host-config.mjs +617 -0
  414. package/scripts/setup/onboard.mjs +1337 -0
  415. package/scripts/setup/openclaw-onboard.mjs +423 -0
  416. package/scripts/setup/wizard.mjs +986 -0
  417. package/scripts/slo/check.mjs +239 -0
  418. package/scripts/smoke/k8s-smoke.mjs +214 -0
  419. package/scripts/spec/generate-protocol-vectors.mjs +1019 -0
  420. package/scripts/test/check-no-generated-artifacts.sh +12 -0
  421. package/scripts/test/run.sh +59 -0
  422. package/scripts/trust/validate-trust-file.mjs +57 -0
  423. package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
  424. package/scripts/trust-config/wizard.mjs +161 -0
  425. package/scripts/vendor-contract-test-lib.mjs +182 -0
  426. package/scripts/vendor-contract-test.mjs +55 -0
  427. package/scripts/vercel/build-mkdocs.sh +9 -0
  428. package/scripts/vercel/ignore-mkdocs.sh +25 -0
  429. package/scripts/vercel/install-mkdocs.sh +6 -0
  430. package/scripts/verify-pg.js +217 -0
  431. package/scripts/x402/receipt-verify.mjs +289 -0
  432. package/services/finance-sink/src/dedupe-store.js +29 -6
  433. package/services/receiver/src/dedupe-store.js +29 -5
  434. package/services/x402-gateway/Dockerfile +13 -0
  435. package/services/x402-gateway/README.md +58 -0
  436. package/services/x402-gateway/examples/upstream-mock.js +337 -0
  437. package/services/x402-gateway/src/server.js +1058 -0
  438. package/src/api/app.js +34658 -16940
  439. package/src/api/maintenance.js +70 -0
  440. package/src/api/middleware/trust-kernel.js +114 -0
  441. package/src/api/openapi.js +1778 -70
  442. package/src/api/persistence.js +456 -0
  443. package/src/api/server.js +81 -5
  444. package/src/api/store.js +1581 -62
  445. package/src/api/workers/deliveries.js +99 -4
  446. package/src/api/workers/insolvency-sweep.js +159 -0
  447. package/src/core/agent-card.js +69 -0
  448. package/src/core/agent-wallets.js +231 -0
  449. package/src/core/agreement-delegation.js +549 -0
  450. package/src/core/billing-plans.js +40 -6
  451. package/src/core/circle-reserve-adapter.js +845 -0
  452. package/src/core/event-policy.js +21 -2
  453. package/src/core/maintenance-locks.js +1 -0
  454. package/src/core/operator-action.js +303 -0
  455. package/src/core/paid-tool-manifest.js +318 -0
  456. package/src/core/policy-decision.js +322 -0
  457. package/src/core/policy-packs.js +207 -0
  458. package/src/core/profile-fingerprint.js +27 -0
  459. package/src/core/profile-simulation-reasons.js +84 -0
  460. package/src/core/profile-templates.js +242 -0
  461. package/src/core/provider-publish-conformance.js +525 -0
  462. package/src/core/provider-publish-proof.js +396 -0
  463. package/src/core/provider-quote-signature.js +170 -0
  464. package/src/core/settld-keys.js +112 -0
  465. package/src/core/settld-pay-token.js +344 -0
  466. package/src/core/settlement-kernel.js +239 -2
  467. package/src/core/settlement-verifier.js +335 -0
  468. package/src/core/tool-call-agreement.js +112 -0
  469. package/src/core/tool-call-evidence.js +144 -0
  470. package/src/core/tool-provider-signature.js +98 -0
  471. package/src/core/wallet-assignment-resolver.js +129 -0
  472. package/src/core/wallet-provider-bootstrap.js +365 -0
  473. package/src/core/x402-escalation-override.js +258 -0
  474. package/src/core/x402-gate.js +118 -0
  475. package/src/core/x402-provider-refund-decision.js +220 -0
  476. package/src/core/x402-receipt-verifier.js +708 -0
  477. package/src/core/x402-reversal-command.js +251 -0
  478. package/src/core/x402-wallet-issuer-decision.js +252 -0
  479. package/src/core/zk-verifier.js +300 -0
  480. package/src/db/migrations/029_reputation_event_index.sql +54 -0
  481. package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
  482. package/src/db/pg.js +18 -7
  483. package/src/db/store-pg.js +1508 -111
@@ -0,0 +1,51 @@
1
+ # DisputeCaseLifecycle.v1
2
+
3
+ This document freezes dispute + arbitration lifecycle behavior enforced by Trust OS v1 APIs.
4
+
5
+ ## Run dispute lifecycle (`AgentRunSettlement.v1`)
6
+
7
+ State machine:
8
+
9
+ - `none -> open`
10
+ - `closed -> open`
11
+ - `open -> closed`
12
+
13
+ Invalid transitions fail closed with `TRANSITION_ILLEGAL`.
14
+
15
+ Guard rules:
16
+
17
+ - Dispute open is allowed only before dispute-window expiry (`DISPUTE_WINDOW_EXPIRED` on expiry).
18
+ - `/runs/{runId}/dispute/open` is rejected when settlement is still locked (`status=locked`).
19
+ - Dispute close requires an active open dispute (and matching `disputeId` when provided).
20
+ - Dispute evidence/escalation updates require an active open dispute.
21
+ - Escalation level cannot downgrade an active dispute.
22
+
23
+ ## Arbitration case lifecycle (`ArbitrationCase.v1`)
24
+
25
+ Statuses:
26
+
27
+ - `open`
28
+ - `under_review`
29
+ - `verdict_issued`
30
+ - `closed`
31
+
32
+ Operational transitions:
33
+
34
+ - Case creation (`action=open` or `action=appeal`) creates case in `under_review`.
35
+ - Assignment/evidence paths may advance `open -> under_review`.
36
+ - Verdict is accepted only from `open|under_review`, and sets `verdict_issued`.
37
+ - Close is accepted only from `verdict_issued`, and sets `closed`.
38
+
39
+ Invalid transitions fail closed with `TRANSITION_ILLEGAL`.
40
+
41
+ Guard rules:
42
+
43
+ - Arbitration open requires parent dispute status `open`.
44
+ - Appeal requires parent case in `verdict_issued|closed` and valid parent verdict metadata.
45
+ - Verdict and appeal actions are denied after dispute-window expiry (`DISPUTE_WINDOW_EXPIRED`).
46
+
47
+ ## Determinism requirements
48
+
49
+ - Panel assignment canonicalizes and lexically sorts `panelCandidateAgentIds` before hashing.
50
+ - Candidate reordering must not change `assignmentHash` or chosen arbiter.
51
+ - Transition/window denials emit stable machine codes for replay automation.
@@ -0,0 +1,43 @@
1
+ # DisputeOpenEnvelope.v1
2
+
3
+ `DisputeOpenEnvelope.v1` is the signed opener-proof artifact for tool-call arbitration case creation.
4
+
5
+ It binds the dispute subject (`agreementHash`, `receiptHash`, `holdHash`) and opener identity into a deterministic, replayable signature envelope.
6
+
7
+ ## Required fields
8
+
9
+ - `schemaVersion` (const: `DisputeOpenEnvelope.v1`)
10
+ - `artifactType` (const: `DisputeOpenEnvelope.v1`)
11
+ - `artifactId` (must equal `envelopeId`)
12
+ - `envelopeId`
13
+ - `caseId`
14
+ - `tenantId`
15
+ - `agreementHash` (sha256 hex)
16
+ - `receiptHash` (sha256 hex)
17
+ - `holdHash` (sha256 hex)
18
+ - `openedByAgentId`
19
+ - `openedAt` (ISO date-time)
20
+ - `reasonCode` (stable machine code, uppercase snake-case)
21
+ - `nonce` (caller-generated uniqueness value)
22
+ - `signerKeyId`
23
+ - `envelopeHash` (sha256 over canonical envelope core)
24
+ - `signature` (base64 Ed25519 signature over `envelopeHash`)
25
+
26
+ ## Deterministic IDs
27
+
28
+ - Recommended envelope ID convention for tool-call disputes:
29
+ - `dopen_case_${caseId}`
30
+
31
+ ## Canonicalization and hashing
32
+
33
+ 1. Build canonical core object excluding `envelopeHash`, `signature`, and `artifactHash`.
34
+ 2. Compute `envelopeHash = sha256(canonical-json(core))`.
35
+ 3. Verify `signature` against `envelopeHash` using `signerKeyId` public key.
36
+
37
+ ## Verification requirements
38
+
39
+ - `openedByAgentId` must match the signer agent identity key referenced by `signerKeyId`.
40
+ - Subject hashes in envelope must match the arbitration-open request + hold bindings.
41
+ - For non-admin opens, a valid `DisputeOpenEnvelope.v1` is required.
42
+
43
+ See `docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json`.
@@ -0,0 +1,76 @@
1
+ # Verifier Errors (v1)
2
+
3
+ This document defines the **stable error-code contract** for `settld-verify`.
4
+
5
+ - **Warnings** are documented separately in `WARNINGS.md`.
6
+ - In machine output (`VerifyCliOutput.v1`), errors appear in `errors[]` as `{ code, path?, message?, detail? }`.
7
+ - **Stability guarantee**: error `code` meanings are stable within protocol v1 unless a deliberate, documented protocol change is made.
8
+
9
+ ## Severity model
10
+
11
+ - Errors are **fatal**: they indicate verification did not establish required guarantees.
12
+ - Some errors may only be reachable in strict mode (because non-strict may downgrade certain missing surfaces into warnings); see `STRICTNESS.md`.
13
+
14
+ ## Core error codes (high-value contract)
15
+
16
+ These codes are relied on by fixtures, conformance packs, and CI consumers.
17
+
18
+ - `MANIFEST_PATH_INVALID` — A manifest entry path is unsafe/invalid (absolute/traversal/escape/backslash/colon). Remediation: regenerate bundle; do not accept the bundle as structurally safe. Evidence: conformance security cases.
19
+ - `MANIFEST_DUPLICATE_PATH` — Manifest contains duplicate `files[].name`. Remediation: regenerate bundle with unique paths. Evidence: conformance security cases.
20
+ - `MANIFEST_PATH_CASE_COLLISION` — Manifest contains file paths that collide under case-insensitive normalization (e.g. `A.txt` vs `a.txt`). Remediation: regenerate bundle with case-unique paths; do not rely on case sensitivity for protocol semantics.
21
+ - `MANIFEST_SYMLINK_FORBIDDEN` — A manifest-listed file is a symlink. Remediation: bundle must contain regular files only; remove symlinks and regenerate. Evidence: conformance security cases.
22
+
23
+ - `sha256 mismatch` — A manifest-listed file hash does not match actual bytes. Remediation: bundle was tampered with or incorrectly generated; regenerate bundle. Evidence: strict-fail tamper fixtures/conformance.
24
+ - `missing file` — Manifest references a file that does not exist. Remediation: bundle is incomplete; regenerate bundle. Evidence: strict required file enumeration + file hashing.
25
+
26
+ - `manifestHash mismatch` — The embedded `manifestHash` does not match the computed manifest hash (canonical JSON). Remediation: bundle is inconsistent/tampered; regenerate bundle.
27
+
28
+ - `verification report subject.manifestHash mismatch` — Receipt binds to a different manifest than the bundle. Remediation: do not mix receipts across bundles; re-verify/generate receipt for this bundle.
29
+ - `verification report bundleHeadAttestation.attestationHash mismatch` — Receipt binds to a different head attestation than the bundle. Remediation: do not mix attestations across bundles; re-verify/generate receipt for this bundle.
30
+
31
+ - `strict requires trusted governance root keys` — Strict verification requires trust roots but they were not provided. Remediation: provide `SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON` (see `TRUST_ANCHORS.md`). Evidence: conformance trust cases.
32
+ - `governance policy signerKeyId not trusted` — Governance policy signature cannot be validated under provided trust roots. Remediation: correct/pin trust roots; verify policy provenance.
33
+
34
+ - `attestation signer not authorized` — Bundle head attestation signer is not allowed by policy. Remediation: update governance policy or use an authorized signer; regenerate bundle.
35
+ - `verification report signer not authorized` — Receipt signer is not allowed by policy. Remediation: update governance policy or use an authorized verifier signer; regenerate receipt.
36
+
37
+ - `missing verify/verification_report.json` — A required verification receipt is absent. Remediation: (strict) regenerate the bundle/receipt; (non-strict) expect `VERIFICATION_REPORT_MISSING_LENIENT` warning instead of failure.
38
+ - `signer keyId not allowed by policy` — The signer key is not allowlisted by governance policy. Remediation: update policy allowlist or sign with an authorized key.
39
+ - `SIGNER_REVOKED` — The signer is revoked as-of the effective signing time. Remediation: rotate keys and re-sign; ensure timestampProof is present when verifying historical signatures.
40
+ - `SIGNING_TIME_UNPROVABLE` — Verification cannot establish a trustworthy signing time required for a revocation timeline decision. Remediation: include a valid `timestampProof` or adjust policy to not require a trustworthy time for the decision.
41
+
42
+ - `PRICING_MATRIX_SIGNATURE_MISSING` — Strict verification requires `pricing/pricing_matrix_signatures.json` (`PricingMatrixSignatures.v2` recommended; `PricingMatrixSignatures.v1` legacy) but it is absent from the manifest. Remediation: include buyer-approved pricing signatures (see `PricingMatrixSignatures.v2.md`) or use compat mode with an explicit warning posture.
43
+ - `PRICING_MATRIX_SIGNATURE_V1_BYTES_LEGACY_STRICT_REJECTED` — Strict verification rejects legacy `PricingMatrixSignatures.v1` (raw-bytes binding) because it is formatting-fragile and creates operational footguns. Remediation: migrate to `PricingMatrixSignatures.v2` (canonical JSON binding) and re-bundle.
44
+ - `PRICING_MATRIX_SIGNATURE_PAYLOAD_MISMATCH` — The pricing matrix signature surface is present, but its declared binding hash does not match the pricing matrix payload (either raw bytes for `PricingMatrixSignatures.v1` or canonical JSON for `PricingMatrixSignatures.v2`). Remediation: regenerate the signature surface from the intended pricing matrix payload and ensure the bundle contains the intended pricing matrix value.
45
+ - `PRICING_MATRIX_SIGNATURE_INVALID` — The pricing matrix signature surface is present and hash-bound correctly, but at least one trusted signature failed to verify. Remediation: regenerate signatures using the correct buyer key(s) and ensure verifiers trust the corresponding public keys (see `TRUST_ANCHORS.md`).
46
+
47
+ - `invoice pricing code unknown` — Metering references a code that has no price in `PricingMatrix.v1`. Remediation: update pricing to cover all metered codes or fix the metering report.
48
+ - `invoiceClaim totalCents mismatch` — `InvoiceClaim.v1.totalCents` does not match deterministic recomputation from metering+pricing. Remediation: regenerate the claim from the bound inputs.
49
+ - `metering evidenceRef sha256 mismatch` — A metering evidence reference does not match the embedded JobProof manifest’s committed file hash. Remediation: regenerate metering evidence refs and/or re-embed the correct JobProof bundle.
50
+ - `closepack evidence_index mismatch` — `EvidenceIndex.v1` does not match deterministic recomputation from the embedded Invoice+JobProof evidence bindings. Remediation: regenerate ClosePack’s `evidence/evidence_index.json` from the embedded inputs; treat mismatch as a tamper/inconsistency.
51
+
52
+ - `FAIL_ON_WARNINGS` — CLI `--fail-on-warnings` converted warnings into a failure. Remediation: address warnings or remove gating for your posture.
53
+
54
+ ## How to troubleshoot (support loop)
55
+
56
+ When filing an issue or investigating a pilot failure, capture:
57
+
58
+ 1. `settld-verify --about --format json`
59
+ 2. The full `VerifyCliOutput.v1` JSON (`--format json`)
60
+ 3. How trust roots were provided (env vars / trust file) and which root keys were intended
61
+ 4. Installation mode: npm install vs npm tarball vs from source
62
+
63
+ Key fields in `VerifyCliOutput.v1` that enable diagnosis:
64
+
65
+ - `errors[].code` — stable machine reason (this doc).
66
+ - `errors[].detail` — structured context (expected/actual hashes, missing paths, signer ids).
67
+ - `summary.manifestHash` — integrity anchor for “what was verified.”
68
+ - `tool.version` / `tool.commit` — provenance for “what did the verifying.”
69
+
70
+ ## Full registry (exhaustive)
71
+
72
+ The authoritative list of error codes that may be emitted as `VerifyCliOutput.v1.errors[].code` is maintained in:
73
+
74
+ - `docs/spec/error-codes.v1.txt`
75
+
76
+ This file is **machine-checked** by tests to prevent accidental drift (see Sprint 13 “v1 freeze” discipline).
@@ -0,0 +1,71 @@
1
+ # Escrow + Netting Invariants
2
+
3
+ This document defines deterministic money invariants for escrow movement and netting windows.
4
+
5
+ It is the Sprint 0 contract for `STLD-T006`.
6
+
7
+ ## Escrow wallet invariants
8
+
9
+ For wallet fields:
10
+ - `availableCents`
11
+ - `escrowLockedCents`
12
+ - `totalCreditedCents`
13
+ - `totalDebitedCents`
14
+
15
+ all values MUST remain non-negative integers.
16
+
17
+ ### Lock invariant
18
+
19
+ Locking `amountCents = A` MUST satisfy:
20
+ - `availableCents' = availableCents - A`
21
+ - `escrowLockedCents' = escrowLockedCents + A`
22
+ - `totalCreditedCents' = totalCreditedCents`
23
+ - `totalDebitedCents' = totalDebitedCents`
24
+
25
+ ### Release invariant (payer -> payee)
26
+
27
+ Releasing `A` from payer escrow to payee MUST satisfy:
28
+ - payer: `escrowLockedCents' = escrowLockedCents - A`
29
+ - payer: `totalDebitedCents' = totalDebitedCents + A`
30
+ - payee: `availableCents' = availableCents + A`
31
+ - payee: `totalCreditedCents' = totalCreditedCents + A`
32
+
33
+ ### Refund invariant
34
+
35
+ Refunding `A` to the payer wallet MUST satisfy:
36
+ - `escrowLockedCents' = escrowLockedCents - A`
37
+ - `availableCents' = availableCents + A`
38
+ - `totalCreditedCents' = totalCreditedCents + A`
39
+
40
+ ## Settlement partition invariants
41
+
42
+ For one `AgentRunSettlement.v1` with principal `amountCents = P`:
43
+
44
+ - Exactly one terminal resolution from `locked` to `released|refunded`.
45
+ - Terminal partition MUST satisfy:
46
+ - `releasedAmountCents + refundedAmountCents = P`
47
+ - both values are non-negative integers.
48
+ - `releaseRatePct` MUST remain integer `0..100`.
49
+
50
+ ## Held exposure rollforward invariant
51
+
52
+ At period close:
53
+
54
+ `endingHeld = openingHeld + newLocks - releases - forfeits`
55
+
56
+ Rollforward generation MUST be deterministic for identical event streams.
57
+
58
+ ## Netting window invariants
59
+
60
+ For each `(tenant, counterparty, currency, window)`:
61
+
62
+ - Window membership is deterministic and replay-stable.
63
+ - `windowNetCents = inflowCents - outflowCents`.
64
+ - A net close operation MUST be idempotent (same input set -> same net artifact).
65
+ - No operation may appear in more than one closed netting window.
66
+
67
+ ## Failure handling invariants
68
+
69
+ - Insufficient available balance MUST fail before lock mutation.
70
+ - Insufficient escrow balance MUST fail before release/refund mutation.
71
+ - Invalid settlement partition MUST fail before persistence.
@@ -0,0 +1,20 @@
1
+ # EvidenceIndex.v1
2
+
3
+ `EvidenceIndex.v1` is a deterministic, audit-friendly index of evidence references implied by:
4
+
5
+ - the embedded JobProof event stream (evidence capture events), and
6
+ - the embedded Invoice bundle’s metering evidence references (file paths + hashes).
7
+
8
+ In ClosePack bundles, it is stored at `evidence/evidence_index.json`.
9
+
10
+ ## Purpose
11
+
12
+ The index exists so consumers (buyers, auditors) can quickly answer:
13
+
14
+ - “What evidence exists for this job?”
15
+ - “Which in-bundle files were referenced for billing math?”
16
+
17
+ ## Privacy posture
18
+
19
+ Evidence references may contain sensitive URLs. ClosePack indexes should avoid embedding secrets directly; use hashes where appropriate.
20
+
@@ -0,0 +1,90 @@
1
+ # ExecutionIntent.v1
2
+
3
+ `ExecutionIntent.v1` defines the canonical pre-execution authorization target for autonomous tool calls.
4
+
5
+ Status: Draft (architecture target; not fully enforced in runtime yet).
6
+
7
+ ## Purpose
8
+
9
+ `ExecutionIntent.v1` bridges planning and policy enforcement by pinning:
10
+
11
+ - exact request fingerprint target,
12
+ - risk class and expected side-effect profile,
13
+ - spend/loss bounds,
14
+ - policy binding used for authorization,
15
+ - replay-critical temporal/idempotency context.
16
+
17
+ It is the object policy engines/risk engines should evaluate before minting spend authorization.
18
+
19
+ ## Required fields
20
+
21
+ - `schemaVersion` (const: `ExecutionIntent.v1`)
22
+ - `intentId`
23
+ - `tenantId`
24
+ - `agentId`
25
+ - `requestFingerprint`
26
+ - `riskProfile`
27
+ - `spendBounds`
28
+ - `policyBinding`
29
+ - `idempotencyKey`
30
+ - `nonce`
31
+ - `expiresAt`
32
+ - `createdAt`
33
+ - `intentHash`
34
+
35
+ Optional:
36
+
37
+ - `runId`
38
+ - `agreementHash`
39
+ - `quoteId`
40
+
41
+ ## Request fingerprint
42
+
43
+ `requestFingerprint` captures immutable request identity:
44
+
45
+ - `canonicalization` (`rfc8785-jcs`)
46
+ - `method`
47
+ - `path`
48
+ - `querySha256`
49
+ - `bodySha256`
50
+ - `requestSha256`
51
+
52
+ `requestSha256` SHOULD represent the canonical hash used by authorization tokens in strict request-binding mode.
53
+
54
+ ## Risk profile
55
+
56
+ `riskProfile` includes:
57
+
58
+ - `riskClass`: `read|compute|action|financial`
59
+ - `sideEffecting`: boolean
60
+ - `expectedDeterminism`: `deterministic|bounded_nondeterministic|open_nondeterministic`
61
+ - `maxLossCents`
62
+ - `requiresHumanApproval`: boolean
63
+
64
+ ## Spend bounds + policy binding
65
+
66
+ `spendBounds`:
67
+
68
+ - `currency`
69
+ - `maxAmountCents`
70
+
71
+ `policyBinding`:
72
+
73
+ - `policyId`
74
+ - `policyVersion`
75
+ - `policyHash`
76
+ - `verificationMethodHash`
77
+
78
+ Together they define the deterministic authorization envelope used in decision receipts.
79
+
80
+ ## Canonicalization + hashing
81
+
82
+ `intentHash` is computed over canonical JSON of the full object excluding `intentHash`:
83
+
84
+ 1. canonicalize JSON with RFC 8785 (JCS),
85
+ 2. hash canonical UTF-8 bytes with `sha256`,
86
+ 3. encode lowercase hex.
87
+
88
+ ## Schema
89
+
90
+ See `docs/spec/schemas/ExecutionIntent.v1.schema.json`.
@@ -0,0 +1,24 @@
1
+ # FinancePackBundleManifest.v1
2
+
3
+ This manifest is stored at `manifest.json` within FinancePack bundles.
4
+
5
+ ## Hashing contract
6
+
7
+ - `hashing.schemaVersion = "FinancePackBundleManifestHash.v1"`
8
+ - file order: `path_asc`
9
+ - excludes: `["verify/**"]`
10
+
11
+ Rationale: `verify/verification_report.json` must reference `manifestHash`, so including `verify/**` in the manifest would create circular hashing.
12
+
13
+ ## manifestHash
14
+
15
+ `manifestHash = sha256_hex( canonical_json_stringify(manifest_without_hash) )`
16
+
17
+ ## File entries
18
+
19
+ `files[]` entries include:
20
+
21
+ - `name` (path relative to FinancePack bundle root)
22
+ - `sha256` (hex sha256 of raw file bytes)
23
+ - `bytes` (byte length)
24
+
@@ -0,0 +1,60 @@
1
+ # FundingHold.v1
2
+
3
+ `FundingHold.v1` represents a deterministic, wallet-backed escrow hold created for a specific settlement subject (for Sprint 21: tool-call holdback).
4
+
5
+ It is designed to support:
6
+
7
+ - A bounded challenge window (`challengeWindowMs`) after hold creation.
8
+ - Automatic release of held funds if no dispute is opened before the window ends.
9
+ - Freeze of auto-release while a related arbitration case remains open.
10
+ - Resolution via an idempotent, deterministic `SettlementAdjustment.v1` keyed by `agreementHash`.
11
+
12
+ ## Fields
13
+
14
+ Required:
15
+
16
+ - `schemaVersion` (const: `FundingHold.v1`)
17
+ - `tenantId`
18
+ - `agreementHash` (sha256 hex, lowercase)
19
+ - `receiptHash` (sha256 hex, lowercase)
20
+ - `payerAgentId`
21
+ - `payeeAgentId`
22
+ - `amountCents` (gross amount for the subject)
23
+ - `heldAmountCents` (portion held in escrow; must be `<= amountCents`)
24
+ - `currency`
25
+ - `holdbackBps` (basis points, 0..)
26
+ - `challengeWindowMs` (0..)
27
+ - `createdAt` (ISO datetime)
28
+ - `holdHash` (sha256 hex; computed from the immutable core)
29
+ - `status` (`held|released|refunded`)
30
+ - `revision` (non-negative int)
31
+ - `updatedAt` (ISO datetime)
32
+
33
+ Optional:
34
+
35
+ - `resolvedAt` (ISO datetime; present when `status != held`)
36
+ - `metadata` (implementation-defined JSON object)
37
+
38
+ ## Hashing
39
+
40
+ `holdHash` is computed as sha256 of the RFC 8785 canonical JSON of the **immutable core**, which excludes:
41
+
42
+ - `holdHash`
43
+ - `status`
44
+ - `resolvedAt`
45
+ - `updatedAt`
46
+ - `revision`
47
+ - `metadata`
48
+
49
+ This ensures `holdHash` is stable across state transitions.
50
+
51
+ ## Invariants
52
+
53
+ - `heldAmountCents <= amountCents`
54
+ - Escrow operations must only move `heldAmountCents`.
55
+ - A `FundingHold.v1` must not be “resolved” more than once (application must be idempotent).
56
+
57
+ ## Schema
58
+
59
+ See `docs/spec/schemas/FundingHold.v1.schema.json`.
60
+
@@ -0,0 +1,34 @@
1
+ # GovernancePolicy.v1
2
+
3
+ This document is the **explicit contract** for signer authorization.
4
+
5
+ It exists so authorization is not inferred from “whatever code happens to do today”. A strict verifier MUST be able to load a policy, apply it deterministically, and fail with a crisp reason when the signer is not authorized.
6
+
7
+ ## Status
8
+
9
+ `GovernancePolicy.v1` is a legacy/compat surface. In strict mode, verifiers require `GovernancePolicy.v2` (signed by a governance root trusted out-of-band).
10
+
11
+ ## File location (bundles)
12
+
13
+ `governance/policy.json`
14
+
15
+ This file is included in the bundle manifest (i.e., it is part of the immutable payload), and it is intentionally **not** under `verify/**`.
16
+
17
+ ## Schema
18
+
19
+ See `schemas/GovernancePolicy.v1.schema.json`.
20
+
21
+ ## Semantics (v1)
22
+
23
+ - `algorithms` is a declared allowlist of acceptable signature algorithms for governed signatures. v1 supports `ed25519`.
24
+ - `verificationReportSigners` governs who may sign `verify/verification_report.json` (`VerificationReport.v1`) for each `subjectType` (e.g. `JobProofBundle.v1`).
25
+ - `bundleHeadAttestationSigners` governs who may sign `attestation/bundle_head_attestation.json` (`BundleHeadAttestation.v1`) for each `subjectType`.
26
+
27
+ Rule application:
28
+
29
+ - The verifier selects the rule whose `subjectType` matches the bundle being verified.
30
+ - `allowedKeyIds = null` means “no explicit key allowlist; any key that satisfies the other rule constraints may sign”.
31
+ - If `allowedKeyIds` is a non-null array, the signer key id MUST be present in that list.
32
+ - `allowedScopes` is enforced against the signed document’s declared signer scope (`global` vs `tenant`) when present.
33
+ - `requireGoverned = true` means the signer must be governed by the included governance streams (i.e., the key lifecycle is declared by governance events).
34
+ - `requiredPurpose = server` means the signer key must be a server signer key.
@@ -0,0 +1,30 @@
1
+ # GovernancePolicy.v2
2
+
3
+ This document is the **explicit contract** for signer authorization in strict verification, with a mandatory governance-root signature.
4
+
5
+ ## File location (bundles)
6
+
7
+ `governance/policy.json`
8
+
9
+ This file is included in the bundle manifest (i.e., it is part of the immutable payload), and it is intentionally **not** under `verify/**`.
10
+
11
+ ## Schema
12
+
13
+ See `schemas/GovernancePolicy.v2.schema.json`.
14
+
15
+ ## Semantics (v2)
16
+
17
+ `GovernancePolicy.v2` is the same conceptual policy as v1, but with two critical hardenings:
18
+
19
+ 1. `allowedKeyIds` is an explicit allowlist (not nullable). Strict verification relies on explicit authorization, not “any governed key”.
20
+ 2. The policy is signed by a governance root key (trusted out-of-band by the verifier).
21
+
22
+ The policy also binds to a `RevocationList.v1` snapshot via `revocationList.sha256`.
23
+
24
+ ## Signing + trust (strict verification)
25
+
26
+ Strict verification MUST:
27
+
28
+ - verify `policyHash` and `signature`, and
29
+ - require `signerKeyId` to be trusted out-of-band as a governance root key.
30
+