{
 "number": 35997,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35997",
 "title": "refactor: bench: make_hard_case to find a solution",
 "author": "yancyribbens",
 "author_association": "CONTRIBUTOR",
 "created_at": "2026-08-17T17:07:12Z",
 "updated_at": "2026-08-25T13:36:42Z",
 "age_days": 30,
 "draft": false,
 "labels": [
  "Refactoring"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "6019067724bfebbeea556b22be61807fb654d2c0",
 "head_ref": "0817-refactor-bnb-exhaustion-benchmark",
 "head_repo": "yancyribbens/bitcoin",
 "head_history": [
  {
   "t": "2026-08-17T20:08:51Z",
   "sha": "bd9d9a29bf94c7f9a47a1297fb6df1dafe45989d"
  },
  {
   "t": "2026-08-24T16:01:22Z",
   "sha": "6019067724bfebbeea556b22be61807fb654d2c0"
  }
 ],
 "additions": 11,
 "deletions": 6,
 "changed_files": 1,
 "commit_count": 1,
 "size_bucket": "S",
 "mergeable_state": "blocked",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "Dontbyshai",
      "url": "https://github.com/bitcoin/bitcoin/pull/35997#issuecomment-5322931748"
     }
    ]
   },
   "conflicts": [
    {
     "number": 35511,
     "title": "RFC: consensus: Make `CAmount` a class",
     "author": "hodlinator"
    }
   ]
  }
 },
 "acks_parsed": {
  "Dontbyshai": {
   "kind": "ack",
   "hash": null,
   "t": "2026-08-18T02:55:35Z",
   "stale": true
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 1,
  "concept_ack": 0,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "Dontbyshai"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "blocked",
  "last_author_activity": "2026-08-24T16:04:09Z",
  "last_reviewer_activity": "2026-08-18T02:55:35Z",
  "last_reviewer": "Dontbyshai",
  "author_silent_days": 24,
  "waiting_on_author_days": 0,
  "days_since_update": 23
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": [
   35511
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [],
 "body": "Add additional assertions showing the number of attempts ware exhausted and that a solution was found.",
 "commits": [
  {
   "sha": "6019067724bfebbeea556b22be61807fb654d2c0",
   "date": "2026-08-24T16:00:48Z",
   "message": "refactor: bench: update make_hard_case to find a solution\n\nAdd assertions showing the number of attempts were exhausted and that\na solution was found."
  }
 ],
 "timeline": [
  {
   "t": "2026-08-17T17:07:41Z",
   "kind": "comment",
   "who": "yancyribbens",
   "assoc": "CONTRIBUTOR",
   "text": "cc @murchandamus"
  },
  {
   "t": "2026-08-17T20:08:51Z",
   "kind": "force_push",
   "who": "yancyribbens",
   "commit": "bd9d9a29bf94c7f9a47a1297fb6df1dafe45989d"
  },
  {
   "t": "2026-08-18T02:55:35Z",
   "kind": "comment",
   "who": "Dontbyshai",
   "assoc": "NONE",
   "text": "ACK\n\nHi everyone, I reviewed the changes in this PR and tested the benchmark locally. I checked the BnB search logic as well as the assumptions used in make_hard_case(). I built bench_bitcoin with the changes from this PR and ran the BnBExhaustion benchmark. The benchmark completed successfully with exit code 0, and all the new assertions passed. The results confirm that the benchmark reaches the limit of 100,000 evaluations. \u270c\ud83c\udffb"
  },
  {
   "t": "2026-08-24T16:01:22Z",
   "kind": "force_push",
   "who": "yancyribbens",
   "commit": "6019067724bfebbeea556b22be61807fb654d2c0"
  },
  {
   "t": "2026-08-24T16:04:09Z",
   "kind": "comment",
   "who": "yancyribbens",
   "assoc": "CONTRIBUTOR",
   "text": "Updated the target and UTXO amounts to be more realistic.  Previously the target of 800,000 sats gave the false impression that such large numbers are needed to exhaust the search limit.  Also adjusted the cost_of_change param to sit at the threshold of exhausting the limit so that it's more meaningful for the benchmark."
  }
 ],
 "labels_log": [
  {
   "t": "2026-08-17T17:07:21Z",
   "action": "labeled",
   "label": "Refactoring",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-17T18:54:34Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-17T21:29:33Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  }
 ],
 "state_log": [],
 "text_chars": 1078,
 "text_tokens_estimate": 269,
 "changed_paths": [
  "src/bench/coin_selection.cpp"
 ],
 "files": [
  {
   "path": "src/bench/coin_selection.cpp",
   "add": 11,
   "del": 6
  }
 ],
 "test_lines": 17,
 "git": {
  "head": "6019067724bfebbeea556b22be61807fb654d2c0",
  "head_matches_backup": true,
  "base": "58a7869f860f022e6163dc3fae3106a0599830c5",
  "commits": [
   {
    "sha": "6019067724",
    "subject": "refactor: bench: update make_hard_case to find a solution",
    "files": 1,
    "add": 11,
    "del": 6
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "f9cc990dd423fcef",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}