{
 "number": 36091,
 "input_hash": "c3376b37ac9c3e7d",
 "model": "openrouter/google/gemini-3.8-flash",
 "batch": false,
 "created": "2026-09-17T15:57:21+00:00",
 "provider": "Google",
 "stop_reason": "end_turn",
 "usage": {
  "input_tokens": 32026,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 0,
  "output_tokens": 1762
 },
 "cost_usd": 0.030627,
 "error": null,
 "result": {
  "display": {
   "goal": [
    "Add human-readable failure output for common internal types in unit tests",
    "Convert opaque boolean check macros to equality assertions that print values on failure"
   ],
   "reviewability": [
    "Ready to review",
    "All reviewer feedback from previous iterations has been addressed in recent pushes"
   ],
   "agreement": [
    "Strong support across several reviewers (sedited, brunoerg, jeanpablojp, maflcko, ismaelsadeeq)",
    "Technical suggestions on compilation overhead, string formatting, and coverage have all been incorporated"
   ],
   "categories": [
    {
     "name": "tests",
     "why": [
      "P3 because it improves test diagnostic signal when unit assertions fail without altering test logic or fixing broken tests",
      "Lays groundwork for the broader boost test framework removal in #35713"
     ]
    }
   ]
  },
  "summary": "This pull request defines `operator<<` stream formatting overloads for several core Bitcoin types (such as `CScript`, `FeeFrac`, `CAddress`, `CPubKey`, and `CTxDestination`) in `src/test/util/common.{h,cpp}`. It then converts callsites across 15 unit test suites from bare `BOOST_CHECK` equality comparisons to `BOOST_CHECK_EQUAL` and `BOOST_CHECK_EQUAL_COLLECTIONS`, allowing failure diagnostics to print actual mismatched values.",
  "problem": "When unit test assertions using bare `BOOST_CHECK(a == b)` fail, Boost only reports a boolean failure without printing the values of the objects being compared, hindering debugging. Bitcoin Core custom types lacked stream output operators needed by equality check macros.",
  "discussion": {
   "open_concerns": [],
   "resolved_concerns": [
    "Build overhead and header leakage: moved printer implementations from a header to `common.cpp` with forward declarations in `common.h` as suggested by maflcko",
    "Missing diagnostic details and potential crash on empty decoded BIP32 keys: fixed guards and added network, hex, and ASM disambiguation as noted by jeanpablojp",
    "Completeness of callsite migrations: author ran regular expression searches to exhaustively update matching checks"
   ],
   "author_status": "active"
  },
  "reviewability": {
   "state": "Ready",
   "label": "Ready",
   "reason": "Clean CI and no merge conflicts. The author promptly addressed review comments and updated the callsite coverage."
  },
  "agreement": {
   "state": "Strong",
   "summary": "Strong consensus with multiple Concept and Code ACKs (maflcko, ismaelsadeeq, jeanpablojp, sedited, brunoerg)",
   "reason": "Reviewers tested the error output improvements, suggested enhancements that were implemented, and gave repeated ACKs.",
   "evidence": [
    "maflcko approved approach: 'approach lgtm... all of this seems fine'",
    "jeanpablojp gave a tested ACK after verifying failure printing and crash guards",
    "ismaelsadeeq gave a reACK after suggestions on callsite conversion and script formatting were applied",
    "sedited and brunoerg gave Concept ACKs"
   ]
  },
  "dependencies": {
   "depends_on": [],
   "enables": [
    "#35713"
   ]
  },
  "categories": [
   {
    "name": "tests",
    "member": true,
    "evidence": "Touches unit test utility files in src/test/util/ and test assertion macros across 15 unit test files.",
    "band": "P3",
    "reason_tag": "test coverage",
    "score": 0.35,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 1
    },
    "rationale": "Worthwhile test utility cleanup that improves failure diagnostics for unit test runs and provides printing infrastructure needed for #35713. It does not fix flaky tests or expand functional coverage into high-risk code paths, keeping it in P3."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": [],
  "card": "This PR adds stream output `operator<<` overloads for common types like `CScript`, `FeeFrac`, and `CTxDestination` in test utilities, and converts bare `BOOST_CHECK` comparisons across 15 unit test files to `BOOST_CHECK_EQUAL`. It solves the problem of opaque boolean failures during unit test runs, ensuring developers see the mismatched values when tests fail. The PR also provides printer logic intended for the unit test runner overhaul in #35713. Review state is active with strong multi-reviewer agreement and no blocking objections."
 },
 "raw_text": null
}