{
 "number": 36292,
 "input_hash": "01d0457bc393021b",
 "model": "ledger",
 "prompt_hash": null,
 "created": "2026-09-24T01:20:50+00:00",
 "result": {
  "summary": "Deletes the obsolete `indexes/coinstats` database directory automatically on startup when `-coinstatsindex` is enabled. The old directory was left intact in v30 to allow nodes to downgrade to v29 without having to rebuild the index. With v29 reaching end-of-life, the database is now destroyed and removed if found.",
  "problem": "Nodes upgraded from v29 or earlier retain the legacy `indexes/coinstats` directory indefinitely unless manually deleted, wasting disk space even though the active index resides in `indexes/coinstatsindex`.",
  "card": "Automatically deletes the obsolete legacy coinstats index directory at indexes/coinstats on startup when -coinstatsindex is enabled. A format migration in v30 moved the active index to indexes/coinstatsindex while retaining the old folder to support downgrades to v29. With v29 reaching end-of-life, this scheduled cleanup reclaims disk space for users who had upgraded from older releases.",
  "evidence": [
   "A code comment in `coinstatsindex.cpp` scheduled this cleanup: '// TODO: Change this to deleting the old index with v31.'",
   "PR description: 'coinstatsindex was updated in an incompatible way in v30 (see #30469) and moved to the indexes/coinstatsindex folder... Since v32 branch-off has happened, this would now ship in v33. By then 29.x should be EOL assuming we are not going to release a v29.5.'"
  ],
  "scope_notes": "",
  "changed_since_previous": "",
  "thread": {
   "last_event_at": "2026-09-23T21:15:28Z",
   "events": 4,
   "head_sha": "82e4cc6964a9a130d3a41454e046af964ea05508",
   "schema_floor": 1,
   "schema": 2
  },
  "waiting_on": [
   {
    "at": null,
    "id": "",
    "on": "nothing",
    "url": null,
    "what": "no pending requests or open questions"
   }
  ],
  "risk": null,
  "discussion": {
   "author_status": "last statement processed 2026-09-23",
   "open_concerns": [],
   "resolved_concerns": []
  },
  "reviewability": {
   "state": "Ready",
   "label": "Ready",
   "reason": "Nothing known that would invalidate a review now."
  },
  "agreement": {
   "state": "Positive",
   "summary": "Positive: support without stated reasons, no open objection (mzumsande, sedited)",
   "reason": "bartoli asked whether deleting the old index before creating the new one was risky; fjahr clarified that the new index does not rely on the old data, answering the question.",
   "evidence": [
    "mzumsande: Concept ACK",
    "sedited: ACK"
   ],
   "objections": [],
   "support": [
    {
     "reviewer": "mzumsande",
     "reason": "",
     "substantive": false,
     "verdict": "Concept ACK",
     "id": "r:5241703878",
     "url": "https://github.com/bitcoin/bitcoin/pull/36292#pullrequestreview-5241703878",
     "at": "2026-09-17",
     "association": "MEMBER",
     "evidence": "none",
     "areas": []
    },
    {
     "reviewer": "sedited",
     "reason": "",
     "substantive": false,
     "verdict": "ACK",
     "id": "r:5245817064",
     "url": "https://github.com/bitcoin/bitcoin/pull/36292#pullrequestreview-5245817064",
     "at": "2026-09-18",
     "association": "MEMBER",
     "evidence": "none",
     "areas": []
    }
   ],
   "participants": [
    {
     "login": "mzumsande",
     "stance": "support",
     "note": "Concept ACK",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-09-17",
     "last": "2026-09-17"
    },
    {
     "login": "sedited",
     "stance": "support",
     "note": "ACK",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-09-18",
     "last": "2026-09-18"
    },
    {
     "login": "bartoli",
     "stance": "question",
     "note": "asked whether deleting the old index directory before creating the new one was risky",
     "association": "NONE",
     "comments": 1,
     "first": "2026-09-23",
     "last": "2026-09-23"
    }
   ],
   "derivation": "support without stated reasons, no open objection (mzumsande, sedited)",
   "model_state": null,
   "corrections": [],
   "notes": "bartoli asked whether deleting the old index before creating the new one was risky; fjahr clarified that the new index does not rely on the old data, answering the question."
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "docs",
    "member": false,
    "evidence": "Touches only a release note snippet accompanying the index code change.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 1
    },
    "rationale": "Release note updates that accompany code changes belong to the area being changed rather than the documentation category."
   },
   {
    "name": "indexes",
    "member": true,
    "evidence": "Modifies `src/index/coinstatsindex.cpp` and index functional tests.",
    "band": "P3",
    "reason_tag": "cleanup",
    "score": 0.35,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 1
    },
    "rationale": "Automatically cleans up the legacy v29 `indexes/coinstats` directory to reclaim wasted disk space on upgraded nodes now that v29 is EOL. Resolves an explicit TODO scheduled for post-v29 lifecycle, providing useful housekeeping without affecting core index correctness or performance."
   },
   {
    "name": "validation",
    "member": false,
    "evidence": "Operates strictly on the optional coinstats index under `src/index/` and not the mandatory UTXO database or chainstate.",
    "band": "Unranked",
    "reason_tag": "cleanup",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 1
    },
    "rationale": "Changes to optional indexes are explicitly excluded from validation unless they touch chainstate or the core UTXO database."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": []
 },
 "cost_usd": 0.0,
 "source": {
  "record": "2026-09-24T01:20:50+00:00",
  "code": "2026-09-18T04:00:15+00:00",
  "judgments": 3
 }
}