settld 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +93 -3
  2. package/SETTLD_VERSION +1 -1
  3. package/bin/settld-mcp +2 -0
  4. package/bin/settld.js +71 -0
  5. package/conformance/kernel-v0/README.md +7 -0
  6. package/conformance/kernel-v0/run.mjs +292 -4
  7. package/docs/ACCESS.md +57 -0
  8. package/docs/ADOPTION_CHECKLIST.md +44 -0
  9. package/docs/ALERTS.md +198 -0
  10. package/docs/ARCHITECTURE.md +69 -0
  11. package/docs/ARCHITECTURE_FOUNDER_GUIDE.md +284 -0
  12. package/docs/ARTIFACTS.md +60 -0
  13. package/docs/CERTIFICATION_CHECKLIST.md +33 -0
  14. package/docs/CIRCLE_SANDBOX_E2E.md +152 -0
  15. package/docs/CONFIG.md +297 -0
  16. package/docs/CONTRACTS_APIS.md +23 -0
  17. package/docs/DEPRECATION.md +31 -0
  18. package/docs/DOMAIN_MODEL.md +92 -0
  19. package/docs/EVENT_ENVELOPE.md +53 -0
  20. package/docs/FINANCE_PACK_FORMAT.md +53 -0
  21. package/docs/INCIDENT_TAXONOMY.md +30 -0
  22. package/docs/JOB_STATE_MACHINE.md +66 -0
  23. package/docs/KERNEL_COMPATIBLE.md +60 -0
  24. package/docs/KERNEL_V0.md +40 -0
  25. package/docs/KEY_ROTATION.md +80 -0
  26. package/docs/LEDGER.md +82 -0
  27. package/docs/LIVENESS.md +76 -0
  28. package/docs/MVP_BUILD_ORDER.md +36 -0
  29. package/docs/ONCALL_PLAYBOOK.md +39 -0
  30. package/docs/OPERATIONS_SIGNING.md +20 -0
  31. package/docs/OVERVIEW.md +190 -0
  32. package/docs/PERF_BASELINE.md +85 -0
  33. package/docs/PRD.md +77 -0
  34. package/docs/QUICKSTART_KERNEL_V0.md +96 -0
  35. package/docs/QUICKSTART_MCP.md +377 -0
  36. package/docs/QUICKSTART_MCP_HOSTS.md +210 -0
  37. package/docs/QUICKSTART_POLICY_PACKS.md +65 -0
  38. package/docs/QUICKSTART_PRODUCE.md +61 -0
  39. package/docs/QUICKSTART_PROFILES.md +198 -0
  40. package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
  41. package/docs/QUICKSTART_SDK.md +125 -0
  42. package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
  43. package/docs/QUICKSTART_VERIFY.md +54 -0
  44. package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
  45. package/docs/README.md +33 -0
  46. package/docs/RELEASE_CHECKLIST.md +182 -0
  47. package/docs/RELEASING.md +82 -0
  48. package/docs/REPO_SETTINGS.md +37 -0
  49. package/docs/RUNBOOK.md +86 -0
  50. package/docs/SKILLS.md +42 -0
  51. package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
  52. package/docs/SLO.md +131 -0
  53. package/docs/SUMMARY.md +17 -0
  54. package/docs/SUPPORT.md +31 -0
  55. package/docs/THREAT_MODEL.md +36 -0
  56. package/docs/TRUST.md +59 -0
  57. package/docs/WORKFLOW.md +35 -0
  58. package/docs/X402_BATCH_SETTLEMENT.md +126 -0
  59. package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
  60. package/docs/examples/x402-provider-payout-registry.example.json +14 -0
  61. package/docs/gitbook/README.md +64 -0
  62. package/docs/gitbook/SETUP.md +25 -0
  63. package/docs/gitbook/SUMMARY.md +15 -0
  64. package/docs/gitbook/api-reference.md +73 -0
  65. package/docs/gitbook/closepacks.md +55 -0
  66. package/docs/gitbook/conformance.md +59 -0
  67. package/docs/gitbook/core-primitives.md +85 -0
  68. package/docs/gitbook/dispute-lifecycle.md +33 -0
  69. package/docs/gitbook/faq.md +21 -0
  70. package/docs/gitbook/guides.md +49 -0
  71. package/docs/gitbook/operations-runbook.md +36 -0
  72. package/docs/gitbook/quickstart.md +103 -0
  73. package/docs/gitbook/replay-and-audit.md +30 -0
  74. package/docs/gitbook/sdk-reference.md +35 -0
  75. package/docs/gitbook/security-model.md +58 -0
  76. package/docs/integrations/README.md +15 -0
  77. package/docs/integrations/github-actions-verify.yml +31 -0
  78. package/docs/integrations/github-actions.md +34 -0
  79. package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
  80. package/docs/integrations/openclaw/PUBLIC_QUICKSTART.md +95 -0
  81. package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
  82. package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
  83. package/docs/kernel-compatible/capabilities.json +36 -0
  84. package/docs/marketing/agent-commerce-substrate.md +78 -0
  85. package/docs/marketing/hn-repost-2026-02-17.md +102 -0
  86. package/docs/marketing/show-hn-post.md +45 -0
  87. package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
  88. package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
  89. package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
  90. package/docs/ops/DISPUTE_FINANCE_RECONCILIATION_PACKET.md +56 -0
  91. package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
  92. package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
  93. package/docs/ops/KERNEL_V0_SHIP_GATE.md +69 -0
  94. package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
  95. package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +30 -0
  96. package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
  97. package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
  98. package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
  99. package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
  100. package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +140 -0
  101. package/docs/ops/R1_SLOS.md +66 -0
  102. package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
  103. package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
  104. package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
  105. package/docs/ops/TRUST_CONFIG_WIZARD.md +60 -0
  106. package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
  107. package/docs/ops/tool-call-disputes-holdback.md +52 -0
  108. package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
  109. package/docs/pilot-kit/README.md +29 -0
  110. package/docs/pilot-kit/architecture-one-pager.md +48 -0
  111. package/docs/pilot-kit/buyer-email.txt +19 -0
  112. package/docs/pilot-kit/buyer-one-pager.md +31 -0
  113. package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
  114. package/docs/pilot-kit/offline-verify.md +33 -0
  115. package/docs/pilot-kit/procurement-one-pager.md +50 -0
  116. package/docs/pilot-kit/rfp-clause.md +46 -0
  117. package/docs/pilot-kit/roi-calculator-template.csv +2 -0
  118. package/docs/pilot-kit/security-qa.md +153 -0
  119. package/docs/pilot-kit/security-summary.md +35 -0
  120. package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
  121. package/docs/plans/2026-02-20-trust-os-v1-jira-backlog.md +348 -0
  122. package/docs/plans/2026-02-21-agent-economic-actor-operating-model.md +169 -0
  123. package/docs/plans/2026-02-21-trust-os-v1-strategy.md +241 -0
  124. package/docs/research/2026-02-21-agent-spend-host-landscape.md +57 -0
  125. package/docs/spec/AcceptanceCriteria.v1.md +17 -0
  126. package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
  127. package/docs/spec/AgentEvent.v1.md +47 -0
  128. package/docs/spec/AgentIdentity.v1.md +62 -0
  129. package/docs/spec/AgentPassport.v1.md +95 -0
  130. package/docs/spec/AgentReputation.v1.md +59 -0
  131. package/docs/spec/AgentReputation.v2.md +52 -0
  132. package/docs/spec/AgentRun.v1.md +47 -0
  133. package/docs/spec/AgentRunSettlement.v1.md +52 -0
  134. package/docs/spec/AgentWallet.v1.md +43 -0
  135. package/docs/spec/AgreementDelegation.v1.md +109 -0
  136. package/docs/spec/ArbitrationCase.v1.md +67 -0
  137. package/docs/spec/ArbitrationOutcomeMapping.v1.md +62 -0
  138. package/docs/spec/ArbitrationVerdict.v1.md +60 -0
  139. package/docs/spec/BundleHeadAttestation.v1.md +32 -0
  140. package/docs/spec/CANONICAL_JSON.md +31 -0
  141. package/docs/spec/CRYPTOGRAPHY.md +61 -0
  142. package/docs/spec/ClosePack.v1.md +49 -0
  143. package/docs/spec/ClosePackManifest.v1.md +24 -0
  144. package/docs/spec/DelegationGrant.v1.md +90 -0
  145. package/docs/spec/DisputeCaseLifecycle.v1.md +51 -0
  146. package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
  147. package/docs/spec/ERRORS.md +76 -0
  148. package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
  149. package/docs/spec/EvidenceIndex.v1.md +20 -0
  150. package/docs/spec/ExecutionIntent.v1.md +90 -0
  151. package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
  152. package/docs/spec/FundingHold.v1.md +60 -0
  153. package/docs/spec/GovernancePolicy.v1.md +34 -0
  154. package/docs/spec/GovernancePolicy.v2.md +30 -0
  155. package/docs/spec/INVARIANTS.md +389 -0
  156. package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
  157. package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
  158. package/docs/spec/InvoiceClaim.v1.md +11 -0
  159. package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
  160. package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
  161. package/docs/spec/MarketplaceOffer.v2.md +54 -0
  162. package/docs/spec/MeteringReport.v1.md +18 -0
  163. package/docs/spec/OperatorAction.v1.md +90 -0
  164. package/docs/spec/PRODUCER_ERRORS.md +42 -0
  165. package/docs/spec/PolicyDecision.v1.md +83 -0
  166. package/docs/spec/PricingMatrix.v1.md +20 -0
  167. package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
  168. package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
  169. package/docs/spec/ProduceCliOutput.v1.md +46 -0
  170. package/docs/spec/ProofBundleManifest.v1.md +24 -0
  171. package/docs/spec/README.md +109 -0
  172. package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
  173. package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
  174. package/docs/spec/REMOTE_SIGNER.md +66 -0
  175. package/docs/spec/ReleaseIndex.v1.md +32 -0
  176. package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
  177. package/docs/spec/ReleaseTrust.v1.md +13 -0
  178. package/docs/spec/ReleaseTrust.v2.md +26 -0
  179. package/docs/spec/RemoteSignerRequest.v1.md +21 -0
  180. package/docs/spec/RemoteSignerResponse.v1.md +16 -0
  181. package/docs/spec/ReputationEvent.v1.md +63 -0
  182. package/docs/spec/RevocationList.v1.md +28 -0
  183. package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
  184. package/docs/spec/STRICTNESS.md +68 -0
  185. package/docs/spec/SUPPLY_CHAIN.md +33 -0
  186. package/docs/spec/SettlementAdjustment.v1.md +45 -0
  187. package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
  188. package/docs/spec/SettlementDecisionRecord.v2.md +53 -0
  189. package/docs/spec/SettlementDecisionReport.v1.md +44 -0
  190. package/docs/spec/SettlementKernel.v1.md +59 -0
  191. package/docs/spec/SettlementReceipt.v1.md +63 -0
  192. package/docs/spec/SlaDefinition.v1.md +24 -0
  193. package/docs/spec/SlaEvaluation.v1.md +12 -0
  194. package/docs/spec/THREAT_MODEL.md +113 -0
  195. package/docs/spec/TOOL_PROVENANCE.md +30 -0
  196. package/docs/spec/TRUST_ANCHORS.md +84 -0
  197. package/docs/spec/TenantSettings.v1.md +90 -0
  198. package/docs/spec/TenantSettings.v2.md +99 -0
  199. package/docs/spec/TimestampProof.v1.md +25 -0
  200. package/docs/spec/ToolCallAgreement.v1.md +34 -0
  201. package/docs/spec/ToolCallEvidence.v1.md +47 -0
  202. package/docs/spec/ToolManifest.v1.md +47 -0
  203. package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
  204. package/docs/spec/VERSIONING.md +107 -0
  205. package/docs/spec/VerificationReport.v1.md +50 -0
  206. package/docs/spec/VerifyAboutOutput.v1.md +10 -0
  207. package/docs/spec/VerifyCliOutput.v1.md +28 -0
  208. package/docs/spec/WARNINGS.md +83 -0
  209. package/docs/spec/error-codes.v1.txt +285 -0
  210. package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
  211. package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
  212. package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
  213. package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
  214. package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
  215. package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
  216. package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
  217. package/docs/spec/examples/release_index_v1.example.json +15 -0
  218. package/docs/spec/examples/release_trust_v1.example.json +7 -0
  219. package/docs/spec/examples/release_trust_v2.example.json +22 -0
  220. package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
  221. package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
  222. package/docs/spec/examples/reputation_event_v1.example.json +29 -0
  223. package/docs/spec/examples/verification_report_v1.example.json +24 -0
  224. package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
  225. package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
  226. package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
  227. package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
  228. package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
  229. package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
  230. package/docs/spec/producer-error-codes.v1.txt +14 -0
  231. package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
  232. package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
  233. package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
  234. package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
  235. package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
  236. package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
  237. package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
  238. package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
  239. package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
  240. package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
  241. package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
  242. package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
  243. package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
  244. package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
  245. package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
  246. package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
  247. package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
  248. package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
  249. package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
  250. package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
  251. package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
  252. package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
  253. package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
  254. package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
  255. package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
  256. package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
  257. package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
  258. package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
  259. package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
  260. package/docs/spec/schemas/OperatorAction.v1.schema.json +113 -0
  261. package/docs/spec/schemas/PolicyDecision.v1.schema.json +74 -0
  262. package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
  263. package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
  264. package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
  265. package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
  266. package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
  267. package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
  268. package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
  269. package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
  270. package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
  271. package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
  272. package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
  273. package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
  274. package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
  275. package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
  276. package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
  277. package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
  278. package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
  279. package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
  280. package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
  281. package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
  282. package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +149 -0
  283. package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
  284. package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
  285. package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
  286. package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
  287. package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
  288. package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
  289. package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
  290. package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
  291. package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
  292. package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
  293. package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
  294. package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
  295. package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
  296. package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
  297. package/docs/spec/x402-error-codes.v1.txt +35 -0
  298. package/docs/templates/buyer-email.txt +18 -0
  299. package/docs/templates/buyer-one-pager.md +24 -0
  300. package/package.json +53 -6
  301. package/scripts/acceptance/full-stack.mjs +734 -0
  302. package/scripts/acceptance/full-stack.sh +99 -0
  303. package/scripts/audit/build-audit-packet.mjs +242 -0
  304. package/scripts/backup-pg.sh +45 -0
  305. package/scripts/backup-restore/README.md +18 -0
  306. package/scripts/backup-restore/capture-state.mjs +130 -0
  307. package/scripts/backup-restore/client.mjs +97 -0
  308. package/scripts/backup-restore/seed-workload.mjs +235 -0
  309. package/scripts/backup-restore/verify-state.mjs +139 -0
  310. package/scripts/backup-restore-test.sh +217 -0
  311. package/scripts/chaos.js +221 -0
  312. package/scripts/ci/build-launch-cutover-packet.mjs +304 -0
  313. package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
  314. package/scripts/ci/changelog-guard.mjs +145 -0
  315. package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
  316. package/scripts/ci/check-secret-hygiene.mjs +78 -0
  317. package/scripts/ci/check-version-consistency.mjs +42 -0
  318. package/scripts/ci/cli-pack-smoke.mjs +160 -0
  319. package/scripts/ci/flake-budget-guard.mjs +68 -0
  320. package/scripts/ci/generate-error-codes.mjs +54 -0
  321. package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
  322. package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
  323. package/scripts/ci/npm-pack-smoke.mjs +454 -0
  324. package/scripts/ci/run-10x-throughput-drill.mjs +318 -0
  325. package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +368 -0
  326. package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
  327. package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
  328. package/scripts/ci/run-go-live-gate.mjs +150 -0
  329. package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
  330. package/scripts/ci/run-mcp-host-cert-matrix.mjs +201 -0
  331. package/scripts/ci/run-mcp-host-smoke.mjs +473 -0
  332. package/scripts/ci/run-offline-verification-parity-gate.mjs +762 -0
  333. package/scripts/ci/run-onboarding-host-success-gate.mjs +516 -0
  334. package/scripts/ci/run-onboarding-policy-slo-gate.mjs +537 -0
  335. package/scripts/ci/run-production-cutover-gate.mjs +540 -0
  336. package/scripts/ci/run-public-openclaw-npx-smoke.mjs +148 -0
  337. package/scripts/ci/run-release-promotion-guard.mjs +756 -0
  338. package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
  339. package/scripts/ci/runtime-import-smoke.mjs +58 -0
  340. package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
  341. package/scripts/closepack/lib.mjs +286 -0
  342. package/scripts/collect-debug.sh +263 -0
  343. package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
  344. package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
  345. package/scripts/demo/delivery-robot/generate.mjs +377 -0
  346. package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
  347. package/scripts/demo/magic-link-first-green.mjs +118 -0
  348. package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
  349. package/scripts/demo/mcp-paid-exa.mjs +1110 -0
  350. package/scripts/dev/billing-doctor.sh +145 -0
  351. package/scripts/dev/billing-smoke-prod.sh +219 -0
  352. package/scripts/dev/billing-webhook-replay.sh +161 -0
  353. package/scripts/dev/env.dev.example +29 -0
  354. package/scripts/dev/env.sh +37 -0
  355. package/scripts/dev/new-sdk-key.sh +81 -0
  356. package/scripts/dev/sdk-first-run.sh +21 -0
  357. package/scripts/dev/smoke-x402-gateway.sh +115 -0
  358. package/scripts/dev/start-api.sh +24 -0
  359. package/scripts/doctor/mcp-host.mjs +120 -0
  360. package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
  361. package/scripts/examples/sdk-first-paid-rfq.py +105 -0
  362. package/scripts/examples/sdk-first-verified-run.mjs +85 -0
  363. package/scripts/examples/sdk-first-verified-run.py +99 -0
  364. package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
  365. package/scripts/examples/sdk-tenant-analytics.py +118 -0
  366. package/scripts/finance-pack/bundle.mjs +284 -0
  367. package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
  368. package/scripts/governance/export.mjs +169 -0
  369. package/scripts/load/delivery-stress.k6.js +183 -0
  370. package/scripts/load/ingest-burst.k6.js +236 -0
  371. package/scripts/load/run-delivery-load.js +66 -0
  372. package/scripts/load/webhook-receiver.js +131 -0
  373. package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
  374. package/scripts/mcp/probe.mjs +238 -0
  375. package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
  376. package/scripts/mcp/settld-mcp-server.mjs +1511 -0
  377. package/scripts/openapi/write.mjs +13 -0
  378. package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
  379. package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
  380. package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
  381. package/scripts/ops/design-partner-run-packet.mjs +466 -0
  382. package/scripts/ops/dispute-finance-reconciliation-packet.mjs +313 -0
  383. package/scripts/ops/hosted-baseline-evidence.mjs +890 -0
  384. package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
  385. package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
  386. package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
  387. package/scripts/ops/run-x402-hitl-smoke.mjs +607 -0
  388. package/scripts/pilot/finance-pack.mjs +495 -0
  389. package/scripts/pilot/fixtures/robot-keypair.json +4 -0
  390. package/scripts/pilot/fixtures/server-signer.json +4 -0
  391. package/scripts/policy/cli.mjs +600 -0
  392. package/scripts/profile/cli.mjs +1324 -0
  393. package/scripts/proof-bundle/job.mjs +109 -0
  394. package/scripts/proof-bundle/lib.mjs +92 -0
  395. package/scripts/proof-bundle/month.mjs +103 -0
  396. package/scripts/provider/conformance-run.mjs +159 -0
  397. package/scripts/provider/keys-generate.mjs +135 -0
  398. package/scripts/provider/publish.mjs +420 -0
  399. package/scripts/quickstart/x402.mjs +334 -0
  400. package/scripts/register-entity-secret.mjs +102 -0
  401. package/scripts/release/build-artifacts.mjs +181 -0
  402. package/scripts/release/generate-release-index.mjs +112 -0
  403. package/scripts/release/release-index-lib.mjs +232 -0
  404. package/scripts/release/sign-release-index.mjs +85 -0
  405. package/scripts/release/validate-release-assets.mjs +170 -0
  406. package/scripts/release/verify-release.mjs +261 -0
  407. package/scripts/restore-pg.sh +34 -0
  408. package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
  409. package/scripts/sdk/smoke-python.py +30 -0
  410. package/scripts/sdk/smoke.mjs +16 -0
  411. package/scripts/settlement/x402-batch-worker.mjs +1091 -0
  412. package/scripts/setup/circle-bootstrap.mjs +310 -0
  413. package/scripts/setup/host-config.mjs +617 -0
  414. package/scripts/setup/onboard.mjs +1337 -0
  415. package/scripts/setup/openclaw-onboard.mjs +423 -0
  416. package/scripts/setup/wizard.mjs +986 -0
  417. package/scripts/slo/check.mjs +239 -0
  418. package/scripts/smoke/k8s-smoke.mjs +214 -0
  419. package/scripts/spec/generate-protocol-vectors.mjs +1019 -0
  420. package/scripts/test/check-no-generated-artifacts.sh +12 -0
  421. package/scripts/test/run.sh +59 -0
  422. package/scripts/trust/validate-trust-file.mjs +57 -0
  423. package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
  424. package/scripts/trust-config/wizard.mjs +161 -0
  425. package/scripts/vendor-contract-test-lib.mjs +182 -0
  426. package/scripts/vendor-contract-test.mjs +55 -0
  427. package/scripts/vercel/build-mkdocs.sh +9 -0
  428. package/scripts/vercel/ignore-mkdocs.sh +25 -0
  429. package/scripts/vercel/install-mkdocs.sh +6 -0
  430. package/scripts/verify-pg.js +217 -0
  431. package/scripts/x402/receipt-verify.mjs +289 -0
  432. package/services/finance-sink/src/dedupe-store.js +29 -6
  433. package/services/receiver/src/dedupe-store.js +29 -5
  434. package/services/x402-gateway/Dockerfile +13 -0
  435. package/services/x402-gateway/README.md +58 -0
  436. package/services/x402-gateway/examples/upstream-mock.js +337 -0
  437. package/services/x402-gateway/src/server.js +1058 -0
  438. package/src/api/app.js +34658 -16940
  439. package/src/api/maintenance.js +70 -0
  440. package/src/api/middleware/trust-kernel.js +114 -0
  441. package/src/api/openapi.js +1778 -70
  442. package/src/api/persistence.js +456 -0
  443. package/src/api/server.js +81 -5
  444. package/src/api/store.js +1581 -62
  445. package/src/api/workers/deliveries.js +99 -4
  446. package/src/api/workers/insolvency-sweep.js +159 -0
  447. package/src/core/agent-card.js +69 -0
  448. package/src/core/agent-wallets.js +231 -0
  449. package/src/core/agreement-delegation.js +549 -0
  450. package/src/core/billing-plans.js +40 -6
  451. package/src/core/circle-reserve-adapter.js +845 -0
  452. package/src/core/event-policy.js +21 -2
  453. package/src/core/maintenance-locks.js +1 -0
  454. package/src/core/operator-action.js +303 -0
  455. package/src/core/paid-tool-manifest.js +318 -0
  456. package/src/core/policy-decision.js +322 -0
  457. package/src/core/policy-packs.js +207 -0
  458. package/src/core/profile-fingerprint.js +27 -0
  459. package/src/core/profile-simulation-reasons.js +84 -0
  460. package/src/core/profile-templates.js +242 -0
  461. package/src/core/provider-publish-conformance.js +525 -0
  462. package/src/core/provider-publish-proof.js +396 -0
  463. package/src/core/provider-quote-signature.js +170 -0
  464. package/src/core/settld-keys.js +112 -0
  465. package/src/core/settld-pay-token.js +344 -0
  466. package/src/core/settlement-kernel.js +239 -2
  467. package/src/core/settlement-verifier.js +335 -0
  468. package/src/core/tool-call-agreement.js +112 -0
  469. package/src/core/tool-call-evidence.js +144 -0
  470. package/src/core/tool-provider-signature.js +98 -0
  471. package/src/core/wallet-assignment-resolver.js +129 -0
  472. package/src/core/wallet-provider-bootstrap.js +365 -0
  473. package/src/core/x402-escalation-override.js +258 -0
  474. package/src/core/x402-gate.js +118 -0
  475. package/src/core/x402-provider-refund-decision.js +220 -0
  476. package/src/core/x402-receipt-verifier.js +708 -0
  477. package/src/core/x402-reversal-command.js +251 -0
  478. package/src/core/x402-wallet-issuer-decision.js +252 -0
  479. package/src/core/zk-verifier.js +300 -0
  480. package/src/db/migrations/029_reputation_event_index.sql +54 -0
  481. package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
  482. package/src/db/pg.js +18 -7
  483. package/src/db/store-pg.js +1508 -111
