{
 "number": 29700,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/29700",
 "title": "kernel, refactor: return error status on all fatal errors",
 "author": "ryanofsky",
 "author_association": "MEMBER",
 "created_at": "2024-03-21T23:11:56Z",
 "updated_at": "2026-09-16T00:25:34Z",
 "age_days": 909,
 "draft": true,
 "labels": [],
 "milestone": null,
 "base": "master",
 "head_sha": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb",
 "head_ref": "pr/fatalresult",
 "head_repo": "ryanofsky/bitcoin",
 "head_history": [
  {
   "t": "2024-03-26T18:46:40Z",
   "sha": "bd4b7e71aa1d630d0942ef15e2356b4b7ad254fa"
  },
  {
   "t": "2024-03-26T20:32:14Z",
   "sha": "1c4859653a707e5e299389b69e33aaf74455c24a"
  },
  {
   "t": "2024-03-26T21:36:37Z",
   "sha": "2787bb51874797350541c2c9d540fcc0876732f5"
  },
  {
   "t": "2024-03-27T03:00:58Z",
   "sha": "ee2456d67e3582839d173e91b26a524116a124ce"
  },
  {
   "t": "2024-03-27T17:46:24Z",
   "sha": "edc9fd110cc4786bc87a01662ea39ce599f1a070"
  },
  {
   "t": "2024-03-28T16:36:30Z",
   "sha": "bf3e999a56d8712b3190f13779c9ee0f9d7e8a95"
  },
  {
   "t": "2024-04-18T16:41:55Z",
   "sha": "cb1b27246ca65b01b869f1322f65364d66e9b7dc"
  },
  {
   "t": "2024-04-26T00:56:24Z",
   "sha": "4d2c9de24916f8d69514ea7c7251136e2762fa5c"
  },
  {
   "t": "2024-05-01T17:50:30Z",
   "sha": "f65fa8c91130931713848a97606d5add0fc9b8c5"
  },
  {
   "t": "2024-06-17T23:01:42Z",
   "sha": "692fc11f0aae3c8013f6f01d133139ce8eba7135"
  },
  {
   "t": "2024-06-18T16:15:16Z",
   "sha": "49e0b42e805448423d406edc4e5ebfb34aee959b"
  },
  {
   "t": "2024-06-20T15:27:52Z",
   "sha": "692fc11f0aae3c8013f6f01d133139ce8eba7135"
  },
  {
   "t": "2024-07-10T17:43:10Z",
   "sha": "ad1e73590d102edf3738986c1382b5e36a0ed727"
  },
  {
   "t": "2024-07-18T18:18:03Z",
   "sha": "e04e259146238f9a733edf3fd7b192db95f66e71"
  },
  {
   "t": "2024-07-19T14:40:31Z",
   "sha": "e22926a383223b286fe97a12ea4efaa81414bb41"
  },
  {
   "t": "2024-08-07T18:34:41Z",
   "sha": "3ab9a46ac67964c9d5ad54120b680b5eee7f16f0"
  },
  {
   "t": "2024-11-04T13:23:21Z",
   "sha": "05438605ba95df14705bf2f57924455f3b2e40e1"
  },
  {
   "t": "2024-11-04T15:51:00Z",
   "sha": "37edd648608b35ee8647b24a2810cb68318d0e88"
  },
  {
   "t": "2024-11-04T23:40:18Z",
   "sha": "c8b555b18dc149f43f3fffdff7962c3e69e655a9"
  },
  {
   "t": "2024-11-05T03:04:17Z",
   "sha": "a1077c21dd8995c5f11a56b65432da759a3c1b8e"
  },
  {
   "t": "2024-12-06T11:40:13Z",
   "sha": "af226a6a39ebab9d5886fcccdfbe63ea7da4fd9e"
  },
  {
   "t": "2024-12-06T12:10:30Z",
   "sha": "63aa292c8e68c51cf49baba799cbb6aa573dec82"
  },
  {
   "t": "2025-03-12T00:45:01Z",
   "sha": "07d8ec809e10872e5bf3c870abab365bdcb9adba"
  },
  {
   "t": "2025-03-20T17:54:47Z",
   "sha": "b795ab78b725c3ece4a5aca40330724e4929bc7f"
  },
  {
   "t": "2025-03-24T20:47:10Z",
   "sha": "42a73b451cd68be443c7a0dd94f7a00477775e23"
  },
  {
   "t": "2025-08-01T15:37:20Z",
   "sha": "f169e600c0868f96acf42bc3847acfa220db925d"
  },
  {
   "t": "2025-08-01T15:51:38Z",
   "sha": "a4cf35ddbde791e491375217470649c0e844955b"
  },
  {
   "t": "2025-08-01T22:11:14Z",
   "sha": "3c4b28b4d8072abd07405ffbe18c16de7c9d0a86"
  },
  {
   "t": "2025-10-15T00:42:09Z",
   "sha": "b1136354d6d7d195bfda2eb3b9bdf79f87cef3bf"
  },
  {
   "t": "2025-11-11T22:15:41Z",
   "sha": "aa57da149017205d4e0df201c8c301d520fc17d6"
  },
  {
   "t": "2025-12-12T12:19:31Z",
   "sha": "2bc7da5ec86c1174ade3e908b2844822019acf8f"
  },
  {
   "t": "2025-12-16T02:10:45Z",
   "sha": "15fa85163f324d50f6365b1865c320c974bcc3ee"
  },
  {
   "t": "2026-01-16T01:38:45Z",
   "sha": "f4e0a7d5eb59c6e74c2e3c2f0e7992251303975a"
  },
  {
   "t": "2026-01-16T19:24:37Z",
   "sha": "744e3f93f00f71a5ecd4fcb701eca5abb10d118c"
  },
  {
   "t": "2026-01-17T13:59:21Z",
   "sha": "07198e901118693a5d89498709f1a2d4341797cd"
  },
  {
   "t": "2026-02-03T19:02:40Z",
   "sha": "a473ac2e0ae676c63f3a6c092dc8a8cb3fe3f7c1"
  },
  {
   "t": "2026-02-03T19:32:12Z",
   "sha": "fc4f5573322cbe9ffd9e58e50316f02930ed0c50"
  },
  {
   "t": "2026-02-09T17:04:21Z",
   "sha": "b4cc3f66016c9a8fc0be33f278ba1a129f23528e"
  },
  {
   "t": "2026-02-09T19:10:36Z",
   "sha": "05c58b6ce1c81ae63fb4037915804410882f92af"
  },
  {
   "t": "2026-03-02T01:21:31Z",
   "sha": "8c5593b5110a32ee955bc5926d73aef74c5e99f6"
  },
  {
   "t": "2026-03-02T15:40:41Z",
   "sha": "235dd2123953d8fff11abc5102d152635065d3f5"
  },
  {
   "t": "2026-03-31T22:41:15Z",
   "sha": "b3d85c7c6ad1fea59270532e78c02a2a3f4d40c1"
  },
  {
   "t": "2026-04-01T12:16:43Z",
   "sha": "04122285bd2562b7edfa8eec59c22b2ef38e3b82"
  },
  {
   "t": "2026-04-01T13:47:11Z",
   "sha": "efbb422a78f6e698e8aa3283ae1341aa6d8fbcaa"
  },
  {
   "t": "2026-04-10T11:43:00Z",
   "sha": "e5cbf121fcabb91a949b9d9c55f1a823e1c2aeaf"
  },
  {
   "t": "2026-05-07T08:01:56Z",
   "sha": "578d94d4c25e55b544f9f7ca2d58b09d399feeb2"
  },
  {
   "t": "2026-06-08T13:27:48Z",
   "sha": "eb4cb669aa2473aae2ef02e2ca28dff40ef53c2d"
  },
  {
   "t": "2026-06-08T16:38:11Z",
   "sha": "4272e2b25c63db248a702f49714592e3693635d1"
  },
  {
   "t": "2026-06-08T18:42:50Z",
   "sha": "06af876aaa3b8227a23d69fec8c4210984cb3023"
  },
  {
   "t": "2026-06-24T17:09:04Z",
   "sha": "3ff7b8f8480b27bd55ea959b8fb7182b11b829e4"
  },
  {
   "t": "2026-06-24T20:24:48Z",
   "sha": "5c2680891e53daa7a92423df8f76ee42f0a4ade9"
  },
  {
   "t": "2026-06-28T21:00:13Z",
   "sha": "a07e8a22295289c5b57c62c8fec37fa75457cf91"
  },
  {
   "t": "2026-07-14T13:44:45Z",
   "sha": "03f2c81adc1917d0c1e292d2287d7868bf424949"
  },
  {
   "t": "2026-07-14T22:17:07Z",
   "sha": "c28899d137d6b54c382a8438c48ee1541d98b662"
  },
  {
   "t": "2026-08-15T16:07:42Z",
   "sha": "e3cbf89e96b0e5b6acb24cfbd34330fb5a52237f"
  },
  {
   "t": "2026-08-17T16:35:38Z",
   "sha": "bd4c4dbe3b9c2585a7380d1a0976435ccc800206"
  },
  {
   "t": "2026-09-08T18:34:53Z",
   "sha": "9b31a9739cb8c5dd165475efd837604e5e1bec5b"
  },
  {
   "t": "2026-09-08T23:44:51Z",
   "sha": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb"
  }
 ],
 "additions": 1754,
 "deletions": 675,
 "changed_files": 55,
 "commit_count": 22,
 "size_bucket": "XL",
 "mergeable_state": "clean",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {},
   "conflicts": [
    {
     "number": 36188,
     "title": "crypto: plug hardware optimized SHA256 into libsecp256k1's context",
     "author": "furszy"
    },
    {
     "number": 36182,
     "title": "fees: return `block_policy` fee rate estimate when `mempool_policy` is not ready",
     "author": "ismaelsadeeq"
    },
    {
     "number": 36171,
     "title": "blockstorage: Defer error notifications to callers",
     "author": "w0xlt"
    },
    {
     "number": 36098,
     "title": "fuzz: add corpus reachability checks",
     "author": "HowHsu"
    },
    {
     "number": 36066,
     "title": "validation: Separate check-only version of ConnectBlock",
     "author": "optout21"
    },
    {
     "number": 36000,
     "title": "validation: prefetch blocks while connecting",
     "author": "l0rinc"
    },
    {
     "number": 35751,
     "title": "validation: use parallel input prevout fetching in TestBlockValidity",
     "author": "andrewtoth"
    },
    {
     "number": 35731,
     "title": "Indexes: Harden the flush-error notification invariant",
     "author": "arejula27"
    },
    {
     "number": 35714,
     "title": "validation: stop writes after flush failure",
     "author": "l0rinc"
    },
    {
     "number": 35713,
     "title": "Remove boost as a unit test runner",
     "author": "rustaceanrob"
    },
    {
     "number": 35675,
     "title": "mining: add block template manager",
     "author": "ismaelsadeeq"
    },
    {
     "number": 35646,
     "title": "RFC: Separate out runtime errors from BlockValidationState using `util::Expected`",
     "author": "yuvicc"
    },
    {
     "number": 35581,
     "title": "node: add block template manager and track waitNext fee inflow",
     "author": "ismaelsadeeq"
    },
    {
     "number": 35570,
     "title": "refactor: Change some validation.cpp methods to return BlockValidationState",
     "author": "optout21"
    },
    {
     "number": 35557,
     "title": "kernel, validation: Add btck_chainstate_manager_set_clock_time",
     "author": "ryanofsky"
    },
    {
     "number": 35511,
     "title": "RFC: consensus: Make `CAmount` a class",
     "author": "hodlinator"
    },
    {
     "number": 35307,
     "title": "blockstorage: keep snapshot base in normal blockfile range",
     "author": "shuv-amp"
    },
    {
     "number": 35187,
     "title": "kernel: Block validation without a complete UTXO set",
     "author": "sedited"
    },
    {
     "number": 35071,
     "title": "Reindex: save progress to continue after interruption",
     "author": "pinheadmz"
    },
    {
     "number": 34909,
     "title": "wallet, refactor: modularise wallet by extracting out legacy wallet migration",
     "author": "rkrux"
    },
    {
     "number": 34729,
     "title": "Reduce log noise",
     "author": "ajtowns"
    },
    {
     "number": 34374,
     "title": "kernel: use struct-based logging and simplify logging interface",
     "author": "stickies-v"
    },
    {
     "number": 34132,
     "title": "coins, dbwrapper: remove error catcher, make point-read failures fatal",
     "author": "l0rinc"
    },
    {
     "number": 33922,
     "title": "mining: add getMemoryLoad() and track template non-mempool memory footprint",
     "author": "Sjors"
    },
    {
     "number": 33324,
     "title": "blocks: add resumable reobfuscation for existing block files",
     "author": "l0rinc"
    },
    {
     "number": 30342,
     "title": "kernel, logging: Pass Logger instances to kernel objects",
     "author": "ryanofsky"
    },
    {
     "number": 28690,
     "title": "build: Introduce internal kernel library",
     "author": "sedited"
    },
    {
     "number": 26022,
     "title": "Add util::ResultPtr class",
     "author": "ryanofsky"
    },
    {
     "number": 19461,
     "title": "multiprocess: Add bitcoin-gui -ipcconnect option",
     "author": "ryanofsky"
    },
    {
     "number": 19460,
     "title": "multiprocess: Add bitcoin-wallet -ipcconnect option",
     "author": "ryanofsky"
    },
    {
     "number": 10102,
     "title": "Multiprocess bitcoin",
     "author": "ryanofsky"
    }
   ]
  }
 },
 "acks_parsed": {},
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 0,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 1,
  "changes_requested": 0,
  "distinct_reviewers": [
   "Graysonbarton",
   "maflcko",
   "optout21",
   "purpleKarrot",
   "sedited"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "clean",
  "last_author_activity": "2026-09-08T23:44:51Z",
  "last_reviewer_activity": "2026-06-29T21:51:21Z",
  "last_reviewer": "optout21",
  "author_silent_days": 8,
  "waiting_on_author_days": 0,
  "days_since_update": 1
 },
 "refs": {
  "mentioned": [
   25665,
   28970,
   29642,
   29668,
   30267,
   30428,
   30497,
   30517,
   30595,
   30965,
   31072,
   31385,
   31439,
   31490,
   31910,
   32033,
   32950,
   33512,
   33680,
   34184,
   34208,
   34241,
   34253,
   34435,
   34440,
   34504,
   34544,
   34644,
   34858,
   34884,
   35182,
   35205,
   35295,
   35359,
   35570,
   35572,
   35621,
   35652,
   35673,
   35847
  ],
  "depends_on": [
   25665
  ],
  "fixes": [],
  "linked_issues": [],
  "references": [
   {
    "number": 25665,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "refactor: Add util::Result failure types and ability to merge result values"
   },
   {
    "number": 29642,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "kernel: Handle fatal errors through return values"
   },
   {
    "number": 30267,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-07-02",
    "title": "assumeutxo: Check snapshot base block is not in invalid chain"
   },
   {
    "number": 28970,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-04-30",
    "title": "p2p: opportunistically accept 1-parent-1-child packages"
   },
   {
    "number": 29668,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-07-10",
    "title": "prune, rpc: Check undo data when finding pruneheight"
   },
   {
    "number": 30428,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-07-15",
    "title": "log: LogError with FlatFilePos in UndoReadFromDisk"
   },
   {
    "number": 30497,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-08-05",
    "title": "rpc: Return errors in loadtxoutset that currently go to logs"
   },
   {
    "number": 30517,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-07-26",
    "title": "refactor: Add FlatFileSeq member variables in BlockManager"
   },
   {
    "number": 30595,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-11-04",
    "title": "kernel: Introduce C header API"
   },
   {
    "number": 30965,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-01-31",
    "title": "kernel: Move block tree db open to block manager"
   },
   {
    "number": 31072,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2024-12-06",
    "title": "refactor: Clean up messy strformat and bilingual_str usages"
   },
   {
    "number": 31385,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-08-01",
    "title": "package validation: relax the package-not-child-with-unconfirmed-parents rule"
   },
   {
    "number": 31439,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-02-14",
    "title": "validation: In case of a continued reindex, only activate chain in the end"
   },
   {
    "number": 31490,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-01-22",
    "title": "refactor: inline `UndoWriteToDisk` and `WriteBlockToDisk` to reduce serialization calls"
   },
   {
    "number": 31910,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-03-21",
    "title": "qa: fix an off-by-one in utxo snapshot fuzz target and sanity check its snapshot data"
   },
   {
    "number": 32033,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-03-17",
    "title": "test: Check datadir cleanup after assumeutxo was successful"
   },
   {
    "number": 32950,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-02-18",
    "title": "validation: remove BLOCK_FAILED_CHILD"
   },
   {
    "number": 33512,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-02-19",
    "title": "coins: use dirty entry count for flush warnings and disk space checks"
   },
   {
    "number": 33680,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-01-29",
    "title": "validation: do not wipe utxo cache for stats/scans/snapshots"
   },
   {
    "number": 34184,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-02-24",
    "title": "mining: add cooldown to createNewBlock() immediately after IBD"
   },
   {
    "number": 34208,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-06",
    "title": "bench: add fluent API for untimed `setup` steps in nanobench"
   },
   {
    "number": 34241,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-02-09",
    "title": "test: Check that interrupt results in EXIT_SUCCESS"
   },
   {
    "number": 34253,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-01-29",
    "title": "validation: cache tip recency for lock-free `IsInitialBlockDownload()`"
   },
   {
    "number": 34435,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-22",
    "title": "refactor: use `_MiB`/`_GiB` consistently for byte conversions"
   },
   {
    "number": 34440,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-22",
    "title": "refactor: Change CChain methods to use references, add tests"
   },
   {
    "number": 34504,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-02-05",
    "title": "build: replace `WERROR` with `CMAKE_COMPILE_WARNING_AS_ERROR`"
   },
   {
    "number": 34544,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-05-02",
    "title": "wallet: Disallow wallet names that are paths including `..` and `.` elements"
   },
   {
    "number": 34644,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-05-28",
    "title": "mining: add submitBlock to IPC Mining interface"
   },
   {
    "number": 34858,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-09",
    "title": "test: Use NodeClockContext in more tests"
   },
   {
    "number": 34884,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-09",
    "title": "validation: remove unused code in FindMostWorkChain"
   },
   {
    "number": 35182,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-22",
    "title": "Replace libevent with our own HTTP and socket-handling implementation"
   },
   {
    "number": 35205,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-08-04",
    "title": "kernel,node: add `dbcache` setter and clarify defaults"
   },
   {
    "number": 35295,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-09",
    "title": "validation: fetch block input prevouts in parallel during ConnectBlock"
   },
   {
    "number": 35359,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-08",
    "title": "blockstorage: Remove cs_LastBlockFile recursive mutex"
   },
   {
    "number": 35570,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "refactor: Change some validation.cpp methods to return BlockValidationState"
   },
   {
    "number": 35572,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-14",
    "title": "coins: make cursor iteration DB-only"
   },
   {
    "number": 35621,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-06",
    "title": "validation: Ignore eventual error message from flushing in AcceptBlock"
   },
   {
    "number": 35652,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-06",
    "title": "init: fix reindex deadlock by waking cv after interrupt"
   },
   {
    "number": 35673,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-08",
    "title": "refactor: Move LoadGenesisBlock to ChainstateManager"
   },
   {
    "number": 35847,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-08-14",
    "title": "test: move more tests to `baseindex_tests` and run them for all indexes"
   }
  ],
  "conflicts": [
   36188,
   36182,
   36171,
   36098,
   36066,
   36000,
   35751,
   35731,
   35714,
   35713,
   35675,
   35646,
   35581,
   35570,
   35557,
   35511,
   35307,
   35187,
   35071,
   34909,
   34729,
   34374,
   34132,
   33922,
   33324,
   30342,
   28690,
   26022,
   19461,
   19460,
   10102
  ]
 },
 "stack": {
  "shares_commits_with": [
   25665
  ],
  "based_on": [
   25665
  ],
  "base_for": []
 },
 "review_paths": [
  "src/node/blockstorage.cpp",
  "src/validation.cpp"
 ],
 "body": "Return util::Result objects from all functions that can trigger fatal errors.\n\nThere are many validation functions that handle failures by calling `AbortNode` and triggering shutdowns, without returning error information to their callers. This makes error handling in libbitcoinkernel application code difficult, because the only way to handle these errors is to register for [notification callbacks](https://github.com/bitcoin/bitcoin/blob/master/src/kernel/notifications_interface.h). Improve this by making all functions that trigger fatal errors return util::Result objects with the error information.\n\nThis PR is a pure refactoring that returns extra result information from functions without changing their behavior. It's a possible alternative to and subset of #29642, which adds similar return information but also makes behavior changes and exposes a FatalError type.\n\n---\n\n**This is based on #25665.** The non-base commits are:\n\n- [`c9210e8bde1` refactor, kernel: Add FlushStatus / FlushResult types](https://github.com/bitcoin/bitcoin/pull/29700/commits/c9210e8bde1175c71d5b40933e96effc0dc59c80)\n- [`7605f8c76e4` refactor: Add InfoType field to util::Result](https://github.com/bitcoin/bitcoin/pull/29700/commits/7605f8c76e468d0699c42ed442fb5b5ac7f3191d)\n- [`6a4d8d348dc` refactor, blockstorage: Return FlushResult from flush methods](https://github.com/bitcoin/bitcoin/pull/29700/commits/6a4d8d348dc64c5971e403317483523d832c0f5b)\n- [`bbeea8fea98` refactor, blockstorage: Return fatal errors from block writes](https://github.com/bitcoin/bitcoin/pull/29700/commits/bbeea8fea98b0631c13f6f7c2858ce5f3235e6fb)\n- [`af5f1a91b4b` refactor, validation: Switch to result.Update](https://github.com/bitcoin/bitcoin/pull/29700/commits/af5f1a91b4b4be4cab751ca2d92b3d22cc29947e)\n- [`1827122486d` refactor, blockstorage: Return fatal error from LoadBlockIndex](https://github.com/bitcoin/bitcoin/pull/29700/commits/1827122486da452ad2db67f9105132c4d65d3775)\n- [`6a7e6805df7` refactor, validation: Return fatal errors from FlushStateToDisk](https://github.com/bitcoin/bitcoin/pull/29700/commits/6a7e6805df73111008021da381f23bafa399f7ea)\n- [`2639ec156a7` refactor, validation: Return fatal errors from mempool accept functions](https://github.com/bitcoin/bitcoin/pull/29700/commits/2639ec156a75d831f3c54b93cde2b0138d2860ed)\n- [`0ce542edd31` refactor, validation: Return fatal errors from assumeutxo snapshot functions](https://github.com/bitcoin/bitcoin/pull/29700/commits/0ce542edd310548894f9881a7cc00a7aa04f5347)\n- [`f0e3a6c845f` refactor, validation: Return fatal errors from block connect functions](https://github.com/bitcoin/bitcoin/pull/29700/commits/f0e3a6c845fbe52d814226949f5ddfef933c494e)\n- [`986c77e69d2` refactor, validation: Return fatal errors from activate best chain functions](https://github.com/bitcoin/bitcoin/pull/29700/commits/986c77e69d23f8ddf281f995d9a2ee2ae1eaf8f1)\n- [`d555f9b1278` refactor, validation: Return fatal errors from new block functions](https://github.com/bitcoin/bitcoin/pull/29700/commits/d555f9b127860b4ff6432945da1d13d63f898b1d)\n- [`1c3e64c0bd6` refactor, blockstorage: Return fatal error from ImportBlocks](https://github.com/bitcoin/bitcoin/pull/29700/commits/1c3e64c0bd6ec7957d76c7b81e0ba11cb883bfe7)\n- [`f8ad69966f7` refactor, validation: Return more errors from VerifyDB](https://github.com/bitcoin/bitcoin/pull/29700/commits/f8ad69966f72a0f8be7310d32b626d8ef9530fdb)",
 "commits": [
  {
   "sha": "f1e827bc2058f97daa82a7f9b4dbebac1584ba3b",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor: Add util::Result failure values\n\nAdd util::Result support for returning more error information. For better error\nhandling, adds the ability to return a value on failure, not just a value on\nsuccess. This is a key missing feature that made the result class not useful\nfor functions like LoadChainstate() which produce different errors that need to\nbe handled differently.\n\nThis change also makes some more minor improvements:\n\n- Smaller type size. On 64-bit platforms, util::Result<int> is 16 bytes, and\n  util::Result<void> is 8 bytes. Previously util::Result<int> and\n  util::Result<void> were 72 bytes.\n\n- More documentation and tests."
  },
  {
   "sha": "2a59241faf280a80b9a0f22fe56cf773b1549410",
   "date": "2026-09-03T11:32:49Z",
   "message": "wallet: fix clang-tidy warning performance-no-automatic-move\n\nPrevious commit causes the warning to be triggered, but the suboptimal return\nfrom const statement was added earlier in 517e204bacd9d.\n\nWarning was causing CI failure https://cirrus-ci.com/task/6159914970644480"
  },
  {
   "sha": "335a6af84ef0e656e49016c6b87c70e58f75a131",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor: Add util::Result::Update() method\n\nAdd util::Result Update method to make it possible to change the value of an\nexisting Result object. This will be useful for functions that can return\nmultiple error and warning messages, and want to be able to change the result\nvalue while keeping existing messages."
  },
  {
   "sha": "f3d9b8993ab36d8bc199730ade447a63e8435d0a",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor: Use util::Result class in LoadChainstate and VerifyLoadedChainstate"
  },
  {
   "sha": "b7640ff7db2f97f5102a409bfce46628e3b9c6e9",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor: Add util::Result multiple error and warning messages\n\nAdd util::Result support for returning warning messages and multiple errors,\nnot just a single error string. This provides a way for functions to report\nerrors and warnings in a standard way, and simplifies interfaces.\n\nThe functionality is unit tested here, and put to use in followup PR\nhttps://github.com/bitcoin/bitcoin/pull/25722"
  },
  {
   "sha": "fdeb223231ecd2031beed368365037fdb31c0871",
   "date": "2026-09-03T11:32:49Z",
   "message": "test: add static test for util::Result memory usage\n\nSuggested by Martin Leitner-Ankerl <martin.ankerl@gmail.com>\nhttps://github.com/bitcoin/bitcoin/pull/25722#discussion_r1174298529\n\nCo-authored-by: Martin Leitner-Ankerl <martin.ankerl@gmail.com>"
  },
  {
   "sha": "389ab06bb04dee0f056ac27760840bb09e440efb",
   "date": "2026-09-03T11:32:49Z",
   "message": "ci: Avoid -Wno-error=maybe-uninitialized false positives\n\nAvoid false positive maybe-uninitialized errors in native_previous_releases\nCI job.\n\nFix was suggested by maflcko in\nhttps://github.com/bitcoin/bitcoin/pull/25665#issuecomment-3457573218\n\nCI errors look like:\nhttps://github.com/bitcoin/bitcoin/actions/runs/25426711469/job/74581986567?pr=25665\n\n/home/admin/actions-runner/_work/_temp/src/wallet/test/util.cpp: In function \u2018wallet::DescriptorScriptPubKeyMan* wallet::CreateDescriptor(CWallet&, const std::string&, bool)\u2019:\n/home/admin/actions-runner/_work/_temp/src/wallet/test/util.cpp:143:10: error: \u2018*(const std::reference_wrapper<wallet::DescriptorScriptPubKeyMan>*)((char*)&spkm + offsetof(util::Result<std::reference_wrapper<wallet::DescriptorScriptPubKeyMan>, void, util::Messages>,util::Result<std::reference_wrapper<wallet::DescriptorScriptPubKeyMan>, void, util::Messages>::<unnamed>.util::detail::SuccessHolder<std::reference_wrapper<wallet::DescriptorScriptPubKeyMan>, void, util::Messages>::<unnamed>)).std::reference_wrapper<wallet::DescriptorScriptPubKeyMan>::_M_data\u2019 may be used uninitialized [-Werror=maybe-uninitialized]\n  143 |     auto spkm = Assert(keystore.AddWalletDescriptor(w_desc, keys,/*label=*/\"\", /*internal=*/false));\n      |          ^~~~\ncc1plus: all warnings being treated as errors"
  },
  {
   "sha": "fcc1ca25b7ef11f6da2c3128bc61dc1f2f992958",
   "date": "2026-09-03T11:32:49Z",
   "message": "Merge branch 'pr/bresult2' into pr/fatalresult"
  },
  {
   "sha": "c9210e8bde1175c71d5b40933e96effc0dc59c80",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, kernel: Add FlushStatus / FlushResult types"
  },
  {
   "sha": "7605f8c76e468d0699c42ed442fb5b5ac7f3191d",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor: Add InfoType field to util::Result\n\nAdd new InfoType field to util::Result which unlike SuccessType and FailureType\nis useful for returning extra information in a result regardless of whether the\nfunction succeeded for failed.\n\nThis will be used to return FlushStatus values from libbitcoinkernel functions\nindicating if flushed data in addition to whether they succeeded or failed.\n\nThe InfoType field is stored directly in the util::Result object, unlike\nFailureType and MessagesType which are stored in dynamically allocated memory\nand require an extra memory allocation if they are accessed."
  },
  {
   "sha": "6a4d8d348dc64c5971e403317483523d832c0f5b",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, blockstorage: Return FlushResult from flush methods\n\nReturn FlushResult instead of bool from BlockStorage FlushUndoFile,\nFlushBlockFile, FlushChainstateBlockFile methods and update all callers of\nthese methods to use the FlushResult type internally and provide context\ninformation for the flush failure. Three callers:\nBlockManager::FindNextBlockPos, BlockManager::WriteUndoDataForBlock, and\nChainstate::FlushStateToDisk will be updated in upcoming commits to bubble\nresults up to their callers."
  },
  {
   "sha": "bbeea8fea98b0631c13f6f7c2858ce5f3235e6fb",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, blockstorage: Return fatal errors from block writes\n\nReturn fatal errors from BlockManager methods that write block data. Also\nupdate callers to use the new result types. The callers will be changed to\nbubble up the results to their callers in subsequent commits."
  },
  {
   "sha": "af5f1a91b4b4be4cab751ca2d92b3d22cc29947e",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Switch to result.Update\n\nUse result.Update in CompleteChainstateInit() and\nChainstateManager::ActivateSnapshot() so it is possible for them to return\nwarning messages (about flush failures) in upcoming commits.\n\nCompleteChainstateInit() was previously changed to use util::Result in #25665\nand ChainstateManager::ActivateSnapshot() was changed to use it in #30267, but\npreviously these functions only returned Result values themselves, and did not\ncall other functions that return Result values. Now, some functions they are\ncalling will also return Result values, so refactor these functions to use\nresult.Update so they can merge results and return complete error and warning\nmessages."
  },
  {
   "sha": "1827122486da452ad2db67f9105132c4d65d3775",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, blockstorage: Return fatal error from LoadBlockIndex\n\nReturn fatal error and interrupt status from LoadBlockIndex functions and\nupdate callers to use new result types."
  },
  {
   "sha": "6a7e6805df73111008021da381f23bafa399f7ea",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from FlushStateToDisk\n\nReturn fatal errors from the Chainstate::FlushStateToDisk method and several\nsmall, related methods which wrap it: ForceFlushStateToDisk, PruneAndFlush,\nResizeCoinsCaches, and MaybeRebalanceCaches.\n\nAlso add nodiscard annotations so callers do not accidentally ignore the result\nvalues. Callers in init and rpc files are updated to explicitly ignore the\nflush results, and other callers (AcceptToMemoryPool, ProcessNewPackage,\nDisconnectTip, ConnectTip, ActivateBestChainStep, ActivateSnapshot,\nMaybeCompleteSnapshotValidation) are updated to store the results in this\ncommit, and will be updated in upcoming commits to bubble results up to their\ncallers."
  },
  {
   "sha": "2639ec156a75d831f3c54b93cde2b0138d2860ed",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from mempool accept functions\n\nReturn fatal errors from AcceptToMemoryPool ProcessNewPackage,\nProcessTransaction, MaybeUpdateMempoolForReorg, and LoadMempool functions.\n\nAlso add nodiscard annotations so callers handle the result values. Two callers\nActivateBestChainStep and InvalidateBlock will be updated in upcoming commits\nto bubble results up to their callers."
  },
  {
   "sha": "0ce542edd310548894f9881a7cc00a7aa04f5347",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from assumeutxo snapshot functions\n\nReturn fatal errors from ActivateSnapshot, MaybeCompleteSnapshotValidation, and\nValidatedSnapshotCleanup functions. Also add nodiscard annotations so callers\nhandle the result values. One caller, ConnectTip, will be updated in an\nupcoming commit to bubble results up to its callers."
  },
  {
   "sha": "f0e3a6c845fbe52d814226949f5ddfef933c494e",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from block connect functions\n\nReturn fatal errors from ConnectBlock, ConnectTip, DisconnectTip, and\nInvalidateBlock. Also add nodiscard annotations so callers handle the result\nvalues. Three callers: ActivateBestChainStep TestBlockValidity, and\nCVerifyDB::VerifyDB will be updated in upcoming commits to bubble results up\nto their callers."
  },
  {
   "sha": "986c77e69d23f8ddf281f995d9a2ee2ae1eaf8f1",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from activate best chain functions\n\nReturn fatal errors from ActivateBestChain, ActivateBestChainStep, and\nPreciousBlock functions.  Also add nodiscard annotations so callers handle the\nresult values. Two callers, ProcessNewBlock and LoadExternalBlockFile, will be\nupdated in an upcoming commits to bubble results up to its callers."
  },
  {
   "sha": "d555f9b127860b4ff6432945da1d13d63f898b1d",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return fatal errors from new block functions\n\nReturn fatal errors from AcceptBlock, ProcessNewBlock, TestBlockValidity,\nLoadGenesisBlock, and LoadExternalBlockFile. Also add nodiscard annotations so\ncallers handle the result values."
  },
  {
   "sha": "1c3e64c0bd6ec7957d76c7b81e0ba11cb883bfe7",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, blockstorage: Return fatal error from ImportBlocks\n\nReturn fatal error ImportBlocks function and add nodiscard annotation."
  },
  {
   "sha": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb",
   "date": "2026-09-03T11:32:49Z",
   "message": "refactor, validation: Return more errors from VerifyDB\n\nReturn ConnectBlock errors from VerifyDB."
  }
 ],
 "timeline": [
  {
   "t": "2024-03-25T14:52:10Z",
   "kind": "review",
   "who": "Graysonbarton",
   "assoc": "NONE",
   "state": "APPROVED",
   "commit": "69defe036c1a9b5fed49038511f6676294c13ddd",
   "text": "Fixing fatal errors."
  },
  {
   "t": "2024-03-26T18:46:40Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "bd4b7e71aa1d630d0942ef15e2356b4b7ad254fa"
  },
  {
   "t": "2024-03-26T20:32:14Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "1c4859653a707e5e299389b69e33aaf74455c24a"
  },
  {
   "t": "2024-03-26T21:36:37Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "2787bb51874797350541c2c9d540fcc0876732f5"
  },
  {
   "t": "2024-03-27T03:00:58Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "ee2456d67e3582839d173e91b26a524116a124ce"
  },
  {
   "t": "2024-03-27T17:46:24Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "edc9fd110cc4786bc87a01662ea39ce599f1a070"
  },
  {
   "t": "2024-03-28T16:36:30Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "bf3e999a56d8712b3190f13779c9ee0f9d7e8a95"
  },
  {
   "t": "2024-04-18T16:41:55Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "cb1b27246ca65b01b869f1322f65364d66e9b7dc"
  },
  {
   "t": "2024-04-26T00:56:24Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "4d2c9de24916f8d69514ea7c7251136e2762fa5c"
  },
  {
   "t": "2024-05-01T17:50:30Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "f65fa8c91130931713848a97606d5add0fc9b8c5"
  },
  {
   "t": "2024-05-01T17:53:52Z",
   "kind": "comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "text": "Rebased 4d2c9de24916f8d69514ea7c7251136e2762fa5c -> f65fa8c91130931713848a97606d5add0fc9b8c5 ([`pr/fatalresult.13`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.13) -> [`pr/fatalresult.14`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.14), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.13-rebase..pr/fatalresult.14)) due to silent conflict with #28970"
  },
  {
   "t": "2024-06-17T23:01:42Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "692fc11f0aae3c8013f6f01d133139ce8eba7135"
  },
  {
   "t": "2024-06-18T16:15:16Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "49e0b42e805448423d406edc4e5ebfb34aee959b"
  },
  {
   "t": "2024-06-20T15:27:52Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "692fc11f0aae3c8013f6f01d133139ce8eba7135"
  },
  {
   "t": "2024-07-10T17:43:10Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "ad1e73590d102edf3738986c1382b5e36a0ed727"
  },
  {
   "t": "2024-07-10T17:45:31Z",
   "kind": "comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "text": "Rebased 692fc11f0aae3c8013f6f01d133139ce8eba7135 -> ad1e73590d102edf3738986c1382b5e36a0ed727 ([`pr/fatalresult.17`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.17) -> [`pr/fatalresult.18`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.18), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.17-rebase..pr/fatalresult.18)) to fix conflicts"
  },
  {
   "t": "2024-07-18T18:18:03Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "e04e259146238f9a733edf3fd7b192db95f66e71"
  },
  {
   "t": "2024-07-18T18:20:15Z",
   "kind": "comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "text": "Rebased ad1e73590d102edf3738986c1382b5e36a0ed727 -> e04e259146238f9a733edf3fd7b192db95f66e71 ([`pr/fatalresult.18`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.18) -> [`pr/fatalresult.19`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.19), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.18-rebase..pr/fatalresult.19)) to fix conflicts with #29668 and #30428"
  },
  {
   "t": "2024-07-19T14:40:31Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "e22926a383223b286fe97a12ea4efaa81414bb41"
  },
  {
   "t": "2024-07-26T14:33:32Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "src/node/blockstorage.cpp",
   "commit": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb",
   "in_reply_to": null,
   "text": "Seems fragile to use `util::Result<InterruptResult>`. Wrapping one result into another is fragile, because call-sites may easily forget to unwrap the inner result, especially if the inner result is otherwise `void`. My recommendation would be to treat interruption as `util::Error`, so that callers don't miss it if they check for errors (but forget to check for interruption), but are free to check it, if they inspect the precise error."
  },
  {
   "t": "2024-08-07T18:27:47Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "src/node/blockstorage.cpp",
   "commit": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb",
   "in_reply_to": 1693183422,
   "text": "re: https://github.com/bitcoin/bitcoin/pull/29700#discussion_r1693183422\n\n[quoted text omitted]\nIt sounds like you want `Result<InterruptResult, void>` to be replaced with `Result<void, InterruptResult>` which would be ok with me. I don't think the difference between these things is very significant, but I agree maybe if the caller forgets to check for the interrupted status, incorrectly treating the interrupted status like a failure might be safer than incorrectly treating the interrupted status like a success."
  },
  {
   "t": "2024-08-07T18:34:41Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "3ab9a46ac67964c9d5ad54120b680b5eee7f16f0"
  },
  {
   "t": "2024-08-07T18:39:18Z",
   "kind": "review",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "3ab9a46ac67964c9d5ad54120b680b5eee7f16f0",
   "text": "Rebased e22926a383223b286fe97a12ea4efaa81414bb41 -> 3ab9a46ac67964c9d5ad54120b680b5eee7f16f0 ([`pr/fatalresult.20`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.20) -> [`pr/fatalresult.21`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.21), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.20-rebase..pr/fatalresult.21)) due to conflicts with #30517 and #30497"
  },
  {
   "t": "2024-10-31T15:19:30Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "Can you rebase this?"
  },
  {
   "t": "2024-11-04T13:23:21Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "05438605ba95df14705bf2f57924455f3b2e40e1"
  },
  {
   "t": "2024-11-04T13:28:37Z",
   "kind": "comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "text": "Rebased 3ab9a46ac67964c9d5ad54120b680b5eee7f16f0 -> 05438605ba95df14705bf2f57924455f3b2e40e1 ([`pr/fatalresult.21`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.21) -> [`pr/fatalresult.22`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.22), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.21-rebase..pr/fatalresult.22)) due to various conflicts. Still have not moved InterruptResult from success type to failure type yet (https://github.com/bitcoin/bitcoin/pull/29700#discussion_r1707623223), but would like to try that\nUpdated 05438605ba95df14705bf2f57924455f3b2e40e1 -> 37edd648608b35ee8647b24a2810cb68318d0e88 ([`pr/fatalresult.22`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.22) -> [`pr/fatalresult.23`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.23), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.22..pr/fatalresult.23)) to fix feature_assumeutxo.py errors https://github.com/bitcoin/bitcoin/actions/runs/11665121674/job/32477102140?pr=29700\nUpdated 37edd648608b35ee8647b24a2810cb68318d0e88 -> c8b555b18dc149f43f3fffdff7962c3e69e655a9 ([`pr/fatalresult.23`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.23) -> [`pr/fatalresult.24`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.24), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.23..pr/fatalresult.24)) to fix windows stderr line ending error https://github.com/bitcoin/bitcoin/actions/runs/11667772974/job/32485867701#step:12:131\nUpdated c8b555b18dc149f43f3fffdff7962c3e69e655a9 -> a1077c21dd8995c5f11a56b65432da759a3c1b8e ([`pr/fatalresult.24`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.24) -> [`pr/fatalresult.25`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.25), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.24..pr/fatalresult.25)) to fix windows errors caused by previous fix (https://github.com/bitcoin/bitcoin/actions/runs/11674634334/job/32507680468)\nRebased a1077c21dd8995c5f11a56b65432da759a3c1b8e -> af226a6a39ebab9d5886fcccdfbe63ea7da4fd9e ([`pr/fatalresult.25`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.25) -> [`pr/fatalresult.26`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.26), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.25-rebase..pr/fatalresult.26)) due to various conflicts\nRebased af226a6a39ebab9d5886fcccdfbe63ea7da4fd9e -> 63aa292c8e68c51cf49baba799cbb6aa573dec82 ([`pr/fatalresult.26`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.26) -> [`pr/fatalresult.27`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.27), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.26-rebase..pr/fatalresult.27)) due to conflict with #31072\nRebased 63aa292c8e68c51cf49baba799cbb6aa573dec82 -> 07d8ec809e10872e5bf3c870abab365bdcb9adba ([`pr/fatalresult.27`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.27) -> [`pr/fatalresult.28`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.28), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.27-rebase..pr/fatalresult.28)) due to conflicts with #31490, #30965, and #31439\nRebased 07d8ec809e10872e5bf3c870abab365bdcb9adba -> b795ab78b725c3ece4a5aca40330724e4929bc7f ([`pr/fatalresult.28`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.28) -> [`pr/fatalresult.29`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.29), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.28-rebase..pr/fatalresult.29)) due to conflict with #32033\nRebased b795ab78b725c3ece4a5aca40330724e4929bc7f -> 42a73b451cd68be443c7a0dd94f7a00477775e23 ([`pr/fatalresult.29`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.29) -> [`pr/fatalresult.30`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.30), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.29-rebase..pr/fatalresult.30)) due to silent conflict with #31910 causing nodiscard error https://cirrus-ci.com/task/5763662914256896\nRebased 42a73b451cd68be443c7a0dd94f7a00477775e23 -> f169e600c0868f96acf42bc3847acfa220db925d ([`pr/fatalresult.30`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.30) -> [`pr/fatalresult.31`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.31), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.30-rebase..pr/fatalresult.31)) due to various conflicts\nRebased f169e600c0868f96acf42bc3847acfa220db925d -> a4cf35ddbde791e491375217470649c0e844955b ([`pr/fatalresult.31`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.31) -> [`pr/fatalresult.32`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.32), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.31-rebase..pr/fatalresult.32)) due to conflict with #31385\n\nUpdated a4cf35ddbde791e491375217470649c0e844955b -> 3c4b28b4d8072abd07405ffbe18c16de7c9d0a86 ([`pr/fatalresult.32`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.32) -> [`pr/fatalresult.33`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.33), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.32..pr/fatalresult.33)) to fix ci lint and tidy errors https://cirrus-ci.com/task/6460361353723904 https://cirrus-ci.com/task/5052986470170624\n\nRebased 3c4b28b4d8072abd07405ffbe18c16de7c9d0a86 -> b1136354d6d7d195bfda2eb3b9bdf79f87cef3bf ([`pr/fatalresult.33`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.33) -> [`pr/fatalresult.34`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.34), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.33-rebase..pr/fatalresult.34))\n\nRebased b1136354d6d7d195bfda2eb3b9bdf79f87cef3bf -> aa57da149017205d4e0df201c8c301d520fc17d6 ([`pr/fatalresult.34`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.34) -> [`pr/fatalresult.35`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.35), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.34-rebase..pr/fatalresult.35)) due to conflict with #30595\n\nRebased aa57da149017205d4e0df201c8c301d520fc17d6 -> 2bc7da5ec86c1174ade3e908b2844822019acf8f ([`pr/fatalresult.35`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.35) -> [`pr/fatalresult.36`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.36), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.35-rebase..pr/fatalresult.36))\n\nRebased 2bc7da5ec86c1174ade3e908b2844822019acf8f -> 15fa85163f324d50f6365b1865c320c974bcc3ee ([`pr/fatalresult.36`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.36) -> [`pr/fatalresult.37`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.37), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.36-rebase..pr/fatalresult.37))\n\nRebased 15fa85163f324d50f6365b1865c320c974bcc3ee -> f4e0a7d5eb59c6e74c2e3c2f0e7992251303975a ([`pr/fatalresult.37`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.37) -> [`pr/fatalresult.38`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.38), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.37-rebase..pr/fatalresult.38)) due to conflicts\n\nUpdated f4e0a7d5eb59c6e74c2e3c2f0e7992251303975a -> 642e3a5b21b81317ad1a78a83456f0a2bbcd0fb9 ([`pr/fatalresult.38`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.38) -> [`pr/fatalresult.39`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.39), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.38..pr/fatalresult.39)) to fix CI errors https://github.com/bitcoin/bitcoin/actions/runs/21052613538\n\nUpdated 642e3a5b21b81317ad1a78a83456f0a2bbcd0fb9 -> 871651378ca0af03365040f60858a2939e4bdf68 ([`pr/fatalresult.39`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.39) -> [`pr/fatalresult.40`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.40), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.39..pr/fatalresult.40)) to fix CI error https://github.com/bitcoin/bitcoin/actions/runs/21078196842/job/60625273966?pr=29700\n\nRebased 871651378ca0af03365040f60858a2939e4bdf68 -> 75e142acf994773d7693a63e53193cd342dab78e ([`pr/fatalresult.40`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.40) -> [`pr/fatalresult.41`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.41), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.40-rebase..pr/fatalresult.41)) on top of #25665 pr/bresult2.73 due to conflicts with #34253 and #33680\n\nUpdated 75e142acf994773d7693a63e53193cd342dab78e -> 326c23ab46e24fcf8114439d6e19f23ef1106968 ([`pr/fatalresult.41`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.41) -> [`pr/fatalresult.42`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.42), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.41..pr/fatalresult.42)) to fix IWYU errors https://github.com/bitcoin/bitcoin/actions/runs/21643714580/job/62390097850?pr=29700\n\nRebased 326c23ab46e24fcf8114439d6e19f23ef1106968 -> ad8f98ceb224324d1d0fd81d45c83d04b1b3e92d ([`pr/fatalresult.42`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.42) -> [`pr/fatalresult.43`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.43), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.42-rebase..pr/fatalresult.43)) due to conflict with #34504\n\nUpdated ad8f98ceb224324d1d0fd81d45c83d04b1b3e92d -> 09cbe90fa5c05e56d43895948d0d4f2b771cff9f ([`pr/fatalresult.43`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.43) -> [`pr/fatalresult.44`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.44), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.43..pr/fatalresult.44)) to fix feature_init.py failure https://github.com/bitcoin/bitcoin/actions/runs/21833788038/job/62998952469?pr=29700 caused by silent conflict with #34241\n\nRebased 09cbe90fa5c05e56d43895948d0d4f2b771cff9f -> 8c5593b5110a32ee955bc5926d73aef74c5e99f6 ([`pr/fatalresult.44`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.44) -> [`pr/fatalresult.45`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.45), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.44-rebase..pr/fatalresult.45)) due to conflicts with #32950, #33512, #34184\n\nRebased 8c5593b5110a32ee955bc5926d73aef74c5e99f6 -> 235dd2123953d8fff11abc5102d152635065d3f5 ([`pr/fatalresult.45`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.45) -> [`pr/fatalresult.46`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.46), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.45-rebase..pr/fatalresult.46)) on top of #25665 pr/bresult2.75 to fix CI failures https://github.com/bitcoin/bitcoin/actions/runs/22557596616/job/65337794687?pr=29700#step:9:862 caused by previous bad conflict resolutions\n\nRebased 235dd2123953d8fff11abc5102d152635065d3f5 -> b3d85c7c6ad1fea59270532e78c02a2a3f4d40c1 ([`pr/fatalresult.46`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.46) -> [`pr/fatalresult.47`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.47), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.46-rebase..pr/fatalresult.47)) on top of #25665 pr/bresult2.76\n\nRebased b3d85c7c6ad1fea59270532e78c02a2a3f4d40c1 -> 04122285bd2562b7edfa8eec59c22b2ef38e3b82 ([`pr/fatalresult.47`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.47) -> [`pr/fatalresult.48`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.48), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.47-rebase..pr/fatalresult.48)) on top of #25665 pr/bresult2.77\n\nUpdated 04122285bd2562b7edfa8eec59c22b2ef38e3b82 -> efbb422a78f6e698e8aa3283ae1341aa6d8fbcaa ([`pr/fatalresult.48`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.48) -> [`pr/fatalresult.49`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.49), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.48..pr/fatalresult.49)) dropping commit that wasn't supposted to be part of PR, to fix -Wno-error=maybe-uninitialized false positive CI error https://github.com/bitcoin/bitcoin/actions/runs/23848113068/job/69520552767\n\nRebased efbb422a78f6e698e8aa3283ae1341aa6d8fbcaa -> e5cbf121fcabb91a949b9d9c55f1a823e1c2aeaf ([`pr/fatalresult.49`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.49) -> [`pr/fatalresult.50`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.50), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.49-rebase..pr/fatalresult.50)) due to conflicts with #34208, #34858, and #34884\n\nAdded 1 commits e5cbf121fcabb91a949b9d9c55f1a823e1c2aeaf -> 7868cc06ee51435e062462990e9b3fe256e72bc9 ([`pr/fatalresult.50`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.50) -> [`pr/fatalresult.51`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.51), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.50...pr/fatalresult.51)) to fix IWYU error https://github.com/bitcoin/bitcoin/actions/runs/24241244688/job/70776118438?pr=29700\n\nRebased 7868cc06ee51435e062462990e9b3fe256e72bc9 -> 578d94d4c25e55b544f9f7ca2d58b09d399feeb2 ([`pr/fatalresult.51`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.51) -> [`pr/fatalresult.52`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.52), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.51-rebase..pr/fatalresult.52)) due to conflicts with #34435, #34440, #34440, and #34544 on top of #25665 pr/bresult2.77\n\nRebased 578d94d4c25e55b544f9f7ca2d58b09d399feeb2 -> 82c181cb22c8826a9c68871a723dc7527c1c8532 ([`pr/fatalresult.52`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.52) -> [`pr/fatalresult.53`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.53), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.52-rebase..pr/fatalresult.53)) on top of #25665 pr/bresult2.79 due to conflict with #34644\n\nUpdated 82c181cb22c8826a9c68871a723dc7527c1c8532 -> 27a3713657c497c9cc5de7c7dcdfc4c9c2b4ece8 ([`pr/fatalresult.53`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.53) -> [`pr/fatalresult.54`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.54), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.53..pr/fatalresult.54)) to fix iwyu missing kernel/result.h and clang-tidy unused AbortFailure decl https://github.com/bitcoin/bitcoin/actions/runs/27140938629/job/80106968297\n\nUpdated 27a3713657c497c9cc5de7c7dcdfc4c9c2b4ece8 -> 84f625c950fd46f4ac09f2b290973f14e25e4443 ([`pr/fatalresult.54`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.54) -> [`pr/fatalresult.55`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.55), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.54..pr/fatalresult.55)) to fix iwyu errors: missing #include <kernel/result.h> in bench/connectblock.cpp and #include <tuple> in bench/block_assemble.cpp https://github.com/bitcoin/bitcoin/actions/runs/27152433227/job/80146651632\n\nRebased 84f625c950fd46f4ac09f2b290973f14e25e4443 -> 3ff7b8f8480b27bd55ea959b8fb7182b11b829e4 ([`pr/fatalresult.55`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.55) -> [`pr/fatalresult.56`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.56), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.55-rebase..pr/fatalresult.56)) on top of #25665 pr/bresult2.80 due to conflicts with #35182 and #35359\n\nUpdated 3ff7b8f8480b27bd55ea959b8fb7182b11b829e4 -> 5c2680891e53daa7a92423df8f76ee42f0a4ade9 ([`pr/fatalresult.56`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.56) -> [`pr/fatalresult.57`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.57), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.56..pr/fatalresult.57)) to fix iwyu errors: add missing includes to bench/load_external.cpp and bench/readwriteblock.cpp https://github.com/bitcoin/bitcoin/actions/runs/28116002760/job/83255512311\n\nUpdated 5c2680891e53daa7a92423df8f76ee42f0a4ade9 -> a07e8a22295289c5b57c62c8fec37fa75457cf91 ([`pr/fatalresult.57`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.57) -> [`pr/fatalresult.58`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.58), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.57..pr/fatalresult.58)) updating comments to address https://github.com/bitcoin/bitcoin/pull/29700#discussion_r3446525045 and clarify the different ways flush errors are ignored\n\nRebased a07e8a22295289c5b57c62c8fec37fa75457cf91 -> 03f2c81adc1917d0c1e292d2287d7868bf424949 ([`pr/fatalresult.58`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.58) -> [`pr/fatalresult.59`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.59), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.58-rebase..pr/fatalresult.59)) due to conflicts with #35295, #35621, #35652, and #35673\n\nRebased 03f2c81adc1917d0c1e292d2287d7868bf424949 -> 6542bfe144b1f735d628ce59973c37a55a48a7fc ([`pr/fatalresult.59`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.59) -> [`pr/fatalresult.60`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.60), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.59-rebase..pr/fatalresult.60)) due to conflict with #35572\n\nRebased 6542bfe144b1f735d628ce59973c37a55a48a7fc -> b6d2a6097af5f2592a4b58dca264119670d9f3ef ([`pr/fatalresult.60`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.60) -> [`pr/fatalresult.61`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.61), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.60-rebase..pr/fatalresult.61)) on top of #25665 pr/bresult2.82 due to conflicts with #35847 and #35205\n\nRebased b6d2a6097af5f2592a4b58dca264119670d9f3ef -> bef716036337413bd277cf8b8d2c3527f752a873 ([`pr/fatalresult.61`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.61) -> [`pr/fatalresult.62`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.62), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.61-rebase..pr/fatalresult.62)) updating blockfilter_index_tests.cpp for new ProcessNewBlock signature after #35847 https://github.com/bitcoin/bitcoin/actions/runs/31894652860/job/95035991561?pr=29700, on top of #25665 pr/bresult2.82\n\nRebased bef716036337413bd277cf8b8d2c3527f752a873 -> 9b31a9739cb8c5dd165475efd837604e5e1bec5b ([`pr/fatalresult.62`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.62) -> [`pr/fatalresult.63`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.63), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.62-rebase..pr/fatalresult.63)) on top of #25665 pr/bresult2.83 due to conflict with #35182\n\nSquashed 9b31a9739cb8c5dd165475efd837604e5e1bec5b -> f8ad69966f72a0f8be7310d32b626d8ef9530fdb ([`pr/fatalresult.63`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.63) -> [`pr/fatalresult.64`](https://github.com/ryanofsky/bitcoin/commits/pr/fatalresult.64), [compare](https://github.com/ryanofsky/bitcoin/compare/pr/fatalresult.63..pr/fatalresult.64)) to fix test ancestor commits failure: move connect_block.cpp:214 ProcessTransaction result type fix into the same commit that changed the API https://github.com/bitcoin/bitcoin/actions/runs/34263892003/job/102188320899"
  },
  {
   "t": "2024-11-04T15:51:00Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "37edd648608b35ee8647b24a2810cb68318d0e88"
  },
  {
   "t": "2024-11-04T23:40:18Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "c8b555b18dc149f43f3fffdff7962c3e69e655a9"
  },
  {
   "t": "2024-11-05T03:04:17Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "a1077c21dd8995c5f11a56b65432da759a3c1b8e"
  },
  {
   "t": "2024-12-06T11:40:13Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "af226a6a39ebab9d5886fcccdfbe63ea7da4fd9e"
  },
  {
   "t": "2024-12-06T12:10:30Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "63aa292c8e68c51cf49baba799cbb6aa573dec82"
  },
  {
   "t": "2025-03-12T00:45:01Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "07d8ec809e10872e5bf3c870abab365bdcb9adba"
  },
  {
   "t": "2025-03-20T17:54:47Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "b795ab78b725c3ece4a5aca40330724e4929bc7f"
  },
  {
   "t": "2025-03-24T20:47:10Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "42a73b451cd68be443c7a0dd94f7a00477775e23"
  },
  {
   "t": "2025-08-01T15:37:20Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "f169e600c0868f96acf42bc3847acfa220db925d"
  },
  {
   "t": "2025-08-01T15:51:38Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "a4cf35ddbde791e491375217470649c0e844955b"
  },
  {
   "t": "2025-08-01T22:11:14Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "3c4b28b4d8072abd07405ffbe18c16de7c9d0a86"
  },
  {
   "t": "2025-10-15T00:42:09Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "b1136354d6d7d195bfda2eb3b9bdf79f87cef3bf"
  },
  {
   "t": "2025-11-11T22:15:41Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "aa57da149017205d4e0df201c8c301d520fc17d6"
  },
  {
   "t": "2025-12-12T12:19:31Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "2bc7da5ec86c1174ade3e908b2844822019acf8f"
  },
  {
   "t": "2025-12-16T02:10:45Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "15fa85163f324d50f6365b1865c320c974bcc3ee"
  },
  {
   "t": "2026-01-16T01:38:45Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "f4e0a7d5eb59c6e74c2e3c2f0e7992251303975a"
  },
  {
   "t": "2026-01-16T19:24:37Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "744e3f93f00f71a5ecd4fcb701eca5abb10d118c"
  },
  {
   "t": "2026-01-17T13:59:21Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "07198e901118693a5d89498709f1a2d4341797cd"
  },
  {
   "t": "2026-02-03T19:02:40Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "a473ac2e0ae676c63f3a6c092dc8a8cb3fe3f7c1"
  },
  {
   "t": "2026-02-03T19:32:12Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "fc4f5573322cbe9ffd9e58e50316f02930ed0c50"
  },
  {
   "t": "2026-02-09T17:04:21Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "b4cc3f66016c9a8fc0be33f278ba1a129f23528e"
  },
  {
   "t": "2026-02-09T19:10:36Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "05c58b6ce1c81ae63fb4037915804410882f92af"
  },
  {
   "t": "2026-03-02T01:21:31Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "8c5593b5110a32ee955bc5926d73aef74c5e99f6"
  },
  {
   "t": "2026-03-02T15:40:41Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "235dd2123953d8fff11abc5102d152635065d3f5"
  },
  {
   "t": "2026-03-31T22:41:15Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "b3d85c7c6ad1fea59270532e78c02a2a3f4d40c1"
  },
  {
   "t": "2026-04-01T12:16:43Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "04122285bd2562b7edfa8eec59c22b2ef38e3b82"
  },
  {
   "t": "2026-04-01T13:47:11Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "efbb422a78f6e698e8aa3283ae1341aa6d8fbcaa"
  },
  {
   "t": "2026-04-01T15:51:16Z",
   "kind": "comment",
   "who": "purpleKarrot",
   "assoc": "MEMBER",
   "text": "I see Result-style error handling as a rustism that should be kept out of the C++ codebase of Bitcoin core.\n\nIt is well known that exceptions in C++ are fast on the happy path but slow on the exceptional path, which makes them unsuitable for systems with hard realtime requirements where time determinism is more important than performance. For such systems, C++23 finally provides a proper error handling mechanism out of the box.\n\nWhere does that apply to Bitcoin? Bitcoin's block time is *approximately 10 minutes on average*. That is about as far away from time determinism as anyone can possibly imagine. Instead, all aspects of Bitcoin require runtime performance above all. Miners want to mine faster, nodes want to verify with less power consumption, indexers want to provide faster responses.\n\nIntroducing `util::Result` is a development in the wrong direction."
  },
  {
   "t": "2026-04-10T11:43:00Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "e5cbf121fcabb91a949b9d9c55f1a823e1c2aeaf"
  },
  {
   "t": "2026-05-07T08:01:56Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "578d94d4c25e55b544f9f7ca2d58b09d399feeb2"
  },
  {
   "t": "2026-06-08T13:27:48Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "eb4cb669aa2473aae2ef02e2ca28dff40ef53c2d"
  },
  {
   "t": "2026-06-08T16:38:11Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "4272e2b25c63db248a702f49714592e3693635d1"
  },
  {
   "t": "2026-06-08T18:42:50Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "06af876aaa3b8227a23d69fec8c4210984cb3023"
  },
  {
   "t": "2026-06-20T13:52:25Z",
   "kind": "review_comment",
   "who": "optout21",
   "assoc": "CONTRIBUTOR",
   "path": "src/validation.cpp",
   "commit": "5c2680891e53daa7a92423df8f76ee42f0a4ade9",
   "in_reply_to": null,
   "text": "While working on #35570 , I have also found a potential inconsistency here: the return value from `FlushStateToDisk` is ignored, but it can cause change in `state` -- unclear if this was intended or just an unintended side effect.\nSee https://github.com/bitcoin/bitcoin/pull/35570#issuecomment-4758227624"
  },
  {
   "t": "2026-06-24T17:09:04Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "3ff7b8f8480b27bd55ea959b8fb7182b11b829e4"
  },
  {
   "t": "2026-06-24T20:24:48Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "5c2680891e53daa7a92423df8f76ee42f0a4ade9"
  },
  {
   "t": "2026-06-28T21:00:13Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "a07e8a22295289c5b57c62c8fec37fa75457cf91"
  },
  {
   "t": "2026-06-28T21:18:18Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "src/validation.cpp",
   "commit": "5c2680891e53daa7a92423df8f76ee42f0a4ade9",
   "in_reply_to": 3446525045,
   "text": "re: https://github.com/bitcoin/bitcoin/pull/29700#discussion_r3446525045\n\n[quoted text omitted]\nYes thank you for pointing out this inconsistency. It existed before this PR and this PR doesn't change it but the PR does add a comment and it's better if the comment acknowledges it. Updated in latest push to clarify this comment and related ones.\n\nTo describe the issue for others: validation code flushes internally many different places and mostly does not treat flush failures as errors returned to callers. This PR doesn't change that behavior but it does return additional information to callers about whether flushes happened and whether they failed. Most of the validation code that flushes (examples: AcceptToMemoryPool, ConnectTip, ActivateBestChainStep) pass a `state_dummy` variable to the flush code to keep flush errors separate from normal errors. But this code is an exception and passes `state` instead so it's possible for this function to return true even though `state.IsValid()` is false, and for `LoadExternalBlockFile` to fail when it might succeed otherwise. This inconsistency should probably be fixed one way or another, but it's a little outside the scope of this PR so the PR is just adding a comment"
  },
  {
   "t": "2026-06-29T21:51:21Z",
   "kind": "review_comment",
   "who": "optout21",
   "assoc": "CONTRIBUTOR",
   "path": "src/validation.cpp",
   "commit": "5c2680891e53daa7a92423df8f76ee42f0a4ade9",
   "in_reply_to": 3446525045,
   "text": "Addressing this single case has been split off into #35621 ."
  },
  {
   "t": "2026-07-14T13:44:45Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "03f2c81adc1917d0c1e292d2287d7868bf424949"
  },
  {
   "t": "2026-07-14T22:17:07Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "c28899d137d6b54c382a8438c48ee1541d98b662"
  },
  {
   "t": "2026-08-15T16:07:42Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "e3cbf89e96b0e5b6acb24cfbd34330fb5a52237f"
  },
  {
   "t": "2026-08-17T16:35:38Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "bd4c4dbe3b9c2585a7380d1a0976435ccc800206"
  },
  {
   "t": "2026-09-08T18:34:53Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "9b31a9739cb8c5dd165475efd837604e5e1bec5b"
  },
  {
   "t": "2026-09-08T23:44:51Z",
   "kind": "force_push",
   "who": "ryanofsky",
   "commit": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb"
  }
 ],
 "labels_log": [
  {
   "t": "2024-03-22T00:41:04Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-22T19:56:23Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-26T20:14:55Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-28T11:55:01Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-28T18:24:36Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-04-11T14:06:29Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-04-18T17:49:07Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-04-30T18:24:48Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-05-01T19:39:34Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-05-13T21:52:55Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-06-17T23:29:44Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-06-25T00:05:28Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-10T19:11:22Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-10T19:22:21Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-10T21:36:14Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-18T19:11:48Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-18T21:46:14Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-19T16:49:05Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-26T07:03:03Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-08-07T19:53:55Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-08-07T19:59:25Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-08-09T09:44:31Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-11-04T15:08:06Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-11-04T17:16:40Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-11-14T23:30:47Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-12-06T13:06:28Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-12-13T14:30:25Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-03-12T01:00:14Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-03-17T14:09:04Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-03-20T18:56:54Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-03-23T15:55:05Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-03-24T23:10:15Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-04-16T23:24:29Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-08-01T16:47:15Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-08-01T21:16:00Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-08-02T01:49:33Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-08-20T18:20:44Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-10-15T00:57:12Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-10-31T19:17:22Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-11-11T23:20:40Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-02T15:05:56Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-12T13:17:43Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-12T15:40:24Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-12T16:54:23Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-16T02:46:01Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-12-16T15:44:17Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-01-16T02:06:09Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-01-17T15:32:02Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-01-26T18:01:39Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-03T19:33:39Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-03T19:54:58Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-03T21:13:22Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-05T20:13:25Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-09T17:41:30Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-09T18:01:06Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-09T20:55:39Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-18T17:23:20Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-03-02T01:35:27Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-03-02T02:04:38Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-03-02T17:14:14Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-03-06T18:12:27Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-01T00:42:13Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-01T13:23:45Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-01T14:49:50Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-06T22:58:16Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-10T11:58:44Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-10T12:45:28Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-10T15:02:24Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-23T06:16:33Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-05-07T09:30:43Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-05-17T18:27:29Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-08T15:09:26Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-08T15:18:34Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-08T19:46:32Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-24T18:14:13Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-24T21:50:19Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-06T11:38:39Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-14T14:27:20Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-14T21:33:18Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-14T23:59:54Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-23T00:58:04Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-15T17:31:45Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-15T17:50:41Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-17T18:15:31Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-26T11:23:57Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-08T20:15:28Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-08T20:24:29Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-09T01:17:04Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2024-03-21T23:12:11Z",
   "kind": "convert_to_draft",
   "who": "ryanofsky"
  }
 ],
 "text_chars": 36633,
 "text_tokens_estimate": 9158,
 "changed_paths": [
  "ci/test/00_setup_env_native_previous_releases.sh",
  "src/bench/block_assemble.cpp",
  "src/bench/connectblock.cpp",
  "src/bench/load_external.cpp",
  "src/bench/readwriteblock.cpp",
  "src/init.cpp",
  "src/kernel/CMakeLists.txt",
  "src/kernel/bitcoinkernel.cpp",
  "src/kernel/result.h",
  "src/net_processing.cpp",
  "src/node/blockstorage.cpp",
  "src/node/blockstorage.h",
  "src/node/chainstate.cpp",
  "src/node/chainstate.h",
  "src/node/interfaces.cpp",
  "src/node/mempool_persist.cpp",
  "src/node/mempool_persist.h",
  "src/node/miner.cpp",
  "src/node/transaction.cpp",
  "src/rpc/blockchain.cpp",
  "src/rpc/mempool.cpp",
  "src/rpc/mining.cpp",
  "src/test/baseindex_tests.cpp",
  "src/test/blockchain_tests.cpp",
  "src/test/blockfilter_index_tests.cpp",
  "src/test/blockmanager_tests.cpp",
  "src/test/chainstate_write_tests.cpp",
  "src/test/fuzz/connect_block.cpp",
  "src/test/fuzz/load_external_block_file.cpp",
  "src/test/fuzz/package_eval.cpp",
  "src/test/fuzz/tx_pool.cpp",
  "src/test/fuzz/utxo_snapshot.cpp",
  "src/test/fuzz/utxo_total_supply.cpp",
  "src/test/interfaces_tests.cpp",
  "src/test/miner_tests.cpp",
  "src/test/peerman_tests.cpp",
  "src/test/result_tests.cpp",
  "src/test/txdownload_tests.cpp",
  "src/test/txpackage_tests.cpp",
  "src/test/txvalidation_tests.cpp",
  "src/test/txvalidationcache_tests.cpp",
  "src/test/util/chainstate.h",
  "src/test/util/mining.cpp",
  "src/test/util/setup_common.cpp",
  "src/test/validation_block_tests.cpp",
  "src/test/validation_chainstate_tests.cpp",
  "src/test/validation_chainstatemanager_tests.cpp",
  "src/util/CMakeLists.txt",
  "src/util/messages.cpp",
  "src/util/messages.h",
  "src/util/result.h",
  "src/validation.cpp",
  "src/validation.h",
  "src/wallet/wallet.cpp",
  "test/functional/feature_assumeutxo.py"
 ],
 "files": [
  {
   "path": "ci/test/00_setup_env_native_previous_releases.sh",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/bench/block_assemble.cpp",
   "add": 3,
   "del": 1
  },
  {
   "path": "src/bench/connectblock.cpp",
   "add": 1,
   "del": 0
  },
  {
   "path": "src/bench/load_external.cpp",
   "add": 2,
   "del": 1
  },
  {
   "path": "src/bench/readwriteblock.cpp",
   "add": 9,
   "del": 5
  },
  {
   "path": "src/init.cpp",
   "add": 27,
   "del": 25
  },
  {
   "path": "src/kernel/CMakeLists.txt",
   "add": 1,
   "del": 0
  },
  {
   "path": "src/kernel/bitcoinkernel.cpp",
   "add": 16,
   "del": 11
  },
  {
   "path": "src/kernel/result.h",
   "add": 67,
   "del": 0
  },
  {
   "path": "src/net_processing.cpp",
   "add": 9,
   "del": 6
  },
  {
   "path": "src/node/blockstorage.cpp",
   "add": 119,
   "del": 67
  },
  {
   "path": "src/node/blockstorage.h",
   "add": 13,
   "del": 10
  },
  {
   "path": "src/node/chainstate.cpp",
   "add": 85,
   "del": 53
  },
  {
   "path": "src/node/chainstate.h",
   "add": 6,
   "del": 22
  },
  {
   "path": "src/node/interfaces.cpp",
   "add": 6,
   "del": 1
  },
  {
   "path": "src/node/mempool_persist.cpp",
   "add": 23,
   "del": 9
  },
  {
   "path": "src/node/mempool_persist.h",
   "add": 3,
   "del": 1
  },
  {
   "path": "src/node/miner.cpp",
   "add": 5,
   "del": 3
  },
  {
   "path": "src/node/transaction.cpp",
   "add": 2,
   "del": 2
  },
  {
   "path": "src/rpc/blockchain.cpp",
   "add": 12,
   "del": 11
  },
  {
   "path": "src/rpc/mempool.cpp",
   "add": 7,
   "del": 4
  },
  {
   "path": "src/rpc/mining.cpp",
   "add": 14,
   "del": 5
  },
  {
   "path": "src/test/baseindex_tests.cpp",
   "add": 10,
   "del": 4
  },
  {
   "path": "src/test/blockchain_tests.cpp",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/test/blockfilter_index_tests.cpp",
   "add": 8,
   "del": 3
  },
  {
   "path": "src/test/blockmanager_tests.cpp",
   "add": 4,
   "del": 4
  },
  {
   "path": "src/test/chainstate_write_tests.cpp",
   "add": 7,
   "del": 7
  },
  {
   "path": "src/test/fuzz/connect_block.cpp",
   "add": 7,
   "del": 7
  },
  {
   "path": "src/test/fuzz/load_external_block_file.cpp",
   "add": 2,
   "del": 2
  },
  {
   "path": "src/test/fuzz/package_eval.cpp",
   "add": 8,
   "del": 6
  },
  {
   "path": "src/test/fuzz/tx_pool.cpp",
   "add": 9,
   "del": 5
  },
  {
   "path": "src/test/fuzz/utxo_snapshot.cpp",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/test/fuzz/utxo_total_supply.cpp",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/test/interfaces_tests.cpp",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/test/miner_tests.cpp",
   "add": 1,
   "del": 0
  },
  {
   "path": "src/test/peerman_tests.cpp",
   "add": 7,
   "del": 1
  },
  {
   "path": "src/test/result_tests.cpp",
   "add": 195,
   "del": 11
  },
  {
   "path": "src/test/txdownload_tests.cpp",
   "add": 1,
   "del": 1
  },
  {
   "path": "src/test/txpackage_tests.cpp",
   "add": 83,
   "del": 52
  },
  {
   "path": "src/test/txvalidation_tests.cpp",
   "add": 2,
   "del": 1
  },
  {
   "path": "src/test/txvalidationcache_tests.cpp",
   "add": 2,
   "del": 1
  },
  {
   "path": "src/test/util/chainstate.h",
   "add": 3,
   "del": 2
  },
  {
   "path": "src/test/util/mining.cpp",
   "add": 5,
   "del": 1
  },
  {
   "path": "src/test/util/setup_common.cpp",
   "add": 13,
   "del": 7
  },
  {
   "path": "src/test/validation_block_tests.cpp",
   "add": 17,
   "del": 5
  },
  {
   "path": "src/test/validation_chainstate_tests.cpp",
   "add": 14,
   "del": 7
  },
  {
   "path": "src/test/validation_chainstatemanager_tests.cpp",
   "add": 17,
   "del": 10
  },
  {
   "path": "src/util/CMakeLists.txt",
   "add": 1,
   "del": 0
  },
  {
   "path": "src/util/messages.cpp",
   "add": 30,
   "del": 0
  },
  {
   "path": "src/util/messages.h",
   "add": 60,
   "del": 0
  },
  {
   "path": "src/util/result.h",
   "add": 394,
   "del": 62
  },
  {
   "path": "src/validation.cpp",
   "add": 368,
   "del": 193
  },
  {
   "path": "src/validation.h",
   "add": 44,
   "del": 36
  },
  {
   "path": "src/wallet/wallet.cpp",
   "add": 2,
   "del": 2
  },
  {
   "path": "test/functional/feature_assumeutxo.py",
   "add": 5,
   "del": 3
  }
 ],
 "test_lines": 592,
 "git": {
  "head": "f8ad69966f72a0f8be7310d32b626d8ef9530fdb",
  "head_matches_backup": true,
  "base": "4ec6ff022a4b33fab46afa5656a983cda8ba3099",
  "commits": [
   {
    "sha": "f1e827bc20",
    "subject": "refactor: Add util::Result failure values",
    "files": 3,
    "add": 335,
    "del": 65
   },
   {
    "sha": "2a59241faf",
    "subject": "wallet: fix clang-tidy warning performance-no-automatic-move",
    "files": 1,
    "add": 1,
    "del": 1
   },
   {
    "sha": "335a6af84e",
    "subject": "refactor: Add util::Result::Update() method",
    "files": 2,
    "add": 51,
    "del": 7
   },
   {
    "sha": "f3d9b8993a",
    "subject": "refactor: Use util::Result class in LoadChainstate and VerifyLoadedChainstate",
    "files": 5,
    "add": 94,
    "del": 92
   },
   {
    "sha": "b7640ff7db",
    "subject": "refactor: Add util::Result multiple error and warning messages",
    "files": 6,
    "add": 271,
    "del": 30
   },
   {
    "sha": "fdeb223231",
    "subject": "test: add static test for util::Result memory usage",
    "files": 2,
    "add": 7,
    "del": 1
   },
   {
    "sha": "389ab06bb0",
    "subject": "ci: Avoid -Wno-error=maybe-uninitialized false positives",
    "files": 1,
    "add": 1,
    "del": 1
   },
   {
    "sha": "fcc1ca25b7",
    "subject": "Merge branch 'pr/bresult2' into pr/fatalresult",
    "files": 13,
    "add": 732,
    "del": 169
   },
   {
    "sha": "c9210e8bde",
    "subject": "refactor, kernel: Add FlushStatus / FlushResult types",
    "files": 1,
    "add": 67,
    "del": 0
   },
   {
    "sha": "7605f8c76e",
    "subject": "refactor: Add InfoType field to util::Result",
    "files": 2,
    "add": 64,
    "del": 17
   },
   {
    "sha": "6a4d8d348d",
    "subject": "refactor, blockstorage: Return FlushResult from flush methods",
    "files": 3,
    "add": 49,
    "del": 25
   },
   {
    "sha": "bbeea8fea9",
    "subject": "refactor, blockstorage: Return fatal errors from block writes",
    "files": 5,
    "add": 82,
    "del": 49
   },
   {
    "sha": "af5f1a91b4",
    "subject": "refactor, validation: Switch to result.Update",
    "files": 2,
    "add": 46,
    "del": 24
   },
   {
    "sha": "1827122486",
    "subject": "refactor, blockstorage: Return fatal error from LoadBlockIndex",
    "files": 7,
    "add": 49,
    "del": 32
   },
   {
    "sha": "6a7e6805df",
    "subject": "refactor, validation: Return fatal errors from FlushStateToDisk",
    "files": 14,
    "add": 134,
    "del": 85
   },
   {
    "sha": "2639ec156a",
    "subject": "refactor, validation: Return fatal errors from mempool accept functions",
    "files": 18,
    "add": 185,
    "del": 112
   },
   {
    "sha": "0ce542edd3",
    "subject": "refactor, validation: Return fatal errors from assumeutxo snapshot functions",
    "files": 4,
    "add": 44,
    "del": 22
   },
   {
    "sha": "f0e3a6c845",
    "subject": "refactor, validation: Return fatal errors from block connect functions",
    "files": 8,
    "add": 74,
    "del": 50
   },
   {
    "sha": "986c77e69d",
    "subject": "refactor, validation: Return fatal errors from activate best chain functions",
    "files": 9,
    "add": 50,
    "del": 36
   },
   {
    "sha": "d555f9b127",
    "subject": "refactor, validation: Return fatal errors from new block functions",
    "files": 18,
    "add": 172,
    "del": 68
   },
   {
    "sha": "1c3e64c0bd",
    "subject": "refactor, blockstorage: Return fatal error from ImportBlocks",
    "files": 4,
    "add": 12,
    "del": 8
   },
   {
    "sha": "f8ad69966f",
    "subject": "refactor, validation: Return more errors from VerifyDB",
    "files": 5,
    "add": 72,
    "del": 56
   }
  ],
  "patch_truncated": true
 },
 "input_hash": "92f2e34fe468bce7",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}