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,102 @@
1
+ # HN Repost Draft (Tue 2026-02-17)
2
+
3
+ Note on compositional settlement: keep the claim narrow. Settld can bind a settlement to an agreement delegation graph and run deterministic pre-release checks (e.g. block cycles) with stable error codes (e.g. `AGREEMENT_DELEGATION_CYCLE`). Avoid implying multi-hop settlement is \"automatic\" beyond what the current API actually enforces.
4
+
5
+ ## Locked Timing (ET / PT)
6
+
7
+ - Copy freeze: Mon 2026-02-16 21:00 ET / 18:00 PT
8
+ - Repost submission (target): Tue 2026-02-17 08:15 ET / 05:15 PT
9
+ - Live monitoring: Tue 08:15–11:30 ET (respond fast while ranking is most sensitive)
10
+ - Second sweep: Tue 18:30 ET / 15:30 PT
11
+
12
+ ## Submission Details
13
+
14
+ - Type: Show HN (repost)
15
+ - Link target (pick one):
16
+ - GitHub repo (recommended for OSS + technical audience): `README.md`
17
+ - Blog wedge post (more narrative): `docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md`
18
+ - Magic Link hosted demo (if we want buyer POV): TODO (add URL)
19
+ - Original HN thread (if applicable): TODO (add URL)
20
+
21
+ ## Title Options (Pick 1)
22
+
23
+ 1. Show HN (Repost): Settld – verifiable receipts for agent spend (OSS)
24
+ 2. Show HN (Repost): Settld – verify-before-release receipts for x402-style APIs
25
+ 3. Show HN (Repost): Settld – deterministic settlement receipts for AI agents
26
+
27
+ ## OP Comment (Recommended, Short)
28
+
29
+ Hi HN,
30
+
31
+ Reposting with a tighter “try it in 10 minutes” wedge and more spec/conformance polish.
32
+
33
+ Settld is an open source artifact protocol + verifier for turning agent work (and its evidence) into something closer to an invoice receipt: hash-bound, signed, and offline-verifiable by someone who doesn’t trust the producer.
34
+
35
+ The quickest way to feel it is the in-repo x402 gateway demo: if an upstream returns `HTTP 402 Payment Required`, the proxy turns it into `hold -> verify -> release/refund` and emits a deterministic “receipt-like” trail (`x-settld-*` headers + an API query surface).
36
+
37
+ TL;DR quickstart: `npm ci && npm run quickstart:x402` (prints `OK` + `gateId=...`). Full steps: `docs/QUICKSTART_X402_GATEWAY.md`
38
+
39
+ Two important constraints up front:
40
+
41
+ - This is not a payment processor. The local demo uses `X402_AUTOFUND=1` to simulate funding so escrow holds can be created without wiring a real rail.
42
+ - The core contract is the verifiable receipt + deterministic outputs (stable warning/error codes), not “trust us, the dashboard says it passed.”
43
+
44
+ Feedback I’d love:
45
+
46
+ - If you’re shipping agents that spend money, what evidence would you require to automate payout/release?
47
+ - Where would this break in your stack: tool calls, metering, dispute windows, refunds/chargebacks, or trust bootstrapping?
48
+
49
+ ## OP Comment (Longer, If Needed)
50
+
51
+ Hi HN,
52
+
53
+ Reposting: Settld is my attempt at a missing layer for agent workflows that spend money.
54
+
55
+ Most stacks can prove “payment happened,” but can’t produce a portable receipt for “the work happened under the agreed terms” without shipping their entire log database to the counterparty.
56
+
57
+ Settld (as shipped in this repo) is two things sharing the same “truth engine”:
58
+
59
+ - An open artifact protocol (bundles + manifests + attestations + receipts) that can be verified offline with explicit trust anchors.
60
+ - A hosted controller (“Magic Link”) that runs the same verifier server-side for buyer-friendly approvals and exports (optional; the hosted UI shouldn’t be the only judge).
61
+
62
+ The smallest demo wedge is the x402 gateway: put a thin proxy in front of an x402-style API. When the upstream returns `HTTP 402`, the proxy routes it through a deterministic settlement step (`hold -> verify -> release/refund`) and returns a receipt-like trail you can store for audit. Quickstart: `docs/QUICKSTART_X402_GATEWAY.md`
63
+
64
+ Notes / boundaries:
65
+
66
+ - Local mode simulates funding (`X402_AUTOFUND=1`) to make the flow runnable without a real payment rail.
67
+ - The interesting part (to me) is that verification outputs are deterministic and machine-readable with stable codes, and can be reproduced offline from the bundle.
68
+
69
+ Would love critique on whether this is the right abstraction boundary (protocol + verifier + optional controller), and what primitives are missing to make this usable in real agent payment flows.
70
+
71
+ ## Defensible Claims (OK To Say)
72
+
73
+ - Offline-verifiable bundles/receipts: artifacts commit to evidence by hashes; attestations/receipts are signature-checked; verification is reproducible without trusting the producer (`docs/OVERVIEW.md`, `docs/spec/`).
74
+ - Deterministic verification outputs with stable codes (warnings/errors), suitable for CI gating and audit retention (`docs/OVERVIEW.md`, `docs/QUICKSTART_VERIFY.md`, `docs/spec/WARNINGS.md`, `docs/spec/ERRORS.md`).
75
+ - x402 “verify-before-release” wedge exists in repo and is runnable locally in ~10 minutes (`docs/QUICKSTART_X402_GATEWAY.md`).
76
+ - Escrow/ledger semantics are double-entry and tested as deterministic invariants (position as “ledger model + invariants,” not “we move real money”) (`docs/LEDGER.md`, `docs/spec/ESCROW_NETTING_INVARIANTS.md`).
77
+ - Hosted Verify Cloud is optional; protocol/verifier are the trust core (don’t claim “must use the cloud”) (`docs/OVERVIEW.md`).
78
+
79
+ ## Claims To Avoid or Qualify
80
+
81
+ - “We solve payments” or “we are escrow.” Safer: “we model escrow holds and deterministic release/refund decisions; wiring real rails is a separate integration.”
82
+ - “CFO/audit-ready” as a blanket statement. Safer: “designed for audit evidence retention; produces deterministic, verifiable receipts.”
83
+ - Any “multi-hop/cascade settlement is fully implemented” wording unless we choose a tight, defensible phrasing (see TODO and options below).
84
+
85
+ ## Likely HN Questions (Short Answers)
86
+
87
+ - “Why not just use Stripe Connect?”
88
+ - Stripe moves money. Settld is about proving/verifying off-chain work and producing a portable, deterministic receipt that can drive a release/refund decision.
89
+ - “Why not do this as a smart contract?”
90
+ - Smart contracts enforce on-chain state; the hard part here is verifying off-chain evidence/work completion and making that verification reproducible offline.
91
+ - “Is this centralized trust?”
92
+ - The hosted UI is intentionally not the only judge; verification should be reproducible offline with explicit trust anchors.
93
+ - “Does the demo move real money?”
94
+ - No; it simulates funding to make the end-to-end loop runnable locally (`X402_AUTOFUND=1`).
95
+
96
+ ## Cascade Settlement (Decision Needed Before Mon 2026-02-16)
97
+
98
+ If we include anything about cascade/multi-hop settlement, pick ONE of these and stick to it:
99
+
100
+ - Option A (spec-level, safest): “We added an `AgreementDelegation.v1` primitive for linking parent/child agreements in multi-hop agent chains (provenance, depth limits, and budget-capping).”
101
+ - Option B (lightly aspirational): “We’re building toward multi-hop agent chains with compositional budget-capping and deterministic settlement; the delegation primitive is in the repo.”
102
+ - Option C (omit): Don’t mention cascade settlement at all; keep the post focused on the verifiable receipt + verify-before-release wedge.
@@ -0,0 +1,45 @@
1
+ # Show HN Draft
2
+
3
+ ## Title (pick one)
4
+
5
+ 1. Show HN (Repost): Settld – verify-before-release gateway for HTTP 402 (x402) APIs (OSS)
6
+ 2. Show HN (Repost): Settld – verifiable settlement receipts for agent spend (OSS)
7
+ 3. Show HN (Repost): Settld – deterministic release/refund decisions + receipt trail for x402
8
+
9
+ ---
10
+
11
+ ## Post Body
12
+
13
+ Hi HN,
14
+
15
+ Settld is an open source artifact protocol + verifier for producing hash-bound “settlement receipts”: deterministic records that tie *terms + evidence refs + a release/refund decision* together so a counterparty can verify what happened without trusting your database.
16
+
17
+ Fastest way to try it is the in-repo x402 gateway demo (about 10 minutes):
18
+
19
+ ```bash
20
+ npm ci && npm run quickstart:x402
21
+ ```
22
+
23
+ It runs a local Settld API, a mock upstream that returns `HTTP 402 Payment Required` + `x-payment-required`, and a thin gateway. First request returns `402` plus `x-settld-gate-id`. Retry with that gate id and `x-payment: paid`, and the gateway calls Settld to:
24
+
25
+ `hold -> verify -> release/refund (+ optional holdback)` and returns a receipt-like trail via `x-settld-*` headers (and a `GET /x402/gate/:id` inspection endpoint).
26
+
27
+ Full quickstart (Docker + Linux notes): `docs/QUICKSTART_X402_GATEWAY.md`
28
+
29
+ Two boundaries up front:
30
+
31
+ - This is not a payment processor. The demo uses `X402_AUTOFUND=1` to simulate funding in an internal ledger so escrow-style holds can be created.
32
+ - Multi-hop “agents hiring agents” is not automatic today. The repo includes an `AgreementDelegation.v1` primitive + deterministic cycle checks when a gate is bound to an agreement graph; full compositional settlement is still in progress.
33
+
34
+ Feedback I’d love:
35
+
36
+ 1. If you’re shipping agent workflows that spend money today, what evidence would you require to automate release/refund?
37
+ 2. Where would this break first in your stack: metering, dispute windows, refunds/chargebacks, or trust anchors?
38
+
39
+ ---
40
+
41
+ ## Submission Notes (not part of the post)
42
+
43
+ - Post Tue-Thu mornings ET if you want feedback quickly.
44
+ - If someone says “just use Stripe Connect”: Stripe moves money; Settld decides how much should move based on verifiable evidence, deterministically.
45
+ - If someone says “just use a smart contract”: smart contracts can enforce on-chain state; Settld is about verifying off-chain work completion and producing portable, deterministic receipts.
@@ -0,0 +1,43 @@
1
+ # Artifact Verification Status API
2
+
3
+ This endpoint provides a normalized verification signal for an artifact:
4
+
5
+ - `green`: verification passed
6
+ - `amber`: insufficient evidence or unknown proof state
7
+ - `red`: verification failed
8
+
9
+ ## Endpoint
10
+
11
+ - `GET /artifacts/{artifactId}/status`
12
+ - Scopes: `ops_read` or `audit_read` or `finance_read`
13
+
14
+ ## Bulk status in ops job list
15
+
16
+ - `GET /ops/jobs` includes inline verification fields per job:
17
+ - `verificationStatus` (`green` | `amber` | `red`)
18
+ - `evidenceCount`, `activeEvidenceCount`
19
+ - `slaCompliancePct`
20
+ - `verification` (full normalized verification object)
21
+ - Scopes: `ops_read` or `audit_read`
22
+
23
+ ## Response shape
24
+
25
+ The API returns:
26
+
27
+ - Artifact identity fields (`artifactId`, `artifactType`, `artifactHash`, `jobId`, `sourceEventId`)
28
+ - `verification` object with:
29
+ - `verificationStatus` (`green` | `amber` | `red`)
30
+ - `proofStatus` (`PASS` | `INSUFFICIENT_EVIDENCE` | `FAIL` | `null`)
31
+ - `reasonCodes`, `missingEvidence`
32
+ - `evidenceCount`, `activeEvidenceCount`
33
+ - `slaCompliancePct`
34
+ - Coverage metrics (`requiredZones`, `reportedZones`, `belowThresholdZones`, `missingZoneCount`, `excusedZones`)
35
+
36
+ ## Example
37
+
38
+ ```sh
39
+ curl -sS "http://localhost:3000/artifacts/art_123/status" \
40
+ -H "x-proxy-tenant-id: tenant_default" \
41
+ -H "x-settld-protocol: 1.0" \
42
+ -H "x-proxy-ops-token: <ops_read_token>" | jq
43
+ ```
@@ -0,0 +1,105 @@
1
+ # Stripe Billing Webhook Replay Guardrail Runbook
2
+
3
+ Use this runbook when Stripe webhook ingestion shows replayable dead-letter volume or subscription drift risk.
4
+
5
+ ## Preconditions
6
+
7
+ - You have `finance_read` + `finance_write` scopes for the affected tenant.
8
+ - Environment is set:
9
+ - `SETTLD_BASE_URL`
10
+ - `PROXY_OPS_TOKEN`
11
+ - `SETTLD_TENANT_ID`
12
+ - `curl` and `jq` are available.
13
+
14
+ ## Reproducible command set
15
+
16
+ ### 1) Snapshot reconcile report
17
+
18
+ ```bash
19
+ curl -sS \
20
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
21
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
22
+ "$SETTLD_BASE_URL/ops/finance/billing/providers/stripe/reconcile/report?limit=200" | jq .
23
+ ```
24
+
25
+ Focus on:
26
+ - `rejectedReasonCounts`
27
+ - `replayableRejectedCount`
28
+ - `sourceCounts`
29
+
30
+ ### 2) List replay candidates
31
+
32
+ ```bash
33
+ curl -sS \
34
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
35
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
36
+ "$SETTLD_BASE_URL/ops/finance/billing/providers/stripe/dead-letter?limit=200" | jq .
37
+ ```
38
+
39
+ Optional filters:
40
+ - `.../dead-letter?reason=<reason>&eventType=<eventType>&limit=200`
41
+
42
+ ### 3) Dry-run replay
43
+
44
+ ```bash
45
+ curl -sS -X POST \
46
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
47
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
48
+ -H "content-type: application/json" \
49
+ -d '{"dryRun":true,"limit":200}' \
50
+ "$SETTLD_BASE_URL/ops/finance/billing/providers/stripe/dead-letter/replay" | jq .
51
+ ```
52
+
53
+ ### 4) Execute replay
54
+
55
+ ```bash
56
+ curl -sS -X POST \
57
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
58
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
59
+ -H "content-type: application/json" \
60
+ -d '{"dryRun":false,"limit":200}' \
61
+ "$SETTLD_BASE_URL/ops/finance/billing/providers/stripe/dead-letter/replay" | jq .
62
+ ```
63
+
64
+ ### 5) Validate post-replay state
65
+
66
+ ```bash
67
+ curl -sS \
68
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
69
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
70
+ "$SETTLD_BASE_URL/ops/finance/billing/providers/stripe/reconcile/report?limit=200" | jq .
71
+ ```
72
+
73
+ ### 6) Scripted flow (recommended)
74
+
75
+ ```bash
76
+ # Dry-run (default)
77
+ scripts/dev/billing-webhook-replay.sh
78
+
79
+ # Execute replay
80
+ DRY_RUN=0 scripts/dev/billing-webhook-replay.sh
81
+
82
+ # Scoped replay by reason/event type
83
+ DRY_RUN=0 REASON=reconcile_apply_failed EVENT_TYPE=customer.subscription.updated \
84
+ scripts/dev/billing-webhook-replay.sh
85
+ ```
86
+
87
+ ## On-call validation checklist
88
+
89
+ - [ ] Baseline report captured (`reconcile/report`) and incident ticket updated with snapshot.
90
+ - [ ] Replay candidate count and reasons reviewed (`dead-letter`).
91
+ - [ ] Dry-run replay performed and no schema/permission errors observed.
92
+ - [ ] Live replay executed (`dryRun=false`) with `summary.failed == 0` (or failures documented).
93
+ - [ ] Post-replay report shows expected movement in:
94
+ - [ ] `replayableRejectedCount` (downward or unchanged with reason)
95
+ - [ ] `ingestBreakdown.replayed` (upward)
96
+ - [ ] `sourceCounts.dead_letter_replay` (upward)
97
+ - [ ] Tenant billing plan state verified:
98
+ - [ ] `GET /ops/finance/billing/plan`
99
+ - [ ] Incident notes include replay scope (`reason`, `eventType`, `auditIds`) and final counts.
100
+
101
+ ## Rollback / safety notes
102
+
103
+ - Replay is idempotent at event level; do not mutate historical audit rows manually.
104
+ - If replay failures increase (`dead_letter_replay_apply_failed`), stop and investigate root cause before rerunning.
105
+ - Never disable signature verification as an incident workaround.
@@ -0,0 +1,31 @@
1
+ # CI Flake Budget
2
+
3
+ This repo runs with a strict flake budget for paid-call kernel coverage.
4
+
5
+ ## Policy
6
+
7
+ - Budget: 0
8
+ - No hidden retries in CI for test workflows.
9
+ - No `continue-on-error: true` for test jobs.
10
+ - No shell-level suppression (`|| true`) for test commands.
11
+
12
+ ## Scope
13
+
14
+ - `.github/workflows/tests.yml`
15
+ - The paid-call kernel suite job (`mcp_paid_call_kernel_suite`)
16
+ - Existing `unit_tests` and quickstart smoke jobs
17
+
18
+ ## Escalation
19
+
20
+ If a test flakes:
21
+
22
+ 1. Open/attach an issue immediately (`type:ops` or `type:bug`).
23
+ 2. Either:
24
+ - fix the test in the same PR, or
25
+ - quarantine with explicit owner + expiry date + follow-up issue.
26
+ 3. Do not merge by masking failure with retries or error suppression.
27
+
28
+ ## Enforcement
29
+
30
+ `scripts/ci/flake-budget-guard.mjs` enforces the policy markers and blocks forbidden flaky-tolerance patterns in `tests.yml`.
31
+
@@ -0,0 +1,56 @@
1
+ # Dispute Finance Reconciliation Packet
2
+
3
+ This runbook generates a deterministic packet for dispute-driven settlement adjustments.
4
+
5
+ ## Purpose
6
+
7
+ - Produce a finance-reviewable packet for one `SettlementAdjustment.v1`.
8
+ - Include adjustment artifact + before/after wallet snapshots for payer/payee.
9
+ - Attach deterministic checksums and optional Ed25519 signature.
10
+
11
+ ## Command
12
+
13
+ ```bash
14
+ node scripts/ops/dispute-finance-reconciliation-packet.mjs \
15
+ --base-url http://127.0.0.1:3000 \
16
+ --tenant-id tenant_default \
17
+ --ops-token tok_finw \
18
+ --adjustment-id sadj_agmt_<agreementHash>_holdback \
19
+ --payer-agent-id <payerAgentId> \
20
+ --payee-agent-id <payeeAgentId> \
21
+ --out artifacts/finance/dispute-adjustment-packet.json
22
+ ```
23
+
24
+ Optional signing:
25
+
26
+ ```bash
27
+ node scripts/ops/dispute-finance-reconciliation-packet.mjs \
28
+ --base-url http://127.0.0.1:3000 \
29
+ --tenant-id tenant_default \
30
+ --ops-token tok_finw \
31
+ --adjustment-id sadj_agmt_<agreementHash>_holdback \
32
+ --payer-agent-id <payerAgentId> \
33
+ --payee-agent-id <payeeAgentId> \
34
+ --signing-key-file ./keys/finance-ops-ed25519.pem \
35
+ --signature-key-id finance_ops_k1 \
36
+ --out artifacts/finance/dispute-adjustment-packet.signed.json
37
+ ```
38
+
39
+ ## Packet contract
40
+
41
+ - `schemaVersion`: `DisputeFinanceReconciliationPacket.v1`
42
+ - `adjustment`: `SettlementAdjustment.v1` payload from `/ops/settlement-adjustments/{adjustmentId}`
43
+ - `balances.payer/payee.before|after`: wallet snapshots for reconciliation
44
+ - `checksums.packetHash`: canonical packet checksum (`sha256`)
45
+ - `checksums.adjustmentHash`: checksum carried by adjustment artifact
46
+ - `signature` (optional): Ed25519 signature over `checksums.packetHash`
47
+
48
+ ## Finance review workflow
49
+
50
+ 1. Generate the packet immediately after dispute verdict/adjustment application.
51
+ 2. Verify `checksums.adjustmentHash` matches the adjustment artifact.
52
+ 3. Verify `checksums.packetHash` and (if present) `signature`.
53
+ 4. Reconcile `before -> after` snapshots against expected adjustment kind:
54
+ - `holdback_release`: payer escrow decreases; payee available increases.
55
+ - `holdback_refund`: payer escrow decreases; payer available increases.
56
+ 5. Attach packet to incident/dispute record for immutable finance traceability.
@@ -0,0 +1,27 @@
1
+ # S13 Go-Live Gate
2
+
3
+ This gate operationalizes `STLD-T182`.
4
+
5
+ ## Command
6
+
7
+ ```bash
8
+ RUN_THROUGHPUT_DRILL=1 \
9
+ ALLOW_THROUGHPUT_SKIP=0 \
10
+ GO_LIVE_TEST_COMMAND="node --test test/settlement-kernel.test.js && node --test test/api-e2e-ops-money-rails.test.js && node --test test/api-e2e-ops-finance-net-close.test.js && node --test test/api-e2e-ops-arbitration-workspace.test.js && node --test test/api-e2e-ops-command-center.test.js && node --test test/api-e2e-billing-plan-enforcement.test.js" \
11
+ node scripts/ci/run-go-live-gate.mjs
12
+ node scripts/ci/build-launch-cutover-packet.mjs
13
+ ```
14
+
15
+ ## Required checks
16
+
17
+ - Deterministic critical test suite passes.
18
+ - 10x throughput drill report passes.
19
+ - Throughput incident rehearsal report passes.
20
+ - Lighthouse tracker shows at least 3 accounts in `paid_production_settlement_confirmed`/`production_active` with `signedAt`, `goLiveAt`, and `productionSettlementRef` populated.
21
+
22
+ ## Output
23
+
24
+ - `artifacts/gates/s13-go-live-gate.json`
25
+ - `artifacts/gates/s13-launch-cutover-packet.json`
26
+
27
+ Gate is **fail-closed**: non-zero exit on any failed required check.
@@ -0,0 +1,129 @@
1
+ # Sprint R2: Hosted Baseline (Staging + Production)
2
+
3
+ This is the minimum hosted setup for a real product surface.
4
+
5
+ ## 1) Environment topology
6
+
7
+ - `staging.app.settld.work` (frontend, Vercel)
8
+ - `staging.api.settld.work` (API, Railway)
9
+ - `app.settld.work` (frontend, Vercel)
10
+ - `api.settld.work` (API, Railway)
11
+ - Separate Postgres instances/schemas and separate secret sets for staging/prod.
12
+ - Separate signing keys per environment (never reuse signer keys across staging/prod).
13
+
14
+ ## 2) Railway service split
15
+
16
+ Create two Railway services from this repo per environment:
17
+
18
+ - `settld-api`:
19
+ - start command: `npm run start:prod`
20
+ - `settld-worker`:
21
+ - start command: `npm run start:maintenance`
22
+
23
+ Both services must point at the same environment DB and secret set for that environment.
24
+
25
+ ## 3) Required runtime controls
26
+
27
+ - Tenant rate limiting:
28
+ - `PROXY_RATE_LIMIT_RPM`
29
+ - `PROXY_RATE_LIMIT_BURST`
30
+ - API-key rate limiting:
31
+ - `PROXY_RATE_LIMIT_PER_KEY_RPM`
32
+ - `PROXY_RATE_LIMIT_PER_KEY_BURST`
33
+ - Tenant quotas:
34
+ - `PROXY_QUOTA_*` and `PROXY_QUOTA_PLATFORM_*` envs from `docs/CONFIG.md`.
35
+
36
+ ## 4) Observability + alerts
37
+
38
+ Scrape `/metrics` and enable rules from `deploy/observability/prometheus-rules.yml`.
39
+
40
+ R2-required alerts:
41
+
42
+ - replay mismatches: `replay_mismatch_gauge`
43
+ - stuck disputes: `disputes_over_sla_gauge`, `arbitration_over_sla_gauge`
44
+ - stuck holds: `settlement_holds_over_24h_gauge`
45
+ - worker lag: `worker_outbox_pending_total_gauge`, `worker_deliveries_pending_total_gauge`
46
+
47
+ Reference: `docs/ALERTS.md`.
48
+
49
+ ## 5) Backups + restore drill
50
+
51
+ - Backup/restore scripts: `scripts/backup-pg.sh`, `scripts/restore-pg.sh`
52
+ - Full drill script: `scripts/backup-restore-test.sh`
53
+ - Run at least weekly for staging and monthly for production.
54
+ - Record evidence in incident/runbook logs (timestamp, operator, pass/fail, DB snapshot IDs).
55
+
56
+ ## 6) Clerk onboarding handoff (app -> API)
57
+
58
+ The app should map Clerk identity/org to a tenant ID, then bootstrap that tenant on the API side.
59
+
60
+ Recommended server-side flow:
61
+
62
+ 1. User signs up/signs in via Clerk at `*.app.settld.work`.
63
+ 2. App backend chooses tenant ID (for example: `tenant_<clerk_org_id>`).
64
+ 3. App backend calls:
65
+ - `POST /ops/tenants/bootstrap` (with a privileged ops token, server-side only)
66
+ 4. App stores/bootstrap-returns tenant API key and presents onboarding state + Explorer links.
67
+
68
+ ## 7) New-tenant acceptance run
69
+
70
+ Use this command to prove onboarding is self-serve and conformance-ready:
71
+
72
+ ```bash
73
+ npm run ops:tenant:bootstrap:conformance -- \
74
+ --base-url https://staging.api.settld.work \
75
+ --ops-token "$SETTLD_STAGING_OPS_TOKEN" \
76
+ --tenant-id "tenant_demo_$(date +%s)"
77
+ ```
78
+
79
+ This performs:
80
+
81
+ - tenant bootstrap
82
+ - API key issuance
83
+ - kernel conformance run with that new tenant/API key
84
+
85
+ ## 8) Acceptance bar (R2)
86
+
87
+ - Brand-new tenant can be created from app onboarding flow.
88
+ - Tenant receives API key without manual DB edits.
89
+ - Tenant can run kernel conformance against staging/prod.
90
+ - Explorer, replay, and closepack flows are reachable for that tenant.
91
+
92
+ ## 9) Hosted baseline evidence command
93
+
94
+ Use the ops command below to collect a deterministic hosted-baseline evidence artifact (health, ops status, metrics, alert metric presence, billing catalog/quotas, optional rate-limit probe, optional backup/restore drill evidence):
95
+
96
+ ```bash
97
+ npm run ops:hosted-baseline:evidence -- \
98
+ --base-url https://staging.api.settld.work \
99
+ --tenant-id tenant_default \
100
+ --ops-token "$SETTLD_STAGING_OPS_TOKEN" \
101
+ --environment staging \
102
+ --rate-limit-mode optional \
103
+ --rate-limit-probe-requests 20 \
104
+ --out ./artifacts/ops/hosted-baseline-evidence-staging.json
105
+ ```
106
+
107
+ If you want the command to execute the backup/restore drill inline:
108
+
109
+ ```bash
110
+ npm run ops:hosted-baseline:evidence -- \
111
+ --base-url https://staging.api.settld.work \
112
+ --tenant-id tenant_default \
113
+ --ops-token "$SETTLD_STAGING_OPS_TOKEN" \
114
+ --environment staging \
115
+ --run-backup-restore true \
116
+ --database-url "$DATABASE_URL" \
117
+ --restore-database-url "$RESTORE_DATABASE_URL" \
118
+ --require-backup-restore true \
119
+ --out ./artifacts/ops/hosted-baseline-evidence-staging.json
120
+ ```
121
+
122
+ Important:
123
+
124
+ - `DATABASE_URL` and `RESTORE_DATABASE_URL` must be real connection strings (not redacted placeholders like `postgres://...`).
125
+ - Quick preflight:
126
+
127
+ ```bash
128
+ node -e 'for (const n of ["DATABASE_URL","RESTORE_DATABASE_URL"]) { const v=(process.env[n]||"").trim(); if (!v) { console.error(`${n}=missing`); process.exitCode=1; continue; } const u=new URL(v); console.log(`${n} host=${u.hostname} protocol=${u.protocol}`); }'
129
+ ```
@@ -0,0 +1,69 @@
1
+ # Kernel v0 Ship Gate
2
+
3
+ This is the fail-closed release gate for shipping the current Kernel v0 OSS rails.
4
+
5
+ ## Command
6
+
7
+ ```bash
8
+ node scripts/ci/run-kernel-v0-ship-gate.mjs
9
+ ```
10
+
11
+ Optional:
12
+
13
+ ```bash
14
+ RUN_KERNEL_V0_QUICKSTART_SMOKE=0 node scripts/ci/run-kernel-v0-ship-gate.mjs
15
+ ```
16
+
17
+ Report output:
18
+
19
+ - `artifacts/gates/kernel-v0-ship-gate.json`
20
+
21
+ ## CI enforcement
22
+
23
+ 1. `.github/workflows/tests.yml` runs `kernel_v0_ship_gate` on every `push` to `main`.
24
+ 2. `.github/workflows/tests.yml` also runs `production_cutover_gate` on every `push` to `main`.
25
+ 3. `.github/workflows/release.yml` blocks release unless that same commit has successful `kernel_v0_ship_gate` and `production_cutover_gate` results from `tests.yml`.
26
+ 4. `.github/workflows/production-cutover-gate.yml` provides manual live-environment validation using `production_cutover_gate` GitHub Environment secrets.
27
+
28
+ ## Included checks
29
+
30
+ 1. Launch-claim truth gate (`check-kernel-v0-launch-gate.mjs --mode prepublish`)
31
+ 2. Core x402 e2e confidence suite
32
+ 3. API/SDK contract freeze + OpenAPI snapshot checks
33
+ 4. x402 quickstart smoke (`quickstart:x402`, default on)
34
+
35
+ Any failed check stops the sequence and returns non-zero.
36
+
37
+ ## Rollout plan
38
+
39
+ 1. Canary: ship to internal/demo environments and run full gate before every cut.
40
+ 2. Scale-out: ship to design-partner environments after two consecutive green gate runs.
41
+ 3. Full OSS release: publish only when the latest gate report is green and attached to release notes.
42
+
43
+ ## Rollback triggers
44
+
45
+ Rollback immediately if any of the following happen after release:
46
+
47
+ 1. Deterministic replay/receipt verification mismatch in production-like flow.
48
+ 2. x402 authorize/verify path starts returning unexpected non-contract error codes.
49
+ 3. Quickstart regression (`quickstart:x402`) fails on clean environment.
50
+
51
+ ## Rollback execution
52
+
53
+ 1. Freeze new rollout and revert to previous known-good release/tag.
54
+ 2. Re-run ship gate against rollback candidate.
55
+ 3. Re-open rollout only after green gate + root-cause note.
56
+
57
+ ## Monitoring and alerting
58
+
59
+ Track at minimum:
60
+
61
+ 1. `x402` authorize/verify success and conflict code distribution.
62
+ 2. Receipt verification failures.
63
+ 3. Quickstart smoke health in CI cadence.
64
+
65
+ ## Owner / on-call
66
+
67
+ - Release owner: Platform/Kernel maintainer
68
+ - Escalation owner: API maintainer
69
+ - Rollback approver: Tech lead on-call
@@ -0,0 +1,51 @@
1
+ # Lighthouse Production Close
2
+
3
+ Tracks `STLD-T180` with repo-auditable evidence.
4
+
5
+ ## Source of truth
6
+
7
+ - `planning/launch/lighthouse-production-tracker.json`
8
+
9
+ ## Account status model
10
+
11
+ - `targeting`
12
+ - `contracting`
13
+ - `integration_in_progress`
14
+ - `go_live_scheduled`
15
+ - `paid_production_settlement_confirmed`
16
+ - `production_active`
17
+
18
+ ## Required evidence per account
19
+
20
+ - Signed commercial date (`signedAt`)
21
+ - Go-live date (`goLiveAt`)
22
+ - Production settlement reference (`productionSettlementRef`)
23
+
24
+ `productionSettlementRef` should point to a deterministic, queryable settlement artifact ID or run settlement ID.
25
+
26
+ ## Launch criterion
27
+
28
+ At least 3 accounts must be in `paid_production_settlement_confirmed` or `production_active` with non-empty `productionSettlementRef`.
29
+
30
+ ## Validation path
31
+
32
+ The go-live gate uses `scripts/ci/lib/lighthouse-tracker.mjs` for readiness checks and requires all active accounts to include:
33
+ - `signedAt` (valid ISO timestamp)
34
+ - `goLiveAt` (valid ISO timestamp and not earlier than `signedAt`)
35
+ - `productionSettlementRef` (non-empty)
36
+
37
+ ## Update commands
38
+
39
+ Update tracker rows with validation instead of manual JSON edits:
40
+
41
+ ```bash
42
+ npm run ops:lighthouse:update -- \
43
+ --account lh_001 \
44
+ --status paid_production_settlement_confirmed \
45
+ --company-name "Example Co" \
46
+ --owner "am@settld" \
47
+ --signed-at 2026-02-10T12:00:00.000Z \
48
+ --go-live-at 2026-02-11T15:30:00.000Z \
49
+ --settlement-ref settle_run_abc123 \
50
+ --notes "First paid production settlement."
51
+ ```