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
package/docs/ACCESS.md ADDED
@@ -0,0 +1,57 @@
1
+ # Access (v0.3)
2
+
3
+ Access is modeled as a first-class, **revocable**, **time-scoped** dependency of a job. Access secrets are never written to the event log; only references are.
4
+
5
+ ## Principles
6
+
7
+ - **No secrets in logs**: the event stream stores `credentialRef` (e.g. `vault://...`), never door codes/passwords.
8
+ - **Scoped and revocable**: access plans are time-bounded and can be revoked instantly.
9
+ - **Execution is gated**: the system rejects execution start without an active access plan and access granted within the plan window.
10
+ - **Revocation forces safe exit**: access revocation transitions the job to a safe-exit mode and rejects further “work” events.
11
+
12
+ ## Events
13
+
14
+ ### `ACCESS_PLAN_ISSUED` (server-signed)
15
+
16
+ Payload shape (current prototype, strict):
17
+
18
+ ```json
19
+ {
20
+ "jobId": "job_123",
21
+ "accessPlanId": "ap_456",
22
+ "method": "SMART_LOCK_CODE|BUILDING_CONCIERGE|ON_SITE_OWNER|DOCKED_IN_BUILDING",
23
+ "credentialRef": "vault://access/ap_456/v1",
24
+ "scope": { "areas": ["ENTRYWAY"], "noGo": ["BEDROOM_2"] },
25
+ "validFrom": "2026-01-26T18:00:00Z",
26
+ "validTo": "2026-01-26T22:00:00Z",
27
+ "revocable": true,
28
+ "requestedBy": "system|customer|ops"
29
+ }
30
+ ```
31
+
32
+ ### `ACCESS_GRANTED` / `ACCESS_DENIED` (robot- or operator-signed)
33
+
34
+ Payload includes the plan reference (no secrets):
35
+
36
+ ```json
37
+ { "jobId": "job_123", "accessPlanId": "ap_456", "method": "BUILDING_CONCIERGE" }
38
+ ```
39
+
40
+ ### `ACCESS_REVOKED` / `ACCESS_EXPIRED` (server-signed in v0.3)
41
+
42
+ ```json
43
+ { "jobId": "job_123", "accessPlanId": "ap_456", "requestedBy": "customer", "reason": "..." }
44
+ ```
45
+
46
+ ## Enforced invariants (v0.3)
47
+
48
+ - `ACCESS_GRANTED`/`ACCESS_DENIED` are rejected unless:
49
+ - an `ACCESS_PLAN_ISSUED` exists, and
50
+ - the `accessPlanId` matches the current plan, and
51
+ - the event timestamp is within `[validFrom, validTo]`.
52
+ - `EXECUTION_STARTED` is rejected unless:
53
+ - an access plan exists, and
54
+ - access is currently granted, and
55
+ - the event timestamp is within the plan window.
56
+ - After `ACCESS_REVOKED`, the job moves to `ABORTING_SAFE_EXIT`, and “work” events are rejected.
57
+
@@ -0,0 +1,44 @@
1
+ # Adoption checklist (design partner ready)
2
+
3
+ Use this as an operational checklist to adopt Settld verification in CI with audit-grade evidence retention.
4
+
5
+ ## Verification posture
6
+
7
+ - Decide strict vs non-strict (`docs/spec/STRICTNESS.md`).
8
+ - Decide whether warnings gate builds (`--fail-on-warnings`, `docs/spec/WARNINGS.md`).
9
+ - Decide required verification outputs to archive:
10
+ - Recommended: archive `VerifyCliOutput.v1` JSON + the bundle itself.
11
+
12
+ ## Trust anchors
13
+
14
+ - Define who owns governance root keys (generation, storage, rotation).
15
+ - Define how trust anchors are distributed to CI (secret store, repo file, env injection).
16
+ - Define update process and emergency rotation response.
17
+
18
+ See `docs/spec/TRUST_ANCHORS.md` and `docs/spec/TOOL_PROVENANCE.md`.
19
+
20
+ ## Key management + governance operations
21
+
22
+ - Who is authorized to sign:
23
+ - bundle head attestations
24
+ - verification reports
25
+ - Rotation and revocation procedures (who triggers, how fast, how communicated).
26
+ - Decide whether timestamp proofs are required for historical acceptance.
27
+
28
+ See `docs/spec/GovernancePolicy.v2.md` and `docs/spec/RevocationList.v1.md`.
29
+
30
+ ## Storage + retention
31
+
32
+ - Where bundles live (artifact store) and retention period.
33
+ - Whether verification happens on:
34
+ - the original produced bundle, or
35
+ - a downloaded bundle copy (must remain byte-identical).
36
+ - Who can access archived bundles and verification receipts.
37
+
38
+ ## Release pinning + upgrades
39
+
40
+ - Pin verifier version (SemVer) for CI stability.
41
+ - Define upgrade cadence and rollback plan.
42
+
43
+ See `docs/spec/VERSIONING.md` and `docs/RELEASING.md`.
44
+
package/docs/ALERTS.md ADDED
@@ -0,0 +1,198 @@
1
+ # Alerts & Runbook (v1)
2
+
3
+ This file defines a minimal “pilot-safe” alert pack and the exact first actions to take when something pages.
4
+
5
+ Settld invariants still apply during incidents:
6
+ - never accept an invalid chain
7
+ - never duplicate external effects
8
+ - never break ledger balance / month-close immutability
9
+
10
+ ## Metrics endpoints
11
+
12
+ - `GET /metrics` emits Prometheus text.
13
+ - Requires an `ops_read` auth key and `x-proxy-tenant-id` header (recommended: a dedicated key for metrics scraping).
14
+ - `GET /healthz` emits a quick JSON status (DB + backlog signals).
15
+ - `GET /ops/status` emits a human-oriented status summary (requires `ops_read`).
16
+
17
+ ## High-signal alerts (recommended)
18
+
19
+ ### 1) Delivery DLQ nonzero (customer impact likely)
20
+
21
+ **Trigger**
22
+ - `delivery_dlq_pending_total_gauge > 0` for 5m
23
+
24
+ **First actions**
25
+ - Call `GET /ops/status` and inspect:
26
+ - `backlog.deliveriesFailed`
27
+ - `backlog.deliveryDlqTopDestinations`
28
+ - List failed deliveries: `GET /ops/deliveries?state=failed&limit=200`
29
+ - If it’s a transient downstream issue, requeue one and confirm it progresses:
30
+ - `POST /ops/deliveries/:id/requeue`
31
+ - If a single destination is broken, fix downstream credentials/endpoint first (do not “mass requeue into a black hole”).
32
+
33
+ ### 2) Outbox backlog stuck (system falling behind)
34
+
35
+ **Trigger**
36
+ - `outbox_pending_gauge > 1000` for 10m
37
+
38
+ **First actions**
39
+ - Call `GET /ops/status` and inspect `backlog.outboxByKind` to see which topic is stuck.
40
+ - Confirm worker progress in logs:
41
+ - outbox claim/start/end
42
+ - delivery retry/DLQ transitions
43
+ - If deliveries are the bottleneck, check Delivery DLQ alert steps above.
44
+
45
+ ### 3) Ledger apply failures (finance correctness risk)
46
+
47
+ **Trigger**
48
+ - `increase(ledger_apply_fail_total[5m]) > 0`
49
+
50
+ **First actions**
51
+ - Treat as “stop-the-world” for finance exports until understood.
52
+ - Inspect logs for `ledger.apply.*` around the failure and identify the entry/job IDs.
53
+ - Verify DB invariants: ledger entries must net to zero; no double-application.
54
+
55
+ ### 4) Ingest rejects spiking (upstream breaking / hostile input)
56
+
57
+ **Trigger**
58
+ - `increase(ingest_rejected_total[5m]) > 50` (tune per pilot volume)
59
+
60
+ **First actions**
61
+ - Call `GET /ops/status` and inspect `reasons.topIngestRejected`.
62
+ - Inspect DLQ: `GET /ops/dlq?type=ingest&limit=200`
63
+ - If the rejects are signature/chain/time issues, fix upstream immediately (do not disable validation).
64
+
65
+ ### 5) Retention cleanup stale / failing (unbounded growth risk)
66
+
67
+ **Trigger**
68
+ - `time() - maintenance_last_success_unixtime{kind="retention_cleanup"} > 3600` (tune to your cadence)
69
+ - If you run cleanup every 300s, 3600s implies “missed many runs”.
70
+ - `maintenance_last_run_ok_gauge{kind="retention_cleanup"} == 0` for 10m
71
+
72
+ **First actions**
73
+ - Check the latest retention audit record:
74
+ - `GET /ops/status` → `maintenance.retentionCleanup`
75
+ - or `GET /ops/audit?limit=50` and filter for `MAINTENANCE_RETENTION_RUN`
76
+ - Run an audited manual cleanup (dry run first):
77
+ - `POST /ops/maintenance/retention/run` with `{ "dryRun": true }`
78
+ - then re-run with `{ "dryRun": false }` if counts look sane
79
+ - If cleanup keeps failing, check DB health and recent migrations first (cleanup is intentionally bounded and should not take locks for long).
80
+
81
+ ### 6) Stripe replayable dead-letter backlog (billing drift risk)
82
+
83
+ **Trigger**
84
+ - `GET /ops/finance/billing/providers/stripe/reconcile/report?limit=200` returns:
85
+ - `replayableRejectedCount > 0` for 15m, or
86
+ - rapidly growing `rejectedReasonCounts.reconcile_apply_failed`.
87
+
88
+ **First actions**
89
+ - Snapshot report + candidate dead-letter events:
90
+ - `GET /ops/finance/billing/providers/stripe/reconcile/report?limit=200`
91
+ - `GET /ops/finance/billing/providers/stripe/dead-letter?limit=200`
92
+ - Execute dry-run replay, then live replay if dry-run is clean:
93
+ - `POST /ops/finance/billing/providers/stripe/dead-letter/replay`
94
+ - Validate post-replay counters and billing plan state.
95
+ - Follow `docs/ops/BILLING_WEBHOOK_REPLAY.md` end-to-end and attach snapshots to incident notes.
96
+
97
+ ### 7) Replay mismatches detected (determinism break)
98
+
99
+ **Trigger**
100
+ - `replay_mismatch_gauge > 0` for 5m
101
+
102
+ **First actions**
103
+ - Treat as critical correctness incident.
104
+ - Check `/ops/status` and `/ops/tool-calls/replay-evaluate` for affected agreement hashes.
105
+ - Freeze rollout/cutover changes and investigate policy/version drift before resuming.
106
+
107
+ ### 8) Disputes over SLA / arbitration over SLA
108
+
109
+ **Trigger**
110
+ - `disputes_over_sla_gauge > 0` for 10m
111
+ - `arbitration_over_sla_gauge > 0` for 10m
112
+
113
+ **First actions**
114
+ - Inspect `/ops/status` command center dispute section and case backlog.
115
+ - Prioritize oldest open disputes and assign arbiter coverage immediately.
116
+ - If backlog is systemic, scale operator staffing/worker capacity before requeueing traffic.
117
+
118
+ ### 9) Stuck holds (economic lock risk)
119
+
120
+ **Trigger**
121
+ - `settlement_holds_over_24h_gauge > 0` for 15m
122
+
123
+ **First actions**
124
+ - Inspect hold status via `/ops/tool-calls/holds`.
125
+ - Correlate open disputes and challenge windows for affected agreement hashes.
126
+ - If holds are blocked by missing verdicts, escalate arbitration path.
127
+
128
+ ### 10) Worker lag (delivery backlog)
129
+
130
+ **Trigger**
131
+ - `worker_deliveries_pending_total_gauge > 1000` for 10m
132
+
133
+ **First actions**
134
+ - Check `/ops/status` backlog and destination health.
135
+ - Verify worker process uptime and claim/retry logs.
136
+ - Scale worker replicas or reduce downstream failure rate before reprocessing.
137
+
138
+ ## Prometheus rule examples
139
+
140
+ These are examples; tune thresholds for your pilot volume and SLOs.
141
+
142
+ ```yaml
143
+ groups:
144
+ - name: settld.alerts
145
+ rules:
146
+ - alert: SettldDeliveryDLQNonzero
147
+ expr: delivery_dlq_pending_total_gauge > 0
148
+ for: 5m
149
+ labels: { severity: page }
150
+ annotations:
151
+ summary: "Settld deliveries in DLQ"
152
+ runbook: "docs/ALERTS.md#1-delivery-dlq-nonzero-customer-impact-likely"
153
+
154
+ - alert: SettldOutboxBacklogHigh
155
+ expr: outbox_pending_gauge > 1000
156
+ for: 10m
157
+ labels: { severity: page }
158
+ annotations:
159
+ summary: "Settld outbox backlog high"
160
+ runbook: "docs/ALERTS.md#2-outbox-backlog-stuck-system-falling-behind"
161
+
162
+ - alert: SettldLedgerApplyFailures
163
+ expr: increase(ledger_apply_fail_total[5m]) > 0
164
+ for: 0m
165
+ labels: { severity: page }
166
+ annotations:
167
+ summary: "Settld ledger apply failures detected"
168
+ runbook: "docs/ALERTS.md#3-ledger-apply-failures-finance-correctness-risk"
169
+
170
+ - alert: SettldIngestRejectSpike
171
+ expr: increase(ingest_rejected_total[5m]) > 50
172
+ for: 5m
173
+ labels: { severity: warn }
174
+ annotations:
175
+ summary: "Settld ingest rejects spiking"
176
+ runbook: "docs/ALERTS.md#4-ingest-rejects-spiking-upstream-breaking--hostile-input"
177
+
178
+ - alert: SettldMaintenanceStaleRetention
179
+ expr: time() - maintenance_last_success_unixtime{kind="retention_cleanup"} > 3600
180
+ for: 10m
181
+ labels: { severity: warn }
182
+ annotations:
183
+ summary: "Settld retention cleanup not succeeding"
184
+ runbook: "docs/ALERTS.md#5-retention-cleanup-stale--failing-unbounded-growth-risk"
185
+
186
+ - alert: SettldReplayMismatchDetected
187
+ expr: replay_mismatch_gauge > 0
188
+ for: 5m
189
+ labels: { severity: page }
190
+ annotations:
191
+ summary: "Replay mismatches detected"
192
+ runbook: "docs/ALERTS.md#7-replay-mismatches-detected-determinism-break"
193
+ ```
194
+
195
+ ## Notes on cardinality
196
+
197
+ - `outbox_pending_gauge{kind=...}` is low-cardinality (bounded set of topics).
198
+ - `delivery_dlq_pending_by_destination_gauge{destinationId=...}` only exposes the top 10 destinations by DLQ depth to stay alertable without exploding metric series.
@@ -0,0 +1,69 @@
1
+ # Settld Architecture (v0)
2
+
3
+ Settld is a **trust fabric + runtime + ledger** for autonomous work.
4
+
5
+ ## Layers (logical)
6
+
7
+ 1. **Marketplace**: RFQs, quotes, booking, payments, scheduling.
8
+ 2. **Operations**: runtime health, dispatch, control loops, human/operator assist.
9
+ 3. **Skills**: packaging, certification, licensing, execution orchestration.
10
+ 4. **Trust**: telemetry black box, incident detection, claims, audits.
11
+
12
+ Ship as a **modular monolith** initially with strict boundaries; split later.
13
+
14
+ ## Architectural spine: jobs + events
15
+
16
+ - A **Job** is a state machine (the “source of truth” for what should happen next).
17
+ - An **Event** is the audit trail (what did happen), emitted by:
18
+ - cloud services (quote created, booking confirmed),
19
+ - agent (entered space, checkpoint done),
20
+ - operator (assist start/end, action approvals),
21
+ - requester (approval granted/revoked, complaint filed).
22
+
23
+ Invariants:
24
+
25
+ - State transitions are explicit and validated.
26
+ - Events are append-only.
27
+ - Every settlement is balanced (sum of postings is zero).
28
+
29
+ ## Core components (eventual)
30
+
31
+ ### Settld Cloud
32
+
33
+ - **Job Orchestrator**: validates and advances job state, emits job events.
34
+ - **Dispatch Service**: matching + reservation + replanning.
35
+ - **Ledger Service**: holds, escrow, settlement, refunds, chargebacks, splits.
36
+ - **Trust Service**: evidence bundling, incident/claims workflow.
37
+ - **Skill Registry**: signed bundles, certification tiers, distribution rules.
38
+
39
+ ### Settld Agent (on/near execution runtime)
40
+
41
+ - Secure channel to cloud (mTLS + rotating certs).
42
+ - Advertises capabilities/health.
43
+ - Downloads/verifies signed skill bundles.
44
+ - Executes job plans and emits telemetry/checkpoints.
45
+ - **Local policy enforcement**: clamps cloud-requested actions to safety bounds.
46
+ - Privacy enforcement (sensor gating, retention rules).
47
+
48
+ ### Operator Assist
49
+
50
+ - Live streaming (WebRTC) + command channel.
51
+ - Structured interventions (approve grasp, set nav target, select object).
52
+ - All operator actions are logged into the black box.
53
+
54
+ ## Data & storage (eventual)
55
+
56
+ - Transactional truth: Postgres (jobs, bookings, entities, ledger).
57
+ - Cache/locks: Redis (reservations, idempotency, rate limits).
58
+ - Event bus: Kafka/PubSub (job events, telemetry envelopes).
59
+ - Evidence: object storage (S3/GCS).
60
+ - Telemetry analytics: log pipeline + time-series for what is queried.
61
+
62
+ ## Security posture (MVP principles)
63
+
64
+ - Device identity and attestation.
65
+ - Signed artifacts (skills) and signed/hashed logs (black box).
66
+ - Principle of least privilege across:
67
+ - access plans (time-bounded, revocable),
68
+ - operator consoles (scoped actions),
69
+ - skills (capability-limited).
@@ -0,0 +1,284 @@
1
+ # Settld Founder Architecture Guide
2
+
3
+ Status date: February 12, 2026
4
+
5
+ ## Why this document exists
6
+
7
+ This is the founder-level map of what Settld is actually building, what is already true in code, and what is still planned.
8
+ It is intentionally opinionated: if a claim is not enforced by code/tests/conformance, it is not treated as shipped truth.
9
+
10
+ ---
11
+
12
+ ## 1) What Settld is
13
+
14
+ Settld is a verifiable execution-and-settlement infrastructure for delegated agent work.
15
+
16
+ The product has two surfaces that share one truth model:
17
+
18
+ 1. Open protocol and verifier toolchain (portable, offline-verifiable)
19
+ 2. Hosted workflow/controller product (Magic Link) that uses the same verification model
20
+
21
+ Core principle: hosted UX is never the only judge.
22
+ Anything shown in hosted flows must be reproducible offline with the open verifier plus explicit trust anchors.
23
+
24
+ Primary references:
25
+
26
+ - `docs/OVERVIEW.md`
27
+ - `docs/spec/README.md`
28
+ - `docs/spec/INVARIANTS.md`
29
+ - `services/magic-link/README.md`
30
+
31
+ ---
32
+
33
+ ## 2) Product surfaces
34
+
35
+ ## Protocol surface (open)
36
+
37
+ - Bundle formats + manifests + attestations + verification reports
38
+ - Deterministic verification semantics and stable warning/error codes
39
+ - Conformance vectors to prevent verifier drift across implementations
40
+
41
+ Key files:
42
+
43
+ - `packages/artifact-verify/bin/settld-verify.js`
44
+ - `packages/artifact-produce/bin/settld-produce.js`
45
+ - `conformance/v1/README.md`
46
+ - `docs/spec/CANONICAL_JSON.md`
47
+ - `docs/spec/STRICTNESS.md`
48
+
49
+ ## Hosted surface (commercial)
50
+
51
+ - Upload + verification workflow (strict/compat/auto)
52
+ - Inbox/reporting/approval/hold flows
53
+ - Webhooks/integrations/billing usage and exports
54
+
55
+ Key files:
56
+
57
+ - `services/magic-link/src/server.js`
58
+ - `services/magic-link/src/tenant-settings.js`
59
+ - `services/magic-link/README.md`
60
+
61
+ ## Economic kernel (shared truth engine)
62
+
63
+ - Event-sourced job lifecycle
64
+ - Deterministic replay
65
+ - Double-entry ledger as accounting truth
66
+
67
+ Key files:
68
+
69
+ - `src/core/job-state-machine.js`
70
+ - `src/core/job-reducer.js`
71
+ - `src/core/ledger.js`
72
+ - `src/core/escrow-ledger.js`
73
+ - `docs/JOB_STATE_MACHINE.md`
74
+ - `docs/LEDGER.md`
75
+
76
+ ---
77
+
78
+ ## 3) What is TRUE today (shipped truth)
79
+
80
+ This section summarizes current shipped truth based on repo state and audit evidence.
81
+
82
+ ## 3.1 Dispute/holdback determinism is enforced
83
+
84
+ - Signed dispute-open envelopes are required for non-admin opens.
85
+ - Envelope/case IDs are deterministic from agreement hash.
86
+ - Artifact ID is bound to envelope ID and validated.
87
+ - Holdback auto-release is frozen while arbitration is open.
88
+
89
+ Evidence:
90
+
91
+ - `src/core/dispute-open-envelope.js`
92
+ - `src/api/app.js`
93
+ - `test/dispute-open-envelope-schemas.test.js`
94
+ - `test/api-e2e-tool-call-holdback-arbitration.test.js`
95
+ - `planning/kernel-v0-truth-audit.md`
96
+
97
+ ## 3.2 Kernel replay and closepack verification flows exist
98
+
99
+ - Tool-call replay evaluation exists in API paths.
100
+ - Closepack export and offline verify are wired and conformance-gated.
101
+
102
+ Evidence:
103
+
104
+ - `src/api/app.js`
105
+ - `scripts/closepack/lib.mjs`
106
+ - `conformance/kernel-v0/run.mjs`
107
+
108
+ ## 3.3 Open protocol and verifier posture is strong
109
+
110
+ - Large, explicit spec surface in `docs/spec/**`
111
+ - Deterministic verifier CLI and conformance vectors in `conformance/v1/**`
112
+ - Security hardening for archive ingestion paths with dedicated tests
113
+
114
+ Evidence:
115
+
116
+ - `docs/spec/INVARIANTS.md`
117
+ - `packages/artifact-verify/src/safe-unzip.js`
118
+ - `test/zip-security.test.js`
119
+ - `conformance/v1/README.md`
120
+
121
+ ## 3.4 Billing catalog alignment is now implemented in Magic Link runtime
122
+
123
+ - Runtime plans now map to `free|builder|growth|enterprise`
124
+ - Legacy `scale` is normalized to `enterprise` for compatibility
125
+ - Hosted pricing/upgrade paths are aligned to the same tier set
126
+
127
+ Evidence:
128
+
129
+ - `services/magic-link/src/tenant-settings.js`
130
+ - `services/magic-link/src/server.js`
131
+ - `test/magic-link-service.test.js`
132
+
133
+ ---
134
+
135
+ ## 4) What is NOT TRUE yet (gaps to close)
136
+
137
+ These are strategic blockers still marked as not shipped end-to-end.
138
+
139
+ ## 4.1 Hosted baseline is not fully productized
140
+
141
+ Status: FALSE (per truth audit)
142
+
143
+ Gap theme:
144
+
145
+ - Staging/prod separation, durable worker model, quotas/rate limits, backup/restore drills, hard evidence of operational readiness
146
+
147
+ Evidence anchor:
148
+
149
+ - `planning/kernel-v0-truth-audit.md`
150
+ - `docs/ops/HOSTED_BASELINE_R2.md`
151
+
152
+ ## 4.2 Real-money settlement alpha is not shipped
153
+
154
+ Status: FALSE (per truth audit)
155
+
156
+ Gap theme:
157
+
158
+ - Stripe Connect mapping + webhook ingestion + reconciliation + chargeback/refund operational policy tied to kernel IDs
159
+
160
+ Evidence anchor:
161
+
162
+ - `planning/kernel-v0-truth-audit.md`
163
+ - `docs/ops/PAYMENTS_ALPHA_R5.md`
164
+
165
+ ## 4.3 Exact tarball `npx --package ./settld-<version>.tgz` CI smoke is partial
166
+
167
+ Status: PARTIAL (per truth audit)
168
+
169
+ Gap theme:
170
+
171
+ - CI covers related smoke paths but not the exact documented local tarball invocation path
172
+
173
+ Evidence anchor:
174
+
175
+ - `planning/kernel-v0-truth-audit.md`
176
+ - `scripts/ci/cli-pack-smoke.mjs`
177
+ - `.github/workflows/release.yml`
178
+
179
+ ## 4.4 Dashboard remains primarily fixture-driven
180
+
181
+ Gap theme:
182
+
183
+ - The dashboard experience is still largely driven by demo fixtures and static exports; live API streaming console remains roadmap work
184
+
185
+ Evidence anchor:
186
+
187
+ - `dashboard/src/hooks/useDemoData.js`
188
+ - `dashboard/src/DemoApp.jsx`
189
+
190
+ ---
191
+
192
+ ## 5) Architecture map (how the code is laid out)
193
+
194
+ ## Ring A: Normative protocol layer
195
+
196
+ Defines what artifacts are and how they verify.
197
+
198
+ - `docs/spec/**`
199
+ - `docs/spec/schemas/**`
200
+ - `conformance/v1/**`
201
+
202
+ ## Ring B: Core domain kernel
203
+
204
+ Pure/domain-centric logic for state transitions, settlement semantics, and ledger invariants.
205
+
206
+ - `src/core/**`
207
+
208
+ ## Ring C: API + persistence truth boundary
209
+
210
+ Operational truth implementation (API orchestration, store abstraction, Postgres durability, workers/outbox).
211
+
212
+ - `src/api/**`
213
+ - `src/db/**`
214
+
215
+ ## Ring D: Productized hosted workflows and integrations
216
+
217
+ Buyer/operator workflow UX and automation around the same verification semantics.
218
+
219
+ - `services/magic-link/**`
220
+ - `packages/*` (SDKs, CLI tooling)
221
+
222
+ ---
223
+
224
+ ## 6) Data and trust flow (end-to-end)
225
+
226
+ 1. Work happens and emits events.
227
+ 2. Events are reduced into deterministic state and ledger consequences.
228
+ 3. Artifacts are produced as bundles with manifest+hash commitments.
229
+ 4. Verifier checks integrity, signatures, invariants, and policy/trust anchors.
230
+ 5. Hosted workflow can display, route decisions, and trigger automations.
231
+ 6. Any external party can re-run verification offline against exported artifacts.
232
+
233
+ The core design win is that commercial workflow convenience does not replace verification truth.
234
+
235
+ ---
236
+
237
+ ## 7) Founder operating metrics and checkpoints
238
+
239
+ ## North-star metric
240
+
241
+ Monthly Verified Settled Value (MVSV)
242
+
243
+ Why it matters:
244
+
245
+ - Captures whether value is being verified and settled, not just “API called”
246
+ - Compounds with volume-based monetization
247
+
248
+ ## Gate checkpoints that matter most now
249
+
250
+ 1. Hosted baseline gate turns TRUE (ops evidence, not docs-only)
251
+ 2. Real-money alpha gate turns TRUE (first design partner cash flow)
252
+ 3. CI tarball smoke gap closes (distribution claim fully evidenced)
253
+
254
+ Reference:
255
+
256
+ - `planning/kernel-v0-truth-audit.md`
257
+
258
+ ---
259
+
260
+ ## 8) Practical reading order for new founder engineers
261
+
262
+ 1. `docs/OVERVIEW.md`
263
+ 2. `planning/kernel-v0-truth-audit.md`
264
+ 3. `docs/spec/INVARIANTS.md`
265
+ 4. `src/core/job-reducer.js`
266
+ 5. `src/core/escrow-ledger.js`
267
+ 6. `packages/artifact-verify/src/invoice-bundle.js`
268
+ 7. `conformance/v1/README.md`
269
+ 8. `services/magic-link/README.md`
270
+ 9. `services/magic-link/src/server.js`
271
+ 10. `test/magic-link-service.test.js`
272
+
273
+ ---
274
+
275
+ ## 9) Founder summary in one page
276
+
277
+ - Settld is building verifiable economic finality for agent work, not just another workflow dashboard.
278
+ - The strongest moat already shipped is protocol determinism + offline verification + conformance.
279
+ - The biggest business-risk gaps are operational/commercial, not core protocol correctness:
280
+ - hosted baseline hardening
281
+ - real-money rail deployment
282
+ - Product messaging and UX should keep emphasizing one non-negotiable differentiator:
283
+ - “You can verify settlement outcomes without trusting our hosted app.”
284
+