@@ -0,0 +1,47 @@
1
+ # ToolManifest.v1
2
+
3
+ `ToolManifest.v1` describes a payable capability (a tool) as a signed, portable contract that can be pinned by hash.
4
+
5
+ This object is intentionally small: it exists to make third-party discovery and replay possible without “server configuration context”.
6
+
7
+ ## Fields
8
+
9
+ Required:
10
+
11
+ - `schemaVersion` (const: `ToolManifest.v1`)
12
+ - `toolId` (string; stable identifier)
13
+ - `toolVersion` (string; SemVer)
14
+ - `endpoints[]` (non-empty array)
15
+ - `kind` (const: `http`)
16
+ - `baseUrl` (string)
17
+ - `callPath` (string)
18
+ - `manifestPath` (string)
19
+ - `inputSchemaHash` (sha256 hex; hash of the canonical JSON input schema)
20
+ - `outputSchemaHash` (sha256 hex; hash of the canonical JSON output schema)
21
+ - `createdAt` (ISO 8601)
22
+ - `signature` (required)
23
+ - `algorithm` (const: `ed25519`)
24
+ - `signerKeyId` (string)
25
+ - `manifestHash` (sha256 hex)
26
+ - `signature` (base64)
27
+ - `signerPublicKeyPem` (optional; PEM string)
28
+
29
+ Optional:
30
+
31
+ - `verifierHints` (object or `null`): non-binding hints for consumers about how to evaluate/verify outputs (e.g. deterministic verifier).
32
+
33
+ ## Canonicalization + hashing
34
+
35
+ 1. Canonicalize using RFC 8785 (JCS).
36
+ 2. The `manifestHash` is `sha256` over UTF-8 bytes of canonical JSON of the **manifest core**:
37
+ - the full `ToolManifest.v1` object **excluding** the `signature` field.
38
+
39
+ ## Signing
40
+
41
+ - The `signature.signature` value is an Ed25519 signature over `manifestHash` (the hex hash string), using the private key corresponding to `signerKeyId`.
42
+ - Consumers may verify using `signature.signerPublicKeyPem` when present, or via an external key registry for `signerKeyId`.
43
+
44
+ ## Schema
45
+
46
+ See `docs/spec/schemas/ToolManifest.v1.schema.json`.
47
+
@@ -0,0 +1,38 @@
1
+ # Verifier Environment Assumptions + Hardening (v1)
2
+
3
+ This document describes operational assumptions and recommended hardening when deploying `settld-verify`.
4
+
5
+ ## Filesystem assumptions
6
+
7
+ - The bundle is verified from a local directory (or an extracted zip) whose contents are stable during verification.
8
+ - The verifier treats manifest paths as portable `/`-separated bundle-relative paths.
9
+ - The verifier refuses symlinks for manifest-listed files and rejects path traversal attempts.
10
+ - Spec: `REFERENCE_VERIFIER_BEHAVIOR.md`
11
+
12
+ ## CI / production recommendations
13
+
14
+ - **Regulated workflows**: run **strict mode** by default.
15
+ - CLI: `settld-verify --strict --format json …`
16
+ - Spec: `STRICTNESS.md`
17
+ - **Warnings policy**:
18
+ - If warnings represent “unknown provenance / incomplete guarantees” in your environment, enable `--fail-on-warnings`.
19
+ - CLI: `settld-verify --fail-on-warnings …`
20
+ - Spec: `WARNINGS.md`
21
+ - **Pin tool versions**:
22
+ - Prefer installing a pinned version of `settld-verify` and recording `VerifyCliOutput.v1.tool.{version,commit}` as evidence.
23
+ - Spec: `TOOL_PROVENANCE.md`, `VERSIONING.md`
24
+
25
+ ## Trust anchor distribution (do / don’t)
26
+
27
+ - DO distribute governance-root public keys out-of-band and pin them (e.g., repo file, immutable artifact, or configuration management).
28
+ - DO treat trust anchors as high-integrity inputs (tampering undermines authorization checks).
29
+ - DON’T fetch trust roots over unauthenticated channels at verification time.
30
+ - Spec: `TRUST_ANCHORS.md`
31
+
32
+ ## Volatility and determinism
33
+
34
+ - CLI output ordering of `errors[]` and `warnings[]` is deterministic (sorted) to support CI and archival.
35
+ - If you need stronger determinism guarantees, archive both:
36
+ - `verify/verification_report.json` inside the bundle (receipt), and
37
+ - `settld-verify --format json` output (what your CI observed).
38
+
@@ -0,0 +1,107 @@
1
+ # Versioning (tools vs protocol)
2
+
3
+ Settld has **two coupled version surfaces**:
4
+
5
+ 1. **Tool versions** (SemVer): the software you install/run (`settld-verify`, bundlers, services).
6
+ 2. **Protocol versions** (object `*.v1`, `*.v2`, …): on-disk/wire-format contracts (schemas + semantics).
7
+
8
+ This document defines when to bump **tool SemVer**, when to introduce **new protocol object versions**, and how to avoid accidental drift.
9
+
10
+ ## Tool SemVer policy
11
+
12
+ Tools follow Semantic Versioning:
13
+
14
+ - **MAJOR**: any breaking change to a public surface (CLI flags/output, verification semantics in strict mode, required protocol surfaces, bundle layout requirements, removal of documented warnings, etc.).
15
+ - **MINOR**: backwards-compatible additions (new CLI flags, new optional output fields, new warning codes, new non-strict compatibility paths).
16
+ - **PATCH**: bug fixes and perf improvements that do not change documented behavior (same pass/fail, same codes, same hashes/signatures).
17
+
18
+ ### Concrete examples (tool SemVer)
19
+
20
+ - Add a new CLI flag (e.g. `--hash-concurrency`) that does not change verification semantics → **MINOR**.
21
+ - Fix a bug where strict mode accepted an invalid signature and now fails it → **MAJOR** (strict semantics changed).
22
+ - Stream file hashing (perf) while keeping hashes, codes, and strict/non-strict semantics identical → **PATCH**.
23
+ - Add a new warning code and surface it in `VerifyCliOutput.v1` → **MINOR**.
24
+ - Change sorting of `errors[]` / `warnings[]` in CLI JSON output → **MAJOR** (downstream parsers/snapshots can break).
25
+
26
+ ## Protocol surface policy
27
+
28
+ The protocol is treated like an API:
29
+
30
+ - Specs: `docs/spec/*`
31
+ - Schemas: `docs/spec/schemas/*`
32
+ - Vectors: `test/fixtures/protocol-vectors/v1.json`
33
+ - End-to-end fixtures: `test/fixtures/bundles/v1/*`
34
+
35
+ ## v1 freeze (protocol becomes a stable contract)
36
+
37
+ Protocol `v1` is a **frozen contract**: customers, auditors, and independent implementers must be able to pin a tool version and rely on the v1 meaning indefinitely.
38
+
39
+ ### Allowed changes (v1)
40
+
41
+ - Documentation clarifications and additional examples that do **not** change acceptance criteria.
42
+ - Performance improvements that do **not** change:
43
+ - pass/fail outcomes,
44
+ - error/warning codes,
45
+ - hashes/signatures (canonicalization inputs and bytes),
46
+ - strict/non-strict downgrade behavior.
47
+ - New tests, fixtures, and conformance cases that increase coverage without changing behavior.
48
+
49
+ ### Not allowed changes (v1)
50
+
51
+ - Any change to `docs/spec/schemas/*v1*.json` that would alter the schema contract.
52
+ - Any change to `test/fixtures/protocol-vectors/v1.json` that changes canonical meaning.
53
+ - Any change to canonicalization rules (RFC 8785 / JCS) or hashing inputs.
54
+ - Any change to strictness semantics in `STRICTNESS.md`.
55
+ - Any change to warning code meanings in `WARNINGS.md`.
56
+
57
+ ### Enforcement (CI + local)
58
+
59
+ Changes to v1 schemas/vectors must be **deliberate**:
60
+
61
+ - CI fails if v1 schemas or `test/fixtures/protocol-vectors/v1.json` change unless:
62
+ - `CHANGELOG.md` is updated, **and**
63
+ - the PR includes an explicit marker `protocol-change` (PR body or commit message).
64
+ - A local freeze test (`test/protocol-v1-freeze.test.js`) asserts v1 schema/vector file hashes are unchanged unless `ALLOW_PROTOCOL_V1_MUTATION=1` is set (intended only for deliberate rotations).
65
+
66
+ ### What is a breaking protocol change?
67
+
68
+ Any change that alters what an independent verifier would accept/reject, or what it would compute as hashes/signatures, including:
69
+
70
+ - JSON Schema breaking changes for existing `*.v1` objects.
71
+ - Canonicalization changes (RFC 8785 / JCS rules).
72
+ - Hashing changes (algorithm, input bytes, file inclusion/exclusion rules).
73
+ - Strictness contract changes (required surfaces, required validations, downgrade behavior).
74
+ - Bundle layout changes that affect required files or meaning.
75
+
76
+ ### When to introduce `v2` objects vs mutate `v1`
77
+
78
+ Do **not** mutate the meaning of `*.v1` objects in a way that would cause previously valid instances to become invalid (or vice versa) in strict mode.
79
+
80
+ Introduce a `v2` when:
81
+
82
+ - A required field changes shape/type/meaning.
83
+ - A new required field is introduced.
84
+ - The canonicalization/hashing/signing inputs change.
85
+ - You need to remove/rename fields or change invariants.
86
+
87
+ You may evolve `v1` only via **compatible additions**:
88
+
89
+ - Add new **optional** fields that are omitted when absent (not `null`).
90
+ - Clarify docs without changing semantics.
91
+ - Add new warning codes (closed set remains documented).
92
+
93
+ ### How vectors and fixtures relate to compatibility
94
+
95
+ - **Protocol vectors** lock canonical examples and edge cases. Any intentional protocol change requires a deliberate vector update (and review).
96
+ - **Bundle fixtures** are a conformance corpus. Changes to strict/non-strict behavior should be expressed as:
97
+ - a new fixture directory (single fault), and
98
+ - an expectation row in `test/fixtures/bundles/v1/fixtures.json`.
99
+
100
+ ## Compatibility matrix (within a major tool version)
101
+
102
+ Within a given tool **MAJOR**:
103
+
104
+ - Verifier `X.Y.Z` must verify bundles produced by bundler `X.*.*` (same major), subject to documented strict/non-strict behavior and governance trust anchors.
105
+ - Bundlers may emit new **optional** protocol fields in `v1` objects; verifiers in the same major should ignore unknown optional fields unless strict rules say otherwise.
106
+
107
+ If a change requires a new protocol object version (`*.v2`), that is a **MAJOR** tool bump unless explicitly documented as “dual read” compatibility.
@@ -0,0 +1,50 @@
1
+ # VerificationReport.v1
2
+
3
+ `VerificationReport.v1` is a canonical JSON object emitted into `verify/verification_report.json`.
4
+
5
+ In strict mode, it is **required** and **must be signed**.
6
+
7
+ ## Purpose
8
+
9
+ - Provide a machine-ingestible record of verification results.
10
+ - Bind verification statements to a specific bundle by referencing:
11
+ - `subject.manifestHash`
12
+ - `bundleHeadAttestation.attestationHash` (binding to the head commitment)
13
+
14
+ ## Core fields
15
+
16
+ - `schemaVersion = "VerificationReport.v1"`
17
+ - `profile = "strict"`
18
+ - `tool`: `{ name: "settld", version: string | null, commit?: string }`
19
+ - `warnings`: array of warning objects (see `WARNINGS.md`)
20
+ - `subject`:
21
+ - `type`: bundle kind/type (e.g. `JobProofBundle.v1`, `MonthProofBundle.v1`, `FinancePackBundle.v1`)
22
+ - `manifestHash`: the bundle manifest hash
23
+ - `bundleHeadAttestation` (strict-required for bundles that support head attestations):
24
+ - `attestationHash`: must match `attestation/bundle_head_attestation.json` computed hash
25
+
26
+ ## Report hash + signature
27
+
28
+ - `reportHash` is computed over the canonical JSON object with `reportHash` and `signature` removed.
29
+ - If the report is signed, it includes:
30
+ - `signature` (base64)
31
+ - `signerKeyId`
32
+ - `signedAt`
33
+
34
+ ## Timestamp proof (optional)
35
+
36
+ `timestampProof` (when present) provides a verifier-trusted signing time for revocation/rotation historical acceptance checks. It is computed over the report core **without** `timestampProof` so it can bind to the report payload.
37
+
38
+ ## No circular hashing
39
+
40
+ `verify/**` is excluded from bundle manifests. The report binds to the bundle by:
41
+
42
+ - including `subject.manifestHash`
43
+ - including `bundleHeadAttestation.attestationHash`
44
+ - being signed by a governed server key (in strict mode)
45
+
46
+ ## Tool identity completeness
47
+
48
+ `tool.commit` is a best-effort build identifier (typically a git commit SHA) intended to answer “what build produced this receipt”.
49
+
50
+ - If the tool commit cannot be determined, the report MUST include warning code `TOOL_COMMIT_UNKNOWN`.
@@ -0,0 +1,10 @@
1
+ # VerifyAboutOutput.v1
2
+
3
+ `VerifyAboutOutput.v1` is the machine-readable JSON output emitted by `settld-verify --about --format json`.
4
+
5
+ This is a **tool metadata contract** intended for CI and operational introspection.
6
+
7
+ ## Schema
8
+
9
+ See `schemas/VerifyAboutOutput.v1.schema.json`.
10
+
@@ -0,0 +1,28 @@
1
+ # VerifyCliOutput.v1
2
+
3
+ `VerifyCliOutput.v1` is the machine-readable JSON output emitted by `settld-verify --format json`.
4
+
5
+ This is a **tool contract** intended for CI gating and automated ingestion. It is versioned and treated as a stable surface.
6
+
7
+ ## Schema
8
+
9
+ See `schemas/VerifyCliOutput.v1.schema.json`.
10
+
11
+ ## Semantics
12
+
13
+ - `ok` is the CLI’s overall verdict, including policy flags like `--fail-on-warnings`.
14
+ - `verificationOk` reflects the underlying verifier result (`true` only when the bundle verification succeeded).
15
+ - When available, `errors[].code` is promoted from the verifier’s structured error (`result.detail.error`) to prefer stable, code-like identifiers; `errors[].message` may contain a human summary (`result.error`).
16
+ - `errors` and `warnings` are sorted deterministically by `(path, code)`.
17
+ - The CLI supports `--hash-concurrency <n>` to bound parallel hashing work; it does not change verification semantics.
18
+ - `tool.commit` is a best-effort build identifier for the verifier tool (typically a git commit SHA or build revision).
19
+
20
+ ## `--explain` (deterministic stderr)
21
+
22
+ `settld-verify --explain` prints a deterministic diagnostic summary to **stderr** (while `--format json` continues to print machine output to stdout).
23
+
24
+ Contract:
25
+
26
+ - Output is deterministic for the same inputs/environment.
27
+ - Output MUST NOT include secrets.
28
+ - Output ends with **exactly one** trailing newline.
@@ -0,0 +1,83 @@
1
+ # Verification warnings
2
+
3
+ Warnings are protocol objects, not strings.
4
+
5
+ ## Shape
6
+
7
+ Each warning is a canonical JSON object:
8
+
9
+ - `code` (required, closed set)
10
+ - `message` (optional, string or null)
11
+ - `detail` (optional, any JSON)
12
+
13
+ Warnings are normalized (deduped + sorted) before being emitted in verification reports.
14
+
15
+ ## Codes (closed set)
16
+
17
+ - `LEGACY_KEYS_FORMAT_USED`
18
+ - `NONSERVER_REVOCATION_NOT_ENFORCED`
19
+ - `TRUSTED_GOVERNANCE_ROOT_KEYS_MISSING_LENIENT`
20
+ - `GOVERNANCE_POLICY_MISSING_LENIENT`
21
+ - `GOVERNANCE_POLICY_V1_ACCEPTED_LENIENT`
22
+ - `BUNDLE_HEAD_ATTESTATION_MISSING_LENIENT`
23
+ - `MISSING_GOVERNANCE_SNAPSHOT_LENIENT`
24
+ - `UNSIGNED_REPORT_LENIENT`
25
+ - `VERIFICATION_REPORT_MISSING_LENIENT`
26
+ - `CLOSE_PACK_SLA_SURFACES_MISSING_LENIENT`
27
+ - `CLOSE_PACK_ACCEPTANCE_SURFACES_MISSING_LENIENT`
28
+ - `PRICING_MATRIX_UNSIGNED_LENIENT`
29
+ - `WARN_PRICING_SIGNATURE_V1_BYTES_LEGACY`
30
+ - `TOOL_VERSION_UNKNOWN`
31
+ - `TOOL_COMMIT_UNKNOWN`
32
+
33
+ Tool provenance derivation rules are documented in `TOOL_PROVENANCE.md`.
34
+
35
+ ## Remediation (operator guidance)
36
+
37
+ Warnings are non-fatal by default, but they are part of the **public contract**. In regulated workflows you may gate on them with `--fail-on-warnings`.
38
+
39
+ - `VERIFICATION_REPORT_MISSING_LENIENT`
40
+ - Meaning: bundle is missing `verify/verification_report.json` but non-strict mode allows verify to proceed.
41
+ - Action: regenerate the bundle/receipt with a bundler/verifier that emits signed receipts, or run strict mode to require it.
42
+ - `CLOSE_PACK_SLA_SURFACES_MISSING_LENIENT`
43
+ - Meaning: ClosePack bundle is missing portable SLA evaluation surfaces under `sla/*`; non-strict mode allows verify to proceed.
44
+ - Action: regenerate ClosePack with `sla/sla_definition.json` + `sla/sla_evaluation.json` present (or gate workflows on this warning).
45
+ - `CLOSE_PACK_ACCEPTANCE_SURFACES_MISSING_LENIENT`
46
+ - Meaning: ClosePack bundle is missing portable acceptance evaluation surfaces under `acceptance/*`; non-strict mode allows verify to proceed.
47
+ - Action: regenerate ClosePack with `acceptance/acceptance_criteria.json` + `acceptance/acceptance_evaluation.json` present (or gate workflows on this warning).
48
+ - `PRICING_MATRIX_UNSIGNED_LENIENT`
49
+ - Meaning: invoice bundle lacks a pricing terms signature surface (`pricing/pricing_matrix_signatures.json`) that proves the pricing matrix value was approved by a trusted buyer key; non-strict continues.
50
+ - Action: include a buyer-signed `PricingMatrixSignatures.v2` file (and/or run strict mode to require it), and gate workflows on this warning as needed.
51
+ - `WARN_PRICING_SIGNATURE_V1_BYTES_LEGACY`
52
+ - Meaning: invoice bundle used legacy `PricingMatrixSignatures.v1` (raw-bytes binding), which is formatting-fragile; non-strict accepted it for compatibility.
53
+ - Action: migrate to `PricingMatrixSignatures.v2` (canonical JSON binding) and run strict mode to enforce it.
54
+ - `UNSIGNED_REPORT_LENIENT`
55
+ - Meaning: a verification report exists but is not signed in a way required for strict assurance.
56
+ - Action: re-run verification with a governed verifier signer and write a signed `verify/verification_report.json`.
57
+ - `GOVERNANCE_POLICY_MISSING_LENIENT`
58
+ - Meaning: governance policy file is missing; non-strict continues but governance guarantees are not established.
59
+ - Action: ensure the bundler emits `governance/policy.json` (and related materials); prefer strict mode for audit posture.
60
+ - `TRUSTED_GOVERNANCE_ROOT_KEYS_MISSING_LENIENT`
61
+ - Meaning: verifier is running without out-of-band governance trust anchors; non-strict continues but governance signatures are not validated.
62
+ - Action: provide `SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON` and run strict mode for audit posture (see `TRUST_ANCHORS.md`).
63
+ - `GOVERNANCE_POLICY_V1_ACCEPTED_LENIENT`
64
+ - Meaning: legacy `GovernancePolicy.v1` was accepted (compat mode).
65
+ - Action: upgrade to `GovernancePolicy.v2` and re-bundle; strict mode should require v2.
66
+ - `BUNDLE_HEAD_ATTESTATION_MISSING_LENIENT`
67
+ - Meaning: head attestation is missing; non-strict continues but binding guarantees weaken.
68
+ - Action: regenerate bundle with `attestation/bundle_head_attestation.json` present and valid.
69
+ - `MISSING_GOVERNANCE_SNAPSHOT_LENIENT`
70
+ - Meaning: governance snapshot(s) were missing and non-strict continued.
71
+ - Action: regenerate bundle including governance snapshot files; strict mode should require them.
72
+ - `LEGACY_KEYS_FORMAT_USED`
73
+ - Meaning: verifier encountered a legacy key-format compatibility path.
74
+ - Action: update bundle/key materials to the current key format and re-bundle.
75
+ - `NONSERVER_REVOCATION_NOT_ENFORCED`
76
+ - Meaning: verifier could not enforce a revocation decision for a non-server signer under the strict model (compat path).
77
+ - Action: include a trustworthy signing time (`timestampProof`) where required, or adjust governance posture; prefer server-governed signers.
78
+ - `TOOL_VERSION_UNKNOWN`
79
+ - Meaning: verifier could not determine its version string.
80
+ - Action: install from a released artifact (npm tarball or pinned version) and ensure `package.json` version is available; consider gating on this warning in CI.
81
+ - `TOOL_COMMIT_UNKNOWN`
82
+ - Meaning: verifier could not determine its commit identifier.
83
+ - Action: set the documented commit env source (see `TOOL_PROVENANCE.md`) in your CI/build environment; consider gating on this warning in CI.
@@ -0,0 +1,285 @@
1
+ FAILED
2
+ FAIL_ON_WARNINGS
3
+ MANIFEST_DUPLICATE_PATH
4
+ MANIFEST_PATH_CASE_COLLISION
5
+ MANIFEST_PATH_INVALID
6
+ MANIFEST_SYMLINK_FORBIDDEN
7
+ PRICING_MATRIX_SIGNATURE_INVALID
8
+ PRICING_MATRIX_SIGNATURE_MISSING
9
+ PRICING_MATRIX_SIGNATURE_PAYLOAD_MISMATCH
10
+ PRICING_MATRIX_SIGNATURE_V1_BYTES_LEGACY_STRICT_REJECTED
11
+ SETTLEMENT_DECISION_SIGNATURE_INVALID
12
+ SETTLEMENT_DECISION_SIGNATURE_PAYLOAD_MISMATCH
13
+ SIGNER_NOT_YET_VALID
14
+ SIGNER_REVOKED
15
+ SIGNER_ROTATED
16
+ SIGNING_TIME_UNPROVABLE
17
+ ZIP_COMPRESSION_RATIO_TOO_HIGH
18
+ ZIP_DUPLICATE_ENTRY
19
+ ZIP_ENCRYPTED_UNSUPPORTED
20
+ ZIP_ENTRY_PATH_INVALID
21
+ ZIP_ENTRY_PATH_TOO_LONG
22
+ ZIP_EXTRACT_FAILED
23
+ ZIP_FILE_TOO_LARGE
24
+ ZIP_INTERNAL_ERROR
25
+ ZIP_INVALID_CENTRAL_DIR
26
+ ZIP_INVALID_ENTRY
27
+ ZIP_INVALID_EOCD
28
+ ZIP_LOCAL_HEADER_MISMATCH
29
+ ZIP_OPEN_FAILED
30
+ ZIP_SYMLINK_FORBIDDEN
31
+ ZIP_TOO_MANY_ENTRIES
32
+ ZIP_TOTAL_UNCOMPRESSED_TOO_LARGE
33
+ ZIP_UNSUPPORTED_COMPRESSION
34
+ ZIP_UNSUPPORTED_MULTI_DISK
35
+ ZIP_UNSUPPORTED_ZIP64
36
+ artifactHash mismatch
37
+ artifactType mismatch
38
+ attestation global governance head mismatch (chainHash)
39
+ attestation global governance head mismatch (eventId)
40
+ attestation invoiceBundle.attestationHash mismatch
41
+ attestation invoiceBundle.manifestHash mismatch
42
+ attestation job head mismatch (chainHash)
43
+ attestation job head mismatch (eventId)
44
+ attestation jobProof.attestationHash mismatch
45
+ attestation jobProof.manifestHash mismatch
46
+ attestation kind mismatch
47
+ attestation manifestHash mismatch
48
+ attestation missing heads
49
+ attestation missing heads.invoiceBundle
50
+ attestation missing heads.job
51
+ attestation missing heads.jobProof
52
+ attestation missing heads.month
53
+ attestation missing heads.monthProof
54
+ attestation missing signature fields
55
+ attestation missing signer fields
56
+ attestation month head mismatch (chainHash)
57
+ attestation month head mismatch (eventId)
58
+ attestation monthProof.attestationHash mismatch
59
+ attestation monthProof.manifestHash mismatch
60
+ attestation scope mismatch
61
+ attestation scope.invoiceId mismatch
62
+ attestation scope.period mismatch
63
+ attestation signature invalid
64
+ attestation signer key missing validFrom
65
+ attestation signer key not valid
66
+ attestation signer not authorized
67
+ attestation tenant governance head mismatch (chainHash)
68
+ attestation tenant governance head mismatch (eventId)
69
+ attestation tenantId mismatch
70
+ attestationHash mismatch
71
+ bad signature
72
+ bundle head attestation invalid
73
+ closepack acceptance surfaces incomplete
74
+ closepack acceptance_evaluation mismatch
75
+ closepack evidence_index mismatch
76
+ closepack invoiceBundle.embeddedPath invalid
77
+ closepack invoiceBundle.headAttestationHash mismatch
78
+ closepack invoiceBundle.manifestHash mismatch
79
+ closepack sla surfaces incomplete
80
+ closepack sla_evaluation mismatch
81
+ declared head chainHash mismatch
82
+ declared head eventId mismatch
83
+ embedded invoice bundle verification failed
84
+ event stream integrity invalid
85
+ expected GLBatch.v1
86
+ expected PartyStatement.v1
87
+ failed to hash file
88
+ failed to hash glBatch
89
+ failed to hash partyStatement
90
+ failed to hash settlement decision report
91
+ financeAccountMapHash mismatch
92
+ forfeit decisionEventRef mismatch
93
+ forfeit decisionEventRef missing DECISION_RECORDED
94
+ forfeit freshness check failed
95
+ forfeit missing decision provenance
96
+ forfeit stale at decision time
97
+ glBatch artifactHash mismatch
98
+ glBatch does not net to zero
99
+ glBatchHash mismatch
100
+ governance policy algorithms must be a non-empty array
101
+ governance policy bundleHeadAttestationSigners must be an array
102
+ governance policy does not allow ed25519
103
+ governance policy missing signature fields
104
+ governance policy revocationList invalid
105
+ governance policy revocationList missing
106
+ governance policy revocationList.path invalid
107
+ governance policy signature invalid
108
+ governance policy signerKeyId not trusted
109
+ governance policy verificationReportSigners must be an array
110
+ governance policyHash mismatch
111
+ governance stream integrity invalid
112
+ governance/global contains tenant-scoped event
113
+ governance/tenant contains global-scoped event
114
+ hold freshness check failed
115
+ hold missing referenced PROOF_EVALUATED
116
+ hold missingEvidence mismatch
117
+ hold reasonCodes mismatch
118
+ hold stale at decision time
119
+ hold triggeringProofRef mismatch
120
+ included entry ids mismatch
121
+ incomplete governance/global stream files
122
+ incomplete governance/tenant stream files
123
+ invalid JSON
124
+ invalid artifact JSON
125
+ invalid attestation JSON
126
+ invalid bundle head attestation JSON
127
+ invalid governance revocation list
128
+ invalid governance/policy.json
129
+ invalid schemaVersion
130
+ invalid verification report JSON
131
+ invalid verification report subject
132
+ invalid warning code
133
+ invoice pricing code unknown
134
+ invoiceClaim jobProof.embeddedPath mismatch
135
+ invoiceClaim jobProof.headAttestationHash mismatch
136
+ invoiceClaim jobProof.manifestHash mismatch
137
+ invoiceClaim lineItems mismatch
138
+ invoiceClaim totalCents invalid
139
+ invoiceClaim totalCents mismatch
140
+ job proof events missing
141
+ job proof strict verification failed
142
+ jobProofBundleHash mismatch
143
+ jobProofHeadAttestationHash mismatch
144
+ journalCsv.csvSha256 mismatch
145
+ journalCsvArtifactHash mismatch
146
+ journalCsvHash mismatch
147
+ keyMetaByKeyId must be a Map
148
+ list must be an object
149
+ manifest missing manifestHash
150
+ manifest missing required files
151
+ manifestHash mismatch
152
+ metering evidenceRef not in job proof manifest
153
+ metering evidenceRef sha256 mismatch
154
+ meteringReport jobProof binding missing
155
+ meteringReport jobProof.embeddedPath mismatch
156
+ meteringReport jobProof.headAttestationHash mismatch
157
+ meteringReport jobProof.manifestHash mismatch
158
+ missing artifactHash
159
+ missing artifactType
160
+ missing attestation/bundle_head_attestation.json
161
+ missing events
162
+ missing events/events.jsonl
163
+ missing events/payload_material.jsonl
164
+ missing evidence/evidence_index.json
165
+ missing file
166
+ missing glBatch artifactHash
167
+ missing governance policy
168
+ missing governance/global stream
169
+ missing governance/policy.json
170
+ missing governance/tenant stream
171
+ missing job/snapshot.json
172
+ missing keys/public_keys.json
173
+ missing month keys/public_keys.json (PublicKeys.v1)
174
+ missing or invalid keys/public_keys.json
175
+ missing partyStatement artifactHash
176
+ missing timestampProof
177
+ missing verify/verification_report.json
178
+ month proof strict verification failed
179
+ monthProofBundleHash mismatch
180
+ no governance policy rule for subjectType
181
+ non-numeric posting total
182
+ partyStatement artifactHash mismatch
183
+ partyStatement basis mismatch
184
+ partyStatement period mismatch
185
+ partyStatement totalsByAccountId contains non-integer
186
+ partyStatement totalsByAccountId missing
187
+ payload_material length mismatch
188
+ policy must be an object
189
+ postings do not balance
190
+ provenance refs invalid
191
+ publicKeyByKeyId must be a Map
192
+ reconcile.json mismatch
193
+ reconcileReportHash mismatch
194
+ release freshness check failed
195
+ release missing referenced PROOF_EVALUATED
196
+ release releasingProofRef mismatch
197
+ release stale at decision time
198
+ revocation list generatedAt missing
199
+ revocation list hash mismatch
200
+ revocation list listId missing
201
+ revocation list missing signature fields
202
+ revocation list must be an object
203
+ revocation list revocations must be an array
204
+ revocation list rotations must be an array
205
+ revocation list signature invalid
206
+ revocation list signerKeyId not trusted
207
+ revocation listHash mismatch
208
+ revocationList sha256 mismatch
209
+ schemaVersion mismatch
210
+ settlement decision invoiceBundle.headAttestationHash mismatch
211
+ settlement decision invoiceBundle.manifestHash mismatch
212
+ settlement decision report missing signature fields
213
+ settlement decision report must be an object
214
+ settlement decision signerKeyId not trusted
215
+ settlement decision trusted buyer keys invalid
216
+ settlement decision trusted buyer keys missing
217
+ settlement forfeit ref missing SETTLEMENT_FORFEITED
218
+ settlement forfeitEventChainHash mismatch
219
+ settlement forfeitEventPayloadHash mismatch
220
+ settlement freshness check failed
221
+ settlement missing referenced PROOF_EVALUATED
222
+ settlement settlementProofRef mismatch
223
+ settlement stale at decision time
224
+ sha256 mismatch
225
+ signer key is not governed
226
+ signer key purpose not allowed by policy
227
+ signer keyId not allowed by policy
228
+ signer scope not allowed by policy
229
+ strict requires GovernancePolicy.v2
230
+ strict requires trusted governance root keys
231
+ strict requires trusted pricing signer keys
232
+ tenant governance stream integrity invalid
233
+ timestampProof messageHash invalid
234
+ timestampProof messageHash mismatch
235
+ timestampProof missing required fields
236
+ timestampProof must be an object
237
+ timestampProof signature invalid
238
+ timestampProof signerKeyId not trusted
239
+ totals mismatch
240
+ trustedBuyerDecisionPublicKeyByKeyId must be a Map
241
+ trustedGovernanceRootPublicKeyByKeyId must be a Map
242
+ trustedPublicKeyByKeyId must be a Map
243
+ unknown attestation signerKeyId
244
+ unknown verification report signerKeyId
245
+ unsupported acceptance criteria schemaVersion
246
+ unsupported artifactType
247
+ unsupported attestation schemaVersion
248
+ unsupported bundle kind
249
+ unsupported bundle type
250
+ unsupported documentKind
251
+ unsupported evidence index schemaVersion
252
+ unsupported governance policy schemaVersion
253
+ unsupported invoice claim schemaVersion
254
+ unsupported keys schemaVersion
255
+ unsupported manifest schemaVersion
256
+ unsupported metering schemaVersion
257
+ unsupported pricing matrix signatures schemaVersion
258
+ unsupported pricing schemaVersion
259
+ unsupported revocation list schemaVersion
260
+ unsupported settlement decision report schemaVersion
261
+ unsupported sla definition schemaVersion
262
+ unsupported timestampProof kind
263
+ unsupported timestampProof schemaVersion
264
+ unsupported verification report profile
265
+ unsupported verification report schemaVersion
266
+ verification report bundleHeadAttestation.attestationHash mismatch
267
+ verification report bundleHeadAttestation.attestationHash missing
268
+ verification report invalid
269
+ verification report missing bundleHeadAttestation
270
+ verification report missing reportHash
271
+ verification report missing signature
272
+ verification report reportHash mismatch
273
+ verification report signature invalid
274
+ verification report signer key missing validFrom
275
+ verification report signer key not valid
276
+ verification report signer must be an object
277
+ verification report signer not authorized
278
+ verification report signer.keyId mismatch
279
+ verification report signer.keyId missing
280
+ verification report signer.scope invalid
281
+ verification report signerKeyId not found in month keys
282
+ verification report subject.manifestHash mismatch
283
+ verification report subject.type mismatch
284
+ warning must be an object
285
+ warnings must be an array
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": "AgreementDelegation.v1",
3
+ "delegationId": "dlg_example_0001",
4
+ "tenantId": "tenant_example",
5
+ "parentAgreementHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
6
+ "childAgreementHash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
7
+ "delegatorAgentId": "agt_delegator",
8
+ "delegateeAgentId": "agt_delegatee",
9
+ "budgetCapCents": 5000,
10
+ "currency": "USD",
11
+ "delegationDepth": 1,
12
+ "maxDelegationDepth": 3,
13
+ "ancestorChain": [
14
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
15
+ ],
16
+ "createdAt": "2026-02-01T00:00:00.000Z",
17
+ "delegationHash": "13354b2dedb94b67957d3fd6db4ca85db31fa53a1b278b525e4361e8b1db44c7",
18
+ "status": "active",
19
+ "revision": 0,
20
+ "updatedAt": "2026-02-01T00:00:00.000Z"
21
+ }