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,52 @@
1
+ # AgentRunSettlement.v1
2
+
3
+ `AgentRunSettlement.v1` defines the escrow/settlement state for one `AgentRun.v1`.
4
+
5
+ Related contracts:
6
+ - `ESCROW_NETTING_INVARIANTS.md` (money conservation + partition rules)
7
+ - `MONEY_RAIL_STATE_MACHINE.md` (external payout/collection lifecycle)
8
+
9
+ It binds run execution outcomes to deterministic money movement:
10
+
11
+ - `locked`: escrow funded and awaiting run terminal outcome.
12
+ - `released`: run completed and escrow released to the run agent.
13
+ - `refunded`: run failed and escrow refunded to payer.
14
+
15
+ Related decision/finality artifacts:
16
+
17
+ - `SettlementDecisionRecord.v1|v2` and `SettlementReceipt.v1` bind decision provenance and finality receipts to one settlement.
18
+
19
+ ## Schema
20
+
21
+ See `schemas/AgentRunSettlement.v1.schema.json`.
22
+
23
+ ## Required fields
24
+
25
+ - `schemaVersion` (const: `AgentRunSettlement.v1`)
26
+ - `settlementId`
27
+ - `runId`
28
+ - `tenantId`
29
+ - `agentId` (payee / run owner)
30
+ - `payerAgentId`
31
+ - `amountCents`
32
+ - `currency`
33
+ - `status` (`locked|released|refunded`)
34
+ - `lockedAt`
35
+ - `revision`
36
+ - `createdAt`
37
+ - `updatedAt`
38
+
39
+ ## Resolution semantics
40
+
41
+ - Settlement is initialized as `locked`.
42
+ - Settlement may resolve exactly once to `released` or `refunded`.
43
+ - `resolvedAt` and `resolutionEventId` are populated on resolution.
44
+ - `runStatus` captures the terminal run state that triggered resolution.
45
+
46
+ ## Canonicalization and hashing
47
+
48
+ When hashed/signed by higher-level protocols:
49
+
50
+ - canonicalize JSON via RFC 8785 (JCS),
51
+ - hash canonical UTF-8 bytes using `sha256`,
52
+ - emit lowercase hex digests.
@@ -0,0 +1,43 @@
1
+ # AgentWallet.v1
2
+
3
+ `AgentWallet.v1` defines the deterministic balance snapshot for an autonomous agent.
4
+
5
+ The wallet is tenant-scoped and currency-scoped, and is intended for:
6
+
7
+ - funding and spend tracking,
8
+ - escrow lock accounting,
9
+ - deterministic settlement transitions.
10
+
11
+ ## Schema
12
+
13
+ See `schemas/AgentWallet.v1.schema.json`.
14
+
15
+ ## Required fields
16
+
17
+ - `schemaVersion` (const: `AgentWallet.v1`)
18
+ - `walletId`
19
+ - `agentId`
20
+ - `tenantId`
21
+ - `currency`
22
+ - `availableCents`
23
+ - `escrowLockedCents`
24
+ - `totalDebitedCents`
25
+ - `totalCreditedCents`
26
+ - `revision`
27
+ - `createdAt`
28
+ - `updatedAt`
29
+
30
+ ## Invariants (v1)
31
+
32
+ - `availableCents` and `escrowLockedCents` are non-negative integers.
33
+ - Escrow locks move value from `availableCents` to `escrowLockedCents`.
34
+ - Releases reduce payer `escrowLockedCents` and increase payee `availableCents`.
35
+ - Refunds reduce payer `escrowLockedCents` and increase payer `availableCents`.
36
+
37
+ ## Canonicalization and hashing
38
+
39
+ When hashed/signed by higher-level protocols:
40
+
41
+ - canonicalize JSON via RFC 8785 (JCS),
42
+ - hash canonical UTF-8 bytes using `sha256`,
43
+ - emit lowercase hex digests.
@@ -0,0 +1,109 @@
1
+ # AgreementDelegation.v1
2
+
3
+ `AgreementDelegation.v1` defines a deterministic, hash-addressable link between a **parent agreement** and a **child agreement** created via delegation in a multi-hop agent chain.
4
+
5
+ It exists to make compositional settlement possible:
6
+
7
+ - prove parent -> child provenance without database traversal,
8
+ - enforce delegation depth limits (prevent unbounded chains),
9
+ - carry a budget cap for the child agreement derived from the parent.
10
+
11
+ ## Schema
12
+
13
+ See `schemas/AgreementDelegation.v1.schema.json`.
14
+
15
+ ## Canonicalization and hashing
16
+
17
+ When computing `delegationHash`:
18
+
19
+ - canonicalize JSON via RFC 8785 (JCS),
20
+ - hash canonical UTF-8 bytes via `sha256`,
21
+ - represent as lowercase hex.
22
+
23
+ `delegationHash` is computed over the immutable core fields and intentionally excludes mutable lifecycle fields:
24
+
25
+ Excluded fields:
26
+ - `delegationHash`
27
+ - `status`
28
+ - `resolvedAt`
29
+ - `updatedAt`
30
+ - `revision`
31
+ - `metadata`
32
+
33
+ ## Required fields
34
+
35
+ - `schemaVersion` (const: `AgreementDelegation.v1`)
36
+ - `delegationId` (stable identifier, not derived from hash)
37
+ - `tenantId`
38
+ - `parentAgreementHash` (sha256 hex)
39
+ - `childAgreementHash` (sha256 hex)
40
+ - `delegatorAgentId` (agent that created/authorized the delegation)
41
+ - `delegateeAgentId` (agent that received the delegation authority)
42
+ - `budgetCapCents` (positive integer)
43
+ - `currency`
44
+ - `delegationDepth` (non-negative integer; depth of the child agreement relative to the root)
45
+ - `maxDelegationDepth` (non-negative integer)
46
+ - `createdAt` (ISO date-time)
47
+ - `delegationHash` (sha256 hex of immutable core)
48
+ - `status` (`active` | `settled` | `revoked`)
49
+ - `revision` (non-negative integer)
50
+ - `updatedAt` (ISO date-time)
51
+
52
+ ## Optional fields
53
+
54
+ - `ancestorChain` (ordered array of sha256 hex agreement hashes; enables offline audit without traversal)
55
+ - `resolvedAt` (ISO date-time, set when `status` transitions out of `active`)
56
+ - `metadata` (free-form object; non-normative)
57
+
58
+ ## Invariants
59
+
60
+ Implementations MUST enforce:
61
+
62
+ - `budgetCapCents > 0`
63
+ - `delegationDepth <= maxDelegationDepth`
64
+ - `parentAgreementHash != childAgreementHash`
65
+
66
+ If `ancestorChain` is provided, implementations MUST enforce:
67
+
68
+ - `ancestorChain.length == delegationDepth`
69
+ - `ancestorChain[ancestorChain.length - 1] == parentAgreementHash`
70
+ - no duplicates in `ancestorChain` (cycle defense)
71
+
72
+ Budget-capping is compositional:
73
+
74
+ - The caller/system that creates a child delegation MUST ensure `budgetCapCents` is <= the parent agreement's **remaining** budget at creation time.
75
+
76
+ ## Deterministic pre-check failure codes
77
+
78
+ Some API workflows may bind settlement to a delegation graph and run deterministic pre-checks before a release/refund decision.
79
+
80
+ When those checks fail, implementations SHOULD return a stable `code` that is suitable for programmatic handling:
81
+
82
+ - `AGREEMENT_DELEGATION_CYCLE` — A cycle was detected in the parent-chain for the bound agreement.
83
+ - `AGREEMENT_DELEGATION_MULTIPLE_PARENTS` — Multiple parents were found for the same `childAgreementHash` (graph is not a function).
84
+
85
+ ## Deterministic execution plans (idempotent)
86
+
87
+ Settld exposes deterministic traversal plans for execution:
88
+
89
+ - `cascadeSettlementCheck(fromChildHash)` returns a bottom-up parent chain.
90
+ - `refundUnwindCheck(fromParentHash)` returns a top-down child chain.
91
+
92
+ Execution helpers apply those plans idempotently:
93
+
94
+ - Release execution resolves traversed delegations to `status=settled`.
95
+ - Unwind execution resolves traversed delegations to `status=revoked`.
96
+ - Re-running the same execution against already-resolved delegations is a no-op.
97
+
98
+ Implementations SHOULD reject conflicting terminal transitions (for example attempting `settled` on a delegation already `revoked`) and preserve a simple ledger invariant:
99
+
100
+ - `active + settled + revoked == total`.
101
+
102
+ ## Lifecycle semantics
103
+
104
+ `AgreementDelegation.v1` is intended to be created as `status=active` and later resolved:
105
+
106
+ - `status=settled`: child agreement has been settled and no further delegation actions should be taken.
107
+ - `status=revoked`: delegation authority is revoked (for example emergency revoke).
108
+
109
+ Status transitions mutate only lifecycle fields and MUST NOT change `delegationHash`.
@@ -0,0 +1,67 @@
1
+ # ArbitrationCase.v1
2
+
3
+ `ArbitrationCase.v1` defines the protocol object for a formal dispute arbitration case.
4
+
5
+ It is the canonical case container used by the arbitration layer to bind:
6
+
7
+ - the disputed run/settlement identifiers,
8
+ - participating parties and assigned arbiter,
9
+ - evidence references, and
10
+ - optional appeal lineage.
11
+
12
+ ## Schema
13
+
14
+ See `schemas/ArbitrationCase.v1.schema.json`.
15
+
16
+ ## Required fields
17
+
18
+ - `schemaVersion` (const: `ArbitrationCase.v1`)
19
+ - `caseId`
20
+ - `tenantId`
21
+ - `runId`
22
+ - `settlementId`
23
+ - `disputeId`
24
+ - `claimantAgentId`
25
+ - `respondentAgentId`
26
+ - `status` (`open|under_review|verdict_issued|closed`)
27
+ - `openedAt`
28
+ - `evidenceRefs` (deterministic, unique set)
29
+ - `revision`
30
+ - `createdAt`
31
+ - `updatedAt`
32
+
33
+ ## Appeal references
34
+
35
+ Appeal lineage is represented with optional `appealRef`:
36
+
37
+ - `parentCaseId` (required when `appealRef` is present)
38
+ - `parentVerdictId` (optional)
39
+ - `reason` (optional summary)
40
+
41
+ This keeps appeal linkage explicit without mutating the parent case.
42
+
43
+ ## Metadata conventions
44
+
45
+ `metadata` is intentionally schemaless to allow subject-specific conventions.
46
+
47
+ ### Tool-call disputes (Sprint 21)
48
+
49
+ For tool-call holdback disputes, `metadata` MUST include:
50
+
51
+ - `caseType`: `"tool_call"`
52
+ - `agreementHash`: sha256 hex (lowercase)
53
+ - `receiptHash`: sha256 hex (lowercase)
54
+ - `holdHash`: sha256 hex (lowercase)
55
+
56
+ These fields are used to:
57
+
58
+ - freeze holdback auto-release while the case is not closed, and
59
+ - bind deterministic adjustments to the disputed economic subject.
60
+
61
+ ## Canonicalization and hashing
62
+
63
+ When hashed/signed by higher-level protocols:
64
+
65
+ - canonicalize JSON via RFC 8785 (JCS),
66
+ - hash canonical UTF-8 bytes using `sha256`,
67
+ - emit lowercase hex digests.
@@ -0,0 +1,62 @@
1
+ # ArbitrationOutcomeMapping.v1
2
+
3
+ This document freezes deterministic mapping from dispute/arbitration outcomes to settlement directives in Trust OS v1.
4
+
5
+ ## Purpose
6
+
7
+ Dispute outcomes must produce one unambiguous financial directive so settlement resolution is:
8
+
9
+ - deterministic,
10
+ - replay-safe,
11
+ - auditable with stable evidence traces.
12
+
13
+ ## Outcome to directive mapping
14
+
15
+ Input: `AgentRunSettlement.v1.disputeResolution` + settlement `amountCents`
16
+
17
+ - `outcome=accepted`
18
+ - directive: `status=released`
19
+ - `releaseRatePct=100`
20
+ - `releasedAmountCents=amountCents`
21
+ - `refundedAmountCents=0`
22
+ - `outcome=rejected`
23
+ - directive: `status=refunded`
24
+ - `releaseRatePct=0`
25
+ - `releasedAmountCents=0`
26
+ - `refundedAmountCents=amountCents`
27
+ - `outcome=partial`
28
+ - financial outcome: `reversal`
29
+ - settlement directive: `status=released`
30
+ - requires `releaseRatePct` integer in range `1..99`
31
+ - `releasedAmountCents=floor(amountCents * releaseRatePct / 100)`
32
+ - `refundedAmountCents=amountCents - releasedAmountCents`
33
+ - both released/refunded amounts must be non-zero (true split)
34
+
35
+ ## Validation invariants
36
+
37
+ - `accepted` may include `releaseRatePct` only as `100`.
38
+ - `rejected` may include `releaseRatePct` only as `0`.
39
+ - `partial` must include `releaseRatePct` in `1..99`.
40
+ - `withdrawn|unresolved` must not include `releaseRatePct` and cannot derive settlement directives.
41
+ - `amountCents` must be a positive safe integer when deriving directives.
42
+
43
+ Invalid combinations fail-closed with stable error code `DISPUTE_OUTCOME_DIRECTIVE_INVALID`.
44
+
45
+ ## Resolve request guardrails
46
+
47
+ For `/runs/{runId}/settlement/resolve` when a dispute directive exists:
48
+
49
+ - request `status` may be omitted (derived status is authoritative),
50
+ - explicit `status` must equal derived status,
51
+ - explicit `releaseRatePct`, `releasedAmountCents`, and `refundedAmountCents` must match derived values exactly.
52
+ - if settlement is already resolved and dispute directive is present, dispute status must be `closed`.
53
+
54
+ Status mismatch fails with `DISPUTE_OUTCOME_STATUS_MISMATCH`.
55
+ Directive amount/rate mismatch fails with `DISPUTE_OUTCOME_AMOUNT_MISMATCH`.
56
+ Resolved-settlement directive precondition mismatch fails with `TRANSITION_ILLEGAL`.
57
+
58
+ ## Determinism requirements
59
+
60
+ - identical dispute inputs must generate identical directives across retries.
61
+ - idempotency replay for resolve operations must return the same settlement and decision traces.
62
+ - decision traces should include the resolved `disputeSettlementDirective` for audit.
@@ -0,0 +1,60 @@
1
+ # ArbitrationVerdict.v1
2
+
3
+ `ArbitrationVerdict.v1` defines the signed verdict artifact for an `ArbitrationCase.v1`.
4
+
5
+ It records deterministic decision output from an arbiter, including:
6
+
7
+ - final outcome (`accepted|rejected|partial`),
8
+ - settlement release partition hint (`releaseRatePct`),
9
+ - rationale and cited evidence references,
10
+ - signature material, and
11
+ - optional appeal linkage.
12
+
13
+ ## Schema
14
+
15
+ See `schemas/ArbitrationVerdict.v1.schema.json`.
16
+
17
+ ## Required fields
18
+
19
+ - `schemaVersion` (const: `ArbitrationVerdict.v1`)
20
+ - `verdictId`
21
+ - `caseId`
22
+ - `tenantId`
23
+ - `runId`
24
+ - `settlementId`
25
+ - `disputeId`
26
+ - `arbiterAgentId`
27
+ - `outcome` (`accepted|rejected|partial`)
28
+ - `releaseRatePct` (integer `0..100`)
29
+ - `rationale`
30
+ - `evidenceRefs`
31
+ - `issuedAt`
32
+ - `signature` (deterministic signing envelope)
33
+ - `revision`
34
+ - `createdAt`
35
+ - `updatedAt`
36
+
37
+ ## Signature envelope
38
+
39
+ `signature` includes:
40
+
41
+ - `algorithm` (`ed25519`)
42
+ - `signerKeyId`
43
+ - `verdictHash` (hash of canonical verdict core)
44
+ - `signature` (base64 signature)
45
+
46
+ ## Appeal references
47
+
48
+ If this verdict participates in an appeal chain, include optional `appealRef`:
49
+
50
+ - `appealCaseId`
51
+ - `parentVerdictId`
52
+ - `reason` (optional)
53
+
54
+ ## Canonicalization and hashing
55
+
56
+ When hashed/signed by higher-level protocols:
57
+
58
+ - canonicalize JSON via RFC 8785 (JCS),
59
+ - hash canonical UTF-8 bytes using `sha256`,
60
+ - emit lowercase hex digests.
@@ -0,0 +1,32 @@
1
+ # BundleHeadAttestation.v1
2
+
3
+ `BundleHeadAttestation.v1` is canonical JSON stored at `attestation/bundle_head_attestation.json`.
4
+
5
+ In strict mode, finance-grade bundles require this attestation.
6
+
7
+ ## Purpose
8
+
9
+ - Commit to a specific bundle by signing:
10
+ - `manifestHash`
11
+ - and the relevant nested heads (e.g., FinancePack commits to MonthProof manifest/attestation).
12
+
13
+ ## Core fields
14
+
15
+ - `schemaVersion = "BundleHeadAttestation.v1"`
16
+ - `kind`: the bundle kind/type (e.g. `JobProofBundle.v1`, `MonthProofBundle.v1`, `FinancePackBundle.v1`)
17
+ - `tenantId`
18
+ - `scope`: kind-specific scope object (e.g. `{jobId}` or `{period}`)
19
+ - `generatedAt`: bundle generation time (best-effort timestamp)
20
+ - `manifestHash`: bundle manifest hash
21
+ - `heads`: kind-specific head commitments
22
+ - `timestampProof` (optional): a trustworthy signing time proof used for revocation/rotation historical acceptance checks
23
+ - `signedAt`: attestation signing time (server time)
24
+ - `signerKeyId`
25
+ - `attestationHash`: canonical hash of the attestation core (signature excluded)
26
+ - `signature`: base64 Ed25519 signature over `attestationHash`
27
+
28
+ ## Validity requirements (strict mode)
29
+
30
+ - Signature must verify with the governed server key identified by `signerKeyId`.
31
+ - The signer key must be governed/valid per the embedded governance stream rules.
32
+ - `manifestHash` must match the bundle’s computed manifest hash.
@@ -0,0 +1,31 @@
1
+ # Canonical JSON
2
+
3
+ Settld hashes and signs canonical JSON to avoid ambiguity across runtimes/languages.
4
+
5
+ ## Canonicalization algorithm
6
+
7
+ Settld uses **RFC 8785 (JCS — JSON Canonicalization Scheme)** as the canonicalization contract for all protocol-critical hashes/signatures.
8
+
9
+ In this repo, “canonical JSON” means the UTF-8 bytes of the JCS canonical form.
10
+
11
+ Given an input value (a JSON value):
12
+
13
+ - `null`, `string`, `boolean` serialize as-is.
14
+ - `number` must be finite and must not be `-0` (protocol rejects these).
15
+ - `array` preserves element order; each element is canonicalized recursively.
16
+ - `object` must be a plain object (prototype is `Object.prototype` or `null`), with no symbol keys.
17
+ - Keys are sorted ascending (lexicographic).
18
+ - Values are canonicalized recursively.
19
+
20
+ The canonical form is serialized as JSON (no whitespace) per JCS.
21
+
22
+ ### Optional fields
23
+
24
+ - JSON has no `undefined`. Protocol objects MUST NOT include `undefined` in hashed/signed payloads.
25
+ - “Field not present” is semantically different from “field present with `null`”. Protocol surfaces SHOULD omit optional fields when absent, and use `null` only when the spec explicitly calls for it.
26
+
27
+ ## Hash rule
28
+
29
+ When a spec says **“hash the object”**, it means:
30
+
31
+ `sha256_hex( utf8( canonical_json_stringify(object) ) )`
@@ -0,0 +1,61 @@
1
+ # Cryptography Inventory (v1)
2
+
3
+ This document is an explicit inventory of cryptographic primitives and byte-level rules used by the protocol/toolchain.
4
+
5
+ ## Canonicalization (JSON)
6
+
7
+ - **Standard**: RFC 8785 (JCS).
8
+ - **Bytes hashed for JSON objects**: UTF-8 bytes of the canonical JSON string.
9
+ - Spec: `CANONICAL_JSON.md`
10
+ - Implementations:
11
+ - Verifier canonicalization: `packages/artifact-verify/src/canonical-json.js`
12
+ - Bundler canonicalization: `src/core/canonical-json.js`
13
+
14
+ ## Hashing
15
+
16
+ - **Algorithm**: SHA-256.
17
+ - **Encoding**: lowercase hex.
18
+ - **Manifest file hashing**: raw file bytes (no normalization).
19
+ - Verifier: `packages/artifact-verify/src/hash-file.js`
20
+ - **JSON object hashing**: SHA-256 over UTF-8 bytes of RFC 8785 canonical JSON.
21
+ - Verifier helper: `packages/artifact-verify/src/crypto.js`
22
+ - Bundler helper: `src/core/crypto.js`
23
+
24
+ ## Signatures
25
+
26
+ ### Governance-root signatures
27
+
28
+ Used to sign governance policy (v2) and revocation lists.
29
+
30
+ - **Algorithm**: Ed25519.
31
+ - **Signed message**: the hex SHA-256 digest of canonical JSON (see above), passed as bytes to Ed25519 verification.
32
+ - Verifier implementation: `packages/artifact-verify/src/crypto.js:16`
33
+
34
+ ### Event signer / server signer signatures
35
+
36
+ Used for:
37
+
38
+ - bundle head attestation (`attestation/bundle_head_attestation.json`)
39
+ - strict verification report (`verify/verification_report.json`)
40
+ - timestamp proofs (optional, when present)
41
+
42
+ Algorithm and verification semantics are the same: Ed25519 over the hash digest bytes.
43
+
44
+ ## Key formats
45
+
46
+ - **Public keys**: PEM-encoded public keys stored as strings (for verification).
47
+ - **Private keys**: PEM-encoded private keys used only by bundlers/signers (not shipped in bundles).
48
+ - Key IDs: stable string identifiers (e.g., `key_…`) used as lookup keys in policy/trust maps.
49
+
50
+ ## Algorithm agility stance (v1)
51
+
52
+ For v1 protocol objects, supported signature algorithms are intentionally narrow:
53
+
54
+ - Governance policy declares allowed algorithms (currently `ed25519`).
55
+ - Verifiers MUST reject signatures/policies requiring algorithms they do not implement.
56
+
57
+ Adding new algorithms is a protocol change and should be introduced via:
58
+
59
+ - new protocol object versions (preferred), or
60
+ - an explicit versioned policy expansion plus conformance pack updates.
61
+
@@ -0,0 +1,49 @@
1
+ # ClosePack.v1
2
+
3
+ `ClosePack.v1` is a **pre-dispute invoice package**: a single bundle a buyer can archive and later re-verify offline to answer:
4
+
5
+ - “What was billed?”
6
+ - “What work proof was bound to the bill?”
7
+ - “What evidence files were referenced?”
8
+ - (Optionally) “Did this job meet the SLA?” and “Did it meet acceptance criteria?”
9
+
10
+ ClosePack is a **bundle kind** with its own `manifest.json`, head attestation, and verification report. It **embeds** an `InvoiceBundle.v1` directory tree.
11
+
12
+ ## On-disk layout (v1)
13
+
14
+ - `settld.json` — header with `type="ClosePack.v1"` and binding inputs (see below).
15
+ - `manifest.json` — `ClosePackManifest.v1` (commits to all files except `verify/**`).
16
+ - `attestation/bundle_head_attestation.json` — `BundleHeadAttestation.v1` for `kind="ClosePack.v1"`.
17
+ - `verify/verification_report.json` — `VerificationReport.v1` bound to this ClosePack’s `manifestHash` and head attestation.
18
+ - `payload/invoice_bundle/**` — embedded `InvoiceBundle.v1` (byte-for-byte directory tree copy).
19
+ - `evidence/evidence_index.json` — `EvidenceIndex.v1` (required).
20
+ - Optional “explainable computations” (portable + recomputable):
21
+ - `sla/sla_definition.json` — `SlaDefinition.v1`
22
+ - `sla/sla_evaluation.json` — `SlaEvaluation.v1`
23
+ - `acceptance/acceptance_criteria.json` — `AcceptanceCriteria.v1`
24
+ - `acceptance/acceptance_evaluation.json` — `AcceptanceEvaluation.v1`
25
+
26
+ ## Hashing + circularity
27
+
28
+ ClosePack manifests intentionally exclude `verify/**` (same rationale as other bundle kinds) so verification outputs do not create circular hashing.
29
+
30
+ ## Binding inputs (ClosePack header)
31
+
32
+ `settld.json` includes inputs that bind the ClosePack to the embedded Invoice bundle:
33
+
34
+ - `invoiceBundle.embeddedPath` (constant path within ClosePack, v1)
35
+ - `invoiceBundle.manifestHash`
36
+ - `invoiceBundle.headAttestationHash`
37
+
38
+ Verifiers must ensure these match the embedded Invoice bundle instance at `payload/invoice_bundle/**`.
39
+
40
+ ## Strict vs non-strict
41
+
42
+ - **Strict** mode:
43
+ - ClosePack must be structurally complete and internally consistent.
44
+ - Embedded `InvoiceBundle.v1` must strictly verify.
45
+ - If `sla/*` or `acceptance/*` evaluation surfaces are present, the verifier must recompute them and require exact match.
46
+ - **Non-strict** mode:
47
+ - Missing optional `sla/*` and `acceptance/*` surfaces may be accepted with structured warnings (see `WARNINGS.md`).
48
+ - Evidence index is still expected to be present (ClosePack’s core value proposition).
49
+
@@ -0,0 +1,24 @@
1
+ # ClosePackManifest.v1
2
+
3
+ This manifest is stored at `manifest.json` within ClosePack bundles.
4
+
5
+ ## Hashing contract
6
+
7
+ - `hashing.schemaVersion = "ClosePackManifestHash.v1"`
8
+ - file order: `path_asc`
9
+ - excludes: `["verify/**"]`
10
+
11
+ Rationale: `verify/verification_report.json` is a derived output that binds to `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 ClosePack root)
22
+ - `sha256` (hex sha256 of raw file bytes)
23
+ - `bytes` (byte length)
24
+
@@ -0,0 +1,90 @@
1
+ # DelegationGrant.v1
2
+
3
+ `DelegationGrant.v1` defines a deterministic delegated-authority grant between two agents.
4
+
5
+ Status: Draft (architecture target; not fully enforced in runtime yet).
6
+
7
+ ## Purpose
8
+
9
+ `DelegationGrant.v1` encodes bounded authority transfer for autonomous execution:
10
+
11
+ - who delegated to whom,
12
+ - what capability/risk scope is allowed,
13
+ - what spend envelope is permitted,
14
+ - how deep the delegation chain can extend,
15
+ - when the grant is valid and revocable.
16
+
17
+ ## Required fields
18
+
19
+ - `schemaVersion` (const: `DelegationGrant.v1`)
20
+ - `grantId`
21
+ - `tenantId`
22
+ - `delegatorAgentId`
23
+ - `delegateeAgentId`
24
+ - `scope`
25
+ - `spendLimit`
26
+ - `chainBinding`
27
+ - `validity`
28
+ - `revocation`
29
+ - `createdAt`
30
+ - `grantHash`
31
+
32
+ ## Scope model
33
+
34
+ `scope` defines the maximal authority window:
35
+
36
+ - `allowedProviderIds` (optional)
37
+ - `allowedToolIds` (optional)
38
+ - `allowedRiskClasses` (required)
39
+ - `sideEffectingAllowed` (required boolean)
40
+
41
+ If `sideEffectingAllowed=false`, strict policy engines MUST reject side-effecting execution intents even if tool/provider is allowlisted.
42
+
43
+ ## Spend envelope
44
+
45
+ `spendLimit` defines bounded economic authority:
46
+
47
+ - `currency`
48
+ - `maxPerCallCents`
49
+ - `maxTotalCents`
50
+
51
+ Implementations SHOULD track cumulative spend against `maxTotalCents` using immutable receipt references.
52
+
53
+ ## Chain binding
54
+
55
+ `chainBinding` binds grant placement in delegation topology:
56
+
57
+ - `rootGrantHash`
58
+ - `parentGrantHash` (nullable)
59
+ - `depth`
60
+ - `maxDelegationDepth`
61
+
62
+ A child grant is valid only when `depth <= maxDelegationDepth` and parent is valid/non-revoked.
63
+
64
+ ## Validity + revocation
65
+
66
+ `validity`:
67
+
68
+ - `issuedAt`
69
+ - `notBefore`
70
+ - `expiresAt`
71
+
72
+ `revocation`:
73
+
74
+ - `revocable`
75
+ - `revokedAt` (nullable)
76
+ - `revocationReasonCode` (nullable)
77
+
78
+ ## Canonicalization + hashing
79
+
80
+ `grantHash` is computed over canonical JSON of the full object excluding `grantHash`:
81
+
82
+ 1. canonicalize JSON with RFC 8785 (JCS),
83
+ 2. hash canonical UTF-8 bytes using `sha256`,
84
+ 3. encode lowercase hex.
85
+
86
+ Detached signatures may be applied by transport/control layers; v1 does not require an embedded signature field.
87
+
88
+ ## Schema
89
+
90
+ See `docs/spec/schemas/DelegationGrant.v1.schema.json`.