settld 0.1.1 → 0.1.5

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 (441) hide show
  1. package/README.md +61 -3
  2. package/SETTLD_VERSION +1 -1
  3. package/bin/settld-mcp +2 -0
  4. package/bin/settld.js +13 -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 +140 -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 +337 -0
  36. package/docs/QUICKSTART_MCP_HOSTS.md +143 -0
  37. package/docs/QUICKSTART_PRODUCE.md +61 -0
  38. package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
  39. package/docs/QUICKSTART_SDK.md +125 -0
  40. package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
  41. package/docs/QUICKSTART_VERIFY.md +54 -0
  42. package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
  43. package/docs/README.md +15 -0
  44. package/docs/RELEASE_CHECKLIST.md +156 -0
  45. package/docs/RELEASING.md +81 -0
  46. package/docs/REPO_SETTINGS.md +37 -0
  47. package/docs/RUNBOOK.md +86 -0
  48. package/docs/SKILLS.md +42 -0
  49. package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
  50. package/docs/SLO.md +70 -0
  51. package/docs/SUMMARY.md +16 -0
  52. package/docs/SUPPORT.md +31 -0
  53. package/docs/THREAT_MODEL.md +36 -0
  54. package/docs/TRUST.md +59 -0
  55. package/docs/WORKFLOW.md +35 -0
  56. package/docs/X402_BATCH_SETTLEMENT.md +126 -0
  57. package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
  58. package/docs/examples/x402-provider-payout-registry.example.json +14 -0
  59. package/docs/gitbook/README.md +52 -0
  60. package/docs/gitbook/SETUP.md +25 -0
  61. package/docs/gitbook/SUMMARY.md +15 -0
  62. package/docs/gitbook/api-reference.md +73 -0
  63. package/docs/gitbook/closepacks.md +55 -0
  64. package/docs/gitbook/conformance.md +59 -0
  65. package/docs/gitbook/core-primitives.md +85 -0
  66. package/docs/gitbook/dispute-lifecycle.md +33 -0
  67. package/docs/gitbook/faq.md +21 -0
  68. package/docs/gitbook/guides.md +49 -0
  69. package/docs/gitbook/operations-runbook.md +36 -0
  70. package/docs/gitbook/quickstart.md +104 -0
  71. package/docs/gitbook/replay-and-audit.md +30 -0
  72. package/docs/gitbook/sdk-reference.md +35 -0
  73. package/docs/gitbook/security-model.md +58 -0
  74. package/docs/integrations/README.md +14 -0
  75. package/docs/integrations/github-actions-verify.yml +31 -0
  76. package/docs/integrations/github-actions.md +34 -0
  77. package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
  78. package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
  79. package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
  80. package/docs/kernel-compatible/capabilities.json +36 -0
  81. package/docs/marketing/agent-commerce-substrate.md +78 -0
  82. package/docs/marketing/hn-repost-2026-02-17.md +102 -0
  83. package/docs/marketing/show-hn-post.md +45 -0
  84. package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
  85. package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
  86. package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
  87. package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
  88. package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
  89. package/docs/ops/KERNEL_V0_SHIP_GATE.md +67 -0
  90. package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
  91. package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +28 -0
  92. package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
  93. package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
  94. package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
  95. package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
  96. package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +103 -0
  97. package/docs/ops/R1_SLOS.md +66 -0
  98. package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
  99. package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
  100. package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
  101. package/docs/ops/TRUST_CONFIG_WIZARD.md +47 -0
  102. package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
  103. package/docs/ops/tool-call-disputes-holdback.md +52 -0
  104. package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
  105. package/docs/pilot-kit/README.md +29 -0
  106. package/docs/pilot-kit/architecture-one-pager.md +48 -0
  107. package/docs/pilot-kit/buyer-email.txt +19 -0
  108. package/docs/pilot-kit/buyer-one-pager.md +31 -0
  109. package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
  110. package/docs/pilot-kit/offline-verify.md +33 -0
  111. package/docs/pilot-kit/procurement-one-pager.md +50 -0
  112. package/docs/pilot-kit/rfp-clause.md +46 -0
  113. package/docs/pilot-kit/roi-calculator-template.csv +2 -0
  114. package/docs/pilot-kit/security-qa.md +153 -0
  115. package/docs/pilot-kit/security-summary.md +35 -0
  116. package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
  117. package/docs/spec/AcceptanceCriteria.v1.md +17 -0
  118. package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
  119. package/docs/spec/AgentEvent.v1.md +47 -0
  120. package/docs/spec/AgentIdentity.v1.md +62 -0
  121. package/docs/spec/AgentPassport.v1.md +95 -0
  122. package/docs/spec/AgentReputation.v1.md +59 -0
  123. package/docs/spec/AgentReputation.v2.md +52 -0
  124. package/docs/spec/AgentRun.v1.md +47 -0
  125. package/docs/spec/AgentRunSettlement.v1.md +52 -0
  126. package/docs/spec/AgentWallet.v1.md +43 -0
  127. package/docs/spec/AgreementDelegation.v1.md +109 -0
  128. package/docs/spec/ArbitrationCase.v1.md +67 -0
  129. package/docs/spec/ArbitrationVerdict.v1.md +60 -0
  130. package/docs/spec/BundleHeadAttestation.v1.md +32 -0
  131. package/docs/spec/CANONICAL_JSON.md +31 -0
  132. package/docs/spec/CRYPTOGRAPHY.md +61 -0
  133. package/docs/spec/ClosePack.v1.md +49 -0
  134. package/docs/spec/ClosePackManifest.v1.md +24 -0
  135. package/docs/spec/DelegationGrant.v1.md +90 -0
  136. package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
  137. package/docs/spec/ERRORS.md +76 -0
  138. package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
  139. package/docs/spec/EvidenceIndex.v1.md +20 -0
  140. package/docs/spec/ExecutionIntent.v1.md +90 -0
  141. package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
  142. package/docs/spec/FundingHold.v1.md +60 -0
  143. package/docs/spec/GovernancePolicy.v1.md +34 -0
  144. package/docs/spec/GovernancePolicy.v2.md +30 -0
  145. package/docs/spec/INVARIANTS.md +389 -0
  146. package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
  147. package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
  148. package/docs/spec/InvoiceClaim.v1.md +11 -0
  149. package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
  150. package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
  151. package/docs/spec/MarketplaceOffer.v2.md +54 -0
  152. package/docs/spec/MeteringReport.v1.md +18 -0
  153. package/docs/spec/PRODUCER_ERRORS.md +42 -0
  154. package/docs/spec/PricingMatrix.v1.md +20 -0
  155. package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
  156. package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
  157. package/docs/spec/ProduceCliOutput.v1.md +46 -0
  158. package/docs/spec/ProofBundleManifest.v1.md +24 -0
  159. package/docs/spec/README.md +104 -0
  160. package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
  161. package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
  162. package/docs/spec/REMOTE_SIGNER.md +66 -0
  163. package/docs/spec/ReleaseIndex.v1.md +32 -0
  164. package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
  165. package/docs/spec/ReleaseTrust.v1.md +13 -0
  166. package/docs/spec/ReleaseTrust.v2.md +26 -0
  167. package/docs/spec/RemoteSignerRequest.v1.md +21 -0
  168. package/docs/spec/RemoteSignerResponse.v1.md +16 -0
  169. package/docs/spec/ReputationEvent.v1.md +63 -0
  170. package/docs/spec/RevocationList.v1.md +28 -0
  171. package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
  172. package/docs/spec/STRICTNESS.md +68 -0
  173. package/docs/spec/SUPPLY_CHAIN.md +33 -0
  174. package/docs/spec/SettlementAdjustment.v1.md +45 -0
  175. package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
  176. package/docs/spec/SettlementDecisionRecord.v2.md +51 -0
  177. package/docs/spec/SettlementDecisionReport.v1.md +44 -0
  178. package/docs/spec/SettlementKernel.v1.md +59 -0
  179. package/docs/spec/SettlementReceipt.v1.md +63 -0
  180. package/docs/spec/SlaDefinition.v1.md +24 -0
  181. package/docs/spec/SlaEvaluation.v1.md +12 -0
  182. package/docs/spec/THREAT_MODEL.md +113 -0
  183. package/docs/spec/TOOL_PROVENANCE.md +30 -0
  184. package/docs/spec/TRUST_ANCHORS.md +84 -0
  185. package/docs/spec/TenantSettings.v1.md +90 -0
  186. package/docs/spec/TenantSettings.v2.md +99 -0
  187. package/docs/spec/TimestampProof.v1.md +25 -0
  188. package/docs/spec/ToolCallAgreement.v1.md +34 -0
  189. package/docs/spec/ToolCallEvidence.v1.md +47 -0
  190. package/docs/spec/ToolManifest.v1.md +47 -0
  191. package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
  192. package/docs/spec/VERSIONING.md +107 -0
  193. package/docs/spec/VerificationReport.v1.md +50 -0
  194. package/docs/spec/VerifyAboutOutput.v1.md +10 -0
  195. package/docs/spec/VerifyCliOutput.v1.md +28 -0
  196. package/docs/spec/WARNINGS.md +83 -0
  197. package/docs/spec/error-codes.v1.txt +285 -0
  198. package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
  199. package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
  200. package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
  201. package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
  202. package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
  203. package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
  204. package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
  205. package/docs/spec/examples/release_index_v1.example.json +15 -0
  206. package/docs/spec/examples/release_trust_v1.example.json +7 -0
  207. package/docs/spec/examples/release_trust_v2.example.json +22 -0
  208. package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
  209. package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
  210. package/docs/spec/examples/reputation_event_v1.example.json +29 -0
  211. package/docs/spec/examples/verification_report_v1.example.json +24 -0
  212. package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
  213. package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
  214. package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
  215. package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
  216. package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
  217. package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
  218. package/docs/spec/producer-error-codes.v1.txt +14 -0
  219. package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
  220. package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
  221. package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
  222. package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
  223. package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
  224. package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
  225. package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
  226. package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
  227. package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
  228. package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
  229. package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
  230. package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
  231. package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
  232. package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
  233. package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
  234. package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
  235. package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
  236. package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
  237. package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
  238. package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
  239. package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
  240. package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
  241. package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
  242. package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
  243. package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
  244. package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
  245. package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
  246. package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
  247. package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
  248. package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
  249. package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
  250. package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
  251. package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
  252. package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
  253. package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
  254. package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
  255. package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
  256. package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
  257. package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
  258. package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
  259. package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
  260. package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
  261. package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
  262. package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
  263. package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
  264. package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
  265. package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
  266. package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
  267. package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
  268. package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +148 -0
  269. package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
  270. package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
  271. package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
  272. package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
  273. package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
  274. package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
  275. package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
  276. package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
  277. package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
  278. package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
  279. package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
  280. package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
  281. package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
  282. package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
  283. package/docs/spec/x402-error-codes.v1.txt +21 -0
  284. package/docs/templates/buyer-email.txt +18 -0
  285. package/docs/templates/buyer-one-pager.md +24 -0
  286. package/package.json +40 -6
  287. package/scripts/acceptance/full-stack.mjs +734 -0
  288. package/scripts/acceptance/full-stack.sh +99 -0
  289. package/scripts/audit/build-audit-packet.mjs +242 -0
  290. package/scripts/backup-pg.sh +45 -0
  291. package/scripts/backup-restore/README.md +18 -0
  292. package/scripts/backup-restore/capture-state.mjs +130 -0
  293. package/scripts/backup-restore/client.mjs +97 -0
  294. package/scripts/backup-restore/seed-workload.mjs +235 -0
  295. package/scripts/backup-restore/verify-state.mjs +139 -0
  296. package/scripts/backup-restore-test.sh +217 -0
  297. package/scripts/chaos.js +221 -0
  298. package/scripts/ci/build-launch-cutover-packet.mjs +148 -0
  299. package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
  300. package/scripts/ci/changelog-guard.mjs +145 -0
  301. package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
  302. package/scripts/ci/check-secret-hygiene.mjs +78 -0
  303. package/scripts/ci/check-version-consistency.mjs +42 -0
  304. package/scripts/ci/cli-pack-smoke.mjs +160 -0
  305. package/scripts/ci/flake-budget-guard.mjs +68 -0
  306. package/scripts/ci/generate-error-codes.mjs +54 -0
  307. package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
  308. package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
  309. package/scripts/ci/npm-pack-smoke.mjs +454 -0
  310. package/scripts/ci/run-10x-throughput-drill.mjs +246 -0
  311. package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +325 -0
  312. package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
  313. package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
  314. package/scripts/ci/run-go-live-gate.mjs +150 -0
  315. package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
  316. package/scripts/ci/run-mcp-host-smoke.mjs +275 -0
  317. package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
  318. package/scripts/ci/runtime-import-smoke.mjs +58 -0
  319. package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
  320. package/scripts/closepack/lib.mjs +286 -0
  321. package/scripts/collect-debug.sh +263 -0
  322. package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
  323. package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
  324. package/scripts/demo/delivery-robot/generate.mjs +377 -0
  325. package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
  326. package/scripts/demo/magic-link-first-green.mjs +118 -0
  327. package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
  328. package/scripts/demo/mcp-paid-exa.mjs +1110 -0
  329. package/scripts/dev/billing-doctor.sh +145 -0
  330. package/scripts/dev/billing-smoke-prod.sh +219 -0
  331. package/scripts/dev/billing-webhook-replay.sh +161 -0
  332. package/scripts/dev/env.dev.example +29 -0
  333. package/scripts/dev/env.sh +37 -0
  334. package/scripts/dev/new-sdk-key.sh +81 -0
  335. package/scripts/dev/sdk-first-run.sh +21 -0
  336. package/scripts/dev/smoke-x402-gateway.sh +115 -0
  337. package/scripts/dev/start-api.sh +24 -0
  338. package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
  339. package/scripts/examples/sdk-first-paid-rfq.py +105 -0
  340. package/scripts/examples/sdk-first-verified-run.mjs +85 -0
  341. package/scripts/examples/sdk-first-verified-run.py +99 -0
  342. package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
  343. package/scripts/examples/sdk-tenant-analytics.py +118 -0
  344. package/scripts/finance-pack/bundle.mjs +284 -0
  345. package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
  346. package/scripts/governance/export.mjs +169 -0
  347. package/scripts/load/delivery-stress.k6.js +183 -0
  348. package/scripts/load/ingest-burst.k6.js +236 -0
  349. package/scripts/load/run-delivery-load.js +66 -0
  350. package/scripts/load/webhook-receiver.js +131 -0
  351. package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
  352. package/scripts/mcp/probe.mjs +238 -0
  353. package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
  354. package/scripts/mcp/settld-mcp-server.mjs +1201 -0
  355. package/scripts/openapi/write.mjs +13 -0
  356. package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
  357. package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
  358. package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
  359. package/scripts/ops/design-partner-run-packet.mjs +466 -0
  360. package/scripts/ops/hosted-baseline-evidence.mjs +681 -0
  361. package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
  362. package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
  363. package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
  364. package/scripts/pilot/finance-pack.mjs +495 -0
  365. package/scripts/pilot/fixtures/robot-keypair.json +4 -0
  366. package/scripts/pilot/fixtures/server-signer.json +4 -0
  367. package/scripts/proof-bundle/job.mjs +109 -0
  368. package/scripts/proof-bundle/lib.mjs +92 -0
  369. package/scripts/proof-bundle/month.mjs +103 -0
  370. package/scripts/provider/conformance-run.mjs +159 -0
  371. package/scripts/provider/keys-generate.mjs +135 -0
  372. package/scripts/provider/publish.mjs +420 -0
  373. package/scripts/quickstart/x402.mjs +334 -0
  374. package/scripts/release/build-artifacts.mjs +181 -0
  375. package/scripts/release/generate-release-index.mjs +112 -0
  376. package/scripts/release/release-index-lib.mjs +232 -0
  377. package/scripts/release/sign-release-index.mjs +85 -0
  378. package/scripts/release/validate-release-assets.mjs +170 -0
  379. package/scripts/release/verify-release.mjs +261 -0
  380. package/scripts/restore-pg.sh +34 -0
  381. package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
  382. package/scripts/sdk/smoke-python.py +30 -0
  383. package/scripts/sdk/smoke.mjs +16 -0
  384. package/scripts/settlement/x402-batch-worker.mjs +1091 -0
  385. package/scripts/slo/check.mjs +178 -0
  386. package/scripts/smoke/k8s-smoke.mjs +214 -0
  387. package/scripts/spec/generate-protocol-vectors.mjs +931 -0
  388. package/scripts/test/check-no-generated-artifacts.sh +12 -0
  389. package/scripts/test/run.sh +45 -0
  390. package/scripts/trust/validate-trust-file.mjs +57 -0
  391. package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
  392. package/scripts/trust-config/wizard.mjs +161 -0
  393. package/scripts/vendor-contract-test-lib.mjs +182 -0
  394. package/scripts/vendor-contract-test.mjs +55 -0
  395. package/scripts/vercel/build-mkdocs.sh +9 -0
  396. package/scripts/vercel/ignore-mkdocs.sh +25 -0
  397. package/scripts/vercel/install-mkdocs.sh +6 -0
  398. package/scripts/verify-pg.js +217 -0
  399. package/scripts/x402/receipt-verify.mjs +289 -0
  400. package/services/finance-sink/src/dedupe-store.js +29 -6
  401. package/services/receiver/src/dedupe-store.js +29 -5
  402. package/services/x402-gateway/Dockerfile +13 -0
  403. package/services/x402-gateway/README.md +58 -0
  404. package/services/x402-gateway/examples/upstream-mock.js +337 -0
  405. package/services/x402-gateway/src/server.js +947 -0
  406. package/src/api/app.js +32517 -16877
  407. package/src/api/maintenance.js +70 -0
  408. package/src/api/openapi.js +1130 -17
  409. package/src/api/persistence.js +272 -0
  410. package/src/api/server.js +81 -5
  411. package/src/api/store.js +1248 -6
  412. package/src/api/workers/deliveries.js +99 -4
  413. package/src/api/workers/insolvency-sweep.js +159 -0
  414. package/src/core/agent-card.js +69 -0
  415. package/src/core/agent-wallets.js +97 -0
  416. package/src/core/agreement-delegation.js +549 -0
  417. package/src/core/billing-plans.js +40 -6
  418. package/src/core/circle-reserve-adapter.js +845 -0
  419. package/src/core/maintenance-locks.js +1 -0
  420. package/src/core/paid-tool-manifest.js +318 -0
  421. package/src/core/provider-publish-conformance.js +525 -0
  422. package/src/core/provider-publish-proof.js +396 -0
  423. package/src/core/provider-quote-signature.js +170 -0
  424. package/src/core/settld-keys.js +112 -0
  425. package/src/core/settld-pay-token.js +344 -0
  426. package/src/core/settlement-kernel.js +213 -2
  427. package/src/core/settlement-verifier.js +335 -0
  428. package/src/core/tool-call-agreement.js +112 -0
  429. package/src/core/tool-call-evidence.js +144 -0
  430. package/src/core/tool-provider-signature.js +98 -0
  431. package/src/core/x402-escalation-override.js +258 -0
  432. package/src/core/x402-gate.js +118 -0
  433. package/src/core/x402-provider-refund-decision.js +220 -0
  434. package/src/core/x402-receipt-verifier.js +708 -0
  435. package/src/core/x402-reversal-command.js +251 -0
  436. package/src/core/x402-wallet-issuer-decision.js +252 -0
  437. package/src/core/zk-verifier.js +300 -0
  438. package/src/db/migrations/029_reputation_event_index.sql +54 -0
  439. package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
  440. package/src/db/pg.js +18 -7
  441. package/src/db/store-pg.js +838 -72
