settld 0.1.2 → 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,111 @@
1
+ # Quickstart: First verified agent run (Python SDK)
2
+
3
+ Goal: run one end-to-end agent transaction (register identities, append run events, verify `green`, release settlement) using Python.
4
+
5
+ ## 0) Install deps
6
+
7
+ ```sh
8
+ npm ci
9
+ ```
10
+
11
+ ## 1) Start the API with a local ops token
12
+
13
+ ```sh
14
+ export PROXY_OPS_TOKEN=dev_ops_token
15
+ npm run dev:api
16
+ ```
17
+
18
+ ## 2) Create an API key for SDK calls
19
+
20
+ In a second shell:
21
+
22
+ ```sh
23
+ export SETTLD_BASE_URL=http://127.0.0.1:3000
24
+ export SETTLD_TENANT_ID=tenant_default
25
+ export SETTLD_API_KEY="$(
26
+ curl -sS -X POST "$SETTLD_BASE_URL/ops/api-keys" \
27
+ -H "authorization: Bearer $PROXY_OPS_TOKEN" \
28
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
29
+ -H "content-type: application/json" \
30
+ -d '{"scopes":["ops_read","ops_write","finance_read","finance_write","audit_read"],"description":"python sdk quickstart"}' \
31
+ | jq -r '.keyId + "." + .secret'
32
+ )"
33
+ ```
34
+
35
+ ## 3) Run the Python SDK example
36
+
37
+ ```sh
38
+ PYTHONDONTWRITEBYTECODE=1 python3 scripts/examples/sdk-first-verified-run.py
39
+ ```
40
+
41
+ Expected output:
42
+
43
+ ```json
44
+ {
45
+ "runId": "run_sdk_py_...",
46
+ "payeeAgentId": "agt_py_payee_...",
47
+ "payerAgentId": "agt_py_payer_...",
48
+ "runStatus": "completed",
49
+ "verificationStatus": "green",
50
+ "settlementStatus": "released"
51
+ }
52
+ ```
53
+
54
+ ## 4) Use the helper directly in code
55
+
56
+ ```python
57
+ from settld_api_sdk import SettldClient
58
+
59
+ client = SettldClient(
60
+ base_url="http://127.0.0.1:3000",
61
+ tenant_id="tenant_default",
62
+ api_key="keyId.secret",
63
+ x_api_key="magic_link_api_key", # optional for Magic Link deployments that enforce x-api-key
64
+ )
65
+
66
+ result = client.first_verified_run(
67
+ {
68
+ "payee_agent": {"publicKeyPem": "...", "owner": {"ownerType": "service", "ownerId": "svc_a"}},
69
+ "payer_agent": {"publicKeyPem": "...", "owner": {"ownerType": "service", "ownerId": "svc_b"}},
70
+ "payer_credit": {"amountCents": 5000},
71
+ "settlement": {"amountCents": 1200},
72
+ "run": {"taskType": "translation"},
73
+ }
74
+ )
75
+ ```
76
+
77
+ ## 5) Run a paid marketplace RFQ flow
78
+
79
+ ```sh
80
+ PYTHONDONTWRITEBYTECODE=1 python3 scripts/examples/sdk-first-paid-rfq.py
81
+ ```
82
+
83
+ Expected output:
84
+
85
+ ```json
86
+ {
87
+ "rfqId": "rfq_py_...",
88
+ "runId": "run_rfq_py_...",
89
+ "posterAgentId": "agt_py_poster_...",
90
+ "bidderAgentId": "agt_py_bidder_...",
91
+ "verificationStatus": "green",
92
+ "settlementStatus": "released"
93
+ }
94
+ ```
95
+
96
+ ## 6) Pull tenant analytics + trust graph (Magic Link)
97
+
98
+ ```python
99
+ analytics = client.get_tenant_analytics("tenant_default", {"month": "2026-02", "bucket": "day", "limit": 20})
100
+ graph = client.get_tenant_trust_graph("tenant_default", {"month": "2026-02", "minRuns": 1, "maxEdges": 200})
101
+ diff = client.diff_tenant_trust_graph("tenant_default", {"baseMonth": "2026-01", "compareMonth": "2026-02", "limit": 50})
102
+ ```
103
+
104
+ Or run the prebuilt script:
105
+
106
+ ```sh
107
+ SETTLD_BASE_URL=http://127.0.0.1:8787 \
108
+ SETTLD_TENANT_ID=tenant_default \
109
+ SETTLD_X_API_KEY=test_key \
110
+ npm run sdk:analytics:py
111
+ ```
@@ -0,0 +1,54 @@
1
+ # Quickstart: Verify a bundle
2
+
3
+ Goal: verify a Settld bundle directory and produce a stable machine-readable receipt (`VerifyCliOutput.v1`) suitable for CI gating and audit retention.
4
+
5
+ ## From source (this repo)
6
+
7
+ Install dependencies:
8
+
9
+ ```sh
10
+ npm ci
11
+ ```
12
+
13
+ Verify a bundle fixture (strict):
14
+
15
+ ```sh
16
+ export SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON="$(node -e "import fs from 'node:fs'; const t=JSON.parse(fs.readFileSync('test/fixtures/bundles/v1/trust.json','utf8')); process.stdout.write(JSON.stringify(t.governanceRoots||{}))")"
17
+ node packages/artifact-verify/bin/settld-verify.js --format json --strict --job-proof test/fixtures/bundles/v1/jobproof/strict-pass > settld-verify-output.json
18
+ ```
19
+
20
+ Optional: emit SARIF for GitHub annotations:
21
+
22
+ ```sh
23
+ node packages/artifact-verify/bin/settld-verify.js --format sarif --strict --job-proof test/fixtures/bundles/v1/jobproof/strict-pass > settld-verify.sarif
24
+ ```
25
+
26
+ ## Strict vs non-strict
27
+
28
+ - **Strict** (`--strict`): audit posture; missing required protocol surfaces are hard failures.
29
+ - **Non-strict** (omit `--strict`): compatibility posture; missing legacy surfaces become warnings.
30
+
31
+ ## Warnings and CI gating
32
+
33
+ - Warnings are structured codes (see `docs/spec/WARNINGS.md`).
34
+ - To fail CI when warnings exist, add `--fail-on-warnings`.
35
+
36
+ ## Trust anchors
37
+
38
+ Strict verification needs trusted governance root keys. Provide them via:
39
+
40
+ - `SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON`
41
+ - `SETTLD_TRUSTED_TIME_AUTHORITY_KEYS_JSON` (only if you want to verify timestamp proofs)
42
+
43
+ See `docs/spec/TRUST_ANCHORS.md`.
44
+
45
+ ## Output + provenance
46
+
47
+ `settld-verify --format json` emits `VerifyCliOutput.v1`:
48
+
49
+ - `ok`: overall CLI verdict (includes `--fail-on-warnings`)
50
+ - `verificationOk`: underlying verification verdict
51
+ - `errors[]` / `warnings[]`: stable codes, deterministically sorted
52
+ - `tool.version` / `tool.commit`: provenance identifiers
53
+
54
+ If `tool.version` or `tool.commit` cannot be determined, you may see warnings like `TOOL_VERSION_UNKNOWN` / `TOOL_COMMIT_UNKNOWN` (see `docs/spec/TOOL_PROVENANCE.md`).
@@ -0,0 +1,317 @@
1
+ # Quickstart: x402 Gateway (Verify Before Release)
2
+
3
+ Goal: in ~10 minutes, run a local Settld API + a mock x402 upstream + the Settld x402 gateway, then complete a `402 -> authorize -> verify -> release` flow and get a deterministic receipt trail.
4
+
5
+ ## TL;DR (one command)
6
+
7
+ ```bash
8
+ npm ci && npm run quickstart:x402
9
+ ```
10
+
11
+ Success: prints `OK`, `gateId=...`, and `gateStateUrl=...`.
12
+
13
+ By default the script keeps services running until you press Ctrl+C. To run once and exit (CI-friendly):
14
+
15
+ ```bash
16
+ npm ci && SETTLD_QUICKSTART_KEEP_ALIVE=0 npm run quickstart:x402
17
+ ```
18
+
19
+ If you already ran `npm ci` in this repo, you can skip it:
20
+
21
+ ```bash
22
+ npm run quickstart:x402
23
+ ```
24
+
25
+ Ports can be overridden if you already have something running on `3000/8402/9402`:
26
+
27
+ - `SETTLD_QUICKSTART_API_PORT`
28
+ - `SETTLD_QUICKSTART_GATEWAY_PORT`
29
+ - `SETTLD_QUICKSTART_UPSTREAM_PORT`
30
+
31
+ ## 0) Prereqs
32
+
33
+ - Node.js 20+
34
+ - Bash (for the copy/paste snippets below)
35
+ - `curl`
36
+
37
+ Optional:
38
+
39
+ - Docker Engine 20.10+ (only if you want to run the gateway via container)
40
+ - Linux: this quickstart includes Linux-safe Docker networking options (do not assume `host.docker.internal` works without configuration).
41
+
42
+ ## 1) Start a local Settld API (in-memory)
43
+
44
+ From repo root:
45
+
46
+ ```bash
47
+ npm ci
48
+ ```
49
+
50
+ Then:
51
+
52
+ ```bash
53
+ PROXY_OPS_TOKEN=tok_ops PORT=3000 npm run dev:api
54
+ ```
55
+
56
+ In another terminal, confirm:
57
+
58
+ ```bash
59
+ curl -fsS http://127.0.0.1:3000/healthz
60
+ ```
61
+
62
+ ## 2) Mint an API key (no jq required)
63
+
64
+ This mints a tenant API key using the dev ops token (`PROXY_OPS_TOKEN`). The gateway uses `SETTLD_API_KEY` (not the ops token) to call Settld.
65
+
66
+ ```bash
67
+ SETTLD_API_KEY="$(
68
+ set -euo pipefail
69
+ curl -fsS -X POST http://127.0.0.1:3000/ops/api-keys \
70
+ -H "x-proxy-ops-token: tok_ops" \
71
+ -H "authorization: Bearer tok_ops" \
72
+ -H "x-proxy-tenant-id: tenant_default" \
73
+ -H "content-type: application/json" \
74
+ -d '{"scopes":["ops_read","ops_write","finance_read","finance_write","audit_read"],"description":"x402 gateway quickstart"}' \
75
+ | node -e 'let d="";process.stdin.on("data",c=>d+=c);process.stdin.on("end",()=>{const j=JSON.parse(d);if(!j?.keyId||!j?.secret){console.error("unexpected response:",d);process.exit(1)}process.stdout.write(`${j.keyId}.${j.secret}`)})'
76
+ )"
77
+ export SETTLD_API_KEY
78
+ if [ -n "$SETTLD_API_KEY" ]; then
79
+ echo "SETTLD_API_KEY minted"
80
+ else
81
+ echo "FAILED: SETTLD_API_KEY empty" >&2
82
+ fi
83
+ ```
84
+
85
+ ## 3) Start a mock x402 upstream
86
+
87
+ The upstream will return `HTTP 402` with both `x-payment-required` and `PAYMENT-REQUIRED` until the gateway retries with a `SettldPay` authorization token.
88
+
89
+ ```bash
90
+ PORT=9402 \
91
+ SETTLD_PAY_KEYSET_URL='http://127.0.0.1:3000/.well-known/settld-keys.json' \
92
+ node services/x402-gateway/examples/upstream-mock.js
93
+ ```
94
+
95
+ If your Settld API is not on port `3000`, set `SETTLD_PAY_KEYSET_URL` to the correct `/.well-known/settld-keys.json` URL so the provider can verify SettldPay tokens offline.
96
+
97
+ In another terminal:
98
+
99
+ ```bash
100
+ curl -fsS http://127.0.0.1:9402/healthz
101
+ ```
102
+
103
+ ### Strict request binding for side-effecting tools
104
+
105
+ For side-effecting tools, set provider offer `requestBindingMode: "strict"` (or `idempotency: "side_effecting"` in manifests that feed the provider wrapper). In strict mode, provider-kit computes a canonical request fingerprint and requires the SettldPay token payload to carry a matching `requestBindingSha256`. Replaying the same token with a different path/query/body is rejected with `402` and code `SETTLD_PAY_REQUEST_BINDING_MISMATCH`.
106
+
107
+ ## 3.5) Provider signature key (demo)
108
+
109
+ This quickstart uses provider-signed responses as a minimal correctness check:
110
+
111
+ - the upstream mock signs a response hash with Ed25519
112
+ - the gateway verifies the signature before releasing funds
113
+
114
+ Export the upstream mock's dev-only public key:
115
+
116
+ ```bash
117
+ export X402_PROVIDER_PUBLIC_KEY_PEM="$(cat <<'EOF'
118
+ -----BEGIN PUBLIC KEY-----
119
+ MCowBQYDK2VwAyEA7zJ+oQLAO6F4Xewe7yJB1mv5TxsLo5bGZI7ZJPuFB6s=
120
+ -----END PUBLIC KEY-----
121
+ EOF
122
+ )"
123
+ ```
124
+
125
+ ## 4) Start the x402 gateway (thin proxy)
126
+
127
+ ### Option A: run from source (fastest)
128
+
129
+ ```bash
130
+ SETTLD_API_URL="http://127.0.0.1:3000" \
131
+ SETTLD_API_KEY="$SETTLD_API_KEY" \
132
+ UPSTREAM_URL="http://127.0.0.1:9402" \
133
+ HOLDBACK_BPS=0 \
134
+ DISPUTE_WINDOW_MS=3600000 \
135
+ X402_AUTOFUND=1 \
136
+ X402_PROVIDER_PUBLIC_KEY_PEM="$X402_PROVIDER_PUBLIC_KEY_PEM" \
137
+ PORT=8402 \
138
+ npm run dev:x402-gateway
139
+ ```
140
+
141
+ Notes:
142
+
143
+ - `X402_AUTOFUND=1` is for local demo only. It simulates funding the payer so escrow holds can be created without a real payment rail.
144
+
145
+ ### Option B: run via Docker (same config surface)
146
+
147
+ Important:
148
+
149
+ - On macOS/Windows (Docker Desktop), `host.docker.internal` works by default.
150
+ - On Linux, `host.docker.internal` is usually not defined. If you run the gateway in Docker while your Settld API + mock upstream are running on the host, use one of the Linux commands below:
151
+ - Recommended: `--add-host=host.docker.internal:host-gateway` (Docker Engine 20.10+)
152
+ - Alternative: `--network host` and use `127.0.0.1` URLs (not available on Docker Desktop; often not supported with rootless Docker)
153
+
154
+ Pull the image:
155
+
156
+ ```bash
157
+ docker pull ghcr.io/aidenlippert/settld/x402-gateway:latest
158
+ ```
159
+
160
+ If `docker pull` fails with `denied`, either:
161
+
162
+ - build locally from this repo (no dependencies; copies `src/core` + `services/x402-gateway`):
163
+
164
+ ```bash
165
+ docker build -t settld/x402-gateway:local -f services/x402-gateway/Dockerfile .
166
+ ```
167
+
168
+ and replace `ghcr.io/aidenlippert/settld/x402-gateway:latest` with `settld/x402-gateway:local` in the `docker run` commands below.
169
+
170
+ macOS/Windows (Docker Desktop):
171
+
172
+ ```bash
173
+ docker run --rm -p 8402:8402 \
174
+ -e SETTLD_API_URL="http://host.docker.internal:3000" \
175
+ -e SETTLD_API_KEY="$SETTLD_API_KEY" \
176
+ -e UPSTREAM_URL="http://host.docker.internal:9402" \
177
+ -e HOLDBACK_BPS=0 \
178
+ -e DISPUTE_WINDOW_MS=3600000 \
179
+ -e X402_AUTOFUND=1 \
180
+ -e X402_PROVIDER_PUBLIC_KEY_PEM="$X402_PROVIDER_PUBLIC_KEY_PEM" \
181
+ -e PORT=8402 \
182
+ ghcr.io/aidenlippert/settld/x402-gateway:latest
183
+ ```
184
+
185
+ Linux (recommended, bridge networking):
186
+
187
+ ```bash
188
+ docker run --rm -p 8402:8402 \
189
+ --add-host=host.docker.internal:host-gateway \
190
+ -e SETTLD_API_URL="http://host.docker.internal:3000" \
191
+ -e SETTLD_API_KEY="$SETTLD_API_KEY" \
192
+ -e UPSTREAM_URL="http://host.docker.internal:9402" \
193
+ -e HOLDBACK_BPS=0 \
194
+ -e DISPUTE_WINDOW_MS=3600000 \
195
+ -e X402_AUTOFUND=1 \
196
+ -e X402_PROVIDER_PUBLIC_KEY_PEM="$X402_PROVIDER_PUBLIC_KEY_PEM" \
197
+ -e PORT=8402 \
198
+ ghcr.io/aidenlippert/settld/x402-gateway:latest
199
+ ```
200
+
201
+ Linux alternative (host networking):
202
+
203
+ ```bash
204
+ docker run --rm --network host \
205
+ -e SETTLD_API_URL="http://127.0.0.1:3000" \
206
+ -e SETTLD_API_KEY="$SETTLD_API_KEY" \
207
+ -e UPSTREAM_URL="http://127.0.0.1:9402" \
208
+ -e HOLDBACK_BPS=0 \
209
+ -e DISPUTE_WINDOW_MS=3600000 \
210
+ -e X402_AUTOFUND=1 \
211
+ -e X402_PROVIDER_PUBLIC_KEY_PEM="$X402_PROVIDER_PUBLIC_KEY_PEM" \
212
+ -e PORT=8402 \
213
+ ghcr.io/aidenlippert/settld/x402-gateway:latest
214
+ ```
215
+
216
+ Confirm:
217
+
218
+ ```bash
219
+ curl -fsS http://127.0.0.1:8402/healthz
220
+ ```
221
+
222
+ ## 5) Drive the 402 -> verify -> release flow
223
+
224
+ ### 5.0 One-shot smoke test (copy/paste; fails fast)
225
+
226
+ This asserts the expected HTTP status codes and (with the default upstream + gateway config in this doc) checks that the released/refunded cents are consistent.
227
+
228
+ ```bash
229
+ set -euo pipefail
230
+
231
+ h402="$(curl -sS -D - -o /dev/null http://127.0.0.1:8402/resource)"
232
+ echo "$h402" | grep -qE '^HTTP/.* 402 '
233
+ echo "$h402" | grep -qi '^x-payment-required:'
234
+ amount_cents="$(echo "$h402" | tr -d '\r' | grep -i '^x-payment-required:' | sed -n 's/.*amountCents=\([0-9][0-9]*\).*/\1/p' | head -n 1)"
235
+ test -n "$amount_cents"
236
+ GATE_ID="$(echo "$h402" | awk 'tolower($1) == "x-settld-gate-id:" {print $2}' | tr -d '\r' | head -n 1)"
237
+ test -n "$GATE_ID"
238
+ echo "gateId=$GATE_ID"
239
+
240
+ h200="$(curl -sS -D - -o /dev/null http://127.0.0.1:8402/resource -H "x-settld-gate-id: $GATE_ID")"
241
+ echo "$h200" | grep -qE '^HTTP/.* 200 '
242
+
243
+ settlement_status="$(echo "$h200" | awk 'tolower($1) == "x-settld-settlement-status:" {print $2}' | tr -d '\r' | head -n 1)"
244
+ released_cents="$(echo "$h200" | awk 'tolower($1) == "x-settld-released-amount-cents:" {print $2}' | tr -d '\r' | head -n 1)"
245
+ refunded_cents="$(echo "$h200" | awk 'tolower($1) == "x-settld-refunded-amount-cents:" {print $2}' | tr -d '\r' | head -n 1)"
246
+ test "$settlement_status" = "released"
247
+ test "$released_cents" = "$amount_cents"
248
+ test "$refunded_cents" = "0"
249
+
250
+ echo "OK"
251
+ ```
252
+
253
+ Notes:
254
+
255
+ - If you set `HOLDBACK_BPS>0`, the gateway may emit `x-settld-holdback-*` headers (a follow-on settlement).
256
+
257
+ ### 5.1 First request (expect 402 + x-settld-gate-id)
258
+
259
+ ```bash
260
+ curl -isS http://127.0.0.1:8402/resource | sed -n '1,40p'
261
+ ```
262
+
263
+ Extract the gate id:
264
+
265
+ ```bash
266
+ GATE_ID="$(
267
+ curl -isS http://127.0.0.1:8402/resource \
268
+ | awk 'tolower($1) == "x-settld-gate-id:" {print $2}' \
269
+ | tr -d '\r' \
270
+ | head -n 1
271
+ )"
272
+ echo "gateId=$GATE_ID"
273
+ ```
274
+
275
+ ### 5.2 Second request (retry with gate id; gateway auto-authorizes payment)
276
+
277
+ ```bash
278
+ curl -isS http://127.0.0.1:8402/resource \
279
+ -H "x-settld-gate-id: $GATE_ID" | sed -n '1,80p'
280
+ ```
281
+
282
+ You should see:
283
+
284
+ - `HTTP 200`
285
+ - `x-settld-response-sha256: ...`
286
+ - `x-settld-verification-status: green|red`
287
+ - `x-settld-verification-codes: ...` (optional; reason codes when verification is forced red)
288
+ - `x-settld-settlement-status: released`
289
+ - `x-settld-released-amount-cents`, `x-settld-refunded-amount-cents`
290
+ - `x-settld-holdback-status`, `x-settld-holdback-amount-cents` (when `HOLDBACK_BPS>0`)
291
+
292
+ ## 6) Inspect the gate state (optional)
293
+
294
+ ```bash
295
+ curl -fsS "http://127.0.0.1:3000/x402/gate/$GATE_ID" \
296
+ -H "x-proxy-tenant-id: tenant_default" \
297
+ -H "authorization: Bearer $SETTLD_API_KEY" \
298
+ -H "x-settld-protocol: 1.0"
299
+ ```
300
+
301
+ You can also inspect the gateway signing keyset used for `SettldPay` verification:
302
+
303
+ ```bash
304
+ curl -fsS "http://127.0.0.1:3000/.well-known/settld-keys.json"
305
+ ```
306
+
307
+ ## Troubleshooting
308
+
309
+ - If the gateway never returns `x-settld-gate-id`, your upstream likely isn’t returning `402` with `x-payment-required`.
310
+ - If `/x402/gate/verify` fails with insufficient funds, you forgot `X402_AUTOFUND=1` (local demo) or you need a real funding path wired in.
311
+ - Linux + Docker: if the gateway container can’t reach `http://host.docker.internal:3000` / `:9402`, use `--add-host=host.docker.internal:host-gateway` or `--network host` (and point `SETTLD_API_URL`/`UPSTREAM_URL` at `http://127.0.0.1:...`).
312
+ - If you see `EADDRINUSE` (port already in use), pick different ports (the one-command quickstart supports `SETTLD_QUICKSTART_API_PORT`, `SETTLD_QUICKSTART_UPSTREAM_PORT`, and `SETTLD_QUICKSTART_GATEWAY_PORT`).
313
+
314
+ If you tried and failed:
315
+
316
+ - Run `./scripts/collect-debug.sh` and attach the resulting `settld-debug-*.tar.gz` to a GitHub issue using the "Quickstart failure" template:
317
+ - https://github.com/aidenlippert/settld/issues/new?template=quickstart-failure.yml
package/docs/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # Settld Documentation Index
2
+
3
+ This root docs index is for GitBook sync setups using project directory `docs`.
4
+
5
+ For curated public docs, start here:
6
+
7
+ - [Settld Docs home](./gitbook/README.md)
8
+ - [Quickstart](./gitbook/quickstart.md)
9
+ - [Core Primitives](./gitbook/core-primitives.md)
10
+ - [API Reference](./gitbook/api-reference.md)
11
+ - [Conformance](./gitbook/conformance.md)
12
+ - [Closepacks](./gitbook/closepacks.md)
13
+ - [Guides](./gitbook/guides.md)
14
+ - [Security Model](./gitbook/security-model.md)
15
+ - [FAQ](./gitbook/faq.md)
@@ -0,0 +1,156 @@
1
+ # Release Checklist (v1.0.0+)
2
+
3
+ This checklist is the “no surprises” gate for shipping Settld as a product (not just a repo).
4
+
5
+ ## Preconditions
6
+
7
+ - `npm test` is green on main.
8
+ - `CHANGELOG.md` is updated and accurate.
9
+ - Protocol v1 freeze gate is satisfied (no accidental v1 schema/vector drift).
10
+ - Minimum production topology is defined for the target environment:
11
+ - `docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md`
12
+ - Production deployment checklist is prepared for this release:
13
+ - `docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md`
14
+ - Staging billing smoke secrets are configured for `.github/workflows/release.yml`:
15
+ - `SETTLD_STAGING_BASE_URL`
16
+ - `SETTLD_STAGING_OPS_TOKEN`
17
+ - npm publish secret is configured for `.github/workflows/release.yml` if you want direct registry distribution:
18
+ - `NPM_TOKEN`
19
+ - PyPI Trusted Publisher is configured for `.github/workflows/release.yml` and the `pypi` GitHub environment is allowed.
20
+ - PyPI Trusted Publisher is configured for `.github/workflows/python-pypi.yml` and the `pypi` GitHub environment is allowed (if using the Python-only lane).
21
+ - TestPyPI Trusted Publisher is configured for `.github/workflows/python-testpypi.yml` and the `testpypi` GitHub environment is allowed.
22
+
23
+ ## Required release artifacts
24
+
25
+ For a v1 freeze release, the GitHub Release MUST include:
26
+
27
+ - npm tarballs (`*.tgz`) + `npm-SHA256SUMS`
28
+ - includes `settld-*.tgz` (CLI distribution for `npx --package ... settld ...`)
29
+ - optional registry publish lane (if `NPM_TOKEN` present) publishes `settld`, `settld-api-sdk`, `@settld/provider-kit`, and `create-settld-paid-tool`
30
+ - Python distributions (`*.whl`, `*.tar.gz`) + `python-SHA256SUMS`
31
+ - `conformance-v1.tar.gz` + `conformance-v1-SHA256SUMS`
32
+ - `settld-audit-packet-v1.zip` + `settld-audit-packet-v1.zip.sha256`
33
+ - `release_index_v1.json` + `release_index_v1.sig` (signed release manifest)
34
+
35
+ Release-gate evidence should also include:
36
+
37
+ - `billing-smoke-prod.log`
38
+ - `billing-smoke-status.json`
39
+ - `npm-postpublish-smoke-<version>` artifact (when `NPM_TOKEN` is configured), containing:
40
+ - `provider-kit-npm-view-version.txt`
41
+ - `create-settld-paid-tool-npm-view-version.txt`
42
+ - `settld-npx-version.txt`
43
+ - `settld-kernel-cases.txt`
44
+ - `settld-help.txt`
45
+ - `create-settld-paid-tool-help.txt`
46
+ - `npm-postpublish-smoke.json`
47
+ - `artifacts/throughput/10x-drill-summary.json`
48
+ - `artifacts/gates/s13-go-live-gate.json`
49
+ - `artifacts/gates/s13-launch-cutover-packet.json`
50
+
51
+ See `docs/spec/SUPPLY_CHAIN.md` for the release-channel threat model and verification posture.
52
+
53
+ ## Local build + verification (recommended)
54
+
55
+ Build all artifacts locally:
56
+
57
+ ```sh
58
+ python3 -m pip install --disable-pip-version-check --no-input build
59
+ node scripts/release/build-artifacts.mjs --out dist/release-artifacts
60
+ ```
61
+
62
+ If you want to produce a locally-signed `ReleaseIndex.v1` too, provide a release signing key:
63
+
64
+ ```sh
65
+ export SETTLD_RELEASE_SIGNING_PRIVATE_KEY_PEM="$(cat /path/to/release_ed25519_private_key.pem)"
66
+ node scripts/release/build-artifacts.mjs --out dist/release-artifacts --sign-release-index
67
+ ```
68
+
69
+ Verify release checksums:
70
+
71
+ ```sh
72
+ (cd dist/release-artifacts && sha256sum -c SHA256SUMS)
73
+ ```
74
+
75
+ Validate conformance from the produced artifacts:
76
+
77
+ ```sh
78
+ (cd dist/release-artifacts && tar -xzf conformance-v1.tar.gz)
79
+ node conformance-v1/run.mjs --node-bin packages/artifact-verify/bin/settld-verify.js
80
+ ```
81
+
82
+ Validate release assets (checksums + archive contents):
83
+
84
+ ```sh
85
+ node scripts/release/validate-release-assets.mjs --dir dist/release-artifacts
86
+ ```
87
+
88
+ Verify release index signature + artifact hashes:
89
+
90
+ ```sh
91
+ node scripts/release/verify-release.mjs --dir dist/release-artifacts --format json
92
+ ```
93
+
94
+ Preferred operator CLI (same contract, packaged):
95
+
96
+ ```sh
97
+ node packages/artifact-verify/bin/settld-release.js verify --dir dist/release-artifacts --trust-file trust/release-trust.json --format json --explain
98
+ ```
99
+
100
+ ## Release candidates
101
+
102
+ Use SemVer pre-release tags for RCs (e.g. `v1.0.0-rc.1`). RCs must meet the same artifact completeness and conformance gates as final releases.
103
+
104
+ Recommended Python dry-run before final tag release:
105
+
106
+ - Trigger `.github/workflows/python-testpypi.yml` with the target `version`.
107
+ - Confirm wheel/sdist publish succeeded on TestPyPI.
108
+ - Smoke-install from TestPyPI in a clean environment.
109
+
110
+ ## Tag + release
111
+
112
+ - Create and push a tag: `vX.Y.Z`.
113
+ - The `release` workflow will:
114
+ - build and attach npm artifacts + checksums
115
+ - build and attach Python distribution artifacts + checksums
116
+ - publish Python distributions to PyPI (Trusted Publishing/OIDC)
117
+ - attach conformance pack + checksum
118
+ - attach audit packet zip + checksum
119
+
120
+ ## Kernel v0 ship gate
121
+
122
+ Before any Kernel v0 release candidate or public OSS push, run:
123
+
124
+ ```sh
125
+ node scripts/ci/run-kernel-v0-ship-gate.mjs
126
+ ```
127
+
128
+ Required report:
129
+
130
+ - `artifacts/gates/kernel-v0-ship-gate.json`
131
+
132
+ Runbook:
133
+
134
+ - `docs/ops/KERNEL_V0_SHIP_GATE.md`
135
+
136
+ ## S13 launch gate (pre-cutover)
137
+
138
+ Before production cutover, run:
139
+
140
+ ```sh
141
+ node scripts/ci/run-go-live-gate.mjs
142
+ ```
143
+
144
+ Required gate reports:
145
+
146
+ - `artifacts/throughput/10x-drill-summary.json`
147
+ - `artifacts/throughput/10x-incident-rehearsal-summary.json`
148
+ - `artifacts/gates/s13-go-live-gate.json`
149
+ - `artifacts/gates/s13-launch-cutover-packet.json`
150
+
151
+ Related runbooks:
152
+
153
+ - `docs/ops/THROUGHPUT_DRILL_10X.md`
154
+ - `docs/ops/GO_LIVE_GATE_S13.md`
155
+ - `docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md`
156
+ - `docs/ops/MCP_COMPATIBILITY_MATRIX.md`