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