@@ -0,0 +1,20 @@
1
+ # PricingMatrix.v1
2
+
3
+ This matrix is stored at `pricing/pricing_matrix.json` within Invoice bundles.
4
+
5
+ ## Buyer approval (contract-grade terms)
6
+
7
+ Pricing terms may be buyer-approved via a detached signature surface:
8
+
9
+ - `pricing/pricing_matrix_signatures.json` (`PricingMatrixSignatures.v2` recommended)
10
+
11
+ New bundles SHOULD use `PricingMatrixSignatures.v2` (canonical JSON binding; formatting-independent).
12
+
13
+ See:
14
+
15
+ - `PricingMatrixSignatures.v2.md`
16
+ - `PricingMatrixSignatures.v1.md` (legacy; binds to raw file bytes)
17
+
18
+ ## Numeric representation
19
+
20
+ - prices are expressed in minor units (e.g. cents) as base-10 integer strings (no floats).
@@ -0,0 +1,30 @@
1
+ # PricingMatrixSignatures.v1
2
+
3
+ This document provides a **buyer signature surface** for pricing terms.
4
+
5
+ It is stored at:
6
+
7
+ - `pricing/pricing_matrix_signatures.json` within Invoice bundles.
8
+
9
+ `PricingMatrixSignatures.v1` is **legacy**: it binds to raw file bytes, so reformatting `pricing/pricing_matrix.json` (pretty-print/minify/different serializer) changes the binding hash.
10
+
11
+ New bundles SHOULD use `PricingMatrixSignatures.v2` (canonical JSON binding; formatting-independent). See `PricingMatrixSignatures.v2.md`.
12
+
13
+ ## Binding target
14
+
15
+ `PricingMatrixSignatures.v1` binds to the exact bytes of:
16
+
17
+ - `pricing/pricing_matrix.json`
18
+
19
+ The binding hash is:
20
+
21
+ - `pricingMatrixHash` — **sha256 hex of raw file bytes** of `pricing/pricing_matrix.json` (the same value committed in the bundle `manifest.json` entry for that file).
22
+
23
+ Each signature in `signatures[]` signs the `pricingMatrixHash` (bytes of the 32-byte sha256 digest) using Ed25519.
24
+
25
+ ## Strict vs non-strict
26
+
27
+ - **Strict**: verifiers MUST reject this legacy schema version (hard failure). Use `PricingMatrixSignatures.v2` instead.
28
+ - **Non-strict**: verifiers MAY accept this legacy schema version for compatibility, but MUST emit warning `WARN_PRICING_SIGNATURE_V1_BYTES_LEGACY`. Missing signatures MAY be accepted with warning `PRICING_MATRIX_UNSIGNED_LENIENT`.
29
+
30
+ Invalid signatures are hard failures (security invariant).
@@ -0,0 +1,29 @@
1
+ # PricingMatrixSignatures.v2
2
+
3
+ This document provides a **buyer signature surface** for pricing terms.
4
+
5
+ It is stored at:
6
+
7
+ - `pricing/pricing_matrix_signatures.json` within Invoice bundles.
8
+
9
+ ## Binding target
10
+
11
+ `PricingMatrixSignatures.v2` binds to the canonical JSON value of:
12
+
13
+ - `pricing/pricing_matrix.json` (`PricingMatrix.v1`)
14
+
15
+ The binding hash is:
16
+
17
+ - `pricingMatrixCanonicalHash` — `sha256_hex( utf8( canonical_json_stringify(pricing_matrix_json) ) )`
18
+
19
+ Canonical JSON is RFC 8785 (JCS). See `CANONICAL_JSON.md`.
20
+
21
+ Each signature in `signatures[]` signs `pricingMatrixCanonicalHash` (bytes of the 32-byte sha256 digest) using Ed25519.
22
+
23
+ ## Strict vs non-strict
24
+
25
+ - **Strict**: verifiers MUST require this file to exist and MUST require at least one valid signature from a trusted buyer pricing signer key (see `TRUST_ANCHORS.md`).
26
+ - **Non-strict**: missing signatures MAY be accepted with warning `PRICING_MATRIX_UNSIGNED_LENIENT`.
27
+
28
+ Invalid signatures are hard failures (security invariant).
29
+
@@ -0,0 +1,46 @@
1
+ # ProduceCliOutput.v1
2
+
3
+ `ProduceCliOutput.v1` is the machine-readable output emitted by `settld-produce --format json`.
4
+
5
+ This is a public contract intended for CI/pipelines:
6
+
7
+ - It is JSON Schema defined (see `docs/spec/schemas/ProduceCliOutput.v1.schema.json`).
8
+ - Arrays of `errors[]` and `warnings[]` MUST be deterministically ordered (recommended sort: `(code, path)`).
9
+ - Optional fields MUST be omitted when absent (not `null`) unless the schema explicitly allows `null`.
10
+
11
+ ## High-level shape
12
+
13
+ - `schemaVersion`: `"ProduceCliOutput.v1"`
14
+ - `tool`: tool identity (best-effort)
15
+ - `mode`: deterministic controls that influenced generation
16
+ - `target`: what was produced and where it was written
17
+ - `ok`: overall success
18
+ - `produceOk`: whether production succeeded (even if `verifyAfter` failed)
19
+ - `verifyAfter` (optional): result of a post-produce verification step when requested
20
+ - `warnings[]`: structured warning codes
21
+ - `errors[]`: structured error codes
22
+ - `result`: summary of produced bundle hashes and identifiers
23
+
24
+ ## Error/warning items (safe diagnostics)
25
+
26
+ Each item in `errors[]` / `warnings[]` may include:
27
+
28
+ - `code`: stable, machine-readable code (see `docs/spec/PRODUCER_ERRORS.md`).
29
+ - `causeKind`: coarse category for operators (`signer` | `plugin` | `verify` | `input` | `io` | `internal`).
30
+ - `causeCode`: stable, non-secret subcode identifying the internal failure class (never raw exception text).
31
+
32
+ Producer tooling MUST NOT embed arbitrary exception strings in stdout JSON output; use `--explain` (stderr) for operator diagnostics.
33
+
34
+ ## `--explain` (deterministic stderr)
35
+
36
+ `settld-produce --explain` prints a deterministic, non-secret diagnostic summary to **stderr**.
37
+
38
+ Contract:
39
+
40
+ - Output is deterministic for the same inputs/environment.
41
+ - Output MUST NOT include secrets (tokens, secret header values, private keys).
42
+ - Output ends with **exactly one** trailing newline.
43
+
44
+ ## Relationship to protocol objects
45
+
46
+ `ProduceCliOutput.v1` describes tooling behavior; it does not change bundle protocol semantics.
@@ -0,0 +1,24 @@
1
+ # ProofBundleManifest.v1 (JobProof / MonthProof)
2
+
3
+ This manifest is stored at `manifest.json` within JobProof and MonthProof bundles.
4
+
5
+ ## Hashing contract
6
+
7
+ - `hashing.schemaVersion = "ProofBundleManifestHash.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 bundle root)
22
+ - `sha256` (hex sha256 of raw file bytes)
23
+ - `bytes` (byte length)
24
+
@@ -0,0 +1,104 @@
1
+ # Settld Protocol Specs
2
+
3
+ This directory freezes the **wire-format contracts** that Settld emits and verifies (bundles, manifests, attestations, and verification reports).
4
+
5
+ These specs are written so an independent implementer can build a verifier without reading Settld’s source.
6
+
7
+ ## Canonicalization + hashing (global rules)
8
+
9
+ - **Canonical JSON**: JSON objects are canonicalized using RFC 8785 (JCS).
10
+ - **Hashing**: all hashes in these specs are `sha256` over UTF-8 bytes of canonical JSON (or raw file bytes, as specified), represented as lowercase hex.
11
+ - **Derived outputs**: bundle manifests intentionally **exclude** `verify/**` to avoid circular hashing; those files are verified out-of-band by signature and by binding to the `manifestHash`.
12
+
13
+ ## Documents
14
+
15
+ - `CANONICAL_JSON.md` — canonical JSON rules used before hashing/signing.
16
+ - `VERSIONING.md` — tool vs protocol versioning policy (SemVer + protocol object evolution).
17
+ - `REFERENCE_VERIFIER_BEHAVIOR.md` — filesystem/path/ordering rules to prevent cross-impl drift.
18
+ - `REFERENCE_IMPLEMENTATIONS.md` — reference verifier implementations and conformance parity policy.
19
+ - `THREAT_MODEL.md` — explicit threats, mitigations, and residual risks (evidence-backed).
20
+ - `INVARIANTS.md` — checklist mapping protocol claims → spec → code → tests → codes.
21
+ - `MONEY_RAIL_STATE_MACHINE.md` — deterministic payout/collection lifecycle and transition rules.
22
+ - `ESCROW_NETTING_INVARIANTS.md` — deterministic escrow mutation, settlement partition, and netting invariants.
23
+ - `CRYPTOGRAPHY.md` — crypto primitives + byte-level hashing/signing inventory.
24
+ - `VERIFIER_ENVIRONMENT.md` — operational assumptions and hardening guidance.
25
+ - `ProofBundleManifest.v1.md` — JobProof/MonthProof manifest + hashing contract.
26
+ - `FinancePackBundleManifest.v1.md` — FinancePack manifest + hashing contract.
27
+ - `BundleHeadAttestation.v1.md` — signed head commitment for bundles.
28
+ - `GovernancePolicy.v1.md` — signer authorization policy (strict verification).
29
+ - `GovernancePolicy.v2.md` — signer authorization policy (signed by governance root).
30
+ - `RevocationList.v1.md` — prospective revocation/rotation list (signed by governance root).
31
+ - `TimestampProof.v1.md` — trustworthy signing time proof (for historical acceptance).
32
+ - `VerificationReport.v1.md` — signed, machine-ingestible strict verification report.
33
+ - `PricingMatrixSignatures.v2.md` — buyer signature surface for pricing terms in `InvoiceBundle.v1` (canonical JSON binding; recommended).
34
+ - `PricingMatrixSignatures.v1.md` — legacy buyer signature surface (raw bytes binding).
35
+ - `ClosePack.v1.md` — pre-dispute invoice package embedding `InvoiceBundle.v1` + evidence index.
36
+ - `ClosePackManifest.v1.md` — ClosePack manifest + hashing contract.
37
+ - `EvidenceIndex.v1.md` — deterministic evidence reference index for ClosePack.
38
+ - `SlaDefinition.v1.md` / `SlaEvaluation.v1.md` — deterministic SLA rules + evaluation surfaces for ClosePack.
39
+ - `AcceptanceCriteria.v1.md` / `AcceptanceEvaluation.v1.md` — deterministic acceptance rules + evaluation surfaces for ClosePack.
40
+ - `VerifyCliOutput.v1.md` — `settld-verify --format json` machine output contract.
41
+ - `VerifyAboutOutput.v1.md` — `settld-verify --about --format json` tool metadata contract.
42
+ - `ProduceCliOutput.v1.md` — `settld-produce --format json` machine output contract.
43
+ - `ToolManifest.v1.md` — signed tool/capability manifest that can be pinned by hash.
44
+ - `ToolCallAgreement.v1.md` — hash-addressable agreement binding a tool call (`callId` + `inputHash`) to settlement terms.
45
+ - `ToolCallEvidence.v1.md` — hash-addressable evidence binding a tool call output (`outputHash`) to an agreement hash.
46
+ - `AgentIdentity.v1.md` — portable autonomous agent identity contract.
47
+ - `AgentPassport.v1.md` — delegated identity envelope binding principal, keyset anchors, delegation root, and policy envelope.
48
+ - `DelegationGrant.v1.md` — deterministic delegated-authority grant contract (scope + spend + chain + validity).
49
+ - `ExecutionIntent.v1.md` — canonical pre-execution intent contract binding request fingerprint, risk profile, and policy/spend envelope.
50
+ - `AgentWallet.v1.md` — deterministic autonomous wallet snapshot contract.
51
+ - `AgentRun.v1.md` — deterministic agent run snapshot contract.
52
+ - `AgentEvent.v1.md` — append-only event envelope for agent runs.
53
+ - `AgentRunSettlement.v1.md` — deterministic run escrow/settlement contract.
54
+ - `MarketplaceOffer.v2.md` — canonical pre-contract offer artifact derived from negotiation proposals.
55
+ - `MarketplaceAcceptance.v2.md` — canonical acceptance artifact bound to a `MarketplaceOffer.v2` hash.
56
+ - `SettlementDecisionRecord.v1.md` — legacy settlement decision artifact (historical verification).
57
+ - `SettlementDecisionRecord.v2.md` — settlement decision artifact with replay-critical policy pinning (current).
58
+ - `SettlementReceipt.v1.md` — canonical settlement finality receipt bound to a decision hash.
59
+ - `FundingHold.v1.md` — deterministic escrow hold for holdback/challenge-window workflows.
60
+ - `SettlementAdjustment.v1.md` — deterministic, idempotent adjustment artifact for held-funds release/refund.
61
+ - `SettlementKernel.v1.md` — binding invariants + stable verification error semantics for settlement decision/receipt integrity.
62
+ - `ArbitrationCase.v1.md` — formal arbitration case contract with appeal linkage.
63
+ - `DisputeOpenEnvelope.v1.md` — signed dispute opener-proof envelope bound to tool-call hold/receipt/agreement hashes.
64
+ - `ArbitrationVerdict.v1.md` — signed arbitration verdict contract with appeal references.
65
+ - `ReputationEvent.v1.md` — append-only, deterministic economic reputation fact artifact.
66
+ - `AgentReputation.v1.md` — deterministic trust score snapshot derived from runs + settlement outcomes.
67
+ - `AgentReputation.v2.md` — reputation with recency windows (`7d`, `30d`, `allTime`) for marketplace ranking.
68
+ - `InteractionDirectionMatrix.v1.md` — frozen `4x4` directional interaction matrix (`agent|human|robot|machine`).
69
+ - `TenantSettings.v2.md` — Magic Link / Verify Cloud tenant configuration contract (current).
70
+ - `TenantSettings.v1.md` — legacy (still accepted for stored settings migration).
71
+ - `WARNINGS.md` — warning codes (closed set) and semantics.
72
+ - `ERRORS.md` — error codes (stable identifiers) and semantics.
73
+ - `PRODUCER_ERRORS.md` — producer/tooling error codes (stable identifiers) and semantics.
74
+ - `x402-error-codes.v1.txt` — stable x402 authorize-payment / execution-intent API error codes.
75
+ - `STRICTNESS.md` — strict vs non-strict verification contract.
76
+ - `TRUST_ANCHORS.md` — verifier trust anchors and out-of-band key injection.
77
+ - `TOOL_PROVENANCE.md` — tool version/commit derivation rules.
78
+ - `REMOTE_SIGNER.md` — tooling contract for remote/delegated signing (no private keys on disk).
79
+ - `RemoteSignerRequest.v1.md` / `RemoteSignerResponse.v1.md` — versioned stdio wrapper contract for process-based signers.
80
+ - `SIGNER_PROVIDER_PLUGIN.md` — tooling contract for signer provider plugins (KMS/HSM/Vault integrations).
81
+ - `ReleaseIndex.v1.md` — signed release manifest (artifact authenticity).
82
+ - `ReleaseIndexSignatures.v1.md` — detached multi-signature wrapper for `ReleaseIndex.v1`.
83
+ - `ReleaseTrust.v1.md` — trusted release signing keys (legacy/simple mapping).
84
+ - `ReleaseTrust.v2.md` — trusted release signing keys with rotation/revocation + quorum.
85
+ - `SUPPLY_CHAIN.md` — release-channel threat model and verification procedure.
86
+
87
+ ## Legacy archive
88
+
89
+ Legacy protocol objects are retained under `docs/spec/legacy/` (including `legacy/schemas/`) for historical verification only.
90
+ Current integrations should use the active specs listed above.
91
+
92
+ ## Schemas + examples
93
+
94
+ - `schemas/` contains JSON Schema for the on-disk JSON documents.
95
+ - `examples/` contains minimal example instances (illustrative, not authoritative vectors).
96
+
97
+ ## Quickstart
98
+
99
+ See `docs/QUICKSTART_VERIFY.md` for a CI-friendly verifier quickstart using `settld-verify --format json`.
100
+
101
+ ## Conformance + audit evidence
102
+
103
+ - Conformance oracle: `conformance/v1/README.md`
104
+ - Audit packet (specs + vectors + conformance + checksums): `npm run audit:packet`
@@ -0,0 +1,29 @@
1
+ # Reference implementations
2
+
3
+ Settld’s protocol is intended to be language/toolchain independent.
4
+
5
+ This repo contains multiple verifier implementations that are expected to agree on `conformance/v1/`:
6
+
7
+ ## JavaScript (Node)
8
+
9
+ - CLI: `packages/artifact-verify/bin/settld-verify.js`
10
+ - Conformance runner: `node conformance/v1/run.mjs --node-bin packages/artifact-verify/bin/settld-verify.js`
11
+ - Release authenticity CLI: `packages/artifact-verify/bin/settld-release.js`
12
+ - Release conformance runner: `node conformance/v1/run-release.mjs --release-node-bin packages/artifact-verify/bin/settld-release.js`
13
+
14
+ ## Python
15
+
16
+ - CLI: `reference/verifier-py/settld-verify-py`
17
+ - Conformance runner: `node conformance/v1/run.mjs --bin reference/verifier-py/settld-verify-py`
18
+
19
+ ## Parity policy
20
+
21
+ - Verifier behavior is specified by:
22
+ - `STRICTNESS.md`
23
+ - `REFERENCE_VERIFIER_BEHAVIOR.md`
24
+ - `WARNINGS.md`
25
+ - `ERRORS.md` / `error-codes.v1.txt`
26
+ - Conformance is the executable oracle; implementations must match the expected outcomes for all cases.
27
+ - CLI output is a tooling contract (`VerifyCliOutput.v1`); output must be deterministic for the same inputs.
28
+
29
+ Release authenticity verification (`settld-release verify`) is currently implemented in Node and gated by release conformance.
@@ -0,0 +1,68 @@
1
+ # Reference Verifier Behavior (v1)
2
+
3
+ This document specifies **portable verifier behavior** for areas where independent implementations tend to drift (filesystem semantics, path handling, and manifest evaluation order).
4
+
5
+ It complements:
6
+
7
+ - `CANONICAL_JSON.md` (RFC 8785 / JCS)
8
+ - `STRICTNESS.md` (strict vs non-strict contract)
9
+ - `TRUST_ANCHORS.md` (trust root injection)
10
+ - `WARNINGS.md` (warning code contract)
11
+ - `conformance/v1/` (executable oracle)
12
+
13
+ ## Bundle-relative paths (manifest `files[].name`)
14
+
15
+ The manifest `files[].name` values describe **bundle-relative** file paths.
16
+
17
+ An implementation:
18
+
19
+ 1. MUST treat `files[].name` as a **portable** path using `/` as the separator (regardless of host OS).
20
+ 2. MUST reject any `files[].name` that is empty or not a string.
21
+ 3. MUST reject any `files[].name` that starts with `/` (absolute path).
22
+ 4. MUST reject any `files[].name` that contains `\` (backslash), `:` (Windows drive / URI ambiguity), or `\u0000` (NUL).
23
+ 5. MUST reject any `files[].name` that ends with `/` (directory marker).
24
+ 6. MUST reject any `files[].name` containing a `.` or `..` segment (path traversal).
25
+ 7. MUST resolve each `files[].name` against the bundle root and MUST reject any entry that escapes the bundle root (even if it “looks relative”).
26
+ 8. MUST treat a manifest containing a rejected path as a hard failure in **both** strict and non-strict modes.
27
+
28
+ Conformance expects such failures to surface as `MANIFEST_PATH_INVALID`.
29
+
30
+ ## Duplicate manifest entries
31
+
32
+ 1. MUST treat duplicate `files[].name` values as invalid.
33
+ 2. MUST treat duplicate-path manifests as a hard failure in **both** strict and non-strict modes.
34
+
35
+ Conformance expects such failures to surface as `MANIFEST_DUPLICATE_PATH`.
36
+
37
+ ## Symlinks
38
+
39
+ 1. MUST NOT follow filesystem symlinks when verifying a manifest-listed file.
40
+ 2. MUST treat any manifest-listed path that resolves to a symlink (at the filesystem level) as invalid in **both** strict and non-strict modes (this is a security invariant, not a compatibility affordance).
41
+
42
+ Conformance expects such failures to surface as `MANIFEST_SYMLINK_FORBIDDEN`.
43
+
44
+ ## File hashing semantics
45
+
46
+ 1. MUST hash file contents as **raw bytes** (no newline normalization, no UTF-8 re-encoding).
47
+ 2. MUST treat missing files referenced by the manifest as verification failures.
48
+ 3. MUST ignore filesystem metadata (mtime, permissions) for hashing and matching purposes.
49
+
50
+ ## Manifest evaluation order (error precedence)
51
+
52
+ To keep behavior stable and portable, implementations:
53
+
54
+ 1. MUST validate manifest structure (path validity and duplicate-path checks) **before** reporting hash-binding mismatches (for example, before `manifestHash mismatch` / attestation binding checks).
55
+ 2. MUST then compute and compare `manifestHash` using canonical JSON (RFC 8785) exactly as specified in `ProofBundleManifest.v1.md` / `FinancePackBundleManifest.v1.md`.
56
+
57
+ This ordering prevents ambiguous “first failure wins” behavior across implementations and is relied upon by `conformance/v1/`.
58
+
59
+ ## Trust anchors (portable minimum)
60
+
61
+ 1. MUST support out-of-band injection of trusted governance roots via `SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON` (see `TRUST_ANCHORS.md`).
62
+ 2. MUST treat missing trusted governance roots as a hard failure in strict mode when governance-root signatures are required.
63
+
64
+ ## Strict vs non-strict (portable minimum)
65
+
66
+ 1. MUST apply strict/non-strict downgrades only where explicitly documented in `STRICTNESS.md`.
67
+ 2. MUST NOT downgrade the security invariants in this document (path traversal, duplicate paths, symlink refusal).
68
+
@@ -0,0 +1,66 @@
1
+ # Remote signer (tooling contract)
2
+
3
+ This document specifies the **RemoteSigner API** used by producer tooling (`settld-produce`) to obtain signatures without storing private keys on disk.
4
+
5
+ This is a tooling/config surface (not a bundle protocol object). Verifiers do not change: they still verify signatures using **public keys** and **trust anchors**.
6
+
7
+ ## Goals
8
+
9
+ - Allow bundle production with **no private key material on disk** (CI-friendly).
10
+ - Ensure signing requests are **purpose-bound** (avoid turning the signer into a generic signing oracle).
11
+ - Keep requests deterministic and auditable via a stable request shape.
12
+
13
+ ## Endpoints (v1)
14
+
15
+ ### `GET /v1/public-key?keyId=<keyId>`
16
+
17
+ Return the public key PEM for the requested key id.
18
+
19
+ Response: `RemoteSignerPublicKeyResponse.v1` (see `docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json`).
20
+
21
+ ### `POST /v1/sign`
22
+
23
+ Sign the provided message bytes under a specific key and purpose.
24
+
25
+ Request: `RemoteSignerSignRequest.v1` (see `docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json`).
26
+
27
+ Response: `RemoteSignerSignResponse.v1` (see `docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json`).
28
+
29
+ ## Purpose binding (required)
30
+
31
+ Remote signers **MUST** refuse signing requests with unknown `purpose` values.
32
+
33
+ Producer tools set `purpose` to one of:
34
+
35
+ - `event_payload`
36
+ - `governance_policy`
37
+ - `revocation_list`
38
+ - `timestamp_proof`
39
+ - `pricing_matrix`
40
+ - `bundle_head_attestation`
41
+ - `verification_report`
42
+ - `settlement_decision_report`
43
+
44
+ ## Security notes
45
+
46
+ - The `messageBase64` value is **the exact bytes signed**. For Settld bundle objects this is typically `sha256(canonical_json)` represented as raw 32 bytes.
47
+ - Signers should log: `requestId`, `keyId`, `purpose`, and selected `context` fields for auditability.
48
+ - Remote signer endpoints should be protected with authentication/authorization (otherwise they are a signing oracle).
49
+
50
+ ## Authentication (recommended)
51
+
52
+ For HTTP signers, producer tooling can attach a bearer token and custom headers:
53
+
54
+ - `--signer-auth bearer --signer-token-env SETTLD_SIGNER_TOKEN`
55
+ - `--signer-auth bearer --signer-token-file /path/to/token.txt`
56
+ - `--signer-header "X-Request-Source: ci"`
57
+
58
+ Tokens and secret header values are tooling-only; they must never be written into bundles or CLI JSON outputs.
59
+
60
+ ## Local-process / stdio signers
61
+
62
+ Producer tooling also supports invoking a signer as a local process (no HTTP) where the signer reads a JSON request from stdin and prints JSON to stdout.
63
+
64
+ This mode is designed for CI environments where binding/listening to local sockets may be restricted, and for integrations where the signer itself talks to an HSM/KMS.
65
+
66
+ Note: some sandboxed CI environments disable piping stdin into child processes. The reference dev signer (`settld-signer-dev`) supports `--request-json-base64 <b64>` to avoid stdin piping in those environments.
@@ -0,0 +1,32 @@
1
+ # ReleaseIndex.v1
2
+
3
+ `ReleaseIndex.v1` is a **signed release manifest** for Settld distribution artifacts.
4
+
5
+ It is a tooling contract (not a bundle protocol object). Its purpose is to make release authenticity verifiable:
6
+
7
+ - A third party can verify the `ReleaseIndex.v1` signature (rooted in a release signing key).
8
+ - A third party can verify that the release artifacts match the hashes recorded in the index.
9
+
10
+ ## Files
11
+
12
+ Releases publish:
13
+
14
+ - `release_index_v1.json` — the `ReleaseIndex.v1` document
15
+ - `release_index_v1.sig` — detached signatures over the canonical JSON bytes of `release_index_v1.json` (single or quorum)
16
+
17
+ ## Canonicalization and signing
18
+
19
+ - Canonical JSON: RFC8785/JCS-style canonicalization (sorted object keys; no `-0` / non-finite numbers).
20
+ - Signature is over the **SHA-256 digest** of the canonical JSON UTF-8 bytes.
21
+
22
+ ## Relationship to circularity
23
+
24
+ `ReleaseIndex.v1` intentionally **does not list** itself or its signature as artifacts, to avoid circular hashing.
25
+
26
+ ## Schema
27
+
28
+ See:
29
+
30
+ - `docs/spec/schemas/ReleaseIndex.v1.schema.json`
31
+ - `docs/spec/schemas/ReleaseIndexSignature.v1.schema.json`
32
+ - `docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json`
@@ -0,0 +1,17 @@
1
+ # ReleaseIndexSignatures.v1
2
+
3
+ `ReleaseIndexSignatures.v1` is a tooling contract that wraps one or more `ReleaseIndexSignature.v1` entries.
4
+
5
+ It exists so a single `release_index_v1.sig` file can carry multiple signatures (for quorum-based release signing) without changing `ReleaseIndex.v1`.
6
+
7
+ ## Relationship to `release_index_v1.sig`
8
+
9
+ `release_index_v1.sig` may contain either:
10
+
11
+ - a single `ReleaseIndexSignature.v1` object (legacy/single-signature), or
12
+ - a `ReleaseIndexSignatures.v1` object containing `signatures[]`.
13
+
14
+ ## Schema
15
+
16
+ See `docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json`.
17
+
@@ -0,0 +1,13 @@
1
+ # ReleaseTrust.v1
2
+
3
+ `ReleaseTrust.v1` is a tooling/config document describing which public keys are trusted to sign `ReleaseIndex.v1`.
4
+
5
+ This trust domain is **separate** from bundle signer governance keys.
6
+
7
+ `ReleaseTrust.v1` is a legacy/simple format: a mapping of `keyId -> publicKeyPem` with no rotation, revocation, or quorum policy.
8
+
9
+ For rotation/revocation/quorum, use `ReleaseTrust.v2`.
10
+
11
+ ## Schema
12
+
13
+ See `docs/spec/schemas/ReleaseTrust.v1.schema.json`.
@@ -0,0 +1,26 @@
1
+ # ReleaseTrust.v2
2
+
3
+ `ReleaseTrust.v2` is a tooling/config document describing which public keys are trusted to sign `ReleaseIndex.v1`, including **rotation** and **revocation** semantics.
4
+
5
+ This trust domain is **separate** from bundle signer governance keys.
6
+
7
+ ## Key evaluation
8
+
9
+ When verifying a release:
10
+
11
+ - `signatureTime` is `ReleaseIndex.v1.toolchain.buildEpochSeconds` (an integer Unix epoch time).
12
+ - A trusted key is considered usable only if:
13
+ - `notBeforeEpochSeconds` is absent or `signatureTime >= notBeforeEpochSeconds`
14
+ - `notAfterEpochSeconds` is absent or `signatureTime <= notAfterEpochSeconds`
15
+ - `revokedAtEpochSeconds` is absent or `signatureTime < revokedAtEpochSeconds`
16
+
17
+ ## Quorum policy
18
+
19
+ `policy.minSignatures` specifies how many **valid** signatures from trusted, usable keys are required to accept the release index.
20
+
21
+ If `policy.requiredKeyIds` is present, each listed `keyId` must appear among the valid signatures as well.
22
+
23
+ ## Schema
24
+
25
+ See `docs/spec/schemas/ReleaseTrust.v2.schema.json`.
26
+
@@ -0,0 +1,21 @@
1
+ # RemoteSignerRequest.v1 (tooling contract)
2
+
3
+ This document defines the **stdio wrapper** request shape for delegated signing.
4
+
5
+ It is a tooling contract used when invoking a signer as a local process (stdin/stdout). HTTP signers use the endpoint-specific request/response schemas referenced in `REMOTE_SIGNER.md`.
6
+
7
+ Schema: `docs/spec/schemas/RemoteSignerRequest.v1.schema.json`.
8
+
9
+ ## Shape
10
+
11
+ - `schemaVersion` (optional): `"RemoteSignerRequest.v1"`
12
+ - `op`: `"publicKey"` or `"sign"`
13
+ - If `op === "publicKey"`:
14
+ - `keyId`: string
15
+ - If `op === "sign"`:
16
+ - `body`: `RemoteSignerSignRequest.v1`
17
+
18
+ ## Determinism + safety
19
+
20
+ - Requests must be **purpose-bound** (see `RemoteSignerSignRequest.v1`).
21
+ - Producers must treat this as a pure signing oracle interface; secrets must never be embedded in bundles.
@@ -0,0 +1,16 @@
1
+ # RemoteSignerResponse.v1 (tooling contract)
2
+
3
+ This document defines the **stdio wrapper** response shape for delegated signing.
4
+
5
+ Schema: `docs/spec/schemas/RemoteSignerResponse.v1.schema.json`.
6
+
7
+ ## Shape
8
+
9
+ - A `RemoteSignerResponse.v1` is one of:
10
+ - `RemoteSignerPublicKeyResponse.v1` (for `op=publicKey` requests)
11
+ - `RemoteSignerSignResponse.v1` (for `op=sign` requests)
12
+
13
+ ## Notes
14
+
15
+ - Stdio signers should return a non-zero exit code on failure and write a concise error to stderr.
16
+ - Producers must not depend on stderr text for behavior; only structured JSON should be treated as a stable contract.
@@ -0,0 +1,63 @@
1
+ # ReputationEvent.v1
2
+
3
+ `ReputationEvent.v1` is an append-only, deterministic artifact for recording economic reputation facts tied to settlement and dispute lifecycle changes.
4
+
5
+ It is intentionally facts-first: consumers aggregate event streams into scores and risk models without mutating historical records.
6
+
7
+ ## Fields
8
+
9
+ Required:
10
+
11
+ - `schemaVersion` (const: `ReputationEvent.v1`)
12
+ - `artifactType` (const: `ReputationEvent.v1`)
13
+ - `artifactId` (must equal `eventId`)
14
+ - `eventId` (deterministic ID)
15
+ - `tenantId`
16
+ - `occurredAt` (ISO datetime)
17
+ - `eventKind`
18
+ - `decision_approved`
19
+ - `decision_rejected`
20
+ - `holdback_auto_released`
21
+ - `dispute_opened`
22
+ - `verdict_issued`
23
+ - `adjustment_applied`
24
+ - `subject`
25
+ - `agentId` (reputation subject)
26
+ - optional `toolId`
27
+ - optional `counterpartyAgentId`
28
+ - optional `role` (`payee|payer|arbiter|system`)
29
+ - `sourceRef`
30
+ - `kind` (producer-defined reference namespace)
31
+ - optional stable references (`artifactId`, `sourceId`, `hash`, `agreementHash`, `receiptHash`, `holdHash`, `decisionHash`, `verdictHash`, `runId`, `settlementId`, `disputeId`, `caseId`, `adjustmentId`)
32
+ - must include at least one stable reference besides `kind`
33
+ - `facts` (object; structured event facts used for aggregation)
34
+ - `eventHash` (sha256 hex over immutable event core)
35
+
36
+ Optional fields are omitted when absent.
37
+
38
+ ## Hashing
39
+
40
+ `eventHash` is computed as sha256 of RFC 8785 canonical JSON excluding:
41
+
42
+ - `eventHash`
43
+ - `artifactHash` (storage-level hash, if present)
44
+
45
+ ## Deterministic ID Conventions
46
+
47
+ Recommended deterministic IDs for kernel v0 conformance:
48
+
49
+ - decision: `rep_dec_${decisionHash}`
50
+ - holdback auto-release: `rep_rel_${agreementHash}`
51
+ - dispute opened: `rep_dsp_${agreementHash}`
52
+ - verdict issued: `rep_vrd_${verdictHash}`
53
+ - adjustment applied: `rep_adj_${adjustmentId}`
54
+
55
+ ## Invariants
56
+
57
+ - Events are append-only and immutable.
58
+ - Re-issuing the same event source must produce the same `eventId` and `eventHash`.
59
+ - Persistence must treat duplicate `eventId` with same hash as idempotent.
60
+
61
+ ## Schema
62
+
63
+ See `docs/spec/schemas/ReputationEvent.v1.schema.json`.
@@ -0,0 +1,28 @@
1
+ # RevocationList.v1
2
+
3
+ This document provides **prospective** revocation and rotation semantics for signer keys, while preserving historical acceptance when a verifier can prove the signing time.
4
+
5
+ ## File location (bundles)
6
+
7
+ `governance/revocations.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/RevocationList.v1.schema.json`.
14
+
15
+ ## Semantics (v1)
16
+
17
+ - `revocations[]` declares a key as revoked at `revokedAt`.
18
+ - `rotations[]` declares that an old key is superseded at `rotatedAt` and a new key becomes valid from that time.
19
+
20
+ Strict verification rule:
21
+
22
+ - A key revoked at time **T** is NOT acceptable for signatures made at or after **T**.
23
+ - A signature made before **T** remains acceptable **only if** the bundle contains a trustworthy signing time for that signature (see `TimestampProof.v1`).
24
+
25
+ ## Signing + trust (strict verification)
26
+
27
+ `RevocationList.v1` is signed by a governance root key (trusted out-of-band by the verifier).
28
+