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,182 @@
|
|
|
1
|
+
# GTM Pilot Playbook (Autonomous Workflows)
|
|
2
|
+
|
|
3
|
+
This playbook turns Settld pilot work into repeatable pipeline and expansion motion.
|
|
4
|
+
|
|
5
|
+
## 1) Pilot objective
|
|
6
|
+
|
|
7
|
+
Win a paid pilot that proves three things in 30-60 days:
|
|
8
|
+
|
|
9
|
+
- Adoption: teams can reach first verified invoice fast.
|
|
10
|
+
- Economic value: decisions and payout workflow move faster with fewer disputes.
|
|
11
|
+
- Reliability: verification and buyer decision workflows are stable under real usage.
|
|
12
|
+
|
|
13
|
+
## 2) ICP and sequencing
|
|
14
|
+
|
|
15
|
+
Start with workflows where SLA ambiguity already causes payment friction:
|
|
16
|
+
|
|
17
|
+
1. Agent-driven service workflows (fastest path, clear completion evidence)
|
|
18
|
+
2. Delivery/security/field operations (high compliance pressure, recurring SLA checks)
|
|
19
|
+
3. Maintenance/inspection workflows (higher contract value, longer cycle)
|
|
20
|
+
|
|
21
|
+
Buyer personas:
|
|
22
|
+
|
|
23
|
+
- Ops owner (workflow + dispute pain)
|
|
24
|
+
- Finance/procurement owner (payable controls + auditability)
|
|
25
|
+
- Security/compliance reviewer (trust and evidence integrity)
|
|
26
|
+
|
|
27
|
+
## 3) 6-week pilot motion
|
|
28
|
+
|
|
29
|
+
Week 0:
|
|
30
|
+
|
|
31
|
+
- Scope one vendor, one buyer, one contract workflow.
|
|
32
|
+
- Lock target KPIs and baseline current process.
|
|
33
|
+
- Configure tenant settings, SLA template, webhook endpoint.
|
|
34
|
+
|
|
35
|
+
Week 1-2:
|
|
36
|
+
|
|
37
|
+
- Run onboarding wizard and first production-like uploads.
|
|
38
|
+
- Validate buyer approve/hold flow and receipt downloads.
|
|
39
|
+
- Confirm webhook delivery into buyer/vendor systems.
|
|
40
|
+
|
|
41
|
+
Week 3-4:
|
|
42
|
+
|
|
43
|
+
- Increase run volume and edge-case coverage (amber/red paths).
|
|
44
|
+
- Tune template overrides and policy behavior.
|
|
45
|
+
- Track decision latency and dispute deltas weekly.
|
|
46
|
+
|
|
47
|
+
Week 5-6:
|
|
48
|
+
|
|
49
|
+
- Publish KPI delta vs baseline.
|
|
50
|
+
- Package evidence + case study draft.
|
|
51
|
+
- Convert pilot to annual expansion plan.
|
|
52
|
+
|
|
53
|
+
## 4) Outreach templates
|
|
54
|
+
|
|
55
|
+
### A) Cold outreach (ops leader)
|
|
56
|
+
|
|
57
|
+
Subject: Reduce automation-work invoice disputes in 30 days
|
|
58
|
+
|
|
59
|
+
Hi {{Name}},
|
|
60
|
+
|
|
61
|
+
Teams using external agents and automation vendors often lose time in invoice review because SLA evidence and approvals are fragmented.
|
|
62
|
+
Settld gives buyers a single verification link with signed artifact evidence and approve/hold decisions.
|
|
63
|
+
|
|
64
|
+
For a pilot, we scope one workflow and target:
|
|
65
|
+
|
|
66
|
+
- faster buyer decision cycle
|
|
67
|
+
- fewer disputed invoices
|
|
68
|
+
- audit-ready packet export per run
|
|
69
|
+
|
|
70
|
+
Open to a 20-minute fit check next week?
|
|
71
|
+
|
|
72
|
+
### B) Security/procurement intro
|
|
73
|
+
|
|
74
|
+
Subject: Pilot review packet for autonomous-work verification controls
|
|
75
|
+
|
|
76
|
+
Hi {{Name}},
|
|
77
|
+
|
|
78
|
+
Sharing our pilot security/procurement packet:
|
|
79
|
+
|
|
80
|
+
- architecture and data flow
|
|
81
|
+
- redaction and retention behavior
|
|
82
|
+
- deterministic verification and audit outputs
|
|
83
|
+
|
|
84
|
+
If useful, we can run a narrow pilot with your current workflow and keep controls aligned to your review process.
|
|
85
|
+
|
|
86
|
+
### C) Follow-up after demo
|
|
87
|
+
|
|
88
|
+
Subject: Proposed pilot scope and KPI gates
|
|
89
|
+
|
|
90
|
+
Thanks for the walkthrough.
|
|
91
|
+
|
|
92
|
+
Proposed pilot scope:
|
|
93
|
+
|
|
94
|
+
- Workflow: {{workflow}}
|
|
95
|
+
- Duration: {{6 weeks}}
|
|
96
|
+
- KPI gates:
|
|
97
|
+
- first verified invoice < {{target}}
|
|
98
|
+
- buyer decision within 24h > {{target}}
|
|
99
|
+
- dispute rate reduction > {{target}}
|
|
100
|
+
|
|
101
|
+
If this looks right, we can start setup this week.
|
|
102
|
+
|
|
103
|
+
## 5) Pilot success criteria
|
|
104
|
+
|
|
105
|
+
Use these default gates unless the customer sets stricter values:
|
|
106
|
+
|
|
107
|
+
- Time-to-first-verified-invoice: < 30 minutes
|
|
108
|
+
- Buyer decision within 24h: > 50%
|
|
109
|
+
- Webhook delivery success: > 99%
|
|
110
|
+
- Verification latency p95: < 10 seconds
|
|
111
|
+
- Run listing latency (100+ runs): < 500ms
|
|
112
|
+
- Dispute rate delta vs baseline: at least 25% reduction
|
|
113
|
+
|
|
114
|
+
Must-have exit criteria:
|
|
115
|
+
|
|
116
|
+
- At least one full approve path and one hold path demonstrated.
|
|
117
|
+
- Buyer confirms artifact-derived evidence is sufficient for decisions.
|
|
118
|
+
- Finance/procurement accepts exported audit packet format.
|
|
119
|
+
|
|
120
|
+
## 6) Weekly pilot operating cadence
|
|
121
|
+
|
|
122
|
+
Weekly 45-minute review with customer:
|
|
123
|
+
|
|
124
|
+
1. KPI dashboard review (adoption/economic/reliability)
|
|
125
|
+
2. Incident and edge-case review (red/amber failures)
|
|
126
|
+
3. Template/policy updates needed
|
|
127
|
+
4. Next-week volume and success targets
|
|
128
|
+
|
|
129
|
+
Internal Settld cadence:
|
|
130
|
+
|
|
131
|
+
- Monday: KPI check + risk log update
|
|
132
|
+
- Wednesday: technical blockers + integration follow-up
|
|
133
|
+
- Friday: customer summary + expansion signal scoring
|
|
134
|
+
|
|
135
|
+
## 7) Case study format
|
|
136
|
+
|
|
137
|
+
Use this exact structure for repeatable proof:
|
|
138
|
+
|
|
139
|
+
1. Customer context
|
|
140
|
+
2. Baseline process and pain
|
|
141
|
+
3. Pilot scope (workflow, parties, duration)
|
|
142
|
+
4. Implementation (wizard, verify flow, buyer decisions, webhooks)
|
|
143
|
+
5. Measured results (before vs after)
|
|
144
|
+
6. Security/compliance posture summary
|
|
145
|
+
7. Customer quote + rollout plan
|
|
146
|
+
|
|
147
|
+
Required evidence bundle for every case study:
|
|
148
|
+
|
|
149
|
+
- KPI table with baseline and pilot values
|
|
150
|
+
- sample verification status outputs (green/amber/red)
|
|
151
|
+
- decision receipt examples
|
|
152
|
+
- audit packet index snapshot
|
|
153
|
+
- webhook delivery success stats
|
|
154
|
+
|
|
155
|
+
## 8) Expansion conversion checklist
|
|
156
|
+
|
|
157
|
+
Before conversion:
|
|
158
|
+
|
|
159
|
+
- Multi-team onboarding plan approved
|
|
160
|
+
- Contract templates mapped into SLA templates
|
|
161
|
+
- Buyer users and approval roles defined
|
|
162
|
+
- Reporting/export requirements confirmed
|
|
163
|
+
|
|
164
|
+
Expansion triggers:
|
|
165
|
+
|
|
166
|
+
- >2 workflows requesting integration
|
|
167
|
+
- finance team asks for monthly audit exports
|
|
168
|
+
- procurement asks to standardize verification language across vendors
|
|
169
|
+
|
|
170
|
+
## 9) Kill criteria
|
|
171
|
+
|
|
172
|
+
Stop or re-scope if, by week 3:
|
|
173
|
+
|
|
174
|
+
- no measurable KPI movement,
|
|
175
|
+
- buyer does not use decision workflow,
|
|
176
|
+
- integration owner cannot maintain webhook/ops path.
|
|
177
|
+
|
|
178
|
+
Every GTM and product action must improve at least one of:
|
|
179
|
+
|
|
180
|
+
- adoption speed,
|
|
181
|
+
- auto-approval rate,
|
|
182
|
+
- retention/expansion probability.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Offline verification (buyer/audit)
|
|
2
|
+
|
|
3
|
+
This is the “no SaaS required” verification path.
|
|
4
|
+
|
|
5
|
+
## 1) Download artifacts
|
|
6
|
+
|
|
7
|
+
From the Magic Link page, download:
|
|
8
|
+
|
|
9
|
+
- `bundle.zip` (the canonical input)
|
|
10
|
+
- `verify.json` (hosted `VerifyCliOutput.v1`, for reference)
|
|
11
|
+
|
|
12
|
+
## 2) Verify locally with `settld-verify`
|
|
13
|
+
|
|
14
|
+
Extract the bundle ZIP to a directory, then run:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
node packages/artifact-verify/bin/settld-verify.js --format json --strict --invoice-bundle /path/to/extracted/bundle > out.verify.json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Trust anchors (strict mode)
|
|
21
|
+
|
|
22
|
+
Strict verification requires governance trust roots to be provided out-of-band. If you have a trust file:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
export SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON='{"key_...":"-----BEGIN PUBLIC KEY-----..."}'
|
|
26
|
+
export SETTLD_TRUSTED_TIME_AUTHORITY_KEYS_JSON='{"key_...":"-----BEGIN PUBLIC KEY-----..."}'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Then rerun the strict command above.
|
|
30
|
+
|
|
31
|
+
## 3) Compare results deterministically
|
|
32
|
+
|
|
33
|
+
`VerifyCliOutput.v1` is deterministic (stable ordering of errors/warnings and normalized paths). You can archive it and replay verification later.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Verify Cloud (Magic Link) — Procurement one-pager
|
|
2
|
+
|
|
3
|
+
Verify Cloud is a hosted (or self-hosted) verification layer for **evidence-backed invoices**. Vendors submit a Settld bundle (typically `InvoiceBundle.v1` or `ClosePack.v1`), and buyers get a deterministic verification result plus audit-grade exports.
|
|
4
|
+
|
|
5
|
+
## What you get
|
|
6
|
+
|
|
7
|
+
- A read-only “Green / Amber / Red” hosted report link per invoice
|
|
8
|
+
- Deterministic verifier output (`VerifyCliOutput.v1`) suitable for archiving and automation
|
|
9
|
+
- An **audit packet** export (bundle ZIP + hosted verification JSON + receipt surfaces + non-normative PDF summary + decision record, when present)
|
|
10
|
+
- Offline verifiability: download the bundle ZIP and re-verify using `settld-verify` under buyer-controlled trust anchors
|
|
11
|
+
|
|
12
|
+
## What you need to adopt (pilot)
|
|
13
|
+
|
|
14
|
+
- Decide trust configuration:
|
|
15
|
+
- governance trust roots (buyer-supplied)
|
|
16
|
+
- pricing signer keys (buyer-supplied)
|
|
17
|
+
- Decide enforcement policy:
|
|
18
|
+
- strict vs compat default mode
|
|
19
|
+
- whether Amber (warnings) is acceptable for payment eligibility
|
|
20
|
+
- (Optional) enable buyer email OTP + RBAC for inbox and exports
|
|
21
|
+
|
|
22
|
+
## Integration options
|
|
23
|
+
|
|
24
|
+
- Vendor upload via ingest key (simple HTTP upload)
|
|
25
|
+
- Webhooks for `verification.completed` / `verification.failed`
|
|
26
|
+
- CSV export for AP workflows
|
|
27
|
+
- Support bundle export for debugging without SSH/screen recordings
|
|
28
|
+
|
|
29
|
+
## Security posture (high level)
|
|
30
|
+
|
|
31
|
+
- Hostile ZIP defenses: traversal/zip-slip, symlinks, duplicates, encrypted entries, zip-bomb budgets
|
|
32
|
+
- Rate limiting and concurrency budgets (upload + verify)
|
|
33
|
+
- Tenant settings secrets encrypted at rest when `MAGIC_LINK_SETTINGS_KEY_HEX` is configured
|
|
34
|
+
- Explicit data retention enforcement (heavy artifacts deleted after retention)
|
|
35
|
+
- Redaction allowlist for UI/PDF/CSV/support exports (HTML escaped + truncated deterministically)
|
|
36
|
+
|
|
37
|
+
## One-email security review
|
|
38
|
+
|
|
39
|
+
Download the **Security & Controls packet** (zip). It includes:
|
|
40
|
+
|
|
41
|
+
- data inventory + retention behavior summary
|
|
42
|
+
- threat model + budgets/defaults
|
|
43
|
+
- redaction allowlist manifest
|
|
44
|
+
- this procurement one-pager and `security-qa.md`
|
|
45
|
+
- file checksums for internal handling/audit
|
|
46
|
+
|
|
47
|
+
## Offline verification (buyer/auditor)
|
|
48
|
+
|
|
49
|
+
See `offline-verify.md`.
|
|
50
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Draft RFP clause (evidence-backed invoices)
|
|
2
|
+
|
|
3
|
+
This clause is intended to be copy/pasted and then tuned to your policy (strict vs amber, evidence types, SLA/acceptance criteria, etc.).
|
|
4
|
+
|
|
5
|
+
## Verifiable invoice artifacts
|
|
6
|
+
|
|
7
|
+
Vendor MUST provide an evidence-backed invoice artifact for each billing period that is independently verifiable without access to vendor systems.
|
|
8
|
+
|
|
9
|
+
The artifact MUST be one of:
|
|
10
|
+
|
|
11
|
+
- `InvoiceBundle.v1` (invoice claim + metering + pricing terms + evidence references), or
|
|
12
|
+
- `ClosePack.v1` (invoice claim + metering + pricing terms + evidence references + optional SLA/acceptance evaluation surfaces).
|
|
13
|
+
|
|
14
|
+
The artifact MUST:
|
|
15
|
+
|
|
16
|
+
- be an archived bundle (ZIP or directory) containing payload evidence and protocol metadata
|
|
17
|
+
- include a manifest committing (via hashes) to the file set (excluding verifier outputs to avoid circular hashing)
|
|
18
|
+
- include attestations and signatures binding verification receipts to the manifest hash and bundle head attestation hash
|
|
19
|
+
- include buyer-signed pricing terms (e.g. `PricingMatrixSignatures.v2` referencing a canonical pricing matrix hash)
|
|
20
|
+
- support strict verification under explicit buyer-supplied governance trust anchors (provided out-of-band)
|
|
21
|
+
|
|
22
|
+
## Payment eligibility
|
|
23
|
+
|
|
24
|
+
Buyer MAY require that an invoice is eligible for payment only when:
|
|
25
|
+
|
|
26
|
+
- verification is **strict** and **passes** with **no errors**, and
|
|
27
|
+
- warnings (Amber) are either:
|
|
28
|
+
- disallowed (auto-hold), or
|
|
29
|
+
- allowed only under an explicit buyer policy, with manual review/audit trail.
|
|
30
|
+
|
|
31
|
+
## Deliverables and auditability
|
|
32
|
+
|
|
33
|
+
Vendor MUST provide, per invoice:
|
|
34
|
+
|
|
35
|
+
- the bundle ZIP bytes (for archiving)
|
|
36
|
+
- deterministic verifier output (`VerifyCliOutput.v1`) and any embedded producer receipt (when present)
|
|
37
|
+
|
|
38
|
+
Vendor SHOULD provide:
|
|
39
|
+
|
|
40
|
+
- a hosted view-only verification link for buyer review
|
|
41
|
+
- an “audit packet” export (bundle ZIP + hosted verification JSON + receipt surfaces + non-normative summary PDF + decision record, where applicable)
|
|
42
|
+
|
|
43
|
+
## Key lifecycle / rotation
|
|
44
|
+
|
|
45
|
+
Buyer MUST be able to rotate vendor ingest keys without downtime.
|
|
46
|
+
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Verify Cloud (Magic Link) — Security Q&A (pilot)
|
|
2
|
+
|
|
3
|
+
This document is designed to be pasted into common procurement/security portals with minimal edits.
|
|
4
|
+
|
|
5
|
+
If you need a single attachment, download the **Security & Controls packet** — it includes this Q&A, an architecture one-pager, a data inventory, and checksums.
|
|
6
|
+
|
|
7
|
+
## Product summary (what is Verify Cloud?)
|
|
8
|
+
|
|
9
|
+
Verify Cloud accepts a vendor-submitted **Settld bundle** (typically `InvoiceBundle.v1` or `ClosePack.v1`), verifies it deterministically, and exposes:
|
|
10
|
+
|
|
11
|
+
- a read-only hosted report page (Green/Amber/Red)
|
|
12
|
+
- deterministic machine-readable outputs (`VerifyCliOutput.v1`)
|
|
13
|
+
- export bundles for audit (audit packet, support bundle)
|
|
14
|
+
|
|
15
|
+
## Data handling
|
|
16
|
+
|
|
17
|
+
### What is uploaded?
|
|
18
|
+
|
|
19
|
+
- A ZIP containing a Settld bundle directory (evidence + protocol metadata + manifest + attestations).
|
|
20
|
+
|
|
21
|
+
### What is stored?
|
|
22
|
+
|
|
23
|
+
Storage is filesystem-backed under `MAGIC_LINK_DATA_DIR` (often a PVC mount). Per run, Verify Cloud stores:
|
|
24
|
+
|
|
25
|
+
- **Bundle ZIP bytes (optional)**: `zips/<token>.zip` (controlled by `TenantSettings.v2.artifactStorage.storeBundleZip`)
|
|
26
|
+
- **Hosted verification output** (`VerifyCliOutput.v1`): `verify/<token>.json`
|
|
27
|
+
- **Redacted public summary** (what feeds hosted UI / exports): `public/<token>.json`
|
|
28
|
+
- **Non-normative PDF summary (optional)** (redacted): `pdf/<token>.pdf` (when invoice claim is present; controlled by `TenantSettings.v2.artifactStorage.storePdf`)
|
|
29
|
+
- **Producer receipt** (when present inside the bundle): `receipt/<token>.json`
|
|
30
|
+
- **ClosePack evaluation/index surfaces** (when present): `closepack/<token>/...`
|
|
31
|
+
- **Webhook delivery records** (optional, no secrets): `webhooks/{attempts,record}/<token>_*.json`
|
|
32
|
+
- **Minimal immutable run record** (metadata-only, for support/accounting): `runs/<tenant>/<token>.json`
|
|
33
|
+
|
|
34
|
+
Verify Cloud does **not** separately parse and persist raw evidence file contents outside of the uploaded bundle ZIP bytes (other than the allowlisted, redacted “render model” fields used for UI/PDF/CSV/support exports).
|
|
35
|
+
|
|
36
|
+
### Retention (defaults + enforcement)
|
|
37
|
+
|
|
38
|
+
- Default retention: `TenantSettings.v2.retentionDays` (default `30` days).
|
|
39
|
+
- Optional per-vendor / per-contract overrides: `TenantSettings.v2.vendorPolicies[*].retentionDays`, `TenantSettings.v2.contractPolicies[*].retentionDays`.
|
|
40
|
+
- Enforcement:
|
|
41
|
+
- a background maintenance sweeper deletes retained artifacts (default daily), and
|
|
42
|
+
- uploads opportunistically trigger a sweep before quota checks.
|
|
43
|
+
|
|
44
|
+
After retention, heavy artifacts (bundle ZIP, verify JSON, PDFs, cached exports, webhook records) are deleted and downloads return `410 retained`. The metadata-only run record remains for support/accounting.
|
|
45
|
+
|
|
46
|
+
## Security controls
|
|
47
|
+
|
|
48
|
+
### Authentication models
|
|
49
|
+
|
|
50
|
+
- **Admin API access**: `x-api-key` header (set `MAGIC_LINK_API_KEY`).
|
|
51
|
+
- **Vendor ingest**: vendor-scoped ingest keys (`Authorization: Bearer <ingestKey>`) with upload-only capability.
|
|
52
|
+
- **Buyer access (optional)**: email OTP login restricted to allowlisted domains (`TenantSettings.v2.buyerAuthEmailDomains`) and per-email roles (`TenantSettings.v2.buyerUserRoles`).
|
|
53
|
+
- **Decision capture (optional)**: approve/hold can be gated by OTP (`TenantSettings.v2.decisionAuthEmailDomains`).
|
|
54
|
+
|
|
55
|
+
### RBAC roles (buyer)
|
|
56
|
+
|
|
57
|
+
- `viewer`: view inbox and exports
|
|
58
|
+
- `approver`: export CSV/audit packet, approve/hold
|
|
59
|
+
- `admin`: settings, onboarding packs, support bundle, security packet
|
|
60
|
+
|
|
61
|
+
### Audit logging
|
|
62
|
+
|
|
63
|
+
Verify Cloud appends JSONL audit records for:
|
|
64
|
+
|
|
65
|
+
- tenant settings changes
|
|
66
|
+
- ingest key creation/revocation
|
|
67
|
+
- buyer login events (when enabled)
|
|
68
|
+
- settlement decision capture (approve/hold)
|
|
69
|
+
|
|
70
|
+
Exports:
|
|
71
|
+
|
|
72
|
+
- Security & Controls packet (monthly)
|
|
73
|
+
- Audit packet (monthly; deterministic)
|
|
74
|
+
- Optional archival export sink (S3-compatible): push monthly audit packet ZIP + CSV (tenant-configurable)
|
|
75
|
+
- Support bundle (time-bounded; redacted settings + metadata-first)
|
|
76
|
+
|
|
77
|
+
### Token security (hosted report links)
|
|
78
|
+
|
|
79
|
+
- Token format: `ml_` + 24 random bytes (192-bit entropy).
|
|
80
|
+
- Token TTL: configurable via `MAGIC_LINK_TOKEN_TTL_SECONDS` (default 7 days).
|
|
81
|
+
- Tokens are revocable via the admin API.
|
|
82
|
+
|
|
83
|
+
### Rate limiting and budgets
|
|
84
|
+
|
|
85
|
+
Verify Cloud enforces:
|
|
86
|
+
|
|
87
|
+
- upload size bound (`MAGIC_LINK_MAX_UPLOAD_BYTES`, default 50 MiB)
|
|
88
|
+
- tenant + IP rate limiting (`TenantSettings.v2.rateLimits.*`; default `uploadsPerHour=100`, `verificationViewsPerHour=1000`)
|
|
89
|
+
- verification timeout (`MAGIC_LINK_VERIFY_TIMEOUT_MS`, default 60s)
|
|
90
|
+
- concurrency caps (`MAGIC_LINK_MAX_CONCURRENT_JOBS`, `MAGIC_LINK_MAX_CONCURRENT_JOBS_PER_TENANT`)
|
|
91
|
+
- queued verify workers with retries + dead-letter accounting (`MAGIC_LINK_VERIFY_QUEUE_*`)
|
|
92
|
+
- hostile ZIP extraction budgets (entry count, path length, per-file bytes, total bytes, compression ratio)
|
|
93
|
+
|
|
94
|
+
### Secrets handling
|
|
95
|
+
|
|
96
|
+
- Tenant settings secrets (webhook secret, delegated signer bearer token, etc.) are encrypted at rest when `MAGIC_LINK_SETTINGS_KEY_HEX` is configured (AES-256-GCM).
|
|
97
|
+
- Support exports redact secrets by default (e.g. webhook secret material is removed).
|
|
98
|
+
|
|
99
|
+
## Threat model (short)
|
|
100
|
+
|
|
101
|
+
Verify Cloud is designed to resist:
|
|
102
|
+
|
|
103
|
+
- hostile ZIP attacks (zip-slip traversal, symlinks, duplicates/overwrite, encrypted entries, zip bombs)
|
|
104
|
+
- resource exhaustion (huge uploads, decompression bombs, long-running verification)
|
|
105
|
+
- HTML injection / XSS in rendered fields
|
|
106
|
+
- token guessing / link leakage
|
|
107
|
+
|
|
108
|
+
Mitigations are summarized in the exported **Security & Controls packet** along with the exact budgets/defaults in effect for that deployment.
|
|
109
|
+
|
|
110
|
+
## Cryptography / verification integrity
|
|
111
|
+
|
|
112
|
+
- Bundles are verifiable offline: download the bundle ZIP and run `settld-verify` under buyer-controlled trust anchors.
|
|
113
|
+
- Trust anchors are supplied out-of-band by the buyer (governance roots, pricing signer keys). Hosted verification can run in `strict` or `compat` depending on trust configuration/policy.
|
|
114
|
+
- Cryptographic primitives: SHA-256 hashes and Ed25519 signatures; canonical JSON is used where required for stable hashing.
|
|
115
|
+
|
|
116
|
+
## Infrastructure expectations
|
|
117
|
+
|
|
118
|
+
- Verify Cloud is intended to run behind TLS termination (ingress/load balancer). The service itself is HTTP-only by default.
|
|
119
|
+
- Encryption at rest is provided by your underlying storage layer (PVC/disk + cloud/KMS configuration).
|
|
120
|
+
|
|
121
|
+
## Compliance posture
|
|
122
|
+
|
|
123
|
+
- Verify Cloud is not currently SOC 2 audited.
|
|
124
|
+
- It is designed with controls that map well to SOC 2 expectations (authn/authz, audit logging, retention enforcement, secure defaults, and exportability for audit).
|
|
125
|
+
|
|
126
|
+
## Incident response / vulnerability reporting
|
|
127
|
+
|
|
128
|
+
- Security issues / vulnerability reports: email `aiden@settld.work` (private disclosure).
|
|
129
|
+
- Operational support: see `docs/SUPPORT.md` and `docs/ONCALL_PLAYBOOK.md`.
|
|
130
|
+
|
|
131
|
+
## Configuration knobs (most commonly requested)
|
|
132
|
+
|
|
133
|
+
- Environment:
|
|
134
|
+
- `MAGIC_LINK_API_KEY` — admin access
|
|
135
|
+
- `MAGIC_LINK_SETTINGS_KEY_HEX` — encrypt secrets at rest (tenant settings)
|
|
136
|
+
- `MAGIC_LINK_DATA_DIR` — storage location (mount point)
|
|
137
|
+
- `MAGIC_LINK_TOKEN_TTL_SECONDS` — report link TTL
|
|
138
|
+
- `MAGIC_LINK_MAX_UPLOAD_BYTES` — upload cap
|
|
139
|
+
- `MAGIC_LINK_VERIFY_TIMEOUT_MS` — verification timeout
|
|
140
|
+
- `MAGIC_LINK_RATE_LIMIT_UPLOADS_PER_HOUR` — default per-tenant upload limit (overrideable per tenant)
|
|
141
|
+
- `MAGIC_LINK_MAX_CONCURRENT_JOBS`, `MAGIC_LINK_MAX_CONCURRENT_JOBS_PER_TENANT` — concurrency caps
|
|
142
|
+
- `MAGIC_LINK_VERIFY_QUEUE_WORKERS`, `MAGIC_LINK_VERIFY_QUEUE_MAX_ATTEMPTS`, `MAGIC_LINK_VERIFY_QUEUE_RETRY_BACKOFF_MS` — verify queue worker behavior
|
|
143
|
+
- `MAGIC_LINK_RUN_STORE_MODE`, `MAGIC_LINK_RUN_STORE_DATABASE_URL` — run metadata control-plane store mode (`fs|dual|db`)
|
|
144
|
+
- `MAGIC_LINK_MAINTENANCE_INTERVAL_SECONDS` — retention sweep interval (maintenance runner)
|
|
145
|
+
- Tenant settings (API):
|
|
146
|
+
- `retentionDays`, `vendorPolicies[*].retentionDays`, `contractPolicies[*].retentionDays`
|
|
147
|
+
- `artifactStorage.storeBundleZip`, `artifactStorage.storePdf`, `artifactStorage.precomputeMonthlyAuditPackets`
|
|
148
|
+
- `archiveExportSink` (S3 archival export sink)
|
|
149
|
+
- `rateLimits` (per-tenant/per-IP windows for upload/view/decision/OTP endpoints)
|
|
150
|
+
- `buyerNotifications` (buyer recipient + delivery mode settings)
|
|
151
|
+
- `buyerAuthEmailDomains`, `buyerUserRoles`
|
|
152
|
+
- `decisionAuthEmailDomains`
|
|
153
|
+
- `webhooks[*]` (with secrets encrypted-at-rest when settings key is configured)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Security summary (Verify Cloud / Magic Link)
|
|
2
|
+
|
|
3
|
+
This is a short, operator-facing security posture summary for pilots.
|
|
4
|
+
|
|
5
|
+
## Hostile ZIP ingestion
|
|
6
|
+
|
|
7
|
+
Magic Link ingestion uses a single safe unzip implementation:
|
|
8
|
+
|
|
9
|
+
- rejects absolute paths and traversal (`..`) after normalization
|
|
10
|
+
- rejects backslashes and drive letters (`:`)
|
|
11
|
+
- rejects duplicate entries
|
|
12
|
+
- rejects encrypted entries
|
|
13
|
+
- rejects symlinks via external attributes
|
|
14
|
+
- enforces budgets:
|
|
15
|
+
- max entry count
|
|
16
|
+
- max per-file bytes
|
|
17
|
+
- max total uncompressed bytes
|
|
18
|
+
- max path length
|
|
19
|
+
- max compression ratio (zip bombs)
|
|
20
|
+
- extracts into a fresh temp dir and never overwrites existing files
|
|
21
|
+
|
|
22
|
+
## Deterministic outputs (CI / audit friendly)
|
|
23
|
+
|
|
24
|
+
- Verification output is deterministic JSON (`VerifyCliOutput.v1`) and is intended to be archived.
|
|
25
|
+
- Audit packet ZIP is deterministic and bundles:
|
|
26
|
+
- bundle ZIP
|
|
27
|
+
- hosted verify JSON
|
|
28
|
+
- embedded producer receipt (if present)
|
|
29
|
+
- PDF summary (non-normative)
|
|
30
|
+
- decision record (if present)
|
|
31
|
+
|
|
32
|
+
## Multi-implementation parity
|
|
33
|
+
|
|
34
|
+
The repo includes a Python reference verifier and a conformance pack; parity is tested in CI.
|
|
35
|
+
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# MCP Stdio Spike (Sprint 23) Design
|
|
2
|
+
|
|
3
|
+
Date: 2026-02-13
|
|
4
|
+
|
|
5
|
+
Owner: Platform
|
|
6
|
+
|
|
7
|
+
Tickets: `STLD-T2305`, `STLD-T2306`
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Prove that an MCP-compatible agent can reliably discover and invoke a *curated* set of Settld tools over `stdio`, using a **restricted API key** (not an ops token).
|
|
12
|
+
|
|
13
|
+
This is a spike: correctness and minimal compatibility matter more than feature breadth. Production hardening (SSE transport, rate limiting, etc.) is explicitly deferred to Sprint 25.
|
|
14
|
+
|
|
15
|
+
## Non-Goals (S23)
|
|
16
|
+
|
|
17
|
+
- No SSE transport.
|
|
18
|
+
- No multi-tenant discovery. Tenant is configured via env.
|
|
19
|
+
- No generic “HTTP proxy tool”. We expose curated tools only.
|
|
20
|
+
- No persistence inside the MCP server. It is a stateless bridge to the Settld API.
|
|
21
|
+
|
|
22
|
+
## Transport + Protocol
|
|
23
|
+
|
|
24
|
+
- Transport: `stdio`
|
|
25
|
+
- Protocol: JSON-RPC 2.0 message stream.
|
|
26
|
+
- Framing: newline-delimited JSON; additionally accepts `Content-Length:` framed messages for compatibility.
|
|
27
|
+
- Required methods:
|
|
28
|
+
- `initialize`
|
|
29
|
+
- `tools/list`
|
|
30
|
+
- `tools/call`
|
|
31
|
+
- Optional methods (implemented as no-ops / trivial):
|
|
32
|
+
- `ping`
|
|
33
|
+
- `notifications/initialized` (ignored)
|
|
34
|
+
|
|
35
|
+
## Auth Model
|
|
36
|
+
|
|
37
|
+
- The MCP server requires `SETTLD_API_KEY` and uses `x-proxy-api-key` for all API calls.
|
|
38
|
+
- The API key must have the minimum scopes needed for:
|
|
39
|
+
- registering agents
|
|
40
|
+
- marketplace RFQ/bid/accept
|
|
41
|
+
- wallet credit (requires `x-settld-protocol` header)
|
|
42
|
+
- agent run event appends (requires `x-settld-protocol` + `x-proxy-expected-prev-chain-hash`)
|
|
43
|
+
- run dispute transitions (requires `x-settld-protocol`)
|
|
44
|
+
|
|
45
|
+
No ops token handling is included in the spike.
|
|
46
|
+
|
|
47
|
+
## Configuration
|
|
48
|
+
|
|
49
|
+
Environment variables:
|
|
50
|
+
|
|
51
|
+
- `SETTLD_BASE_URL` (default: `http://127.0.0.1:3000`)
|
|
52
|
+
- `SETTLD_TENANT_ID` (default: `tenant_default`)
|
|
53
|
+
- `SETTLD_API_KEY` (required)
|
|
54
|
+
- `SETTLD_PROTOCOL` (optional; if unset the server attempts to discover via `GET /healthz` response header `x-settld-protocol`, falling back to `1.0`)
|
|
55
|
+
|
|
56
|
+
## Tool Surface (Curated)
|
|
57
|
+
|
|
58
|
+
### `settld.create_agreement`
|
|
59
|
+
|
|
60
|
+
Creates a real marketplace-backed agreement by executing:
|
|
61
|
+
|
|
62
|
+
1. `POST /agents/register` (payer)
|
|
63
|
+
2. `POST /agents/register` (payee)
|
|
64
|
+
3. `POST /agents/{payerAgentId}/wallet/credit` (fund payer)
|
|
65
|
+
4. `POST /marketplace/rfqs`
|
|
66
|
+
5. `POST /marketplace/rfqs/{rfqId}/bids`
|
|
67
|
+
6. `POST /marketplace/rfqs/{rfqId}/accept` (returns `runId`, agreement, settlement)
|
|
68
|
+
|
|
69
|
+
Returns IDs needed for subsequent tools: `payerAgentId`, `payeeAgentId`, `rfqId`, `bidId`, `runId`, `settlementId`, `agreementId`.
|
|
70
|
+
|
|
71
|
+
### `settld.submit_evidence`
|
|
72
|
+
|
|
73
|
+
Appends an agent run event:
|
|
74
|
+
|
|
75
|
+
- `GET /agents/{agentId}/runs/{runId}/events` to obtain current `prevChainHash`
|
|
76
|
+
- `POST /agents/{agentId}/runs/{runId}/events` with `type=EVIDENCE_ADDED` and `x-proxy-expected-prev-chain-hash`
|
|
77
|
+
|
|
78
|
+
### `settld.settle_run`
|
|
79
|
+
|
|
80
|
+
Moves a run to terminal state (which triggers auto-resolution in the Settld API):
|
|
81
|
+
|
|
82
|
+
- `GET /agents/{agentId}/runs/{runId}/events` (prevChainHash)
|
|
83
|
+
- `POST /agents/{agentId}/runs/{runId}/events` with `type=RUN_COMPLETED` (or `RUN_FAILED`)
|
|
84
|
+
|
|
85
|
+
### `settld.open_dispute`
|
|
86
|
+
|
|
87
|
+
Opens a dispute for a resolved run settlement:
|
|
88
|
+
|
|
89
|
+
- `POST /runs/{runId}/dispute/open`
|
|
90
|
+
|
|
91
|
+
## Error Handling
|
|
92
|
+
|
|
93
|
+
- API errors are surfaced as tool results with `isError=true` and a text payload containing `{ statusCode, message, details }` when available.
|
|
94
|
+
- JSON-RPC protocol errors use standard JSON-RPC error responses.
|
|
95
|
+
|
|
96
|
+
## Latency Measurement
|
|
97
|
+
|
|
98
|
+
Each tool call returns `durationMs` measured inside the MCP process (wall-clock). This measures bridge overhead + API time; it is sufficient for spike validation and can be compared against direct API calls later.
|
|
99
|
+
|
|
100
|
+
## Testing
|
|
101
|
+
|
|
102
|
+
- A `node --test` smoke test exercises:
|
|
103
|
+
- `initialize`
|
|
104
|
+
- `tools/list` (tool names + schemas)
|
|
105
|
+
- one `tools/call` against a local stub HTTP server (no secrets required)
|
|
106
|
+
|
|
107
|
+
## Roll Forward Path (S25)
|
|
108
|
+
|
|
109
|
+
- Add SSE transport.
|
|
110
|
+
- Add richer auth modes (service tokens, per-tool scopes, per-tenant selection).
|
|
111
|
+
- Add stronger redaction of tool outputs.
|
|
112
|
+
- Add structured telemetry and rate limiting.
|
|
113
|
+
|