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.
- package/README.md +93 -3
- package/SETTLD_VERSION +1 -1
- package/bin/settld-mcp +2 -0
- package/bin/settld.js +71 -0
- package/conformance/kernel-v0/README.md +7 -0
- package/conformance/kernel-v0/run.mjs +292 -4
- package/docs/ACCESS.md +57 -0
- package/docs/ADOPTION_CHECKLIST.md +44 -0
- package/docs/ALERTS.md +198 -0
- package/docs/ARCHITECTURE.md +69 -0
- package/docs/ARCHITECTURE_FOUNDER_GUIDE.md +284 -0
- package/docs/ARTIFACTS.md +60 -0
- package/docs/CERTIFICATION_CHECKLIST.md +33 -0
- package/docs/CIRCLE_SANDBOX_E2E.md +152 -0
- package/docs/CONFIG.md +297 -0
- package/docs/CONTRACTS_APIS.md +23 -0
- package/docs/DEPRECATION.md +31 -0
- package/docs/DOMAIN_MODEL.md +92 -0
- package/docs/EVENT_ENVELOPE.md +53 -0
- package/docs/FINANCE_PACK_FORMAT.md +53 -0
- package/docs/INCIDENT_TAXONOMY.md +30 -0
- package/docs/JOB_STATE_MACHINE.md +66 -0
- package/docs/KERNEL_COMPATIBLE.md +60 -0
- package/docs/KERNEL_V0.md +40 -0
- package/docs/KEY_ROTATION.md +80 -0
- package/docs/LEDGER.md +82 -0
- package/docs/LIVENESS.md +76 -0
- package/docs/MVP_BUILD_ORDER.md +36 -0
- package/docs/ONCALL_PLAYBOOK.md +39 -0
- package/docs/OPERATIONS_SIGNING.md +20 -0
- package/docs/OVERVIEW.md +190 -0
- package/docs/PERF_BASELINE.md +85 -0
- package/docs/PRD.md +77 -0
- package/docs/QUICKSTART_KERNEL_V0.md +96 -0
- package/docs/QUICKSTART_MCP.md +377 -0
- package/docs/QUICKSTART_MCP_HOSTS.md +210 -0
- package/docs/QUICKSTART_POLICY_PACKS.md +65 -0
- package/docs/QUICKSTART_PRODUCE.md +61 -0
- package/docs/QUICKSTART_PROFILES.md +198 -0
- package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
- package/docs/QUICKSTART_SDK.md +125 -0
- package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
- package/docs/QUICKSTART_VERIFY.md +54 -0
- package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
- package/docs/README.md +33 -0
- package/docs/RELEASE_CHECKLIST.md +182 -0
- package/docs/RELEASING.md +82 -0
- package/docs/REPO_SETTINGS.md +37 -0
- package/docs/RUNBOOK.md +86 -0
- package/docs/SKILLS.md +42 -0
- package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
- package/docs/SLO.md +131 -0
- package/docs/SUMMARY.md +17 -0
- package/docs/SUPPORT.md +31 -0
- package/docs/THREAT_MODEL.md +36 -0
- package/docs/TRUST.md +59 -0
- package/docs/WORKFLOW.md +35 -0
- package/docs/X402_BATCH_SETTLEMENT.md +126 -0
- package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
- package/docs/examples/x402-provider-payout-registry.example.json +14 -0
- package/docs/gitbook/README.md +64 -0
- package/docs/gitbook/SETUP.md +25 -0
- package/docs/gitbook/SUMMARY.md +15 -0
- package/docs/gitbook/api-reference.md +73 -0
- package/docs/gitbook/closepacks.md +55 -0
- package/docs/gitbook/conformance.md +59 -0
- package/docs/gitbook/core-primitives.md +85 -0
- package/docs/gitbook/dispute-lifecycle.md +33 -0
- package/docs/gitbook/faq.md +21 -0
- package/docs/gitbook/guides.md +49 -0
- package/docs/gitbook/operations-runbook.md +36 -0
- package/docs/gitbook/quickstart.md +103 -0
- package/docs/gitbook/replay-and-audit.md +30 -0
- package/docs/gitbook/sdk-reference.md +35 -0
- package/docs/gitbook/security-model.md +58 -0
- package/docs/integrations/README.md +15 -0
- package/docs/integrations/github-actions-verify.yml +31 -0
- package/docs/integrations/github-actions.md +34 -0
- package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
- package/docs/integrations/openclaw/PUBLIC_QUICKSTART.md +95 -0
- package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
- package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
- package/docs/kernel-compatible/capabilities.json +36 -0
- package/docs/marketing/agent-commerce-substrate.md +78 -0
- package/docs/marketing/hn-repost-2026-02-17.md +102 -0
- package/docs/marketing/show-hn-post.md +45 -0
- package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
- package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
- package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
- package/docs/ops/DISPUTE_FINANCE_RECONCILIATION_PACKET.md +56 -0
- package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
- package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
- package/docs/ops/KERNEL_V0_SHIP_GATE.md +69 -0
- package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
- package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +30 -0
- package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
- package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
- package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
- package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
- package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +140 -0
- package/docs/ops/R1_SLOS.md +66 -0
- package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
- package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
- package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
- package/docs/ops/TRUST_CONFIG_WIZARD.md +60 -0
- package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
- package/docs/ops/tool-call-disputes-holdback.md +52 -0
- package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
- package/docs/pilot-kit/README.md +29 -0
- package/docs/pilot-kit/architecture-one-pager.md +48 -0
- package/docs/pilot-kit/buyer-email.txt +19 -0
- package/docs/pilot-kit/buyer-one-pager.md +31 -0
- package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
- package/docs/pilot-kit/offline-verify.md +33 -0
- package/docs/pilot-kit/procurement-one-pager.md +50 -0
- package/docs/pilot-kit/rfp-clause.md +46 -0
- package/docs/pilot-kit/roi-calculator-template.csv +2 -0
- package/docs/pilot-kit/security-qa.md +153 -0
- package/docs/pilot-kit/security-summary.md +35 -0
- package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
- package/docs/plans/2026-02-20-trust-os-v1-jira-backlog.md +348 -0
- package/docs/plans/2026-02-21-agent-economic-actor-operating-model.md +169 -0
- package/docs/plans/2026-02-21-trust-os-v1-strategy.md +241 -0
- package/docs/research/2026-02-21-agent-spend-host-landscape.md +57 -0
- package/docs/spec/AcceptanceCriteria.v1.md +17 -0
- package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
- package/docs/spec/AgentEvent.v1.md +47 -0
- package/docs/spec/AgentIdentity.v1.md +62 -0
- package/docs/spec/AgentPassport.v1.md +95 -0
- package/docs/spec/AgentReputation.v1.md +59 -0
- package/docs/spec/AgentReputation.v2.md +52 -0
- package/docs/spec/AgentRun.v1.md +47 -0
- package/docs/spec/AgentRunSettlement.v1.md +52 -0
- package/docs/spec/AgentWallet.v1.md +43 -0
- package/docs/spec/AgreementDelegation.v1.md +109 -0
- package/docs/spec/ArbitrationCase.v1.md +67 -0
- package/docs/spec/ArbitrationOutcomeMapping.v1.md +62 -0
- package/docs/spec/ArbitrationVerdict.v1.md +60 -0
- package/docs/spec/BundleHeadAttestation.v1.md +32 -0
- package/docs/spec/CANONICAL_JSON.md +31 -0
- package/docs/spec/CRYPTOGRAPHY.md +61 -0
- package/docs/spec/ClosePack.v1.md +49 -0
- package/docs/spec/ClosePackManifest.v1.md +24 -0
- package/docs/spec/DelegationGrant.v1.md +90 -0
- package/docs/spec/DisputeCaseLifecycle.v1.md +51 -0
- package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
- package/docs/spec/ERRORS.md +76 -0
- package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
- package/docs/spec/EvidenceIndex.v1.md +20 -0
- package/docs/spec/ExecutionIntent.v1.md +90 -0
- package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
- package/docs/spec/FundingHold.v1.md +60 -0
- package/docs/spec/GovernancePolicy.v1.md +34 -0
- package/docs/spec/GovernancePolicy.v2.md +30 -0
- package/docs/spec/INVARIANTS.md +389 -0
- package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
- package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
- package/docs/spec/InvoiceClaim.v1.md +11 -0
- package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
- package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
- package/docs/spec/MarketplaceOffer.v2.md +54 -0
- package/docs/spec/MeteringReport.v1.md +18 -0
- package/docs/spec/OperatorAction.v1.md +90 -0
- package/docs/spec/PRODUCER_ERRORS.md +42 -0
- package/docs/spec/PolicyDecision.v1.md +83 -0
- package/docs/spec/PricingMatrix.v1.md +20 -0
- package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
- package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
- package/docs/spec/ProduceCliOutput.v1.md +46 -0
- package/docs/spec/ProofBundleManifest.v1.md +24 -0
- package/docs/spec/README.md +109 -0
- package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
- package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
- package/docs/spec/REMOTE_SIGNER.md +66 -0
- package/docs/spec/ReleaseIndex.v1.md +32 -0
- package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
- package/docs/spec/ReleaseTrust.v1.md +13 -0
- package/docs/spec/ReleaseTrust.v2.md +26 -0
- package/docs/spec/RemoteSignerRequest.v1.md +21 -0
- package/docs/spec/RemoteSignerResponse.v1.md +16 -0
- package/docs/spec/ReputationEvent.v1.md +63 -0
- package/docs/spec/RevocationList.v1.md +28 -0
- package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
- package/docs/spec/STRICTNESS.md +68 -0
- package/docs/spec/SUPPLY_CHAIN.md +33 -0
- package/docs/spec/SettlementAdjustment.v1.md +45 -0
- package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
- package/docs/spec/SettlementDecisionRecord.v2.md +53 -0
- package/docs/spec/SettlementDecisionReport.v1.md +44 -0
- package/docs/spec/SettlementKernel.v1.md +59 -0
- package/docs/spec/SettlementReceipt.v1.md +63 -0
- package/docs/spec/SlaDefinition.v1.md +24 -0
- package/docs/spec/SlaEvaluation.v1.md +12 -0
- package/docs/spec/THREAT_MODEL.md +113 -0
- package/docs/spec/TOOL_PROVENANCE.md +30 -0
- package/docs/spec/TRUST_ANCHORS.md +84 -0
- package/docs/spec/TenantSettings.v1.md +90 -0
- package/docs/spec/TenantSettings.v2.md +99 -0
- package/docs/spec/TimestampProof.v1.md +25 -0
- package/docs/spec/ToolCallAgreement.v1.md +34 -0
- package/docs/spec/ToolCallEvidence.v1.md +47 -0
- package/docs/spec/ToolManifest.v1.md +47 -0
- package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
- package/docs/spec/VERSIONING.md +107 -0
- package/docs/spec/VerificationReport.v1.md +50 -0
- package/docs/spec/VerifyAboutOutput.v1.md +10 -0
- package/docs/spec/VerifyCliOutput.v1.md +28 -0
- package/docs/spec/WARNINGS.md +83 -0
- package/docs/spec/error-codes.v1.txt +285 -0
- package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
- package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
- package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
- package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
- package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
- package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
- package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
- package/docs/spec/examples/release_index_v1.example.json +15 -0
- package/docs/spec/examples/release_trust_v1.example.json +7 -0
- package/docs/spec/examples/release_trust_v2.example.json +22 -0
- package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
- package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
- package/docs/spec/examples/reputation_event_v1.example.json +29 -0
- package/docs/spec/examples/verification_report_v1.example.json +24 -0
- package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
- package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
- package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
- package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
- package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
- package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
- package/docs/spec/producer-error-codes.v1.txt +14 -0
- package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
- package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
- package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
- package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
- package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
- package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
- package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
- package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
- package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
- package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
- package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
- package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
- package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
- package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
- package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
- package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
- package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
- package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
- package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
- package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
- package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
- package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
- package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
- package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
- package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
- package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
- package/docs/spec/schemas/OperatorAction.v1.schema.json +113 -0
- package/docs/spec/schemas/PolicyDecision.v1.schema.json +74 -0
- package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
- package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
- package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
- package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
- package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
- package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
- package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
- package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
- package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
- package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
- package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
- package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
- package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
- package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
- package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
- package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
- package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
- package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
- package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
- package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
- package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +149 -0
- package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
- package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
- package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
- package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
- package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
- package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
- package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
- package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
- package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
- package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
- package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
- package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
- package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
- package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
- package/docs/spec/x402-error-codes.v1.txt +35 -0
- package/docs/templates/buyer-email.txt +18 -0
- package/docs/templates/buyer-one-pager.md +24 -0
- package/package.json +53 -6
- package/scripts/acceptance/full-stack.mjs +734 -0
- package/scripts/acceptance/full-stack.sh +99 -0
- package/scripts/audit/build-audit-packet.mjs +242 -0
- package/scripts/backup-pg.sh +45 -0
- package/scripts/backup-restore/README.md +18 -0
- package/scripts/backup-restore/capture-state.mjs +130 -0
- package/scripts/backup-restore/client.mjs +97 -0
- package/scripts/backup-restore/seed-workload.mjs +235 -0
- package/scripts/backup-restore/verify-state.mjs +139 -0
- package/scripts/backup-restore-test.sh +217 -0
- package/scripts/chaos.js +221 -0
- package/scripts/ci/build-launch-cutover-packet.mjs +304 -0
- package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
- package/scripts/ci/changelog-guard.mjs +145 -0
- package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
- package/scripts/ci/check-secret-hygiene.mjs +78 -0
- package/scripts/ci/check-version-consistency.mjs +42 -0
- package/scripts/ci/cli-pack-smoke.mjs +160 -0
- package/scripts/ci/flake-budget-guard.mjs +68 -0
- package/scripts/ci/generate-error-codes.mjs +54 -0
- package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
- package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
- package/scripts/ci/npm-pack-smoke.mjs +454 -0
- package/scripts/ci/run-10x-throughput-drill.mjs +318 -0
- package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +368 -0
- package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
- package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
- package/scripts/ci/run-go-live-gate.mjs +150 -0
- package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
- package/scripts/ci/run-mcp-host-cert-matrix.mjs +201 -0
- package/scripts/ci/run-mcp-host-smoke.mjs +473 -0
- package/scripts/ci/run-offline-verification-parity-gate.mjs +762 -0
- package/scripts/ci/run-onboarding-host-success-gate.mjs +516 -0
- package/scripts/ci/run-onboarding-policy-slo-gate.mjs +537 -0
- package/scripts/ci/run-production-cutover-gate.mjs +540 -0
- package/scripts/ci/run-public-openclaw-npx-smoke.mjs +148 -0
- package/scripts/ci/run-release-promotion-guard.mjs +756 -0
- package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
- package/scripts/ci/runtime-import-smoke.mjs +58 -0
- package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
- package/scripts/closepack/lib.mjs +286 -0
- package/scripts/collect-debug.sh +263 -0
- package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
- package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
- package/scripts/demo/delivery-robot/generate.mjs +377 -0
- package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
- package/scripts/demo/magic-link-first-green.mjs +118 -0
- package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
- package/scripts/demo/mcp-paid-exa.mjs +1110 -0
- package/scripts/dev/billing-doctor.sh +145 -0
- package/scripts/dev/billing-smoke-prod.sh +219 -0
- package/scripts/dev/billing-webhook-replay.sh +161 -0
- package/scripts/dev/env.dev.example +29 -0
- package/scripts/dev/env.sh +37 -0
- package/scripts/dev/new-sdk-key.sh +81 -0
- package/scripts/dev/sdk-first-run.sh +21 -0
- package/scripts/dev/smoke-x402-gateway.sh +115 -0
- package/scripts/dev/start-api.sh +24 -0
- package/scripts/doctor/mcp-host.mjs +120 -0
- package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
- package/scripts/examples/sdk-first-paid-rfq.py +105 -0
- package/scripts/examples/sdk-first-verified-run.mjs +85 -0
- package/scripts/examples/sdk-first-verified-run.py +99 -0
- package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
- package/scripts/examples/sdk-tenant-analytics.py +118 -0
- package/scripts/finance-pack/bundle.mjs +284 -0
- package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
- package/scripts/governance/export.mjs +169 -0
- package/scripts/load/delivery-stress.k6.js +183 -0
- package/scripts/load/ingest-burst.k6.js +236 -0
- package/scripts/load/run-delivery-load.js +66 -0
- package/scripts/load/webhook-receiver.js +131 -0
- package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
- package/scripts/mcp/probe.mjs +238 -0
- package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
- package/scripts/mcp/settld-mcp-server.mjs +1511 -0
- package/scripts/openapi/write.mjs +13 -0
- package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
- package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
- package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
- package/scripts/ops/design-partner-run-packet.mjs +466 -0
- package/scripts/ops/dispute-finance-reconciliation-packet.mjs +313 -0
- package/scripts/ops/hosted-baseline-evidence.mjs +890 -0
- package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
- package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
- package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
- package/scripts/ops/run-x402-hitl-smoke.mjs +607 -0
- package/scripts/pilot/finance-pack.mjs +495 -0
- package/scripts/pilot/fixtures/robot-keypair.json +4 -0
- package/scripts/pilot/fixtures/server-signer.json +4 -0
- package/scripts/policy/cli.mjs +600 -0
- package/scripts/profile/cli.mjs +1324 -0
- package/scripts/proof-bundle/job.mjs +109 -0
- package/scripts/proof-bundle/lib.mjs +92 -0
- package/scripts/proof-bundle/month.mjs +103 -0
- package/scripts/provider/conformance-run.mjs +159 -0
- package/scripts/provider/keys-generate.mjs +135 -0
- package/scripts/provider/publish.mjs +420 -0
- package/scripts/quickstart/x402.mjs +334 -0
- package/scripts/register-entity-secret.mjs +102 -0
- package/scripts/release/build-artifacts.mjs +181 -0
- package/scripts/release/generate-release-index.mjs +112 -0
- package/scripts/release/release-index-lib.mjs +232 -0
- package/scripts/release/sign-release-index.mjs +85 -0
- package/scripts/release/validate-release-assets.mjs +170 -0
- package/scripts/release/verify-release.mjs +261 -0
- package/scripts/restore-pg.sh +34 -0
- package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
- package/scripts/sdk/smoke-python.py +30 -0
- package/scripts/sdk/smoke.mjs +16 -0
- package/scripts/settlement/x402-batch-worker.mjs +1091 -0
- package/scripts/setup/circle-bootstrap.mjs +310 -0
- package/scripts/setup/host-config.mjs +617 -0
- package/scripts/setup/onboard.mjs +1337 -0
- package/scripts/setup/openclaw-onboard.mjs +423 -0
- package/scripts/setup/wizard.mjs +986 -0
- package/scripts/slo/check.mjs +239 -0
- package/scripts/smoke/k8s-smoke.mjs +214 -0
- package/scripts/spec/generate-protocol-vectors.mjs +1019 -0
- package/scripts/test/check-no-generated-artifacts.sh +12 -0
- package/scripts/test/run.sh +59 -0
- package/scripts/trust/validate-trust-file.mjs +57 -0
- package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
- package/scripts/trust-config/wizard.mjs +161 -0
- package/scripts/vendor-contract-test-lib.mjs +182 -0
- package/scripts/vendor-contract-test.mjs +55 -0
- package/scripts/vercel/build-mkdocs.sh +9 -0
- package/scripts/vercel/ignore-mkdocs.sh +25 -0
- package/scripts/vercel/install-mkdocs.sh +6 -0
- package/scripts/verify-pg.js +217 -0
- package/scripts/x402/receipt-verify.mjs +289 -0
- package/services/finance-sink/src/dedupe-store.js +29 -6
- package/services/receiver/src/dedupe-store.js +29 -5
- package/services/x402-gateway/Dockerfile +13 -0
- package/services/x402-gateway/README.md +58 -0
- package/services/x402-gateway/examples/upstream-mock.js +337 -0
- package/services/x402-gateway/src/server.js +1058 -0
- package/src/api/app.js +34658 -16940
- package/src/api/maintenance.js +70 -0
- package/src/api/middleware/trust-kernel.js +114 -0
- package/src/api/openapi.js +1778 -70
- package/src/api/persistence.js +456 -0
- package/src/api/server.js +81 -5
- package/src/api/store.js +1581 -62
- package/src/api/workers/deliveries.js +99 -4
- package/src/api/workers/insolvency-sweep.js +159 -0
- package/src/core/agent-card.js +69 -0
- package/src/core/agent-wallets.js +231 -0
- package/src/core/agreement-delegation.js +549 -0
- package/src/core/billing-plans.js +40 -6
- package/src/core/circle-reserve-adapter.js +845 -0
- package/src/core/event-policy.js +21 -2
- package/src/core/maintenance-locks.js +1 -0
- package/src/core/operator-action.js +303 -0
- package/src/core/paid-tool-manifest.js +318 -0
- package/src/core/policy-decision.js +322 -0
- package/src/core/policy-packs.js +207 -0
- package/src/core/profile-fingerprint.js +27 -0
- package/src/core/profile-simulation-reasons.js +84 -0
- package/src/core/profile-templates.js +242 -0
- package/src/core/provider-publish-conformance.js +525 -0
- package/src/core/provider-publish-proof.js +396 -0
- package/src/core/provider-quote-signature.js +170 -0
- package/src/core/settld-keys.js +112 -0
- package/src/core/settld-pay-token.js +344 -0
- package/src/core/settlement-kernel.js +239 -2
- package/src/core/settlement-verifier.js +335 -0
- package/src/core/tool-call-agreement.js +112 -0
- package/src/core/tool-call-evidence.js +144 -0
- package/src/core/tool-provider-signature.js +98 -0
- package/src/core/wallet-assignment-resolver.js +129 -0
- package/src/core/wallet-provider-bootstrap.js +365 -0
- package/src/core/x402-escalation-override.js +258 -0
- package/src/core/x402-gate.js +118 -0
- package/src/core/x402-provider-refund-decision.js +220 -0
- package/src/core/x402-receipt-verifier.js +708 -0
- package/src/core/x402-reversal-command.js +251 -0
- package/src/core/x402-wallet-issuer-decision.js +252 -0
- package/src/core/zk-verifier.js +300 -0
- package/src/db/migrations/029_reputation_event_index.sql +54 -0
- package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
- package/src/db/pg.js +18 -7
- package/src/db/store-pg.js +1508 -111
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Release 1 SLOs and Error Budgets
|
|
2
|
+
|
|
3
|
+
Date baseline: February 7, 2026
|
|
4
|
+
Release target: `Settld Verified Transactions v1` (end of Sprint 4)
|
|
5
|
+
|
|
6
|
+
## Scope
|
|
7
|
+
|
|
8
|
+
These SLOs govern the Release 1 production path:
|
|
9
|
+
|
|
10
|
+
- Agent identity registration and wallet funding.
|
|
11
|
+
- Marketplace RFQ, bid, accept, and run execution flows.
|
|
12
|
+
- Settlement, dispute, and policy replay endpoints.
|
|
13
|
+
- Ops payout enqueue and money rail operation status/cancel flows.
|
|
14
|
+
|
|
15
|
+
## SLO-1: API availability
|
|
16
|
+
|
|
17
|
+
- SLI: successful request ratio for R1 endpoints.
|
|
18
|
+
- Objective: 99.9% monthly availability.
|
|
19
|
+
- Error budget: 43m 49s/month.
|
|
20
|
+
- Burn alert thresholds:
|
|
21
|
+
- Fast burn: >10% budget consumed in 1 hour.
|
|
22
|
+
- Slow burn: >25% budget consumed in 7 days.
|
|
23
|
+
|
|
24
|
+
## SLO-2: Settlement latency
|
|
25
|
+
|
|
26
|
+
- SLI: p95 latency for terminal settlement transitions (auto or manual resolve).
|
|
27
|
+
- Objective: p95 < 2.5s.
|
|
28
|
+
- Error budget: 5% of settlement requests may exceed p95 threshold.
|
|
29
|
+
|
|
30
|
+
## SLO-3: Verification latency
|
|
31
|
+
|
|
32
|
+
- SLI: p95 latency for verification status computation on run terminal events.
|
|
33
|
+
- Objective: p95 < 3.0s.
|
|
34
|
+
- Error budget: 5% monthly.
|
|
35
|
+
|
|
36
|
+
## SLO-4: Money rail operation freshness
|
|
37
|
+
|
|
38
|
+
- SLI: age of operations remaining in `initiated` or `submitted` without progress.
|
|
39
|
+
- Objective: 99% of operations progress or close within 30 minutes.
|
|
40
|
+
- Error budget: 1% monthly.
|
|
41
|
+
|
|
42
|
+
## SLO-5: Reconciliation backlog age
|
|
43
|
+
|
|
44
|
+
- SLI: age of unresolved reconciliation mismatches.
|
|
45
|
+
- Objective: 95% resolved within 48 hours.
|
|
46
|
+
- Error budget: 5% monthly.
|
|
47
|
+
|
|
48
|
+
## SLO-6: Determinism drift
|
|
49
|
+
|
|
50
|
+
- SLI: count of deterministic replay mismatches in CI release-gate suites.
|
|
51
|
+
- Objective: 0 per release candidate.
|
|
52
|
+
- Error budget: none; any drift is release-blocking.
|
|
53
|
+
|
|
54
|
+
## Release-blocking conditions
|
|
55
|
+
|
|
56
|
+
- Any failing deterministic replay/conformance suite.
|
|
57
|
+
- Any unacknowledged Sev1 or Sev2 incident on settlement or verification path.
|
|
58
|
+
- Missing rollback plan for money rails, escrow/netting, or arbitration changes.
|
|
59
|
+
|
|
60
|
+
## Dashboard requirements
|
|
61
|
+
|
|
62
|
+
- Endpoint latency and availability by route family.
|
|
63
|
+
- Settlement states over time and stuck-state counts.
|
|
64
|
+
- Money rail lifecycle state histogram by provider.
|
|
65
|
+
- Reconciliation mismatch count and age buckets.
|
|
66
|
+
- Determinism gate pass/fail trend by commit.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Release signing incident runbook
|
|
2
|
+
|
|
3
|
+
This runbook covers the “release signing key compromised” scenario for Settld distribution artifacts.
|
|
4
|
+
|
|
5
|
+
## Immediate goals
|
|
6
|
+
|
|
7
|
+
- Prevent future malicious releases from verifying.
|
|
8
|
+
- Preserve a clear audit trail of what happened and what was rotated.
|
|
9
|
+
|
|
10
|
+
## Assumptions
|
|
11
|
+
|
|
12
|
+
- Release authenticity is verified via `ReleaseIndex.v1` + `ReleaseTrust.v2` (see `docs/spec/SUPPLY_CHAIN.md`).
|
|
13
|
+
- Release trust roots are pinned in `trust/release-trust.json`.
|
|
14
|
+
- Release signing private keys are stored as CI secrets (e.g., `SETTLD_RELEASE_SIGNING_PRIVATE_KEY_PEM`).
|
|
15
|
+
|
|
16
|
+
## Procedure (high-level)
|
|
17
|
+
|
|
18
|
+
1) **Revoke compromised key**
|
|
19
|
+
|
|
20
|
+
- Edit `trust/release-trust.json`:
|
|
21
|
+
- Keep the key entry (do not delete immediately).
|
|
22
|
+
- Set `revokedAtEpochSeconds` to the intended cutoff time.
|
|
23
|
+
- Add/update `comment` with incident reference.
|
|
24
|
+
|
|
25
|
+
2) **Add replacement key**
|
|
26
|
+
|
|
27
|
+
- Generate a new Ed25519 keypair (private key never committed).
|
|
28
|
+
- Add its public key + `keyId` into `trust/release-trust.json`.
|
|
29
|
+
- If you require quorum, ensure policy still holds (`policy.minSignatures`).
|
|
30
|
+
|
|
31
|
+
3) **Rotate CI secrets**
|
|
32
|
+
|
|
33
|
+
- Update the release workflow secret(s) to use the new private key(s).
|
|
34
|
+
- If quorum is required, ensure CI has all required signing keys/secrets.
|
|
35
|
+
|
|
36
|
+
4) **Cut a release candidate and verify**
|
|
37
|
+
|
|
38
|
+
- Produce release artifacts.
|
|
39
|
+
- Verify via:
|
|
40
|
+
- `settld-release verify --dir <release-assets-dir> --trust-file trust/release-trust.json --format json --explain`
|
|
41
|
+
|
|
42
|
+
5) **Validate the block**
|
|
43
|
+
|
|
44
|
+
- A release signed with the revoked key at/after `revokedAtEpochSeconds` must fail verification with `RELEASE_SIGNER_REVOKED`.
|
|
45
|
+
|
|
46
|
+
## Automated drill
|
|
47
|
+
|
|
48
|
+
CI includes a compromise drill test:
|
|
49
|
+
|
|
50
|
+
- `test/release-signing-compromise-drill.test.js`
|
|
51
|
+
|
|
52
|
+
This test simulates:
|
|
53
|
+
|
|
54
|
+
- old key revoked
|
|
55
|
+
- new key added
|
|
56
|
+
- release signed with old key after revocation fails
|
|
57
|
+
- release signed with new key passes
|
|
58
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Self-Serve Launch Automation (S197/S198)
|
|
2
|
+
|
|
3
|
+
This runbook covers the self-serve launch automation surfaces:
|
|
4
|
+
|
|
5
|
+
- onboarding email sequence automation,
|
|
6
|
+
- referral funnel instrumentation,
|
|
7
|
+
- benchmark artifact generation for launch reporting.
|
|
8
|
+
|
|
9
|
+
## 1) Onboarding email sequence
|
|
10
|
+
|
|
11
|
+
Magic Link now emits a milestone-based onboarding email sequence per tenant:
|
|
12
|
+
|
|
13
|
+
- `welcome`
|
|
14
|
+
- `sample_verified_nudge`
|
|
15
|
+
- `first_settlement_completed`
|
|
16
|
+
|
|
17
|
+
Implementation:
|
|
18
|
+
|
|
19
|
+
- `services/magic-link/src/onboarding-email-sequence.js`
|
|
20
|
+
- wired from `services/magic-link/src/server.js` on tenant create, onboarding events, and upload progress.
|
|
21
|
+
|
|
22
|
+
Environment controls:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
MAGIC_LINK_ONBOARDING_EMAIL_SEQUENCE_ENABLED=1
|
|
26
|
+
MAGIC_LINK_ONBOARDING_EMAIL_DELIVERY_MODE=record # record|log|smtp
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Default behavior:
|
|
30
|
+
|
|
31
|
+
- uses `smtp` when SMTP is configured,
|
|
32
|
+
- falls back to `record` otherwise.
|
|
33
|
+
|
|
34
|
+
Record mode writes deterministic outbox files:
|
|
35
|
+
|
|
36
|
+
- `onboarding-email-outbox/<tenantId>/<stepKey>/*.json`
|
|
37
|
+
- per-tenant state: `tenants/<tenantId>/onboarding_email_sequence.json`
|
|
38
|
+
|
|
39
|
+
## 2) Referral loop instrumentation
|
|
40
|
+
|
|
41
|
+
Referral loop signals are ingested through onboarding events:
|
|
42
|
+
|
|
43
|
+
- `referral_link_shared`
|
|
44
|
+
- `referral_signup`
|
|
45
|
+
|
|
46
|
+
Endpoint:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
POST /v1/tenants/{tenantId}/onboarding/events
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Example payloads:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{ "eventType": "referral_link_shared", "metadata": { "channel": "email", "campaign": "launch_v1" } }
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{ "eventType": "referral_signup", "metadata": { "sourceTenantId": "tenant_a", "referredTenantId": "tenant_b" } }
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Metrics exposure:
|
|
63
|
+
|
|
64
|
+
- `GET /v1/tenants/{tenantId}/onboarding-metrics`
|
|
65
|
+
- includes `referral.linkSharedCount`, `referral.signupCount`, `referral.conversionRatePct`.
|
|
66
|
+
|
|
67
|
+
## 3) Launch benchmark artifact
|
|
68
|
+
|
|
69
|
+
Build benchmark report from launch gate + throughput + incident rehearsal artifacts:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
node scripts/ci/build-self-serve-benchmark-report.mjs
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Output:
|
|
76
|
+
|
|
77
|
+
- `artifacts/launch/self-serve-benchmark-report.json`
|
|
78
|
+
|
|
79
|
+
Inputs (defaults):
|
|
80
|
+
|
|
81
|
+
- `artifacts/gates/self-serve-launch-gate.json`
|
|
82
|
+
- `artifacts/throughput/10x-drill-summary.json`
|
|
83
|
+
- `artifacts/throughput/10x-incident-rehearsal-summary.json`
|
|
84
|
+
|
|
85
|
+
NPM shortcut:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm run test:ops:self-serve-benchmark
|
|
89
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Throughput Drill 10x Runbook
|
|
2
|
+
|
|
3
|
+
Objective: execute `STLD-T177` as an auditable gate artifact, not a one-off benchmark.
|
|
4
|
+
|
|
5
|
+
## Command
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
BASE_URL=http://127.0.0.1:3000 \
|
|
9
|
+
OPS_TOKEN=ops_ci \
|
|
10
|
+
TENANTS=3 \
|
|
11
|
+
ROBOTS_PER_TENANT=3 \
|
|
12
|
+
BASELINE_JOBS_PER_MIN_PER_TENANT=10 \
|
|
13
|
+
THROUGHPUT_MULTIPLIER=10 \
|
|
14
|
+
DURATION=120s \
|
|
15
|
+
TARGET_P95_MS=5000 \
|
|
16
|
+
MAX_FAILURE_RATE=0.05 \
|
|
17
|
+
node scripts/ci/run-10x-throughput-drill.mjs
|
|
18
|
+
|
|
19
|
+
BASE_URL=http://127.0.0.1:3000 \
|
|
20
|
+
OPS_TOKEN=ops_ci \
|
|
21
|
+
node scripts/ci/run-10x-throughput-incident-rehearsal.mjs
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If local `k6` is not installed, the runner automatically falls back to `docker` (`grafana/k6:0.48.0`).
|
|
25
|
+
Set `ALLOW_DOCKER_K6_FALLBACK=0` to require native `k6`.
|
|
26
|
+
|
|
27
|
+
## Outputs
|
|
28
|
+
|
|
29
|
+
- K6 summary: `artifacts/throughput/10x-drill-k6-summary.json`
|
|
30
|
+
- Gate report: `artifacts/throughput/10x-drill-summary.json`
|
|
31
|
+
- Incident rehearsal report: `artifacts/throughput/10x-incident-rehearsal-summary.json`
|
|
32
|
+
|
|
33
|
+
## Gate conditions
|
|
34
|
+
|
|
35
|
+
- k6 exits with status `0`
|
|
36
|
+
- `http_req_duration p(95)` <= `TARGET_P95_MS`
|
|
37
|
+
- `http_req_failed rate` <= `MAX_FAILURE_RATE`
|
|
38
|
+
- ingest rejection rate <= `MAX_INGEST_REJECTED_PER_MIN`
|
|
39
|
+
|
|
40
|
+
## Incident rehearsal checklist
|
|
41
|
+
|
|
42
|
+
- Run `node scripts/ci/run-10x-throughput-incident-rehearsal.mjs` immediately after the load drill.
|
|
43
|
+
- Confirm `artifacts/throughput/10x-incident-rehearsal-summary.json` has `verdict.ok=true`.
|
|
44
|
+
- Verify rehearsal checks are green:
|
|
45
|
+
- degraded-mode signal was emitted,
|
|
46
|
+
- rollback returned active policy to stable,
|
|
47
|
+
- communications markers were captured in `/ops/audit`,
|
|
48
|
+
- command-center post-rollback breach count is zero.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Trust Config Wizard
|
|
2
|
+
|
|
3
|
+
Use this when you want to create an SLA policy config from a template.
|
|
4
|
+
|
|
5
|
+
## Fastest path for onboarding
|
|
6
|
+
|
|
7
|
+
If you want a ready starter policy during host setup, run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
settld setup --yes --mode manual --host codex --base-url http://127.0.0.1:3000 --tenant-id tenant_default --api-key sk_live_xxx.yyy --profile-id engineering-spend --smoke
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This sets up host MCP config and applies a starter policy profile in one run.
|
|
14
|
+
|
|
15
|
+
## New policy wizard flow (template-based)
|
|
16
|
+
|
|
17
|
+
1. List templates:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm run trust:wizard -- list --format text
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
2. Preview one template:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm run trust:wizard -- show --template delivery_standard_v1 --format text
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
3. Render a policy config file:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run trust:wizard -- render --template delivery_standard_v1 --overrides-json '{"metrics":{"targetCompletionMinutes":60}}' --out ./policy.delivery.json --format json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
4. Validate the same overrides:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run trust:wizard -- validate --template delivery_standard_v1 --overrides-json '{"metrics":{"targetCompletionMinutes":60}}' --format json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Supported commands:
|
|
42
|
+
|
|
43
|
+
- `list [--vertical delivery|security] [--format json|text]`
|
|
44
|
+
- `show --template <templateId> [--format json|text]`
|
|
45
|
+
- `render --template <templateId> [--overrides-json <json>] [--out <path>] [--format json|text]`
|
|
46
|
+
- `validate --template <templateId> [--overrides-json <json>] [--format json|text]`
|
|
47
|
+
|
|
48
|
+
## API endpoint
|
|
49
|
+
|
|
50
|
+
- `GET /ops/sla-templates`
|
|
51
|
+
- Scope: `ops_read`
|
|
52
|
+
- Optional query: `vertical=delivery|security`
|
|
53
|
+
- Response: `SlaPolicyTemplateCatalog.v1`
|
|
54
|
+
|
|
55
|
+
Example:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
curl -sS "http://localhost:3000/ops/sla-templates?vertical=security" \
|
|
59
|
+
-H "x-proxy-ops-token: <ops_read_token>" | jq
|
|
60
|
+
```
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# X402 Pilot Weekly Reliability Metrics
|
|
2
|
+
|
|
3
|
+
Use this report to publish weekly reliability numbers for the Circle-backed paid tool pilot.
|
|
4
|
+
|
|
5
|
+
The report is artifact-driven and summarizes paid MCP/x402 runs under `artifacts/mcp-paid-exa`.
|
|
6
|
+
|
|
7
|
+
## Why this exists
|
|
8
|
+
|
|
9
|
+
Before broad provider expansion, the pilot must prove:
|
|
10
|
+
|
|
11
|
+
- reserve behavior is stable,
|
|
12
|
+
- token and provider signature verification are stable,
|
|
13
|
+
- settlement execution is stable.
|
|
14
|
+
|
|
15
|
+
This command produces a deterministic JSON report you can commit or attach to release notes.
|
|
16
|
+
|
|
17
|
+
## Run
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm run ops:x402:pilot:weekly-report -- \
|
|
21
|
+
--artifact-root artifacts/mcp-paid-exa \
|
|
22
|
+
--days 7 \
|
|
23
|
+
--out artifacts/ops/x402-pilot-reliability-report.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Optional reliability gates:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm run ops:x402:pilot:weekly-report -- \
|
|
30
|
+
--artifact-root artifacts/mcp-paid-exa \
|
|
31
|
+
--days 7 \
|
|
32
|
+
--max-reserve-fail-rate 0.10 \
|
|
33
|
+
--max-token-verify-fail-rate 0.01 \
|
|
34
|
+
--max-provider-sig-fail-rate 0.01 \
|
|
35
|
+
--min-settlement-success-rate 0.98
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If threshold gates are supplied, command exit code is non-zero when any gate fails.
|
|
39
|
+
|
|
40
|
+
## Output schema
|
|
41
|
+
|
|
42
|
+
`X402PilotReliabilityReport.v1` includes:
|
|
43
|
+
|
|
44
|
+
- `runCounts`
|
|
45
|
+
- `runsInWindow`
|
|
46
|
+
- `infraBootFailures`
|
|
47
|
+
- `toolCallAttempts`
|
|
48
|
+
- `successfulPaidCalls`
|
|
49
|
+
- `metrics`
|
|
50
|
+
- `timeToFirstPaidCallMs`
|
|
51
|
+
- `reserveFailRate`
|
|
52
|
+
- `tokenVerifyFailRate`
|
|
53
|
+
- `providerSigFailRate`
|
|
54
|
+
- `settlementSuccessRate`
|
|
55
|
+
- `replayDuplicateRate`
|
|
56
|
+
- `samples`
|
|
57
|
+
- run ids for reserve/token/signature/settlement failures
|
|
58
|
+
- `verdict`
|
|
59
|
+
- threshold check results when thresholds are passed
|
|
60
|
+
|
|
61
|
+
## Metric notes
|
|
62
|
+
|
|
63
|
+
- `reserveFailRate` is inferred from attempted runs with `gateway_error` today.
|
|
64
|
+
- Infrastructure boot failures are excluded from economic reliability denominators.
|
|
65
|
+
- `replayDuplicateRate` uses provider replay counters emitted by paid demo artifacts (`provider-replay-probe.json` or `summary.replayCounters`).
|
|
66
|
+
|
|
67
|
+
## Recommended weekly publish set
|
|
68
|
+
|
|
69
|
+
- `timeToFirstPaidCallMs`
|
|
70
|
+
- `reserveFailRate`
|
|
71
|
+
- `tokenVerifyFailRate`
|
|
72
|
+
- `providerSigFailRate`
|
|
73
|
+
- `settlementSuccessRate`
|
|
74
|
+
- `replayDuplicateRate`
|
|
75
|
+
|
|
76
|
+
Keep provider expansion gated on these metrics, not on raw demo volume.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Tool-Call Disputes and Holdback (Ops Runbook)
|
|
2
|
+
|
|
3
|
+
## When To Use Party Open vs Ops Override
|
|
4
|
+
|
|
5
|
+
- Use **party open** when:
|
|
6
|
+
- payer/payee is within the hold challenge window
|
|
7
|
+
- the dispute is expected and can be resolved by normal arbitration timelines
|
|
8
|
+
|
|
9
|
+
- Use **ops/admin override** when:
|
|
10
|
+
- the challenge window is closed but funds are still held (exception path)
|
|
11
|
+
- an incorrect hold configuration needs remediation
|
|
12
|
+
- you need to open a case for forensic/incident reasons
|
|
13
|
+
|
|
14
|
+
Ops override requires `ops_write` and must include an explicit override reason in the case metadata.
|
|
15
|
+
|
|
16
|
+
## How Holds Get “Stuck”
|
|
17
|
+
|
|
18
|
+
A hold can remain in `held` if:
|
|
19
|
+
|
|
20
|
+
- an arbitration case exists for the hold and the case `status` is not `closed`
|
|
21
|
+
- the verdict has been issued but the adjustment was not applied (should be rare; indicates an idempotency/DB failure)
|
|
22
|
+
- escrow balances are inconsistent (wallet has insufficient escrow locked to complete release/refund)
|
|
23
|
+
|
|
24
|
+
## Debug Checklist
|
|
25
|
+
|
|
26
|
+
1. Identify the `holdHash`:
|
|
27
|
+
- from the hold record (FundingHold.v1)
|
|
28
|
+
- or from the arbitration case metadata (`metadata.holdHash`)
|
|
29
|
+
2. List tool-call arbitration cases for the agreement:
|
|
30
|
+
- `GET /tool-calls/arbitration/cases?agreementHash=...`
|
|
31
|
+
3. Verify the case metadata:
|
|
32
|
+
- `caseType: "tool_call"`
|
|
33
|
+
- `agreementHash`, `receiptHash`, `holdHash` are present and 64-hex sha256
|
|
34
|
+
4. If the case is not closed, the auto-release tick will skip the hold.
|
|
35
|
+
|
|
36
|
+
## Maintenance Tick
|
|
37
|
+
|
|
38
|
+
The tool-call holdback maintenance tick:
|
|
39
|
+
|
|
40
|
+
- will **not** auto-release holds referenced by any non-closed tool-call arbitration case
|
|
41
|
+
- will skip holds whose challenge window has not yet ended
|
|
42
|
+
- operates on held escrow funds only
|
|
43
|
+
|
|
44
|
+
Endpoint:
|
|
45
|
+
|
|
46
|
+
- `POST /ops/maintenance/tool-call-holdback/run`
|
|
47
|
+
|
|
48
|
+
Suggested alerting:
|
|
49
|
+
|
|
50
|
+
- Alert on `tool_call_holdback_auto_release_skipped_total{reason="arbitration_case_open"}` growth without a corresponding decrease in open case count.
|
|
51
|
+
- Alert on holds blocked beyond an SLA threshold (derive from hold `createdAt` and current time).
|
|
52
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Pilot Package + Success Scorecard (x402 Wedge)
|
|
2
|
+
|
|
3
|
+
This defines the default pilot offer and measurable success gates for Settld x402 deployments.
|
|
4
|
+
|
|
5
|
+
## 1. Pilot Package
|
|
6
|
+
|
|
7
|
+
- Scope: 1 paid tool workflow, 1 buyer, 1 provider, 1 tenant.
|
|
8
|
+
- Duration: 4-6 weeks.
|
|
9
|
+
- Success proof: deterministic receipts + offline verification + export for finance.
|
|
10
|
+
- Out of scope: broad marketplace rollout, unrestricted side-effect tools.
|
|
11
|
+
|
|
12
|
+
## 2. Delivery Timeline
|
|
13
|
+
|
|
14
|
+
1. Week 0: scope lock, baseline capture, env + keys provisioned.
|
|
15
|
+
2. Week 1: first paid call in production-like flow (`402 -> retry -> verify`).
|
|
16
|
+
3. Week 2-3: volume ramp + policy tuning (caps, allowlists, dispute windows).
|
|
17
|
+
4. Week 4-6: KPI review, case-study artifacts, expansion decision.
|
|
18
|
+
|
|
19
|
+
## 3. Scorecard (Baseline + Target)
|
|
20
|
+
|
|
21
|
+
| Metric | Baseline (before Settld) | Target (pilot) | Measurement |
|
|
22
|
+
|---|---:|---:|---|
|
|
23
|
+
| Integration time to first paid call | > 2 days | < 1 afternoon | Start-to-first successful settled paid call |
|
|
24
|
+
| Auto-resolve rate (%) | < 40% | >= 80% | `released / total verified` for in-scope runs |
|
|
25
|
+
| Dispute rate (%) | > 10% | <= 5% | `disputed / settled` over pilot window |
|
|
26
|
+
| Time-to-settle (p95) | > 24h | < 15m | verification-to-settlement latency |
|
|
27
|
+
|
|
28
|
+
## 4. Required Evidence Artifacts
|
|
29
|
+
|
|
30
|
+
- x402 gate trace (`gateId`, authorization ref, reserve id where applicable)
|
|
31
|
+
- Decision + settlement binding hashes
|
|
32
|
+
- Receipt export for pilot window
|
|
33
|
+
- Offline verifier output sample on exported receipts
|
|
34
|
+
- Weekly reliability report (`reserveFailRate`, `providerSigFailRate`, `settlementSuccessRate`)
|
|
35
|
+
|
|
36
|
+
## 5. Expansion Triggers
|
|
37
|
+
|
|
38
|
+
- Two or more teams request onboarding.
|
|
39
|
+
- Finance requests recurring automated exports.
|
|
40
|
+
- Scorecard targets met for two consecutive weekly checkpoints.
|
|
41
|
+
|
|
42
|
+
## 6. No-Go / Re-scope Conditions
|
|
43
|
+
|
|
44
|
+
- Integration time target misses twice.
|
|
45
|
+
- Dispute rate trend worsens versus baseline.
|
|
46
|
+
- Settlement reliability below threshold for two consecutive checkpoints.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Pilot Kit (Verify Cloud / Magic Link)
|
|
2
|
+
|
|
3
|
+
This folder is the “send to prospects” kit for running a paid pilot:
|
|
4
|
+
|
|
5
|
+
- Buyer materials (what the page means, what to download, how to re-verify offline)
|
|
6
|
+
- Security posture summary (what we harden against)
|
|
7
|
+
- Integration starting point (webhooks)
|
|
8
|
+
- Simple ROI / billing templates
|
|
9
|
+
|
|
10
|
+
## Recommended pilot flow
|
|
11
|
+
|
|
12
|
+
1. Operator produces an `InvoiceBundle.v1` and uploads it to Verify Cloud (Magic Link).
|
|
13
|
+
2. Buyer receives the link, reviews Green/Amber/Red, and (optionally) records **Approve/Hold** on the page.
|
|
14
|
+
3. Buyer downloads the audit packet for archiving (bundle ZIP + deterministic JSON outputs).
|
|
15
|
+
4. Operator consumes the webhook event to drive their internal workflow.
|
|
16
|
+
|
|
17
|
+
## Contents
|
|
18
|
+
|
|
19
|
+
- `buyer-one-pager.md` — what the buyer sees and what to do.
|
|
20
|
+
- `buyer-email.txt` — copy/paste email template for sending links.
|
|
21
|
+
- `offline-verify.md` — how a buyer/auditor re-verifies locally.
|
|
22
|
+
- `security-summary.md` — zip and bundle hardening posture.
|
|
23
|
+
- `security-qa.md` — short procurement/security questionnaire answers.
|
|
24
|
+
- `architecture-one-pager.md` — deployment and data flow overview for security reviewers.
|
|
25
|
+
- `procurement-one-pager.md` — procurement-facing overview (adoption + security posture).
|
|
26
|
+
- `rfp-clause.md` — draft procurement / RFP language.
|
|
27
|
+
- `roi-calculator-template.csv` — simple template for pilot ROI tracking.
|
|
28
|
+
- `gtm-pilot-playbook.md` — outreach templates, pilot KPI gates, and case-study format.
|
|
29
|
+
- `PILOT_PACKAGE_SCORECARD_X402.md` — default x402 pilot package, baseline/target scorecard, and expansion triggers.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Verify Cloud (Magic Link) — Architecture one-pager
|
|
2
|
+
|
|
3
|
+
This document describes the hosted verification service used in pilots (“Verify Cloud”, implemented by the Magic Link service).
|
|
4
|
+
|
|
5
|
+
## Data flow (high level)
|
|
6
|
+
|
|
7
|
+
1. Vendor uploads a Settld bundle ZIP (e.g. `InvoiceBundle.v1` / `ClosePack.v1`) using a vendor-scoped ingest key.
|
|
8
|
+
2. Verify Cloud stores the ZIP and runs deterministic verification in a budgeted worker.
|
|
9
|
+
3. Verify Cloud writes deterministic outputs + a redacted render model.
|
|
10
|
+
4. Buyer views a hosted report link and/or downloads exports (audit packet, CSV, support bundle).
|
|
11
|
+
5. (Optional) webhooks deliver verification status events.
|
|
12
|
+
|
|
13
|
+
## Components
|
|
14
|
+
|
|
15
|
+
- **HTTP handlers**
|
|
16
|
+
- Vendor ingest: `POST /v1/ingest/:tenantId` (Bearer ingest key)
|
|
17
|
+
- Admin upload: `POST /v1/upload` (admin `x-api-key`)
|
|
18
|
+
- Hosted report/downloads: `GET /r/:token` and `GET /r/:token/<artifact>`
|
|
19
|
+
- Exports: audit packet, support bundle, security packet, CSV
|
|
20
|
+
- **Verification worker**
|
|
21
|
+
- Safe unzip with explicit budgets (rejects zip-slip/symlinks/duplicates/encrypted entries/zip bombs)
|
|
22
|
+
- Deterministic verification producing `VerifyCliOutput.v1`
|
|
23
|
+
- **Storage (filesystem under `MAGIC_LINK_DATA_DIR`)**
|
|
24
|
+
- Run blobs: bundle zip, verifier output, redacted summaries, PDFs, receipts, ClosePack surfaces
|
|
25
|
+
- Minimal immutable run record: `runs/<tenant>/<token>.json` (metadata-only)
|
|
26
|
+
- Audit/usage logs (JSONL) for accounting and operations
|
|
27
|
+
- **Maintenance**
|
|
28
|
+
- Retention sweeper deletes heavy artifacts after effective retention windows
|
|
29
|
+
|
|
30
|
+
## Trust and integrity model
|
|
31
|
+
|
|
32
|
+
- Buyers supply governance trust roots and pricing signer keys out-of-band.
|
|
33
|
+
- Verification can run in strict or compat mode depending on policy and configured trust.
|
|
34
|
+
- Offline verifiability: the buyer can archive the bundle ZIP and deterministically re-verify it later without access to vendor systems.
|
|
35
|
+
|
|
36
|
+
## Access control model
|
|
37
|
+
|
|
38
|
+
- Admin API: `x-api-key` (`MAGIC_LINK_API_KEY`)
|
|
39
|
+
- Vendor uploads: ingest keys (upload-only)
|
|
40
|
+
- Buyer sessions (optional): email OTP allowlist + RBAC roles (`viewer|approver|admin`)
|
|
41
|
+
- Decision capture (optional): email OTP gating for approve/hold
|
|
42
|
+
|
|
43
|
+
## Operational exports
|
|
44
|
+
|
|
45
|
+
- **Audit packet**: archive-friendly, deterministic
|
|
46
|
+
- **Support bundle**: time-bounded; metadata-first; redacted settings snapshot; no raw bundles by default
|
|
47
|
+
- **Security & controls packet**: threat model + budgets + retention/redaction manifests + checksums
|
|
48
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Subject: Verified invoice link (evidence-backed)
|
|
2
|
+
|
|
3
|
+
Hi,
|
|
4
|
+
|
|
5
|
+
Here is your verified invoice link:
|
|
6
|
+
<PASTE_MAGIC_LINK_HERE>
|
|
7
|
+
|
|
8
|
+
This link provides:
|
|
9
|
+
- Green/Amber/Red verification status
|
|
10
|
+
- Invoice totals + line item summary
|
|
11
|
+
- Stable error/warning codes when something fails
|
|
12
|
+
- Downloads for audit/offline replay (bundle ZIP + deterministic verification JSON + audit packet)
|
|
13
|
+
- Optional Approve/Hold decision capture with exportable record
|
|
14
|
+
|
|
15
|
+
If you need to re-verify offline, download the bundle ZIP from the page and run your verifier under your trust policy.
|
|
16
|
+
|
|
17
|
+
Thanks,
|
|
18
|
+
<YOUR_NAME>
|
|
19
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Settld Verified Invoice (Buyer one-pager)
|
|
2
|
+
|
|
3
|
+
This invoice link is backed by a **cryptographically verifiable bundle** (an `InvoiceBundle.v1`) that can be archived and re-verified later, offline.
|
|
4
|
+
|
|
5
|
+
## What you see on the page
|
|
6
|
+
|
|
7
|
+
- **Green**: Verified with no warnings.
|
|
8
|
+
- **Amber**: Verified, but warnings are present (common early: governance trust anchors not configured for strict verification).
|
|
9
|
+
- **Red**: Verification failed.
|
|
10
|
+
|
|
11
|
+
## What you can download
|
|
12
|
+
|
|
13
|
+
- **Bundle ZIP**: the exact artifact that was verified (archive this for audit).
|
|
14
|
+
- **Verification JSON** (`VerifyCliOutput.v1`): deterministic, machine-readable result (codes + hashes).
|
|
15
|
+
- **Producer receipt** (if present): `verify/verification_report.json` from inside the bundle (producer-signed).
|
|
16
|
+
- **Audit packet ZIP**: bundle ZIP + hosted verification JSON + any embedded receipt + PDF summary + decision record.
|
|
17
|
+
- **PDF summary**: non-normative human summary for compatibility (not the source of truth).
|
|
18
|
+
|
|
19
|
+
## Approve / Hold
|
|
20
|
+
|
|
21
|
+
The page can record a simple **Approve / Hold** decision with a name + email + optional reason.
|
|
22
|
+
|
|
23
|
+
This decision record is a **service record** (non-normative) and can be exported as `decision_record_v0.json`.
|
|
24
|
+
|
|
25
|
+
## Offline re-verification (recommended for audit)
|
|
26
|
+
|
|
27
|
+
1. Download the **Bundle ZIP**.
|
|
28
|
+
2. Verify locally using `settld-verify` (or another conforming verifier) under your trust policy.
|
|
29
|
+
|
|
30
|
+
See `offline-verify.md`.
|
|
31
|
+
|