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,30 @@
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 | local host-cert matrix harness | stdio | yellow | 2026-02-21 | `npm run test:ci:mcp-host-cert-matrix` | Validates host config write/idempotency for Claude MCP wiring; live interactive paid-tool validation in Claude desktop remains separate. |
24
+ | Cursor | local host-cert matrix harness | stdio | yellow | 2026-02-21 | `npm run test:ci:mcp-host-cert-matrix` | Validates host config write/idempotency for Cursor MCP wiring; live interactive paid-tool validation in Cursor app remains separate. |
25
+ | Codex | local host-cert matrix harness | stdio | yellow | 2026-02-21 | `npm run test:ci:mcp-host-cert-matrix` | Validates host config write/idempotency for Codex MCP wiring; live interactive paid-tool validation in Codex desktop remains separate. |
26
+ | OpenClaw | local host-cert matrix harness | stdio | yellow | 2026-02-21 | `npm run test:ci:mcp-host-cert-matrix` | Validates host config write/idempotency for OpenClaw MCP wiring; live interactive paid-tool validation in OpenClaw app remains separate. |
27
+ | Generic MCP host bootstrap path | local CI smoke | stdio | green | 2026-02-21 | `npm run test:ci:mcp-host-smoke` | Runs the MCP host smoke flow (API + magic-link + runtime bootstrap + MCP initialize/tools/list + `settld.about`) and writes `artifacts/ops/mcp-host-smoke.json`. |
28
+ | Host config write matrix (Codex/Claude/Cursor/OpenClaw) | local CI smoke | config bootstrap | green | 2026-02-21 | `npm run test:ci:mcp-host-cert-matrix` | Verifies `scripts/setup/host-config.mjs` writes valid Settld MCP entries and remains idempotent across all supported hosts. |
29
+ | Generic MCP HTTP client | local repo test harness | HTTP bridge | green | 2026-02-21 | `node --test test/mcp-stdio-spike.test.js test/mcp-paid-exa-tool.test.js test/mcp-paid-weather-tool.test.js test/mcp-paid-llm-tool.test.js test/x402-gateway-autopay.test.js` | 6/6 passing with paid-tool runtime metadata checks and x402 settlement header verification. |
30
+ | MCP paid runtime policy metadata gate | local repo test harness | stdio + x402 gateway | green | 2026-02-21 | `node --test test/mcp-paid-exa-tool.test.js test/mcp-paid-weather-tool.test.js test/mcp-paid-llm-tool.test.js test/x402-gateway-autopay.test.js` | Paid MCP tools now fail-closed if `x-settld-policy-decision`, `x-settld-policy-hash`, `x-settld-decision-id`, settlement, or verification headers are missing. |
@@ -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.
@@ -0,0 +1,150 @@
1
+ # P0 Backend Progress Tracker
2
+
3
+ Status date: February 13, 2026
4
+
5
+ This tracker is the source of truth for P0 backend execution status in code.
6
+
7
+ ## Scope
8
+
9
+ P0 backend scope tracked here:
10
+
11
+ 1. Hosted baseline hardening controls
12
+ 2. Real-money payout controls and rail safety
13
+ 3. Deterministic reconciliation + enforcement evidence
14
+ 4. Billing/runtime and launch-gate alignment
15
+
16
+ ## Shipped in this change set
17
+
18
+ - [x] Tenant-level real-money payout gate (production providers require explicit tenant enablement)
19
+ - [x] Tenant-level payout kill switch
20
+ - [x] Tenant-level max single payout cap
21
+ - [x] Tenant-level daily payout exposure cap
22
+ - [x] Tenant-level allowed provider allowlist
23
+ - [x] Optional signed provider event ingestion enforcement for money-rail events
24
+ - [x] Stripe production payout submit endpoint executes `/v1/transfers` with deterministic metadata mapping
25
+ - [x] Stripe Connect payout submit enforces `stripe_connect:<acct_...>` counterparty destination in production mode
26
+ - [x] Submit endpoint idempotency + ops audit trail (`MONEY_RAIL_OPERATION_SUBMITTED`)
27
+ - [x] Stripe Connect KYB/capability sync endpoint updates payout eligibility from provider account state
28
+ - [x] Chargeback policy automation (`hold|net`) with negative-balance payout enforcement
29
+ - [x] Chargeback exposure API for per-party outstanding/recovered tracking
30
+ - [x] Chargeback evidence automation command emits deterministic run artifact hash (optional Ed25519 signature)
31
+ - [x] Hosted baseline evidence automation command (health/status/metrics + optional rate-limit probe + optional backup/restore drill)
32
+ - [x] Design-partner run packet generator chaining reconcile + chargeback evidence into one hashable/signable artifact
33
+ - [x] Periodic money-rail reconciliation scheduler with advisory-lock safety
34
+ - [x] Money-rail reconciliation maintenance run endpoint with ops audit trail
35
+ - [x] Maintenance status surface now includes money-rail reconciliation state/result
36
+ - [x] Money-rail controls surfaced through existing billing plan control-plane API
37
+ - [x] Runtime billing catalog aligns with public pricing (including Growth $0.007/run via milli-cent accounting)
38
+ - [x] CI smoke runs exact local tarball `npx --package ./settld-<version>.tgz` command path
39
+
40
+ Implemented in:
41
+
42
+ - `src/api/app.js`
43
+ - `src/api/maintenance.js`
44
+ - `src/core/billing-plans.js`
45
+ - `src/api/openapi.js`
46
+ - `scripts/ci/cli-pack-smoke.mjs`
47
+ - `scripts/ops/money-rails-chargeback-evidence.mjs`
48
+ - `scripts/ops/hosted-baseline-evidence.mjs`
49
+ - `scripts/ops/design-partner-run-packet.mjs`
50
+ - `test/api-e2e-ops-money-rails.test.js`
51
+ - `test/api-e2e-billing-plan-enforcement.test.js`
52
+ - `test/api-e2e-ops-maintenance-money-rails-reconcile.test.js`
53
+ - `test/pg-maintenance-money-rails-reconcile-lock.test.js`
54
+
55
+ ## API behavior now enforced
56
+
57
+ - `POST /ops/payouts/{partyId}/{period}/enqueue`
58
+ - Rejects with `REAL_MONEY_DISABLED` when provider is production and tenant real-money is not enabled.
59
+ - Rejects with `PAYOUT_KILL_SWITCH_ACTIVE` when kill switch is on.
60
+ - Rejects with `PAYOUT_AMOUNT_LIMIT_EXCEEDED` when single payout exceeds tenant cap.
61
+ - Rejects with `PAYOUT_DAILY_LIMIT_EXCEEDED` when projected daily exposure exceeds tenant cap.
62
+ - Rejects with `MONEY_RAIL_PROVIDER_NOT_ALLOWED` when provider is outside tenant allowlist.
63
+
64
+ - `POST /ops/money-rails/{providerId}/events/ingest`
65
+ - Supports optional signed-ingest verification when provider config requires it.
66
+ - Validates `x-proxy-provider-signature` (`t=<unix>,v1=<hmac_sha256_hex>`) against configured provider webhook secret.
67
+
68
+ - `POST /ops/money-rails/{providerId}/operations/{operationId}/submit`
69
+ - Submits initiated payout operations to the provider.
70
+ - For production Stripe providers, calls Stripe `/v1/transfers` and transitions operation to `submitted` with `providerRef=transfer_id`.
71
+ - Enforces Connect destination shape (`stripe_connect:<acct_...>`) and returns `STRIPE_CONNECT_COUNTERPARTY_REQUIRED` when invalid.
72
+ - Returns `MONEY_RAIL_SUBMIT_INVALID_STATE` when operation is no longer submit-eligible.
73
+
74
+ - `GET /ops/finance/money-rails/chargebacks`
75
+ - Returns deterministic per-party chargeback exposure (`outstanding`, `recovered`, counts) with optional `providerId|partyId|period` filters.
76
+
77
+ - `POST /ops/finance/money-rails/stripe-connect/accounts/sync`
78
+ - Pulls Stripe Account state (`/v1/accounts/{accountId}`) and syncs Connect account capability/KYB fields.
79
+ - Updates `payoutsEnabled`/`transfersEnabled` + KYB status and requirement sets.
80
+ - Supports deterministic idempotency replay and records `STRIPE_CONNECT_ACCOUNTS_SYNC` ops audit.
81
+
82
+ - `POST /ops/maintenance/money-rails-reconcile/run`
83
+ - Runs periodic-grade money-rail reconciliation on demand with advisory lock safety.
84
+ - Persists `MoneyRailReconcileReport.v1` artifacts with deterministic report hashes.
85
+ - Writes `MAINTENANCE_MONEY_RAIL_RECONCILE_RUN` audit records with outcome/runtime/summary.
86
+
87
+ - `GET /ops/status`
88
+ - Exposes `maintenance.moneyRailReconciliation` (enabled/interval/limits/last run/result/audit refs).
89
+
90
+ - `GET/PUT /ops/finance/billing/plan`
91
+ - Returns and persists `billing.moneyRails` controls.
92
+
93
+ ## Validation evidence
94
+
95
+ Executed and passing:
96
+
97
+ - `node --test test/api-e2e-ops-money-rails.test.js`
98
+ - `node --test test/api-e2e-ops-maintenance-money-rails-reconcile.test.js`
99
+ - `node --test test/api-e2e-billing-plan-enforcement.test.js`
100
+ - `node scripts/ci/cli-pack-smoke.mjs`
101
+ - `node scripts/ops/money-rails-chargeback-evidence.mjs --help`
102
+ - `node scripts/ops/hosted-baseline-evidence.mjs --help`
103
+ - `node scripts/ops/design-partner-run-packet.mjs --help`
104
+
105
+ ## Current hosted evidence snapshot (2026-02-13)
106
+
107
+ - [x] `ops:hosted-baseline:evidence` passes against `https://api.settld.work` for:
108
+ - health/status
109
+ - required metrics presence
110
+ - billing catalog/quotas validation
111
+ - [x] Production hosted-baseline backup/restore evidence is now passing.
112
+ - Captured at: `2026-02-13T02:19:48.251Z`
113
+ - Artifact: `artifacts/ops/hosted-baseline-prod.json`
114
+ - `artifactHash`: `2a5833fd44e6b904ed87763e2d1212e02ffcd9583c4d50fdd5b2cffa3d99a597`
115
+ - Backup/restore: `checks.backupRestore.ok=true`
116
+ - External archive path: `/home/aiden/ops-evidence/settld/hosted-baseline/2026-02-13`
117
+ - [x] Staging hosted-baseline backup/restore evidence is now passing.
118
+ - Captured at: `2026-02-13T02:26:37.785Z`
119
+ - Artifact: `artifacts/ops/hosted-baseline-staging.json`
120
+ - `artifactHash`: `354f339d1c668eccb000416a231309ed6f3a5614539d43448aad9f6f3ca0dc28`
121
+ - Backup/restore: `checks.backupRestore.ok=true`
122
+ - External archive path: `/home/aiden/ops-evidence/settld/hosted-baseline/2026-02-13`
123
+
124
+ ### Money-Rail Chargeback + Design-Partner Packet (2026-02-13)
125
+
126
+ - [x] Chargeback/refund simulation evidence run captured and signed.
127
+ - Tenant: `tenant_p0_evidence_20260213_v9`
128
+ - Period: `2026-02`
129
+ - Artifact: `artifacts/ops/chargeback-evidence-tenant_p0_evidence_20260213_v9.json`
130
+ - `artifactHash`: `a7df81308cfed250ecc93a2997758f09d91a807beb74f3a8cd8aaee3f181fbe7`
131
+
132
+ - [x] Design-partner run packet captured and signed (reconcile is expected to fail when a chargeback reversal is present).
133
+ - Tenant: `tenant_p0_evidence_20260213_v9`
134
+ - Period: `2026-02`
135
+ - Artifact: `artifacts/ops/design-partner-run-packet-tenant_p0_evidence_20260213_v9.json`
136
+ - `artifactHash`: `c6eaa09b8ee4f662cb95403800d87cf89ace865bd6e7c29bfe09b5ab5a2b7e62`
137
+ - Reconcile report hash: `36e8e5fb2ed0af3574aa41c8d72e66020fe19130bb185daa67af079983354cac`
138
+ - External archive path: `/home/aiden/ops-evidence/settld/p0/2026-02-13/tenant_p0_evidence_20260213_v9`
139
+
140
+ ## Remaining P0 work (outside this code drop)
141
+
142
+ - [x] Execute hosted baseline evidence runs in staging/prod with `--run-backup-restore true` and archive signed artifacts
143
+ - [x] Execute chargeback/refund simulation runs and archive signed artifacts
144
+ - [x] Execute design-partner run packets against live partner tenants (repeatable, no manual DB edits)
145
+
146
+ References:
147
+
148
+ - `docs/ops/HOSTED_BASELINE_R2.md`
149
+ - `docs/ops/PAYMENTS_ALPHA_R5.md`
150
+ - `planning/kernel-v0-truth-audit.md`
@@ -0,0 +1,105 @@
1
+ # Payments Alpha (R5) - Design Partner Scope
2
+
3
+ This runbook defines the private real-money alpha while Kernel v0 remains public with ledger/test-fund flows.
4
+
5
+ ## Objective
6
+
7
+ Validate mapping from kernel settlement artifacts to real payment rails with 3-5 design partners, without opening public GA risk surface.
8
+
9
+ ## Non-Goals (Alpha)
10
+
11
+ - No public self-serve real-money onboarding.
12
+ - No generalized multi-rail support.
13
+ - No claim of universal chargeback protection.
14
+
15
+ ## Required Design Decisions
16
+
17
+ - Merchant-of-record model is explicitly documented.
18
+ - Holdback/challenge window mapping to payout timing is explicit and testable.
19
+ - Refund and chargeback policy defines behavior when reversals exceed retained holdback.
20
+
21
+ ## Required Implementation Surfaces
22
+
23
+ - Feature flag gate per tenant for real-money flows.
24
+ - Rail adapter integration (for example Stripe Connect) with webhook ingestion and signed webhook verification.
25
+ - Reconciliation tables keyed by settlement/receipt/adjustment IDs.
26
+ - Periodic reconciliation job that produces mismatch reports.
27
+ - Ops view for mismatch triage with reason codes.
28
+
29
+ ### Implementation status snapshot (2026-02-12)
30
+
31
+ - Implemented in API runtime:
32
+ - Tenant-level real-money payout gate
33
+ - Tenant-level payout kill switch
34
+ - Tenant-level single-payout cap
35
+ - Tenant-level daily payout cap
36
+ - Tenant-level provider allowlist
37
+ - Optional signed provider-event ingestion enforcement for money rails
38
+ - Stripe Connect account mapping endpoints + payout counterparty enforcement
39
+ - Stripe Connect KYB/capability sync endpoint (`POST /ops/finance/money-rails/stripe-connect/accounts/sync`) pulling `/v1/accounts/{accountId}`
40
+ - Stripe production payout submit endpoint (`POST /ops/money-rails/{providerId}/operations/{operationId}/submit`) calling `/v1/transfers`
41
+ - Chargeback negative-balance policy automation (`hold|net`) + exposure API
42
+ - Scheduled money-rail reconciliation maintenance with advisory locks + audit trail
43
+ - Runtime billing catalog alignment for `free|builder|growth|enterprise` (Growth `$0.007/run` preserved with milli-cent accounting)
44
+ - Source: `src/api/app.js`, `test/api-e2e-ops-money-rails.test.js`
45
+ - Source (maintenance scheduler): `src/api/maintenance.js`, `test/api-e2e-ops-maintenance-money-rails-reconcile.test.js`
46
+ - Source (billing alignment): `src/core/billing-plans.js`, `test/api-e2e-billing-plan-enforcement.test.js`
47
+ - Source (chargeback evidence automation): `scripts/ops/money-rails-chargeback-evidence.mjs`
48
+ - Source (design-partner run packet automation): `scripts/ops/design-partner-run-packet.mjs`
49
+ - Tracker: `docs/ops/P0_BACKEND_PROGRESS.md`
50
+
51
+ ## Chargeback Evidence Command
52
+
53
+ Use this command to capture a deterministic chargeback drill artifact that includes API call traces, computed checks, and a stable `artifactHash`:
54
+
55
+ ```bash
56
+ npm run ops:money-rails:chargeback:evidence -- \
57
+ --base-url https://staging.api.settld.work \
58
+ --tenant-id tenant_design_partner_1 \
59
+ --ops-token "$SETTLD_STAGING_OPS_TOKEN" \
60
+ --provider-id stripe_prod_us \
61
+ --operation-id op_example_123 \
62
+ --period 2026-02 \
63
+ --expect-outstanding-cents 2000 \
64
+ --out ./artifacts/chargeback-evidence-2026-02.json
65
+ ```
66
+
67
+ Optional signature fields:
68
+
69
+ - `--signing-key-file <pkcs8_ed25519_pem>`
70
+ - `--signature-key-id <key_id>`
71
+
72
+ ## Design-partner run packet command
73
+
74
+ Use this command to generate one signed/hashable packet that chains:
75
+
76
+ 1. money-rail reconciliation evidence
77
+ 2. chargeback evidence
78
+
79
+ ```bash
80
+ npm run ops:design-partner:run-packet -- \
81
+ --base-url https://staging.api.settld.work \
82
+ --tenant-id tenant_design_partner_1 \
83
+ --ops-token "$SETTLD_STAGING_OPS_TOKEN" \
84
+ --provider-id stripe_prod_us \
85
+ --period 2026-02 \
86
+ --chargeback-operation-id op_example_123 \
87
+ --chargeback-party-id pty_example_123 \
88
+ --chargeback-payout-period 2026-03 \
89
+ --expect-chargeback-payout-code NEGATIVE_BALANCE_PAYOUT_HOLD \
90
+ --out ./artifacts/ops/design-partner-run-packet-2026-02.json
91
+ ```
92
+
93
+ ## Risk Controls
94
+
95
+ - Tenant-level transaction/payout limits.
96
+ - Daily mismatch alert threshold.
97
+ - Kill switch to disable payouts by tenant.
98
+ - Manual override workflow for reconciliation exceptions.
99
+
100
+ ## Acceptance Criteria
101
+
102
+ - Every external money movement maps to a kernel receipt or adjustment reference.
103
+ - Reconciliation report is zero-drift in normal flows and explainable for induced failure scenarios.
104
+ - Chargeback/refund simulation runbook is executed and recorded.
105
+ - Design partner tenants can complete the same flow repeatedly without manual DB edits.
@@ -0,0 +1,112 @@
1
+ # Pilot Onboarding Runbook (x402 Gateway)
2
+
3
+ Goal: install a design partner in one afternoon and prove a known-good `402 -> authorize -> verify -> settled` flow.
4
+
5
+ ## 1. Prerequisites
6
+
7
+ - Runtime: Node 20+, Docker available for hosted acceptance checks.
8
+ - Access:
9
+ - Settld API base URL (`SETTLD_BASE_URL`)
10
+ - tenant id (`SETTLD_TENANT_ID`)
11
+ - ops token (`PROXY_OPS_TOKEN`) to mint scoped API keys
12
+ - Pilot safety defaults:
13
+ - `X402_PILOT_KILL_SWITCH=0`
14
+ - `X402_PILOT_MAX_AMOUNT_CENTS=100`
15
+ - `X402_PILOT_DAILY_LIMIT_CENTS=1000`
16
+
17
+ ## 2. Environment Setup (15-20m)
18
+
19
+ ```bash
20
+ export SETTLD_BASE_URL='https://api.settld.work'
21
+ export SETTLD_TENANT_ID='tenant_default'
22
+ export PROXY_OPS_TOKEN='tok_ops'
23
+ ```
24
+
25
+ Mint a scoped API key:
26
+
27
+ ```bash
28
+ curl -sS -X POST "$SETTLD_BASE_URL/ops/api-keys" \
29
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
30
+ -H "x-proxy-ops-token: $PROXY_OPS_TOKEN" \
31
+ -H 'x-settld-protocol: 1.0' \
32
+ -H 'content-type: application/json' \
33
+ -d '{"scopes":["ops_read","ops_write","audit_read","finance_read","finance_write"]}' | jq .
34
+ ```
35
+
36
+ ## 3. Gateway Deploy (10-15m)
37
+
38
+ Use the local smoke stack as the deployment sanity baseline:
39
+
40
+ ```bash
41
+ scripts/dev/smoke-x402-gateway.sh
42
+ ```
43
+
44
+ For hosted deployment, configure gateway env:
45
+
46
+ - `SETTLD_API_URL=<api base>`
47
+ - `SETTLD_API_KEY=<keyId.secret>`
48
+ - `UPSTREAM_URL=<paid upstream base>`
49
+ - `X402_AUTOFUND=1` for pilot/demo rails only
50
+
51
+ ## 4. Sandbox vs Production Mode
52
+
53
+ | Mode | Required vars | Notes |
54
+ |---|---|---|
55
+ | `sandbox` | `SETTLD_DEMO_CIRCLE_MODE=sandbox`, `X402_REQUIRE_EXTERNAL_RESERVE=1` | Safe pilot proving reserve path without live funds |
56
+ | `production` | `SETTLD_DEMO_CIRCLE_MODE=production`, live Circle vars (`CIRCLE_API_KEY`, wallet ids, token id) | Keep strict caps and provider allowlist on |
57
+
58
+ ## 5. Known-Good Health Check Flow (10m)
59
+
60
+ 1. Gateway health:
61
+
62
+ ```bash
63
+ curl -sS http://127.0.0.1:8402/healthz | jq .
64
+ ```
65
+
66
+ 2. First request returns `402` + `x-settld-gate-id`:
67
+
68
+ ```bash
69
+ FIRST_HEADERS=$(mktemp)
70
+ curl -sS -D "$FIRST_HEADERS" 'http://127.0.0.1:8402/exa/search?q=pilot+health' -o /tmp/pilot-first-body.json
71
+ GATE_ID=$(awk 'tolower($1)=="x-settld-gate-id:" {print $2}' "$FIRST_HEADERS" | tr -d '\r')
72
+ echo "$GATE_ID"
73
+ ```
74
+
75
+ 3. Retry with gate id returns `200` and settlement headers:
76
+
77
+ ```bash
78
+ curl -sS -D /tmp/pilot-second-headers.txt \
79
+ -H "x-settld-gate-id: $GATE_ID" \
80
+ 'http://127.0.0.1:8402/exa/search?q=pilot+health' -o /tmp/pilot-second-body.json
81
+ ```
82
+
83
+ 4. Confirm gate resolved in API:
84
+
85
+ ```bash
86
+ curl -sS "$SETTLD_BASE_URL/x402/gate/$GATE_ID" \
87
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
88
+ -H "authorization: Bearer $SETTLD_API_KEY" \
89
+ -H 'x-settld-protocol: 1.0' | jq '{gateId:.gate.gateId,status:.gate.status,settlement:.settlement.status}'
90
+ ```
91
+
92
+ Expected: `status=resolved` and non-locked settlement.
93
+
94
+ ## 6. Rollback Procedure (Fail-Closed)
95
+
96
+ 1. Activate kill switch:
97
+
98
+ ```bash
99
+ export X402_PILOT_KILL_SWITCH=1
100
+ ```
101
+
102
+ 2. Restart API/gateway with kill switch active.
103
+ 3. Verify authorize rejects with `X402_PILOT_KILL_SWITCH_ACTIVE`.
104
+ 4. Drain in-flight checks; stop new pilot traffic.
105
+ 5. Revert risky config (prod reserve mode, provider allowlist overrides).
106
+ 6. Run health checks again in sandbox mode before re-opening traffic.
107
+
108
+ ## 7. Pilot Exit Criteria
109
+
110
+ - Health check flow passes end-to-end.
111
+ - Reliability report generated (`X402PilotReliabilityReport.v1`) and within thresholds.
112
+ - Rollback drill executed once and documented.
@@ -0,0 +1,140 @@
1
+ # Production Deployment Checklist
2
+
3
+ Use this checklist to launch and verify a real hosted Settld environment.
4
+
5
+ ## Phase 0: Preflight
6
+
7
+ 1. Confirm branch protection includes:
8
+ - `tests / kernel_v0_ship_gate`
9
+ - `tests / production_cutover_gate`
10
+ - `tests / offline_verification_parity_gate` (NOO-50)
11
+ - `tests / onboarding_policy_slo_gate`
12
+ - `tests / onboarding_host_success_gate`
13
+ - `tests / deploy_safety_smoke` (hosted baseline evidence path)
14
+ 2. Confirm release workflow is blocked unless NOO-50 and the kernel/cutover gates are green for the release commit.
15
+ 3. Confirm release workflow runs NOO-65 promotion guard and blocks publish lanes if `release-promotion-guard.json` verdict is not pass/override-pass.
16
+ 4. Confirm staging and production have separate domains, databases, secrets, and signer keys.
17
+ 5. Confirm required services are deployable: `npm run start:prod`, `npm run start:maintenance`, `npm run start:x402-gateway`.
18
+ 6. Configure GitHub Environment `production_cutover_gate` with:
19
+ - `PROD_BASE_URL`
20
+ - `PROD_TENANT_ID`
21
+ - `PROD_OPS_TOKEN`
22
+ - optional `PROD_PROTOCOL` (`1.0`)
23
+ 7. Require manual reviewers on `production_cutover_gate` before workflow secret access.
24
+
25
+ ## Phase 1: Environment + secrets
26
+
27
+ 1. Provision Postgres and store `DATABASE_URL`.
28
+ 2. Set `STORE=pg`, `NODE_ENV=production`, `PROXY_MIGRATE_ON_STARTUP=1`.
29
+ 3. Set scoped `PROXY_OPS_TOKENS`.
30
+ 4. Configure rate limits and quotas from `docs/CONFIG.md`.
31
+ 5. Configure gateway secrets: `SETTLD_API_URL`, `SETTLD_API_KEY`, `UPSTREAM_URL`.
32
+
33
+ ## Phase 2: Deploy services
34
+
35
+ 1. Deploy `settld-api`.
36
+ 2. Deploy `settld-maintenance`.
37
+ 3. Deploy `x402-gateway`.
38
+ 4. Verify service health:
39
+
40
+ ```bash
41
+ curl -fsS https://api.settld.work/healthz
42
+ curl -fsS https://gateway.settld.work/healthz
43
+ ```
44
+
45
+ ## Phase 3: Baseline ops verification
46
+
47
+ 1. Run hosted baseline evidence command:
48
+
49
+ ```bash
50
+ npm run ops:hosted-baseline:evidence -- \
51
+ --base-url https://api.settld.work \
52
+ --tenant-id tenant_default \
53
+ --ops-token "$SETTLD_OPS_TOKEN" \
54
+ --environment production \
55
+ --out ./artifacts/ops/hosted-baseline-evidence-production.json
56
+ ```
57
+
58
+ 2. Confirm alert metric presence and health signals.
59
+ 3. Run backup/restore drill evidence path at least once before opening customer traffic.
60
+
61
+ ## Phase 4: MCP compatibility verification
62
+
63
+ 1. Run core MCP automated tests:
64
+
65
+ ```bash
66
+ node --test \
67
+ test/mcp-stdio-spike.test.js \
68
+ test/mcp-http-gateway.test.js \
69
+ test/mcp-paid-exa-tool.test.js \
70
+ test/mcp-paid-weather-tool.test.js \
71
+ test/mcp-paid-llm-tool.test.js \
72
+ test/demo-mcp-paid-exa.test.js
73
+ ```
74
+
75
+ 2. Run the hosted-style MCP smoke gate (API + magic-link bootstrap + MCP probe):
76
+
77
+ ```bash
78
+ npm run test:ci:mcp-host-smoke
79
+ ```
80
+
81
+ This emits a machine-readable report at:
82
+
83
+ `artifacts/ops/mcp-host-smoke.json`
84
+
85
+ 3. Run host quickstart validation from `docs/QUICKSTART_MCP_HOSTS.md` for:
86
+ Claude, Cursor, Codex, and OpenClaw.
87
+
88
+ 4. Update `docs/ops/MCP_COMPATIBILITY_MATRIX.md` with pass/fail + date.
89
+
90
+ 5. Run clean-env onboarding host success gate:
91
+
92
+ ```bash
93
+ npm run test:ops:onboarding-host-success-gate -- \
94
+ --base-url https://api.settld.work \
95
+ --tenant-id tenant_default \
96
+ --api-key "$SETTLD_API_KEY" \
97
+ --attempts 3 \
98
+ --min-success-rate-pct 90 \
99
+ --report artifacts/gates/onboarding-host-success-gate.json \
100
+ --metrics-dir artifacts/ops/onboarding-host-success
101
+ ```
102
+
103
+ ## Phase 5: Paid call + receipt proof
104
+
105
+ 1. Run a paid demo flow:
106
+
107
+ ```bash
108
+ npm run demo:mcp-paid-exa
109
+ ```
110
+
111
+ 2. Confirm artifacts exist:
112
+ `artifacts/mcp-paid-exa/.../summary.json` and gate/settlement evidence files in the same run directory.
113
+ 3. Verify receipt path using existing verifier tooling.
114
+
115
+ ## Phase 6: Go-live decision gate
116
+
117
+ Ship only when all are true:
118
+
119
+ 1. Kernel v0 ship gate, production cutover gate, and NOO-50 parity gate are green.
120
+ 2. Onboarding/policy SLO gate is green (`artifacts/gates/onboarding-policy-slo-gate.json`).
121
+ 3. Onboarding host success gate is green (`artifacts/gates/onboarding-host-success-gate.json`).
122
+ 4. Hosted baseline evidence is green.
123
+ 5. Go-live gate and launch cutover packet reports are present:
124
+ - `artifacts/gates/s13-go-live-gate.json`
125
+ - `artifacts/gates/s13-launch-cutover-packet.json`
126
+ - generated from a successful `go-live-gate` workflow run for the release commit
127
+ 6. NOO-65 promotion guard passes with required artifact binding (`artifacts/gates/release-promotion-guard.json`).
128
+ 7. MCP compatibility matrix is green for supported hosts.
129
+ 8. Paid MCP run artifacts verify cleanly.
130
+ 9. Rollback runbook has been rehearsed.
131
+
132
+ Run the live environment cutover gate before opening traffic:
133
+
134
+ `Actions -> production-cutover-gate -> Run workflow`
135
+
136
+ ## Phase 7: Post-release
137
+
138
+ 1. Monitor `/metrics` + SLO dashboards.
139
+ 2. Track weekly reliability report (`docs/ops/X402_PILOT_WEEKLY_METRICS.md`).
140
+ 3. Re-run compatibility checks on every major host release.