{
 "number": 36167,
 "input_hash": "3bd21a910fb530d4",
 "model": "openrouter/google/gemini-3.8-flash",
 "batch": false,
 "created": "2026-09-17T15:58:31+00:00",
 "provider": "Google",
 "stop_reason": "end_turn",
 "usage": {
  "input_tokens": 32079,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 0,
  "output_tokens": 4661
 },
 "cost_usd": 0.036033375,
 "error": null,
 "result": {
  "display": {
   "goal": [
    "Catch dead code and unused variables in CI by enabling -Wunused compiler flags.",
    "Eliminate hundreds of unused parameters and variables across the codebase and subtrees."
   ],
   "reviewability": [
    "CI is failing due to an unhandled unused-const warning.",
    "Multiple commits touch subtrees that must land upstream first."
   ],
   "agreement": [
    "maflcko suggested adopting finer-grained warning flags before touching parameters across the tree (maflcko).",
    "fanquake started splitting pieces out into #36275."
   ],
   "categories": [
    {
     "name": "build",
     "why": [
      "P3 because enforcing compiler warnings in CI catches dead code, but the cleanup is reasonably deferrable.",
      "The broad warning flags require upstream subtree changes and generate extensive churn across 168 files."
     ]
    }
   ]
  },
  "summary": "This PR enables `-Wunused` and related compiler warning flags in CMake to catch unused and dead code in CI. It silences existing warnings across 168 files by removing unused parameter names, adding `[[maybe_unused]]`, or marking variables `inline constexpr`. Several commits modify vendored subtrees (minisketch, libmultiprocess, leveldb, crc32c) with temporary `[[nomerge]]` commits.",
  "problem": "Unused variables, forgotten dead code, and functions that fail to call intended helpers (such as #36137) can slip into the codebase without compiler warnings enabled. Developers and maintainers currently have to rely on manual audits and ad-hoc dead code cleanup PRs.",
  "discussion": {
   "open_concerns": [
    "maflcko suggested separating unused parameters from the rest, keeping `-Wno-unused-parameter` initially, and enabling finer-grained flags like `-Wunused-const-variable=2` first to avoid massive tree-wide churn."
   ],
   "resolved_concerns": [
    "fanquake split the `-Wunused-const-variable` flag into separate PR #36275."
   ],
   "author_status": "active"
  },
  "reviewability": {
   "state": "Stale",
   "label": "CI failing",
   "reason": "CI is failing on a compiler error (`BCLog::RATELIMIT_MAX_BYTES defined but not used [-Werror=unused-const-variable=]`). Additionally, the PR is marked RFC/Draft and contains `[[nomerge]]` commits that depend on upstream subtree repositories."
  },
  "agreement": {
   "state": "Neutral",
   "summary": "maflcko suggested splitting finer-grained warning flags from tree-wide parameter cleanups; author split #36275",
   "reason": "Reviewer feedback was generally receptive ('Nice') but suggested splitting the work so individual warning flags land without requiring massive parameter modifications across the entire project. The author split out #36275 in response.",
   "evidence": [
    "maflcko suggested: 'Maybe be split up into a separate pull from the unused parameter warnings... leave the -Wno-unused-parameter as-is for now?'",
    "fanquake replied: 'Split a portion out into #36275.'"
   ]
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "build",
    "member": true,
    "evidence": "Modifies CMakeLists.txt to add compiler warning flags (-Wunused and friends) to warning interfaces.",
    "band": "P3",
    "reason_tag": "cleanup",
    "score": 0.35,
    "factors": {
     "security_stability": 0,
     "bug_severity": 1,
     "performance": 0,
     "user_value": 0,
     "leverage": 1
    },
    "rationale": "Enabling compiler warnings to detect dead code and unused declarations in CI prevents mistakes like forgotten function calls (#36137), but it is general developer hygiene and deferrable compared to build breakages or release integrity issues."
   },
   {
    "name": "indexes",
    "member": false,
    "evidence": "Touches src/index/base.h only to drop unused parameter names to satisfy compiler warnings.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Mechanical parameter omission across index files is incidental to the build warning flag changes."
   },
   {
    "name": "ipc",
    "member": false,
    "evidence": "Changes in src/ipc/ and interfaces/ are purely mechanical parameter cleanups and upstream libmultiprocess changes.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Does not change IPC design or protocol behavior; only silences unused parameter warnings."
   },
   {
    "name": "kernel",
    "member": false,
    "evidence": "Changes in src/kernel/ are purely mechanical parameter omissions.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Does not change kernel API semantics or boundaries."
   },
   {
    "name": "mempool",
    "member": false,
    "evidence": "Touches src/policy/fees/mempool_estimator.h only to omit unused parameter names.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Mechanical parameter removal with no policy impact."
   },
   {
    "name": "mining",
    "member": false,
    "evidence": "Touches src/rpc/mining.cpp only to silence unused parameter warnings.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "No mining logic or template generation changes."
   },
   {
    "name": "p2p",
    "member": false,
    "evidence": "Touches netbase, net_processing, and torcontrol only to omit unused parameters or add [[maybe_unused]].",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Incidental syntactic adjustments to network code."
   },
   {
    "name": "rpc",
    "member": false,
    "evidence": "Touches RPC command handlers only to drop unused request or method parameter names.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "No RPC interface, behavior, or signature modifications."
   },
   {
    "name": "tests",
    "member": false,
    "evidence": "Touches various unit tests and fuzz harnesses only to omit unused parameters.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Does not improve test framework capabilities or signal; edits follow purely from compiler warning flags."
   },
   {
    "name": "tools",
    "member": false,
    "evidence": "Touches bitcoin-chainstate and bitcoin-cli entry points to silence parameter warnings.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Mechanical edit in CLI main function parameters."
   },
   {
    "name": "utils",
    "member": false,
    "evidence": "Touches logging, crypto, and subtrees (leveldb, minisketch) only to silence unused warnings.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Utility and subtree files are modified mechanically to satisfy warning interface changes."
   },
   {
    "name": "validation",
    "member": false,
    "evidence": "Touches script/interpreter.h and validationinterface.h only to omit parameter names.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "No validation or consensus rules are affected."
   },
   {
    "name": "wallet",
    "member": false,
    "evidence": "Touches wallet classes and test files solely to drop unused parameter names.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Mechanical parameter omissions across wallet call sites."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": [],
  "card": "This draft PR adds `-Wunused` compiler flags to CMake to catch dead and unused code in CI, fixing hundreds of unused parameters and variables across 168 files and several subtrees. While catching unused code helps prevent subtle bugs and developer confusion, this PR is in a draft state with failing CI and unresolved questions around whether to separate parameter warnings from variable warnings. It also carries temporary `[[nomerge]]` commits for changes that must land upstream in minisketch, libmultiprocess, and leveldb first."
 },
 "raw_text": null
}