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,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,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,67 @@
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/release.yml` blocks release unless that same commit has a successful `kernel_v0_ship_gate` result from `tests.yml`.
25
+
26
+ ## Included checks
27
+
28
+ 1. Launch-claim truth gate (`check-kernel-v0-launch-gate.mjs --mode prepublish`)
29
+ 2. Core x402 e2e confidence suite
30
+ 3. API/SDK contract freeze + OpenAPI snapshot checks
31
+ 4. x402 quickstart smoke (`quickstart:x402`, default on)
32
+
33
+ Any failed check stops the sequence and returns non-zero.
34
+
35
+ ## Rollout plan
36
+
37
+ 1. Canary: ship to internal/demo environments and run full gate before every cut.
38
+ 2. Scale-out: ship to design-partner environments after two consecutive green gate runs.
39
+ 3. Full OSS release: publish only when the latest gate report is green and attached to release notes.
40
+
41
+ ## Rollback triggers
42
+
43
+ Rollback immediately if any of the following happen after release:
44
+
45
+ 1. Deterministic replay/receipt verification mismatch in production-like flow.
46
+ 2. x402 authorize/verify path starts returning unexpected non-contract error codes.
47
+ 3. Quickstart regression (`quickstart:x402`) fails on clean environment.
48
+
49
+ ## Rollback execution
50
+
51
+ 1. Freeze new rollout and revert to previous known-good release/tag.
52
+ 2. Re-run ship gate against rollback candidate.
53
+ 3. Re-open rollout only after green gate + root-cause note.
54
+
55
+ ## Monitoring and alerting
56
+
57
+ Track at minimum:
58
+
59
+ 1. `x402` authorize/verify success and conflict code distribution.
60
+ 2. Receipt verification failures.
61
+ 3. Quickstart smoke health in CI cadence.
62
+
63
+ ## Owner / on-call
64
+
65
+ - Release owner: Platform/Kernel maintainer
66
+ - Escalation owner: API maintainer
67
+ - 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
+ ```
@@ -0,0 +1,28 @@
1
+ # MCP Compatibility Matrix
2
+
3
+ Track real host compatibility evidence here. Update on every major host release or Settld MCP change.
4
+
5
+ ## Status legend
6
+
7
+ - `green`: passes required flow end-to-end
8
+ - `yellow`: partially working; known gaps
9
+ - `red`: blocked
10
+
11
+ ## Required flow (all hosts)
12
+
13
+ 1. Host discovers `settld.*` tools.
14
+ 2. `settld.about` succeeds.
15
+ 3. One paid tool call succeeds (`settld.exa_search_paid` or `settld.weather_current_paid`).
16
+ 4. `x-settld-*` settlement/verification headers are present.
17
+ 5. Artifact output exists and verifies.
18
+
19
+ ## Matrix
20
+
21
+ | Host | Host Version | Transport | Status | Last Verified (UTC) | Evidence Link | Notes |
22
+ |---|---|---|---|---|---|---|
23
+ | Claude | TBD | stdio | TBD | TBD | TBD | |
24
+ | Cursor | TBD | stdio | TBD | TBD | TBD | |
25
+ | Codex | TBD | stdio | TBD | TBD | TBD | |
26
+ | OpenClaw | TBD | stdio | TBD | TBD | TBD | |
27
+ | Generic MCP host bootstrap path | local CI smoke | stdio | green | 2026-02-20 | `npm run test:ci:mcp-host-smoke` | Boots API + magic-link, generates runtime MCP env, runs `mcp:probe`, and calls `settld.about`; report at `artifacts/ops/mcp-host-smoke.json`. |
28
+ | Generic MCP HTTP client | local repo test harness | HTTP bridge | green | 2026-02-20 | `node --test test/mcp-stdio-spike.test.js test/mcp-http-gateway.test.js test/mcp-paid-exa-tool.test.js test/mcp-paid-weather-tool.test.js test/mcp-paid-llm-tool.test.js test/demo-mcp-paid-exa.test.js` | 9/9 passing in local CI-style run |
@@ -0,0 +1,89 @@
1
+ # Minimum Production Topology
2
+
3
+ This is the smallest topology that supports real paid agent tool calls with audit evidence.
4
+
5
+ ## 1) Required runtime components
6
+
7
+ | Component | Purpose | Start command |
8
+ |---|---|---|
9
+ | `settld-api` | control plane + kernel APIs + receipts + ops endpoints | `npm run start:prod` |
10
+ | `settld-maintenance` | reconciliation/cleanup/maintenance ticks | `npm run start:maintenance` |
11
+ | `postgres` | system of record for tenants, gates, receipts, ops state | managed Postgres |
12
+ | `x402-gateway` | payment challenge/authorize/verify wrapper for paid tool calls | `npm run start:x402-gateway` |
13
+ | paid upstream tool API(s) | actual provider tools (`/exa`, `/weather`, etc.) | provider-specific |
14
+
15
+ Without all five, the end-to-end paid tool path is incomplete.
16
+
17
+ ## 2) Recommended production shape
18
+
19
+ - `app.settld.work` -> frontend (Vercel or equivalent)
20
+ - `api.settld.work` -> `settld-api`
21
+ - `gateway.settld.work` -> `x402-gateway` (or internal service DNS)
22
+ - Separate staging/prod stacks with separate DBs (or schemas + strict separation), separate secret sets, and separate signing keys.
23
+
24
+ Reference baseline: `docs/ops/HOSTED_BASELINE_R2.md`.
25
+
26
+ ## 3) Minimum environment contract
27
+
28
+ ### `settld-api`
29
+
30
+ - `NODE_ENV=production`
31
+ - `STORE=pg`
32
+ - `DATABASE_URL`
33
+ - `PROXY_PG_SCHEMA`
34
+ - `PROXY_MIGRATE_ON_STARTUP=1` (or run migrations out-of-band)
35
+ - `PROXY_OPS_TOKENS` (scoped ops tokens)
36
+ - `PROXY_FINANCE_RECONCILE_ENABLED=1`
37
+ - `PROXY_MONEY_RAIL_RECONCILE_ENABLED=1`
38
+
39
+ Primary config source: `docs/CONFIG.md`.
40
+
41
+ ### `settld-maintenance`
42
+
43
+ - Same DB/env set as `settld-api`
44
+ - `PROXY_MAINTENANCE_INTERVAL_SECONDS` tuned for your traffic profile
45
+
46
+ ### `x402-gateway`
47
+
48
+ - `SETTLD_API_URL` (usually `https://api.settld.work`)
49
+ - `SETTLD_API_KEY` (`keyId.secret`)
50
+ - `UPSTREAM_URL` (provider tool base URL)
51
+ - `HOLDBACK_BPS`
52
+ - `DISPUTE_WINDOW_MS`
53
+ - optional signature controls for provider verification
54
+
55
+ Reference flow: `docs/QUICKSTART_X402_GATEWAY.md`.
56
+
57
+ ## 4) Non-negotiable controls
58
+
59
+ 1. Rate limits enabled (`PROXY_RATE_LIMIT_*`, per-tenant and per-key).
60
+ 2. Quotas configured (`PROXY_QUOTA_*` + `PROXY_QUOTA_PLATFORM_*`).
61
+ 3. Ops auth scoped via `PROXY_OPS_TOKENS` (no broad shared token in prod).
62
+ 4. Backups + restore drills on schedule (`scripts/backup-restore-test.sh`).
63
+ 5. `/metrics` scraped and alert rules enabled (`docs/ALERTS.md`).
64
+
65
+ ## 5) What must be hosted vs optional
66
+
67
+ Must host for real customer traffic:
68
+
69
+ 1. `settld-api`
70
+ 2. `settld-maintenance`
71
+ 3. Postgres
72
+ 4. `x402-gateway`
73
+ 5. At least one paid upstream provider API
74
+
75
+ Optional at first:
76
+
77
+ 1. Receiver service (`npm run start:receiver`)
78
+ 2. Finance sink (`npm run start:finance-sink`)
79
+ 3. Magic-link UI service
80
+
81
+ ## 6) Definition of "usable in production"
82
+
83
+ A deployment is considered usable when all are true:
84
+
85
+ 1. `GET /healthz` is green on API and gateway.
86
+ 2. Hosted baseline evidence command passes for the environment.
87
+ 3. One paid MCP tool call succeeds end-to-end with artifact output.
88
+ 4. Receipt verification succeeds and is replay-auditable.
89
+ 5. Rollback path is documented and tested.