{"schema":"vaultfire.v3.migration-dispositions.v1","schemaVersion":"1.0.0","protocolVersion":"3.0.0","route":"/api/v3/migration/dispositions","generatedAt":"2026-08-29T02:22:06.883Z","policy":{"v3OptInOnly":true,"v2PreservedUnchanged":true,"v2Fallback":"forbidden","writesEnabled":false,"paymentsEnabled":false,"prohibitedDecisionInputs":["behavioral-scoring","reputation","loyalty","quality","belief","biometric","profiling","surveillance","subjective-flourishing","cross-chain"]},"canonicalSdk":{"supported":[],"degraded":["bonds","pullCredits","solvency","mandates","governance"],"unavailable":["capabilities","x402.status","x402.discovery","x402.challenge","x402.receipt"],"retired":["taskEscrow","latest","v2-fallback"]},"pilot":{"deploymentState":"unconfigured","supportedContracts":["MultisigGovernanceV3","BasePilotAccessControllerV3","ThresholdConsensusV3","DisputeRegistryV3","SafeBondFactoryV3","PartnershipBondFactoryV3","AccountabilityBondFactoryV3","PartnershipBondV3Safe","AccountabilityBondV3Safe"],"deferredContracts":["RewardProgramV3","TaskEscrowV3","MutualAidPoolV3","VaultfireBIPVaultV3","ERC8004ValidationRegistryV3Safe","StreetCredV3","LegacyKYAAdapterV3","ERC8004IdentityAdapterV3","EvidenceRegistryV3","MandateRegistryV3","MandateExecutionAdapterV3"],"retiredContracts":["FlourishingMetricsOracleV3","BeliefAttestationVerifierV3"]},"routes":[{"id":"contracts","method":"GET","path":"/api/v3/contracts","canonicalSdkRoute":null,"disposition":"supported","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/contract-catalog.v1.schema.json","responseStatuses":[200,503],"description":"Static V3 contract catalog and deployment dispositions."},{"id":"contract","method":"GET","path":"/api/v3/contracts/:name","canonicalSdkRoute":null,"disposition":"supported","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/contract-result.v1.schema.json","responseStatuses":[200,400,404,503],"description":"Static V3 contract metadata by canonical name."},{"id":"bond-party","method":"GET","path":"/api/v3/bonds","canonicalSdkRoute":"bonds","disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Bond query by required party query parameter; fail-closed while deployment/read adapter is absent."},{"id":"bond","method":"GET","path":"/api/v3/bonds/:bondId","canonicalSdkRoute":"bonds","disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Bond read model by numeric ID."},{"id":"dispute","method":"GET","path":"/api/v3/disputes/:disputeId","canonicalSdkRoute":null,"disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Objective dispute record by numeric ID."},{"id":"evidence","method":"GET","path":"/api/v3/evidence/:evidenceHash","canonicalSdkRoute":null,"disposition":"degraded","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Evidence record; module is deferred by the pilot manifest."},{"id":"task","method":"GET","path":"/api/v3/tasks/:taskId","canonicalSdkRoute":"taskEscrow","disposition":"degraded","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Task escrow read model; module is deferred by the pilot manifest."},{"id":"mandate","method":"GET","path":"/api/v3/mandates/:mandateHash","canonicalSdkRoute":"mandates","disposition":"degraded","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Canonical plural mandate lookup."},{"id":"mandate-compat","method":"GET","path":"/api/v3/mandate/:mandateHash","canonicalSdkRoute":"mandates","disposition":"degraded","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Singular V3-only compatibility wrapper; never falls back to V2."},{"id":"governance-proposal","method":"GET","path":"/api/v3/governance/proposals/:proposalId","canonicalSdkRoute":"governance","disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Governance proposal status by numeric ID."},{"id":"pull-credit","method":"GET","path":"/api/v3/pull-credits","canonicalSdkRoute":"pullCredits","disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"Pull-payment credit balance query with required contract, asset, and holder parameters."},{"id":"migration","method":"GET","path":"/api/v3/migration/dispositions","canonicalSdkRoute":null,"disposition":"supported","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/migration-dispositions.v1.schema.json","responseStatuses":[200,503],"description":"Supported, deferred, unavailable, and retired migration dispositions."},{"id":"status","method":"GET","path":"/api/v3/protocol/status","canonicalSdkRoute":null,"disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/status.v1.schema.json","responseStatuses":[200,503],"description":"Static unconfigured protocol deployment/read-adapter readiness."},{"id":"solvency","method":"GET","path":"/api/v3/protocol/solvency","canonicalSdkRoute":"solvency","disposition":"supported","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/solvency.v1.schema.json","responseStatuses":[503],"description":"Protocol solvency read model."},{"id":"x402-discovery","method":"GET","path":"/api/v3/x402/discovery","canonicalSdkRoute":"x402.discovery","disposition":"unavailable","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/discovery.v1.schema.json","responseStatuses":[200,503],"description":"Static fail-closed x402 discovery document."},{"id":"x402-challenge-status","method":"GET","path":"/api/v3/x402/challenge-status","canonicalSdkRoute":"x402.challenge","disposition":"unavailable","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/challenge-status.v1.schema.json","responseStatuses":[200,503],"description":"Static x402 challenge capability status."},{"id":"x402-challenge","method":"GET","path":"/api/v3/x402/challenges/:challengeId","canonicalSdkRoute":"x402.challenge","disposition":"unavailable","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/read-result.v1.schema.json","responseStatuses":[400,503],"description":"x402 challenge read model by bytes32 ID."},{"id":"x402-receipt","method":"GET","path":"/api/v3/x402/receipts/:requestId","canonicalSdkRoute":"x402.receipt","disposition":"unavailable","readOnly":true,"deploymentRequired":true,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/receipt-status.v1.schema.json","responseStatuses":[200,400,404,503],"description":"Durable receipt status lookup; no in-memory production fallback."},{"id":"solana-health","method":"GET","path":"/api/v3/solana/health","canonicalSdkRoute":null,"disposition":"degraded","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/solana-health.v1.schema.json","responseStatuses":[200,503],"description":"Source and executable evidence health without contacting Solana."},{"id":"retired-partnership-write","method":"POST","path":"/api/v3/x402/actions/create-partnership-bond","canonicalSdkRoute":null,"disposition":"retired","readOnly":true,"deploymentRequired":false,"responseSchema":"https://theloopbreaker.com/schemas/v3-x402/retirement.v1.schema.json","responseStatuses":[503],"description":"Non-executing retirement response retained for explicit safety."}]}