{
 "number": 36598,
 "input_hash": "357ea237498e5e7c",
 "model": "ledger",
 "prompt_hash": null,
 "created": "2026-10-25T01:15:02+00:00",
 "result": {
  "summary": "Removes AssumeUTXO snapshot loading, background historical validation, and multi-chainstate infrastructure across Bitcoin Core. Consolidates ChainstateManager and BlockManager to track a single active chainstate, eliminating dual block-file cursors, historical block download handling, dynamic validation cache rebalancing, and the loadtxoutset RPC. Datadirs with incomplete snapshots are rejected on startup, while UTXO set exports via dumptxoutset remain supported.",
  "problem": "Supporting concurrent chainstates introduces substantial architectural complexity across validation, block storage, P2P block downloads, cache management, and wallets. Background validation also introduces trust model ambiguities, while ordinary initial block download has become faster and AssumeUTXO adoption has remained low relative to its maintenance overhead.",
  "card": "This draft demo PR removes AssumeUTXO snapshot importing, background validation, and multi-chainstate architecture across Bitcoin Core to showcase the potential simplifications. It is explicitly not intended for merge, but rather serves as a reference point for smaller proposals. The change addresses the maintenance burden of multi-chainstate logic in validation, block storage, and P2P download routines, citing low adoption and recent speed improvements to ordinary initial block download. It is based on #36601 and enables smaller targeted extractions such as dropping background sync or removing cache resizing.",
  "evidence": [
   "PR description cites Core Dev meeting consensus: 'rough agreement about the ambiguity background validation introduces: we trust a snapshot enough to use it immediately, but describe that trust as temporary until the same node finishes checking history.'",
   "PR description highlights that AssumeUTXO adoption 'isn't where we hoped it would be' citing #35054.",
   "PR description notes that ordinary IBD speedups reduce the need: '#35295 is already merged, and the upcoming pruneassumevalid will make pruned IBD even faster.'",
   "PR description outlines the broad architectural footprint: 'Multiple chainstates affect much more than snapshot loading: ordinary validation changes have to account for different chainstate roles, candidate sets, notifications, downloads, pruning, cache allocation, database lifetimes and locks.'"
  ],
  "scope_notes": "This is an exploratory draft demo PR explicitly not intended for merge ('it's not meant to be merged'). It spans 82 files and removes over 5,700 lines across validation, P2P, block storage, RPC, and tests to serve as a reference point for smaller independent PRs.",
  "changed_since_previous": "Now includes commit and patch details; the scope, approach, and commit sequence remain the same.",
  "thread": {
   "last_event_at": "2026-10-24T04:43:14Z",
   "events": 3,
   "head_sha": "bc62b59b8d631133e307a88c267749917e195860",
   "schema_floor": 2,
   "schema": 2
  },
  "waiting_on": [
   {
    "at": "2026-10-24",
    "id": "c:6379989317",
    "on": "author",
    "url": "https://github.com/bitcoin/bitcoin/pull/36598#issuecomment-6379989317",
    "what": "respond to Sjors's Concept NACK and suggestions from ariard and ismaelsadeeq"
   }
  ],
  "risk": {
   "level": "high",
   "touches": [
    "validation",
    "p2p",
    "consensus",
    "wallet",
    "rpc_api"
   ],
   "why": "Massive refactor of the core chainstate lifecycle, block connection notifications, block file cursors, and network block download pipelines where a logic error could corrupt the chainstate or stall block synchronization."
  },
  "discussion": {
   "author_status": "last statement processed 2026-10-24",
   "open_concerns": [
    "ismaelsadeeq: Should AssumeUTXO removal follow the usual deprecate-then-remove approach?",
    "ariard: Consider keeping AssumeUTXO as an optional special build flag side-companion process via IPC (`ipc/capnp/sidevalidation.cpp`) to reduce maintenance burden on libbitcoinkernel while preserving the feature",
    "Sjors: Removing AssumeUTXO removes a major bootstrapping advantage (downloading/processing 100x less data), creating incentives to use non-Core clients, and the feature is unlikely to return; background validation should be dropped first instead"
   ],
   "resolved_concerns": []
  },
  "reviewability": {
   "state": "Paused",
   "label": "Waiting on author",
   "reason": "Open objections from Sjors, ariard, ismaelsadeeq with no author reply for 8 days; review would repeat what has been asked."
  },
  "agreement": {
   "state": "Blocked",
   "summary": "Blocked: objection that needs a change, nobody has replied (Sjors)",
   "reason": "Added Sjors's Concept NACK objection to removing AssumeUTXO and ariard's suggestion of an optional IPC side-process architecture. Both items are open awaiting author response.",
   "evidence": [
    "ismaelsadeeq (question, approach, must be answered, open): Should AssumeUTXO removal follow the usual deprecate-then-remove approach?",
    "ariard (suggestion, approach, must be answered, open): Consider keeping AssumeUTXO as an optional special build flag side-companion process via IPC (`ipc/capnp/sidevalidation.cpp`) to reduce maintenance burden on libbitcoinkernel while preserving the feature",
    "Sjors (objection, approach, must be changed, open): Removing AssumeUTXO removes a major bootstrapping advantage (downloading/processing 100x less data), creating incentives to use non-Core clients, and the feature is unlikely to return; background validation should be dropped first instead",
    "ismaelsadeeq: Concept ACK \u2014 AssumeUTXO weakens full-node trust assumptions and historical validation, has high maintenance costs from multiple chainstates, and snapshot bootstrapping is better handled outside the reference implementation"
   ],
   "objections": [
    {
     "reviewer": "ismaelsadeeq",
     "association": "MEMBER",
     "type": "question",
     "kind": "approach",
     "harm": "",
     "request": "",
     "question": "Should AssumeUTXO removal follow the usual deprecate-then-remove approach?",
     "text": "Should AssumeUTXO removal follow the usual deprecate-then-remove approach?",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-22: 'should we do it through the usual deprecate then remove style?'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36598#issuecomment-6338865042",
     "id": "c:6338865042",
     "at": "2026-10-22",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "ariard",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "approach",
     "harm": "",
     "request": "Consider keeping AssumeUTXO as an optional special build flag side-companion process via IPC (`ipc/capnp/sidevalidation.cpp`) to reduce maintenance burden on libbitcoinkernel while preserving the feature",
     "question": "",
     "text": "Consider keeping AssumeUTXO as an optional special build flag side-companion process via IPC (`ipc/capnp/sidevalidation.cpp`) to reduce maintenance burden on libbitcoinkernel while preserving the feature",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-24: 'it would has been possible to find an intermediary technical solution, where we would have kept the AssumeUTXO feature has an optional special build flag side-companion process available through a new `ipc/capnp/sidevalidation.cpp`'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36598#issuecomment-6378769111",
     "id": "c:6378769111",
     "at": "2026-10-24",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "Sjors",
     "association": "MEMBER",
     "type": "objection",
     "kind": "approach",
     "harm": "Removing AssumeUTXO removes a major bootstrapping advantage (downloading/processing 100x less data), creating incentives to use non-Core clients, and the feature is unlikely to return; background validation should be dropped first instead",
     "request": "",
     "question": "",
     "text": "Removing AssumeUTXO removes a major bootstrapping advantage (downloading/processing 100x less data), creating incentives to use non-Core clients, and the feature is unlikely to return; background validation should be dropped first instead",
     "clears_with": "change",
     "blocking": true,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-24: 'I'm concept NACK on actually removing AssumeUTXO. I think we should drop background validation first, as I suggested in #36557.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36598#issuecomment-6379989317",
     "id": "c:6379989317",
     "at": "2026-10-24",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    }
   ],
   "support": [
    {
     "reviewer": "ismaelsadeeq",
     "reason": "AssumeUTXO weakens full-node trust assumptions and historical validation, has high maintenance costs from multiple chainstates, and snapshot bootstrapping is better handled outside the reference implementation",
     "substantive": true,
     "verdict": "Concept ACK",
     "id": "c:6338865042",
     "url": "https://github.com/bitcoin/bitcoin/pull/36598#issuecomment-6338865042",
     "at": "2026-10-22",
     "association": "MEMBER",
     "evidence": "none",
     "areas": []
    }
   ],
   "participants": [
    {
     "login": "ismaelsadeeq",
     "stance": "support",
     "note": "Concept ACK for removing AssumeUTXO; asked about deprecation approach",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-10-22",
     "last": "2026-10-22"
    },
    {
     "login": "Sjors",
     "stance": "objection",
     "note": "Concept NACK on removing AssumeUTXO; wants to drop background validation first",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-10-24",
     "last": "2026-10-24"
    },
    {
     "login": "ariard",
     "stance": "neutral",
     "note": "suggested keeping AssumeUTXO as an optional IPC companion process to reduce maintenance burden",
     "association": "CONTRIBUTOR",
     "comments": 1,
     "first": "2026-10-24",
     "last": "2026-10-24"
    }
   ],
   "derivation": "objection that needs a change, nobody has replied (Sjors)",
   "model_state": null,
   "corrections": [],
   "notes": "Added Sjors's Concept NACK objection to removing AssumeUTXO and ariard's suggestion of an optional IPC side-process architecture. Both items are open awaiting author response."
  },
  "dependencies": {
   "depends_on": [
    "#36601"
   ],
   "enables": [
    "#36557"
   ]
  },
  "categories": [
   {
    "name": "build",
    "member": false,
    "evidence": "Touches CI test script only to remove assumeutxo test runs following feature removal.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Edits to CI test scripts merely follow the removal of AssumeUTXO elsewhere."
   },
   {
    "name": "docs",
    "member": false,
    "evidence": "Deletes AssumeUTXO documentation and adds a release note.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Documentation removals and release notes strictly follow the validation code changes."
   },
   {
    "name": "indexes",
    "member": false,
    "evidence": "Touches src/index/base.cpp and base.h to remove multi-chainstate handling.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Edits to base index sync follow mechanically from single-chainstate consolidation in validation."
   },
   {
    "name": "ipc",
    "member": false,
    "evidence": "Touches src/interfaces/chain.h to reflect ChainstateManager consolidation.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Does not change IPC infrastructure, protocol definitions, or multiprocess mechanics."
   },
   {
    "name": "kernel",
    "member": false,
    "evidence": "Removes AssumeUTXO parameters from src/kernel/chainparams.cpp.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Does not affect the kernel API boundary or design; only strips parameters for the removed validation feature."
   },
   {
    "name": "mempool",
    "member": false,
    "evidence": "Touches validation files and fee estimator only mechanically.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Does not alter mempool acceptance, replacement, data structures, or policy rules."
   },
   {
    "name": "p2p",
    "member": false,
    "evidence": "Removes historical block download handling from src/net_processing.cpp.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Changes in net_processing only mechanically strip the download logic required by AssumeUTXO background validation."
   },
   {
    "name": "rpc",
    "member": false,
    "evidence": "Removes the loadtxoutset RPC method from src/rpc/blockchain.cpp.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Removing loadtxoutset merely reflects the elimination of the underlying validation capability rather than an RPC subsystem change."
   },
   {
    "name": "tests",
    "member": false,
    "evidence": "Removes AssumeUTXO functional tests, unit tests, and fuzz targets.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Test deletions pin the removed validation feature rather than testing framework infrastructure."
   },
   {
    "name": "tools",
    "member": false,
    "evidence": "Does not modify standalone tooling or contrib scripts.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "The PR focuses entirely on core validation architecture."
   },
   {
    "name": "utils",
    "member": false,
    "evidence": "Adds startup checks in src/init.cpp rejecting incomplete snapshot datadirs.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Startup edits are domain-specific validation error handling rather than utility or logging infrastructure."
   },
   {
    "name": "validation",
    "member": true,
    "evidence": "Consolidates ChainstateManager and BlockManager to a single chainstate, removing AssumeUTXO snapshot loading and background validation.",
    "band": "P2",
    "reason_tag": "cleanup",
    "score": 0.65,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Removes a significant recurring architectural burden by eliminating concurrent chainstates. As noted in the description, 'ordinary validation changes have to account for different chainstate roles, candidate sets, notifications, downloads, pruning, cache allocation, database lifetimes and locks', offering substantial and durable maintainability gains across validation."
   },
   {
    "name": "wallet",
    "member": false,
    "evidence": "Removes AssumeUTXO snapshot awareness from src/wallet/wallet.cpp and wallet tests.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 2,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Wallet edits follow directly from the removal of multi-chainstate tracking in validation."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": []
 },
 "cost_usd": 0.0,
 "source": {
  "record": "2026-10-25T01:15:02+00:00",
  "code": "2026-10-24T01:21:40+00:00",
  "judgments": 13
 }
}