Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [],
"is_fork": true,
"size_kb": 307567,
"has_wiki": false,
"homepage": "https://bitcoincore.org/en/download",
"languages": {
"C": 2658873,
"M4": 55007,
"C++": 14279093,
"Nix": 3651,
"HTML": 21831,
"Rust": 41211,
"Sage": 59880,
"CMake": 275996,
"Shell": 190048,
"Python": 4171250,
"Scheme": 18316,
"Assembly": 28405,
"Makefile": 109214,
"Dockerfile": 5092,
"Cap'n Proto": 14451,
"Objective-C++": 5506
},
"pushed_at": "2026-07-10T14:37:29Z",
"created_at": "2021-11-24T22:26:41Z",
"owner_type": "User",
"updated_at": "2026-06-22T06:07:49Z",
"description": "Bitcoin Core integration/staging tree",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "C++",
"significant_languages": [
"C++",
"Python",
"C"
]
},
"owner": {
"blog": null,
"name": null,
"type": "User",
"login": "stickies-v",
"company": null,
"location": "London, UK",
"followers": 116,
"avatar_url": "https://avatars.githubusercontent.com/u/69010457?v=4",
"created_at": "2020-07-30T17:31:04Z",
"is_verified": null,
"public_repos": 28,
"account_age_days": 2186
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.21.2",
"kind": "patch",
"published_at": "2021-09-23T10:07:49Z"
},
{
"tag": "v0.21.1",
"kind": "patch",
"published_at": "2021-04-29T19:31:20Z"
},
{
"tag": "v0.21.0",
"kind": "minor",
"published_at": "2021-01-13T21:52:34Z"
},
{
"tag": "v0.20.2",
"kind": "patch",
"published_at": "2021-10-18T12:41:02Z"
},
{
"tag": "v0.20.1",
"kind": "patch",
"published_at": "2020-07-31T12:02:21Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2020-06-02T07:43:04Z"
},
{
"tag": "v0.19.2",
"kind": "patch",
"published_at": "2021-01-07T18:57:57Z"
},
{
"tag": "v0.19.1",
"kind": "patch",
"published_at": "2020-03-04T12:14:49Z"
},
{
"tag": "v0.19.0",
"kind": "minor",
"published_at": "2019-11-08T20:15:52Z"
},
{
"tag": "v0.18.1",
"kind": "patch",
"published_at": "2019-08-02T20:33:05Z"
},
{
"tag": "v0.18.0",
"kind": "minor",
"published_at": "2019-04-30T11:52:08Z"
},
{
"tag": "v0.17.2",
"kind": "patch",
"published_at": "2019-09-14T08:54:07Z"
},
{
"tag": "v0.17.1",
"kind": "patch",
"published_at": "2018-12-06T23:29:45Z"
},
{
"tag": "v0.17.0",
"kind": "minor",
"published_at": "2018-10-01T10:04:33Z"
},
{
"tag": "v0.16.3",
"kind": "patch",
"published_at": "2018-09-17T23:55:20Z"
},
{
"tag": "v0.16.2",
"kind": "patch",
"published_at": "2018-07-20T12:54:20Z"
},
{
"tag": "v0.16.1",
"kind": "patch",
"published_at": "2018-06-13T12:32:11Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2018-02-22T19:20:48Z"
},
{
"tag": "v0.15.2",
"kind": "patch",
"published_at": "2018-09-19T11:49:47Z"
},
{
"tag": "v0.15.1",
"kind": "patch",
"published_at": "2017-11-06T08:46:24Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2017-09-10T22:13:03Z"
},
{
"tag": "v0.14.3",
"kind": "patch",
"published_at": "2018-09-20T16:32:52Z"
},
{
"tag": "v0.14.2",
"kind": "patch",
"published_at": "2017-06-15T10:44:01Z"
},
{
"tag": "v0.14.1",
"kind": "patch",
"published_at": "2017-04-20T09:28:25Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2017-03-05T18:09:49Z"
},
{
"tag": "v0.13.2",
"kind": "patch",
"published_at": "2017-01-02T08:54:25Z"
},
{
"tag": "v0.13.1",
"kind": "patch",
"published_at": "2016-10-27T06:10:55Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2016-08-17T11:06:57Z"
},
{
"tag": "v0.11.3",
"kind": "patch",
"published_at": "2017-03-09T19:49:36Z"
},
{
"tag": "v0.10.5",
"kind": "patch",
"published_at": "2017-03-09T19:48:56Z"
}
],
"recent_commits": [
{
"oid": "b2a3ca3df901dcc19b07f7dcf3115d8f7835b931",
"body": "b6c367044288f83ab61c1a77ad34c33adf39ecf6 i2p: clean up SAM error logging (takeshikurosawaa)\n\nPull request description:\n\n Clean up the I2P SAM error path.\n\n `SESSION CREATE` may contain the private key, so the generic SAM reply\n error path now reports the redacted request text instead of the full\n\n[…]\n vasild:\n ACK b6c367044288f83ab61c1a77ad34c33adf39ecf6\n\nTree-SHA512: 204c8b64c6d3dd2f94f92cdc6d3daefd7773c42066984b9da859ebc2912c2ed38079d9e82a2d1f09d8d720750047114a80189e688929d7a0af5da2c2ee4a88da",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35117: i2p: clean up SESSION CREATE error logging",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-18T13:19:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7802e578c3f1e9a5d9b57fb003349d0e032bb43b",
"body": "…hts, drop include_dummy_extranonce\n\n8544537f41df568e6e1cb94eeab9e699b9190427 mining: drop unused include_dummy_extranonce option (Sjors Provoost)\n58eeab790d9825a777f907e3e912a2da78cbc76d mining: only pad with OP_0 at heights <= 16 (Sjors Provoost)\n00d22328b0560bf9773417495123ae68bb89e4d1 mining: pa\n[…]\nited:\n Re-ACK 8544537f41df568e6e1cb94eeab9e699b9190427\n\nTree-SHA512: a01d48842bf4bcc1a9c51a89ef9d750766db7d04edb4dcd6b3a8bf195c6b4fa07445256a49367ff0db00ab489a52a3d7ff6a5c3ab9290ecb1fcb82f532552e9b",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34860: mining: always pad scriptSig at low heig…",
"author_name": "Ryan Ofsky",
"author_login": "ryanofsky",
"committed_at": "2026-05-17T17:26:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ed1795aa17205db6ac15fa7ea1645357740b26ac",
"body": "096bb0b5c05965222c31d84fe96900157187f89d bench: add benchmark for GetMappedAS() (0xb10c)\n\nPull request description:\n\n With #28792 merged, we can use the embedded ASMap file to benchmark the IP -> ASN lookups. Before, this would have been cumbersome as it required having a real, external ASMap file.\n[…]\nchow101:\n ACK 096bb0b5c05965222c31d84fe96900157187f89d\n\nTree-SHA512: 417427fd546fe7ec0903dde6f1a6557479a2e353eaf26be61dacc0031adae1a9970263b143fe9e2b83f489da01031cc83eff8e11ccedb00f5852e44c40189da2",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35285: bench: add benchmark for GetMappedAS()",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-15T23:59:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "379b9fbf036e2f214c4fce2a1ba086def4abac65",
"body": "…PartialSig}` functions to `musig.{h,cpp}` module\n\n8ba5f68b1df99350aa037a644041034cf46842dc refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module (Sebastian Falbesoner)\nd087f266fc24145e3a34a9f2e8f08c583f806aad refactor, key: move `CreateMuSig2Nonce` to `musig.{h,cpp}` module (Sebast\n[…]\n furszy:\n ACK 8ba5f68b1df99350aa037a644041034cf46842dc\n\nTree-SHA512: 95fcaa5d7a09037a0dce0053b8c640a7372a1251a2a3615c565f4dacc5aad5cf0ee8bfc43aa0d0def628465c16330d69f6ea9fcc07bbadc971863248f60d1878",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34225: refactor, key: move `CreateMuSig2{Nonce,…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-15T23:42:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "096bb0b5c05965222c31d84fe96900157187f89d",
"body": "With #28792 merged, we can use the embedded ASMap file to benchmark\nthe IP -> ASN lookups. Before, this would have been cumbersome as it\nrequired having a real, external ASMap file. We want to benchmark\nagainst a real file, as a smaller test file has significantly faster\nlookups.\n\nThe benchmarks cov\n[…]\n`\n| 65.19 | 15,339,680.04 | 0.1% | 5.51 | `ASMapGetMappedASUnmappedv6`\n```\n\nCo-authored-by: Fabian Jahr <fjahr@protonmail.com>\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>",
"is_bot": false,
"headline": "bench: add benchmark for GetMappedAS()",
"author_name": "0xb10c",
"author_login": "0xB10C",
"committed_at": "2026-05-15T13:11:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b6c367044288f83ab61c1a77ad34c33adf39ecf6",
"body": "SESSION CREATE requests can contain the I2P private key. Keep using the redacted request text in error messages, and avoid echoing raw SAM replies in the generic reply error path.\n\nThis keeps the error useful while avoiding logging either the private-key-bearing request or unescaped router-controlled reply bytes. No network behavior change is intended.",
"is_bot": false,
"headline": "i2p: clean up SAM error logging",
"author_name": "takeshikurosawaa",
"author_login": "kenji-yamam0to",
"committed_at": "2026-05-15T12:48:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddb94fd3e1061c465e425629d6c7d4b292301da5",
"body": "004a7e3cfbc5b2118536651d2201cf8b72c87736 fuzz: Fix txorphan timeout by limiting block weight (marcofleon)\n\nPull request description:\n\n The `EraseForBlock` branch in the `txorphan` harness could produce a block with 1000 transactions in it, each with potentially up to 200,000 inputs, resulting in wa\n[…]\nsedited:\n ACK 004a7e3cfbc5b2118536651d2201cf8b72c87736\n\nTree-SHA512: 465504402358e1bed629104b21e05301139f1590884de21e77d566a45e422eef6d4380c5714692f33f5398e4e299b8c9f84b82f58c56a98e410c5c841184aee5",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35289: fuzz: Fix timeout in `txorphan`",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-14T15:25:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3cab711d69572431af78b0071fb721496f0241d7",
"body": "…to silence DEBUG_LOCKORDER\n\n801d36f55b6d421f26d2376327699a04bd22e602 fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER (Eugene Siegel)\n\nPull request description:\n\n DEBUG_LOCKORDER was reporting a false positive deadlock with the cmpctblock fuzz harness when using ImmediateTaskRunn\n[…]\nsedited:\n ACK 801d36f55b6d421f26d2376327699a04bd22e602\n\nTree-SHA512: 5e1f27354c484a90ffd74a1a11e5fed68d7b38d95c06dd39529217f07d535eb9a5b7befb42b2829d79c52b5eb43542bd1079c81d6eb0e56476352ffe98e0177e",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35284: fuzz: use ImmediateBackgroundTaskRunner …",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-14T12:21:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "004a7e3cfbc5b2118536651d2201cf8b72c87736",
"body": null,
"is_bot": false,
"headline": "fuzz: Fix txorphan timeout by limiting block weight",
"author_name": "marcofleon",
"author_login": "marcofleon",
"committed_at": "2026-05-14T11:32:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cad5f5604582eac95bcfbf08cca8af1c186c36eb",
"body": "…to wallets via new `unused(KEY)` descriptor\n\na39cc16b434de7f2d1a7098e4526b7d3e82930be doc: Release note for addhdkey (Ava Chow)\n89b9a01b4ea6355c1ecacb1d42d85252cfcb2a77 wallet, rpc: Disallow importing unused() to wallets without privkeys (Ava Chow)\n35bbee63746b567c867bb6d2c3db6f6670286826 wallet, r\n[…]\nux:\n lgtm ACK a39cc16b434de7f2d1a7098e4526b7d3e82930be\n\nTree-SHA512: c1288c792ab01ca2eaddd24b0e7d11c259cd59e79042465d0d1eb656fd559c1200dc19750b4d84acc762b5b599935a06df214c18226e662087842ea91ec3011b",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#29136: wallet: `addhdkey` RPC to add just keys …",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-14T09:40:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9961229360cbf34ab114b831341e7760a58a4edd",
"body": "…nmergeable transactions\n\n6d86184a8bcc34186d217cc7cfbf7acc21af7ca4 rpc: combinerawtransaction now rejects unmergeable transactions (Adam Andrews)\n\nPull request description:\n\n Previously, combinerawtransaction would silently return the first tx when asked to combine unrelated txs. Now, it will check\n[…]\nl/31298/commits/6d86184a8bcc34186d217cc7cfbf7acc21af7ca4)\n\nTree-SHA512: 5caf983c5ab618a000f40b9ad698439d3e6217ec2dc593740443f47d90f8804a895f3054dd29bbcecdb48a61992b0d0afda7ec89591d768a44918648bbb6e20d",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#31298: rpc: combinerawtransaction now rejects u…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-13T23:07:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c680cfe343647f36f97c5ab1d70ecf6981cd1d75",
"body": "…hain scanning methods\n\ndc84a3101430cdc0353f610835966f4e4942ff03 wallet: remove fUpdate argument from AddToWalletIfInvolvingMe (rkrux)\n94845df073abfcb4a65f6f058a4de5671327a404 wallet: remove update_tx argument from SyncTransaction (rkrux)\n6e796e1f473c57eae356f1e6fa508958113eaf09 wallet: remove fUpda\n[…]\n code review ACK dc84a3101430cdc0353f610835966f4e4942ff03\n\nTree-SHA512: dfee793c88cc94d4a5b554e29710133ec4ad5e49455413245c7d7004ef71b618b0b2f821fa085415c34d80aeccd182c98e55223d84afbe8b408f64acac0571bb",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35123: wallet: remove outdated arguments from c…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-13T21:34:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a145fa881a2705a7bed4fe9c6dad589eb1a238d1",
"body": "…ffers\n\n032223f403d320c3c47c7d5932e333f306efcdc3 dbwrapper: reuse iterator scratch stream (Lőrinc)\n7403c0f907df694af8c9ee7d43dc65041242ca21 dbwrapper: guard `CDBBatch` scratch streams (Lőrinc)\ncb1ab0a716802dae31c395691c4b2f3e4e5d4cb7 test: cover repeated dbwrapper stream use (Lőrinc)\n31ce729b28ec7b1\n[…]\nsedited:\n ACK 032223f403d320c3c47c7d5932e333f306efcdc3\n\nTree-SHA512: 6ed51d1a492ca216108b10c01668b01f986260641714951da1d282f1dacf87f0df2b312108f24c06151d3b81eaa4ca6eb4e9ab4e2d829346b0e8f07d0c569a1e",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35156: dbwrapper: reuse scratch `DataStream` bu…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-13T21:27:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "04003e1fa3754b7557255d82c9b6d7ce309b11c8",
"body": "… build_fuzz_nosan dir\n\n0065f354a7e9435fbc64f2bdc7b2b695df90cf4c doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir (ImMike)\n\nPull request description:\n\n Adds a clarifying note next to the first mention of the `libfuzzer-nosan` preset in the Quickstart, pointing out that it uses a differ\n[…]\nsedited:\n ACK 0065f354a7e9435fbc64f2bdc7b2b695df90cf4c\n\nTree-SHA512: d73901112d259cec58746dff50fe3f9409e5b9826f0759f45478fe039bca851eb163036c60bdb215bfc66be79428b790742bbe8bc32b1ceaa2d6f80c17faf6d0",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35274: doc: clarify libfuzzer-nosan preset uses…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-13T18:59:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5309c90542276f5357a75f0335cad949ae515d42",
"body": "…guides\n\nca93ab808c488324990eb91ed8297a37dd10d580 doc: mention -DWITH_ZMQ=ON in BSD build guides (junbyjun1238)\n\nPull request description:\n\n The BSD build guides currently state:\n\n > If the package is installed, support will be compiled in.\n\n Since `WITH_ZMQ` defaults to `OFF`, this is inaccurate\n[…]\nsedited:\n ACK ca93ab808c488324990eb91ed8297a37dd10d580\n\nTree-SHA512: d07b1b9748d8b6aa555c992608f8659b7e93d6587bbbb2170352342003e90a81592ddfa2abf3a26b8ebf1341142d8628cfc3faba0c4759655a91446afa5fc22a",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35283: doc: mention -DWITH_ZMQ=ON in BSD build …",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-13T18:56:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8544537f41df568e6e1cb94eeab9e699b9190427",
"body": "The previous commit made CreateNewBlock() ignore the\ninclude_dummy_extranonce flag (OP_0 is now appended only at heights\n<= 16 to satisfy bad-cb-length, regardless of caller-supplied options).\n\nRemove the now-unused field from BlockCreateOptions and clean up all\nthe call sites that still set it (RPC, bench, fuzz, test setups).",
"is_bot": false,
"headline": "mining: drop unused include_dummy_extranonce option",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-13T16:27:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58eeab790d9825a777f907e3e912a2da78cbc76d",
"body": "Drop the include_dummy_extranonce branch from the OP_0 padding\ncondition in CreateNewBlock(), so that the dummy extraNonce is\nonly appended when consensus actually requires it (heights <= 16,\nwhere the BIP34 height push alone would yield a 1-byte scriptSig\nand trigger bad-cb-length).\n\nThe include_du\n[…]\naf6a55448c003b3f7f3021955fbb351caa\n - case 4: the corruption byte is swapped from \\x82 to \\x83\n because \\x82 happened to be the actual value at that\n offset in the new snapshot.",
"is_bot": false,
"headline": "mining: only pad with OP_0 at heights <= 16",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-13T16:27:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "00d22328b0560bf9773417495123ae68bb89e4d1",
"body": "Since #32420, createNewBlock has thrown `bad-cb-length` errors when called at\nlow block heights because `OP_0` padding stopped being added to coinbase\ntransactions. (#32420 did add an `include_dummy_extranonce` option which could\nbypass this, but it was not exposed to IPC clients.) Fix the problem b\n[…]\n IPC clients could never set\nthe option to true, and are expected to add their own nonces in any case.\n\nThis also improves documentation about the `script_sig_prefix` field and\n`getCoinbaseTx` method.",
"is_bot": false,
"headline": "mining: pad coinbase to fix createNewBlock at heights <=16",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-13T16:27:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "801d36f55b6d421f26d2376327699a04bd22e602",
"body": "DEBUG_LOCKORDER was reporting a false positive deadlock with the\ncmpctblock fuzz harness when using ImmediateTaskRunner. Since it is\nsingle-threaded, ImmediateTaskRunner callbacks added LockOrders that\ncould never happen outside of a fuzz test.\n\nFirst a block would get connected:\n* LOCK(mempool.cs)\n\n[…]\n positive deadlock. Normally, the BlockConnected\ncallback would run in a different thread and no deadlock is reported.\n\nFix this by launching a thread that runs the callback and is\nimmediately joined.",
"is_bot": false,
"headline": "fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER",
"author_name": "Eugene Siegel",
"author_login": "Crypt-iQ",
"committed_at": "2026-05-13T16:00:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ca93ab808c488324990eb91ed8297a37dd10d580",
"body": "The FreeBSD, NetBSD, and OpenBSD build guides state that ZMQ support is compiled in when the package is installed. Since WITH_ZMQ defaults to OFF, update the wording to mention the required CMake option.",
"is_bot": false,
"headline": "doc: mention -DWITH_ZMQ=ON in BSD build guides",
"author_name": "junbyjun1238",
"author_login": "junbyjun1238",
"committed_at": "2026-05-13T15:30:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "605ff37403f0b50c5664bb4e2d6eaf84022d53e4",
"body": "On new regtest / signet chains (heights <= 16), createBlock() fails\ninternally with bad-cb-length. Since mining.capnp does not expose\ninclude_dummy_extranonce, IPC clients can't work around this.\n\nAdd a functional test to illustrate this issue and use RPC to\nwork around it. The next commit introduces a fix.",
"is_bot": false,
"headline": "test: bad-cb-length for createNewBlock() at low heights",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-13T14:44:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1966621b76885257b4b4e44aab4712e9f84313e6",
"body": "Needed in a later commit to correctly derive the BIP34 prefix\nfor heights <= 16.\n\nAdd a padding parameter to script_BIP34_coinbase_height() that\ncontrols whether the OP_0 dummy extranonce is appended for\nheights <= 16.\n\nUse this helper with padding=False in the IPC mining test's\nbuild_coinbase_test().",
"is_bot": false,
"headline": "test: refactor IPC mining test to use script_BIP34_coinbase_height",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-13T14:43:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ba5f68b1df99350aa037a644041034cf46842dc",
"body": "Compared to `CreateMuSig2Nonce`, creating a partial signature\nhas a stronger link to the secret key used, but for consistency\nreasons it still makes sense to move all functionality that call\nthe secp256k1 musig API functions to the `musig.{h,cpp}` module\nfor consistency.\n\nCan be reviewed via the git option `--color-moved=dimmed-zebra`.",
"is_bot": false,
"headline": "refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module",
"author_name": "Sebastian Falbesoner",
"author_login": "theStack",
"committed_at": "2026-05-13T14:17:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d087f266fc24145e3a34a9f2e8f08c583f806aad",
"body": "Nonce creation is mainly derived by randomness, and the secret\nkey merely serves as (optional) additional data for increasing\nmisuse-resistance, rather than being a central part that would\njustify an own CKey method, so move it to the musig.cpp module.\n\nCan be reviewed via the git option `--color-moved=dimmed-zebra`.",
"is_bot": false,
"headline": "refactor, key: move `CreateMuSig2Nonce` to `musig.{h,cpp}` module",
"author_name": "Sebastian Falbesoner",
"author_login": "theStack",
"committed_at": "2026-05-13T14:17:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f36d89f4363a25f7948a0f7096201ef8e15045d8",
"body": "This is needed in order to move the `CreateMuSig2{Nonce,PartialSig}`\nfunctions to the musig.cpp modules, see next two commits.",
"is_bot": false,
"headline": "key: add `GetSecp256k1SignContext` access function",
"author_name": "w0xlt",
"author_login": "w0xlt",
"committed_at": "2026-05-13T14:01:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0065f354a7e9435fbc64f2bdc7b2b695df90cf4c",
"body": "The fuzzing quickstart documents the libfuzzer preset with build_fuzz\nas the build directory, then mentions libfuzzer-nosan as an alternative\nwithout noting that this preset uses a different binary directory\n(build_fuzz_nosan, per CMakePresets.json line 54). A reader following\nthe quickstart with --preset=libfuzzer-nosan and then running\n'cmake --build build_fuzz' as shown will operate against the wrong\n(or empty) directory.\n\nAdd a clarifying note at the first mention in the Quickstart.",
"is_bot": false,
"headline": "doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir",
"author_name": "ImMike",
"author_login": "ImMike",
"committed_at": "2026-05-13T12:49:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82733e61deea24cfd344aed36020675a15cc672e",
"body": "…ter checks\n\nfa9c919678c0d4926ff735eecf12562d99a7e691 refactor: Use ignore-list over verbose select-list (MarcoFalke)\nfa9b01adecce7d2e2f0091a363bcf98cf5d5c378 ci: Enable ruff ambiguous-unicode-character checks (MarcoFalke)\n\nPull request description:\n\n Ambiguous unicode chars are unused and confusin\n[…]\nlcl-ark:\n ACK fa9c919678c0d4926ff735eecf12562d99a7e691\n\nTree-SHA512: de226ec2feaf65a0a8b15606708cc390296be4492f41221f8a49f034b16e8fb62125342c6993f9d5c76bd4ae2db7343851b252a1b9140e27d6777f19a0b1605e",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35277: ci: Enable ruff ambiguous-unicode-charac…",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-13T11:19:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fe2bb43e437b5a1627a1c7e1c378dc43d31717d2",
"body": "…bt()\n\n701bc2dc02f73a10498ecf70c5d3523e0bb6b953 contrib: Fix NameError in signet miner gbt() (Torkel Rogstad)\n\nPull request description:\n\n The logging.warning call referenced `bci[\"bestblockhash\"]`, a variable from the calling scope `do_generate()` that is not available inside the `Generate.gbt()` \n[…]\nsedited:\n ACK 701bc2dc02f73a10498ecf70c5d3523e0bb6b953\n\nTree-SHA512: 53764db954dd40b68d2f92279fd609732402fdbac4a1838aeee81d366b2b7fbc8da86b07f6f05cee62cb8ecdc514f6e0af1e59c65380eec38cbeaa58ec3c10ed",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35044: contrib: Fix NameError in signet miner g…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-13T10:34:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fa9c919678c0d4926ff735eecf12562d99a7e691",
"body": "This refactor makes the ruff.toml easier to read, because it lists the\nignored checks instead of having to enumerate all checks to select in a\nlarge collection of rules.",
"is_bot": false,
"headline": "refactor: Use ignore-list over verbose select-list",
"author_name": "MarcoFalke",
"author_login": null,
"committed_at": "2026-05-13T10:24:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa9b01adecce7d2e2f0091a363bcf98cf5d5c378",
"body": null,
"is_bot": false,
"headline": "ci: Enable ruff ambiguous-unicode-character checks",
"author_name": "MarcoFalke",
"author_login": null,
"committed_at": "2026-05-13T08:33:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09a9bb3536718d0dffa6f797ddff907df6ef94f9",
"body": "2424e5283672e10bc45cdbca1a8851308716b50c lint: doc: detail lint tool install methods (will)\n5fefa5a654e2a1146c8abc9673e72d7bcbf2f757 Don't pin Python patch version (Sjors Provoost)\nfd15b55c2ef607525d45f26ab3e7f3fc600e29af lint: use requirements.txt (will)\n5f4d3383daa064d188ef8c6b1d9adbad3a67bcb6 lin\n[…]\nsedited:\n ACK 2424e5283672e10bc45cdbca1a8851308716b50c\n\nTree-SHA512: 32ef989c1e241cebe5f13da10abd23f6f63306591fd1f81880d688b886082bca17987591dc592c41fbb72278eba57b3cc6e786de7cfa80eb490ab34465d0119b",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34547: lint: modernise lint tooling",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-13T08:27:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "10ca73c02cbff59f2134c0c7da3b8d0a7e727475",
"body": "ac1ccc5bd912bd8ffa9816513b3129fa3d802aad build: Add CTAD feature check (Pol Espinasa)\n9f273f1c1c51d44db455dc7a655825c0692ad65d build: Add path to doc recommended versions for CLANG, GCC and MSVC (Pol Espinasa)\n\nPull request description:\n\n Adds a compiler features check. If failed, it returns a fata\n[…]\nmpiler versions, and glad this PR is in better shape now.\n\nTree-SHA512: 15a12f56016846427ed8273406c3e9a52a6435bf7033c8fef82bb0e6c9fd75d40a62c79d33f9dd6da8717500f21a629da07620f160b3d43368dd7579f773b4bc",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34580: build: Add a compiler minimum feature check",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-11T22:29:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1af8e0c4e895ebd159304ed86ac059bebeced1f8",
"body": "…eployments.taproot\n\nf24a7b5f759920f62db1a131a9a9d31408edd0b2 doc: recommend script_flags instead of deployments.taproot (Sjors Provoost)\n\nPull request description:\n\n #26201 removed `taproot` from `getdeploymentinfo` (not yet in a release, slated for v32), which it turns out Lnd relies on: https://\n[…]\nsedited:\n ACK f24a7b5f759920f62db1a131a9a9d31408edd0b2\n\nTree-SHA512: 5c21300ce3140eb1dd122e007b2f2cfafa3de83db4fb7c699312d6886d4c8fea56d9602390c1931fc640bf9364b2274dde85b38da4957311ddc07721cbc924a7",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35183: doc: recommend script_flags instead of d…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-11T09:52:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f24a7b5f759920f62db1a131a9a9d31408edd0b2",
"body": "Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>",
"is_bot": false,
"headline": "doc: recommend script_flags instead of deployments.taproot",
"author_name": "Sjors Provoost",
"author_login": "Sjors",
"committed_at": "2026-05-11T09:30:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ccbd00ab87c09779e9edc589af6df5c967687a2f",
"body": "…gmas\n\nd084bc88bebe75484e319e0cdbf72a656edebfa3 doc: clarify IWYU workflow (Lőrinc)\n7c7cec45678347c9793fd6bc1d3082b1a5e22c57 ci: update IWYU patch reference (Lőrinc)\n\nPull request description:\n\n ### Problem\n\n This was prompted by https://github.com/bitcoin/bitcoin/pull/34435#discussion_r3123255248\n[…]\nsedited:\n ACK d084bc88bebe75484e319e0cdbf72a656edebfa3\n\nTree-SHA512: 0aac42d468a1fdfa9f4a3856372e05fb43ec9f0973aeb3a4194fff948fc61e8e72e3b280cde10e74b8da88b6cff93962b3a7f7390eb042113ef92aa6b51d6d8f",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35152: doc: clarify local IWYU workflow and pra…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-10T17:24:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "88bfe89793d2fd043a6a6d5742adbf076a48d7b0",
"body": "…ing migration\n\ne2b0984f99519f76423ce26ce9077ca765b2b30b wallet: check BDB last page LSN (Lőrinc)\n\nPull request description:\n\n ### Problem\n\n Legacy wallet migration uses the read-only BDB parser to verify that every page LSN is reset before reading records without BDB log files.\n\n The BDB `last_p\n[…]\nsedited:\n ACK e2b0984f99519f76423ce26ce9077ca765b2b30b\n\nTree-SHA512: 26fade6cdb4747d299b6e620646aa14751cd91fbb7e40ab6e35c1ca796fb589a2340d66108b812611f2924136a8f12c4f911efe6346fffaf04b2d3d288101cda",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35227: wallet: check the final BDB page LSN dur…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-10T10:02:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "21599ea612ec8d6d069d3bbaa8a19ce051cad87f",
"body": "…r CDash Nightly pipelines\n\n4defc466a2232f2e60587d4127eefc356d957ac1 cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines (Hennadii Stepanov)\n\nPull request description:\n\n This PR follows up on https://github.com/bitcoin/bitcoin/pull/35222.\n\n According to the [CMake documentation](http\n[…]\neKarrot:\n ACK 4defc466a2232f2e60587d4127eefc356d957ac1\n\nTree-SHA512: 7d3f5dc9f9f1336fc03f565d36750c66bdbae5a3916dabf4ab02c3c2584fc7135a8839e94d7fa08bcbb530913cf0eea31fc402dbdc1c22e207402c991dac044d",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35241: cmake: Set `CTEST_NIGHTLY_START_TIME` fo…",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-05-10T08:01:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d406cffafdd111b34dc613b4cb82b4f0a264d225",
"body": "…en_id` script\n\n9f7a2293c48f8afb5e87765a327a0c89fd21fa56 depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script (Hennadii Stepanov)\n\nPull request description:\n\n When performing Guix builds for `{x86_64,arm64}-apple-darwin` hosts across different commits, all packages in `depends` are rebuilt even if\n[…]\nanquake:\n ACK 9f7a2293c48f8afb5e87765a327a0c89fd21fa56\n\nTree-SHA512: d5fa90100edfd88024ad949a9d75c8af274a054c0926ae4ddea6ecf1c38fae833670b360c56c740a7565cf393a92597823749fe75c85a27ae1ebebead4093853",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34228: depends: Unset `SOURCE_DATE_EPOCH` in `g…",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-08T10:09:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4defc466a2232f2e60587d4127eefc356d957ac1",
"body": null,
"is_bot": false,
"headline": "cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-05-08T09:09:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f28ed6b6af93bc669acf041ba8318c6060ae89a",
"body": "….sh to maintainer tools repo\n\n888857c55140e5cb1ec80837e9dec79d1362d04a mv contrib/verify-commits/pre-push-hook.sh to maintainer tools repo (MarcoFalke)\n\nPull request description:\n\n To https://github.com/bitcoin-core/bitcoin-maintainer-tools/pull/198\n\nACKs for top commit:\n achow101:\n ACK 888857\n[…]\n code review ACK 888857c55140e5cb1ec80837e9dec79d1362d04a\n\nTree-SHA512: 9dac8fcaa393d3ff175b30cf53f5f074eeb4d1e51517ba545933282862020db3b00830e03a2c8b27a31f47b91d3f07e47d3aa1aafb8eb42f38eaf73c3c19ff81",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35235: contrib: mv verify-commits/pre-push-hook…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-08T08:36:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8396b7f2a3be4be7bb2ffc152f87b4cab95dd84e",
"body": "d9b57eecadfc112fb3b07c4bd5ccc8ea6a2f0ad6 doc: fix whitespace in build-osx.md (Philips Ucheolisah .N)\ne7d4a7e3f9a21cb5dbc93a042ba87ea171e6bdab doc: fix stale autotools reference and SQLite typo (taboger)\n\nPull request description:\n\nACKs for top commit:\n kevkevinpal:\n ACK [d9b57ee](https://github.\n[…]\nebasto:\n ACK d9b57eecadfc112fb3b07c4bd5ccc8ea6a2f0ad6.\n\nTree-SHA512: 2159a358e3a2e301a44ea6c2f4031bbb52eac9b90dae6bef8daa790336801651b2ca3760fe739ae338b10358588df7e94ad12f3701011ca789d7cbacf78112ba",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35236: doc: typo roundup",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-05-07T15:14:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2b7f5914c427f58deb92d52b9ffc4cbee72bc3a3",
"body": "086894098ecc40172abd15244803c426efda1d19 cmake: add CTestConfig.cmake (will)\n\nPull request description:\n\n Add a `CTestConfig.cmake` file with the CDash submission URL for Bitcoin Core at the project root.\n\n This lets developers use CTest’s built-in dashboard support to upload local configure, buil\n[…]\nebasto:\n ACK 086894098ecc40172abd15244803c426efda1d19.\n\nTree-SHA512: 5d0e2e174773de3f56af80252a62330fc313f394e1a868ac0d2a83c6610c2f734f6e6938bfced710879c00f64f09e17030da594b24940d77c984e46698d37647",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35222: cmake: add CTestConfig.cmake",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-05-07T12:23:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "888857c55140e5cb1ec80837e9dec79d1362d04a",
"body": null,
"is_bot": false,
"headline": "mv contrib/verify-commits/pre-push-hook.sh to maintainer tools repo",
"author_name": "MarcoFalke",
"author_login": null,
"committed_at": "2026-05-07T10:19:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9b57eecadfc112fb3b07c4bd5ccc8ea6a2f0ad6",
"body": "Remove an extra space before `.zip` in the deploy section.",
"is_bot": false,
"headline": "doc: fix whitespace in build-osx.md",
"author_name": "Philips Ucheolisah .N",
"author_login": "sudophils",
"committed_at": "2026-05-07T10:18:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7d4a7e3f9a21cb5dbc93a042ba87ea171e6bdab",
"body": "Suggested-by: hebasto",
"is_bot": false,
"headline": "doc: fix stale autotools reference and SQLite typo",
"author_name": "taboger",
"author_login": "GerardoTaboada",
"committed_at": "2026-05-07T10:17:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f9c55426a12a16bd11de6dec139c4df58788360",
"body": "…ask to alpine task\n\nfad61896e869fe004cb1ebdacbd124ce587e6efc ci: Move --usecli --extended from i386 task to alpine task (MarcoFalke)\n\nPull request description:\n\n The i386 task is getting increasingly tedious to maintain:\n\n * It is using deprecated (disabled by default) syscalls, see commit 999e9d\n[…]\nsedited:\n ACK fad61896e869fe004cb1ebdacbd124ce587e6efc\n\nTree-SHA512: a406347aa06de7edbfe8c7d3d082983fa54f5c266c1b2344102cd6cd59dc5b9f46da5e15edfaa7655edf1a2ff8d70da18bae4c8297dfb0cf2c783098d8a46c30",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35230: ci: Move --usecli --extended from i386 t…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-07T09:24:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fad61896e869fe004cb1ebdacbd124ce587e6efc",
"body": null,
"is_bot": false,
"headline": "ci: Move --usecli --extended from i386 task to alpine task",
"author_name": "MarcoFalke",
"author_login": null,
"committed_at": "2026-05-07T07:39:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c84a2bdb1625a759d2e8597d5c48415d4d9bfeb",
"body": "0651a1fc1540fcb4d6152a65c68a3c1c93bb5d42 doc: Add Niklas Goegge's key to SECURITY.md (dergoegge)\n\nPull request description:\n\n Same as https://github.com/bitcoin-core/bitcoincore.org/pull/1244\n\nACKs for top commit:\n achow101:\n ACK 0651a1fc1540fcb4d6152a65c68a3c1c93bb5d42\n stickies-v:\n ACK 06\n[…]\nsedited:\n ACK 0651a1fc1540fcb4d6152a65c68a3c1c93bb5d42\n\nTree-SHA512: 1ded3b9c7e2c2a8cecef8d1b4ccb7caac4d8162f5b83e2e02a0e7367f3f2bac688c9672e6d02e631fa55e07e34f55af05743e84323150e959c661d2bf9ea1a10",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35219: doc: Add my key to SECURITY.md",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-06T23:36:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cf5c962a39fceb5105f30e758d98970d8fed2400",
"body": "…n using --usecli\n\na49bc1e24e69ac43beecbdc9c39da3d02160034e ci: add --extended when using --usecli (Pol Espinasa)\n5603ae0ffa3f0be3d22e8a09008e46c5d48ae12f test: fix send_batch_request to pass callables when using --usecli (Pol Espinasa)\n\nPull request description:\n\n **First commit**\n\n This commit f\n[…]\nited:\n Re-ACK a49bc1e24e69ac43beecbdc9c39da3d02160034e\n\nTree-SHA512: 75fca26cf120638ced1fe38e86d8e3efa7addb6d97fc801e34783efd2cf6417f4ded2ec6247b6dcbcdb3cf4f48c4858f0932cbaa3e836a973d53581e75470a3f",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34991: test: fix feature_index_prune.py bug whe…",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-06T23:35:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6690117c7ac456b53b8c8691b6cd773b8f7099d5",
"body": "…uzz target\n\nac58e6c53c262e08584cb809daf3fbc8dd4d3732 test: fix P2SH output in coins cache fuzz (Lőrinc)\n\nPull request description:\n\n ### Problem\n `coinscache_sim` manually constructs a 23-byte P2SH `scriptPubKey`, but placed `OP_EQUAL` at byte index 12.\n That index is inside the 20-byte script h\n[…]\nsedited:\n ACK ac58e6c53c262e08584cb809daf3fbc8dd4d3732\n\nTree-SHA512: 1f909dd25d9df87a923e6496145da0ada2b1fa6511b61fb2d203db4c7724f2341c898862a15e7051b952bca834e6654c70fba64a7bf223bfd6d399b3b5d9e59b",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35218: test: fix `P2SH` script in coins cache f…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-06T22:06:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b11108145c6a5196773656454125153a8b0a630",
"body": "…ttle integral casts (take 3)\n\nfa864b937e1b36f5a8fe989467360988a03637ec refactor: [rpc] Remove confusing and brittle integral casts (take 3) (MarcoFalke)\n\nPull request description:\n\n This one cast is harmless, but confusing. Also, in the past they have been brittle to the extend of triggering bugs.\n[…]\nsedited:\n ACK fa864b937e1b36f5a8fe989467360988a03637ec\n\nTree-SHA512: 78407b97964c144f4d94cd445af4f57e29e460912ae9178898224d71f3d5237e5db88a981f7636193a6b7a22be8ad4fd833eb0efa9507284c10f87d9da0ec81b",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35223: refactor: [rpc] Remove confusing and bri…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-06T21:55:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e2b0984f99519f76423ce26ce9077ca765b2b30b",
"body": "The BDB metadata field `last_page` stores the last valid page number, not the number of pages.\nThe read-only wallet migration parser currently checks reset LSNs with a half-open loop, so it skips the final page and may accept a database whose last page still depends on BDB log files.",
"is_bot": false,
"headline": "wallet: check BDB last page LSN",
"author_name": "Lőrinc",
"author_login": "l0rinc",
"committed_at": "2026-05-06T21:13:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa864b937e1b36f5a8fe989467360988a03637ec",
"body": null,
"is_bot": false,
"headline": "refactor: [rpc] Remove confusing and brittle integral casts (take 3)",
"author_name": "MarcoFalke",
"author_login": null,
"committed_at": "2026-05-06T15:35:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f7a2293c48f8afb5e87765a327a0c89fd21fa56",
"body": null,
"is_bot": false,
"headline": "depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-05-06T14:04:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "086894098ecc40172abd15244803c426efda1d19",
"body": "Add a `CTestConfig.cmake` file with the CDash submission URL for Bitcoin\nCore.\n\nThis lets developers use CTest’s built-in dashboard support to upload\nlocal configure, build, and test results to CDash. With this a developer\ncan use their own CTest dashboard script or manual `ctest` workflow and\nuploa\n[…]\noard submission, making it easier to inspect\nfailures and compare behavior across environments.\n\nThe file only defines the CDash upload location. It does not change the\ndefault build or test behavior.",
"is_bot": false,
"headline": "cmake: add CTestConfig.cmake",
"author_name": "will",
"author_login": "willcl-ark",
"committed_at": "2026-05-06T12:16:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0651a1fc1540fcb4d6152a65c68a3c1c93bb5d42",
"body": null,
"is_bot": false,
"headline": "doc: Add Niklas Goegge's key to SECURITY.md",
"author_name": "dergoegge",
"author_login": "dergoegge",
"committed_at": "2026-05-06T07:54:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac58e6c53c262e08584cb809daf3fbc8dd4d3732",
"body": "The `coinscache_sim` fuzz target builds a 23-byte P2SH scriptPubKey manually.\nPlace `OP_EQUAL` at index 22, after `OP_HASH160`, the 20-byte push opcode, and the 20-byte script hash.\nThis matches `CScript::IsPayToScriptHash()`, which checks byte 22 for `OP_EQUAL`, see src/script/script.cpp#L229",
"is_bot": false,
"headline": "test: fix P2SH output in coins cache fuzz",
"author_name": "Lőrinc",
"author_login": "l0rinc",
"committed_at": "2026-05-06T07:39:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa1d0d7cd7355ab5154d44d831513f7fbc5028a2",
"body": "…ted tx data\n\n1ed799fb21db51a12cbd5579420a61b9b5b3ee7d validation: correct lifetime of precomputed tx data (Antoine Poinsot)\n\nPull request description:\n\n This is a cleanup that fixes the root cause of CVE-2024-52911, which was covertly fixed in #31112 (first released in 29.0).\n\n Security advisory \n[…]\nptout21:\n ACK 1ed799fb21db51a12cbd5579420a61b9b5b3ee7d\n\nTree-SHA512: 904fb71d95b8486b7ceb5a014bc39b1e09c42e254357d663b6da247e49c69041945119f8339724ddbef22f4e8aa4b53f72bdac8fdf7daab62aa31edc52b612e6",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35209: validation: correct lifetime of precompu…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-06T07:32:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d7ed2840acc0f065620fdd3d45480169f06a266c",
"body": "9fa4076b20a55fc1c142ffde891ca76f5cd416e6 test: Test merging implicit PSBTv0 with explicit PSBTv0 (w0xlt)\n1660c18232a5563b999b08aab91239bb1221fe87 doc: Release notes for psbtv2 (Ava Chow)\n470e52a5f8158845c48209c6a4d5ebe55c6d90ba fuzz: Enforce additional version invariants in PSBT fuzzer (Antoine Poin\n[…]\n w0xlt:\n ACK 9fa4076b20a55fc1c142ffde891ca76f5cd416e6\n\nTree-SHA512: ab0a5ada4fa5fca27ba9ec9c291a44b30e69d6db11971957572d86c58c71c4caa4557dc25f403e1170ba4fac751306d074cc582defefc6e2fdd37be51c3d9dd0",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#21283: Implement BIP 370 PSBTv2",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-05T12:43:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ed799fb21db51a12cbd5579420a61b9b5b3ee7d",
"body": "This makes sure `txsdata` always outlives the Script check queue (since local\nobjects are destructed in reverse order of construction).\n\nThis is the root cause for a security vulnerability reported by Cory Fields in\n2024 that could be exploited by crafting an invalid block to cause nodes to\nread freed memory. The vulnerability was covertly fixed in commit\n`492e1f09943fcb6145c21d470299305a19e17d8b`.\n\nSee security advisory for CVE-2024-52911 for more details.",
"is_bot": false,
"headline": "validation: correct lifetime of precomputed tx data",
"author_name": "Antoine Poinsot",
"author_login": "darosior",
"committed_at": "2026-05-05T11:52:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c89c8ddbb3657c6b53991c16faaf00e923cbc852",
"body": "c8d688f41ccb218f301adde4120f2094d13b739a fuzz: send blocktxn messages in cmpctblock harness (Eugene Siegel)\nd0333bfe9909ab40379fe637e1b298f561076af0 fuzz: send compact blocks in cmpctblock harness (Eugene Siegel)\n3c58efe2acf0e7fbf1daaadd8bff2e0cfd3761e1 fuzz: mine blocks and send headers for them in\n[…]\ncofleon:\n ACK c8d688f41ccb218f301adde4120f2094d13b739a\n\nTree-SHA512: d904066921211b32eb75c9602908929f46ecd25482c518db36ed9f30e012b350b38a2df382f0faa21decd43bc2cabcc859193207da34be76010a32df1d9ac5c8",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#33300: fuzz: compact block harness",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-04T21:28:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4bf1701f58b949dbef0c0adcda0f779b59874dd7",
"body": "…sus validation function\n\nbfbf1a7ef3ee64a345dc2b2c6cf4f85c3a739fae kernel: Expose btck_transaction_check consensus function (w0xlt)\n\nPull request description:\n\n This PR exposes the consensus-level `CheckTransaction` function through the libbitcoinkernel C API and adds a corresponding C++ wrapper.\n\n\n[…]\n janb84:\n ACK bfbf1a7ef3ee64a345dc2b2c6cf4f85c3a739fae\n\nTree-SHA512: fe9ba555564af3258d9ccaea1b208df0aa2a4bf2fe74a8f861b3a3b3b891f2990ffc0e3b763d14f15568e977b70ee7337a5dc7d469c63098e0b43adc2ad80e3c",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#33796: kernel: Expose `CheckTransaction` consen…",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-04T21:19:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "999e9dbfb43e7e38f72e9b38fb3743022c2b9f80",
"body": "11c9ef92a8daf030f75f88f324396b2248c65a64 ci: unconfine seccomp for i686 no IPC (Lőrinc)\n\nPull request description:\n\n Fixes https://github.com/bitcoin/bitcoin/issues/35199.\n\n ### Problem\n The `i686, no IPC` job [fails](https://github.com/bitcoin/bitcoin/actions/runs/25275669000/job/74105140405#ste\n[…]\nn/bitcoin/commit/11c9ef92a8daf030f75f88f324396b2248c65a64\n\nTree-SHA512: 8db87ad1e93144a58282ecf3e16a0bf7ae9d685f339b31bc8369a2ed6ecd28d87b48730e4db87baf8cb4dad088acb38ab676582ccba74cd4cbe3913bfbee3e0c",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35202: ci: restore sockets in `i686, no IPC` job",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-04T20:51:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "224120bf1299392deaa59ab71c895a1e6264f205",
"body": "11713c9fa91ca583063750cc826d0138b3a611f6 net: make CConnman::m_nodes_mutex non-recursive (Vasil Dimov)\naec4fa2de0030f035d41874b2db7efdbf93bba24 net: drop the only recursive usage of CConnman::m_nodes_mutex (Vasil Dimov)\n\nPull request description:\n\n The only case of a recursive lock was a nested `Fo\n[…]\nsedited:\n ACK 11713c9fa91ca583063750cc826d0138b3a611f6\n\nTree-SHA512: 5c626423b5041bfecd8487e2201bfa29443aa2ebe955aa7dc6680e1ee4a094296c9034a6ad70d4d63046627edeeda87f73bd27059e08ae4fe20653d8ae380b71",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#32394: net: make m_nodes_mutex non-recursive",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-04T09:01:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "11c9ef92a8daf030f75f88f324396b2248c65a64",
"body": "Docker 29.4.2 blocks `socketcall(2)` in the default seccomp profile:\nhttps://docs.docker.com/engine/release-notes/29/#2942\nhttps://github.com/moby/profiles/releases/tag/seccomp%2Fv0.2.2\nhttps://github.com/moby/moby/pull/52501\n\nThat affects the `i686, no IPC` job because it runs 32-bit Linux test bin\n[…]\ndy appends to `docker run`.\n\nThis restores socket availability for the 32-bit test binaries throughout the job:\nhttps://docs.docker.com/engine/security/seccomp/#run-without-the-default-seccomp-profile",
"is_bot": false,
"headline": "ci: unconfine seccomp for i686 no IPC",
"author_name": "Lőrinc",
"author_login": "l0rinc",
"committed_at": "2026-05-03T15:26:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8f4a3ba8972dae9412ba975a040cea22c227f983",
"body": "… from `add_boost_if_needed`\n\ne2ef54b8ba8de7ce1d7b1b04c3e28b08c3fa3816 cmake: Remove NetBSD-specific workaround from `add_boost_if_needed` (Hennadii Stepanov)\n\nPull request description:\n\n The patched package [`boost-1.90.0`](https://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/boost/index.htm\n[…]\nanquake:\n ACK e2ef54b8ba8de7ce1d7b1b04c3e28b08c3fa3816\n\nTree-SHA512: d6c78d874c80daaaaddea93215dab32c254bcdca60d42613105c231c92847b7a049b87e419c764cb58ea3aa456f02ddffc9e94d23bc709f3109f621f909872b6",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35165: cmake: Remove NetBSD-specific workaround…",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-05-02T10:18:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b1ff4773ba73bd55f86d25f6a87b404c66dc2797",
"body": "…aths including `..` and `.` elements\n\need7af666b6670badc9f58d200b77dc973786c60 doc: Add release note for disallowing some wallet path names (David Gumberg)\n3d7f0e4ed5ac1fea0529fb25662cf0ea9a397cee wallettool: Use GetWalletPath to determine the wallet path (Ava Chow)\n2b0dc0d2280b48960a3510b1dfda05a1\n[…]\nejula27:\n ACK eed7af666b6670badc9f58d200b77dc973786c60\n\nTree-SHA512: bec5e54369061eb630d9afb94701badce09e8beb63686cf714016466fc01653d4841030fc10fcd14d44e6b1022c0994cb32253d80533807704d9e11eda2423ff",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34544: wallet: Disallow wallet names that are p…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-02T08:58:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "db98e357d3ea4ca2b8ca881d7af20eda49efb4f1",
"body": "… wallet benchmarks, and remove DuplicateMockDatabase\n\n1d1ae6f0c4f2f60f5ceb2d60e8a52662e542e21d wallet, test: Remove DuplicateMockDatabase (Ava Chow)\n57820c472b4e1b10fc0d2cc5b60c4783338edc7c bench: Utilize setup() for WalletLoading and use a real database (Ava Chow)\n9a7604fd257c4a549d0f22f28a36fef60\n[…]\nsedited:\n ACK 1d1ae6f0c4f2f60f5ceb2d60e8a52662e542e21d\n\nTree-SHA512: 41130144972b759b401f990820eaf524d1f17f47d81bf1afea4a529d15a21d253521838a9e31df8f424996582b718a92634ab255204c6fce703b7e47a1d23670",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35018: wallet, bench: Use Nanobench setup() for…",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-02T08:27:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "18d003c3dcc96197ee382b2209e2ca548a729167",
"body": "…anpages.py\n\n758f208cc179425eae206f26a4b46bdbd2e5f3d9 contrib: override system locale in gen-manpages.py (Sjors Provoost)\n\nPull request description:\n\n `bitcoin-qt --help` emits a translation of \"version\", which creates a diff when updating or verifying man pages.\n\n The script aborts earlier howeve\n[…]\nebasto:\n ACK 758f208cc179425eae206f26a4b46bdbd2e5f3d9.\n\nTree-SHA512: 0947391b85a637ae6d1d0cf4b8de4ab74b42e772bf7d70991cf2b4e035c2cb99f0f46c6cb2cd8aac9cc1be22a9e8329594536688622d3bacab22289c8151e89d",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34916: contrib: override system locale in gen-m…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-02T00:38:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "567ff2b6d69c46703f07c85f3d2921bb3ea5e10b",
"body": "…oundary\n\n938312d7a6dcf06cb401a16651e80320f36ee4db docs: clarify RPC credentials security boundary (crStiv)\n\nPull request description:\n\n Explicitly states that RPC credentials grant full administrative access to the node and filesystem resources accessible by bitcoind. Adds a new section in JSON-RP\n[…]\nsedited:\n ACK 938312d7a6dcf06cb401a16651e80320f36ee4db\n\nTree-SHA512: 54db0651cfe4a92d700d09c822db5cb68f60f17a4634eb8f132939294e7a0ca2aea15ddc4d581610976158f7546e9c4463cfe113de9500162a0f107e168833cd",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#33196: docs: clarify RPC credentials security b…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-05-02T00:34:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3c2646eacc1b1fbaf8b9398051a791b126e6a455",
"body": "2104282ddde8e7a86965a149f82cd3c3ac35c014 fuzz: Add tests for CCoinControl methods (Chandra Pratap)\n43b09b993d0a5a8178d70a0149a5301aed82bb8d fuzz: Improve oracle for existing CCoinControl tests (Chandra Pratap)\n\nPull request description:\n\n The `ccoincontrol` fuzzer misses tests for a number of `CCoi\n[…]\nited:\n Re-ACK 2104282ddde8e7a86965a149f82cd3c3ac35c014\n\nTree-SHA512: bfc8c9a51fca94437332056c476840d841a5b42dd6749cb34105b7ae78215ec9c3eb0f407e1a5f51b3ac20d7abb97cae7c21ad2146d5be9409edbc2cd2c568ee",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34026: fuzz: Add tests for `CCoinControl` methods",
"author_name": "merge-script",
"author_login": "sedited",
"committed_at": "2026-05-01T20:42:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bfbf1a7ef3ee64a345dc2b2c6cf4f85c3a739fae",
"body": "Add btck_transaction_check() to the libbitcoinkernel C API, exposing\ncontext-free transaction consensus validation (consensus/tx_check.h).\n\nIntroduces btck_TxValidationState with introspection and lifecycle\nfunctions. btck_TxValidationResult is exposed for compatibility with\nexisting validation-stat\n[…]\ns, though btck_transaction_check currently\nreaches only UNSET and CONSENSUS.\n\nIncludes C++ wrapper and test coverage for btck_transaction_check using\ntest vectors from tx_valid.json / tx_invalid.json.",
"is_bot": false,
"headline": "kernel: Expose btck_transaction_check consensus function",
"author_name": "w0xlt",
"author_login": "w0xlt",
"committed_at": "2026-05-01T00:39:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "404470505a8b574b5e4b0e1ffc481ed3fc8caf77",
"body": "…ure_bind_extra` on macOS & BSD\n\n1950da94fce864d1add43c3196007e4c56607d24 test: enable `rpc_bind` on macOS and BSD (Lőrinc)\n7236a05503516603f024f1383491b8c99ef9a1a2 test: enable `feature_bind_extra` on macOS and BSD (Lőrinc)\n\nPull request description:\n\n ### Problem\n\n Some functional tests are show\n[…]\ncl-ark:\n tACK 1950da94fce864d1add43c3196007e4c56607d24\n\nTree-SHA512: 4cecc88852623f3fe3a7dccceb0e71932824c1ed7f1d4ab89b953ff6b7991afbd0b016c819c17e966bed53082dd623a832752b8847711861009cd5ffc4677367",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34256: test: support `get_bind_addrs` and `feat…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-30T21:06:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "25100fc28da1c8ec85ef9fd73b3b404dc6e8c0a4",
"body": "d28179bac902cd35ca4b2ceafa9cb6da19936190 util, iwyu: Add missed header (Hennadii Stepanov)\n\nPull request description:\n\n This PR amends https://github.com/bitcoin/bitcoin/pull/34669 and fixes the [CI](https://github.com/bitcoin/bitcoin/actions/runs/25182795747/job/73832160104).\n\nACKs for top commit:\n[…]\nrunoerg:\n ACK d28179bac902cd35ca4b2ceafa9cb6da19936190\n\nTree-SHA512: 09c79d489d7903ae6b6b9d86c18ba176acf2cdabde5b73bcbd76a219958e5234327ca943ab13ea17a921ff501b0ebef0de68113571e9a8bf511b5ac3f8ca9f4a",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#35186: util, iwyu: Add missed header",
"author_name": "merge-script",
"author_login": "fanquake",
"committed_at": "2026-04-30T20:02:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d28179bac902cd35ca4b2ceafa9cb6da19936190",
"body": null,
"is_bot": false,
"headline": "util, iwyu: Add missed header",
"author_name": "Hennadii Stepanov",
"author_login": "hebasto",
"committed_at": "2026-04-30T19:42:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32e479f7a5a464c4c2a8d7da40e4f93234d7cfd5",
"body": "…,>>} for sorted wrappers\n\n1aa78cdab6bc8ecd4448b1b75ee3181ee8f3f519 clusterlin: adopt STL ranges algorithms (refactor) (Pieter Wuille)\n747da2536092804f9c488e34977ffbb054edabc8 feefrac: drop comparison and operator{<<,>>} for sorted wrappers (Pieter Wuille)\n\nPull request description:\n\n Instead of ha\n[…]\najtowns:\n ACK 1aa78cdab6bc8ecd4448b1b75ee3181ee8f3f519\n\nTree-SHA512: d76657b15f6d745e5ca01c67fd5b101fdc418e6301646d14e575b6564bfa2fe0eb40a95a7ff95a4420624ef6b67224d35e4713aa5bbc0d293e08fe44c0cc6db0",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34669: feefrac: drop comparison and operator{<<…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-30T18:35:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "11713c9fa91ca583063750cc826d0138b3a611f6",
"body": "This change includes `s/RecursiveMutex/Mutex/` and a pile of\nannotations to keep the compiler happy after the type change.\n\nPartially resolves: https://github.com/bitcoin/bitcoin/issues/19303",
"is_bot": false,
"headline": "net: make CConnman::m_nodes_mutex non-recursive",
"author_name": "Vasil Dimov",
"author_login": "vasild",
"committed_at": "2026-04-30T11:41:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aec4fa2de0030f035d41874b2db7efdbf93bba24",
"body": "The only recursive usage of `CConnman::m_nodes_mutex` is from\n`PeerManagerImpl::MaybeSetPeerAsAnnouncingHeaderAndIDs()` which uses\nnested calls to `CConnman::ForNode()` to trim the size of\n`lNodesAnnouncingHeaderAndIDs` to `<= 3`. This need not be nested, so\ntake it out.\n\nBefore:\n```\nfornode(newnode\n[…]\n\n push back newnode\nif (size > 3)\n fornode(front) handle removal of front\n pop front\n```\n\n`lNodesAnnouncingHeaderAndIDs` is protected by `cs_main` which is locked\nduring the entire operation.",
"is_bot": false,
"headline": "net: drop the only recursive usage of CConnman::m_nodes_mutex",
"author_name": "Vasil Dimov",
"author_login": "vasild",
"committed_at": "2026-04-30T11:21:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eed7af666b6670badc9f58d200b77dc973786c60",
"body": null,
"is_bot": false,
"headline": "doc: Add release note for disallowing some wallet path names",
"author_name": "David Gumberg",
"author_login": "davidgumberg",
"committed_at": "2026-04-29T23:23:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d7f0e4ed5ac1fea0529fb25662cf0ea9a397cee",
"body": "Instead of computing the path separately, use GetWalletPath to use the\nbehavior and error checking of the typical wallet path computation.",
"is_bot": false,
"headline": "wallettool: Use GetWalletPath to determine the wallet path",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T23:23:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef499680c8d426ac04f3a5d4ad67cbb3426e0e21",
"body": "…b directories\n\n08925d5ee75c15712f523bacbdcfd44257f9c8ac test: add coverage for loading a wallet in a non-writable directory (furszy)\n0218966c0dceb8b9c25a26c92eb6902faa56fbd9 test: add coverage for wallet creation in non-writable directory (furszy)\nbc0090f1d60652ebbfd8fd1477b9b17cb9ade239 wallet: ha\n[…]\n:\n Tested ACK 08925d5ee75c15712f523bacbdcfd44257f9c8ac\n\nTree-SHA512: e480eab329a1d595fe0b191e83c97956e3ff1d1e335ada8ac6fe72bc4b2bb9b13b0d49db0254d34ad75f816db06d9cd0c21d3063d7d8ee6687a7ea2324c36288",
"is_bot": false,
"headline": "Merge bitcoin/bitcoin#34176: wallet: crash fix, handle non-writable d…",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:53:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a39cc16b434de7f2d1a7098e4526b7d3e82930be",
"body": null,
"is_bot": false,
"headline": "doc: Release note for addhdkey",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:11:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89b9a01b4ea6355c1ecacb1d42d85252cfcb2a77",
"body": null,
"is_bot": false,
"headline": "wallet, rpc: Disallow importing unused() to wallets without privkeys",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:11:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35bbee63746b567c867bb6d2c3db6f6670286826",
"body": null,
"is_bot": false,
"headline": "wallet, rpc: Disallow import of unused() if key already exists",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:11:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3f8bcbd1df3d66d640885a47fa12308d7b1485c",
"body": null,
"is_bot": false,
"headline": "wallet: Add addhdkey RPC",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:11:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fa4076b20a55fc1c142ffde891ca76f5cd416e6",
"body": null,
"is_bot": false,
"headline": "test: Test merging implicit PSBTv0 with explicit PSBTv0",
"author_name": "w0xlt",
"author_login": "w0xlt",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1660c18232a5563b999b08aab91239bb1221fe87",
"body": null,
"is_bot": false,
"headline": "doc: Release notes for psbtv2",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "470e52a5f8158845c48209c6a4d5ebe55c6d90ba",
"body": null,
"is_bot": false,
"headline": "fuzz: Enforce additional version invariants in PSBT fuzzer",
"author_name": "Antoine Poinsot",
"author_login": "darosior",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bd0579c09c0998cc1c35472a43ce5fb5fe621e6",
"body": null,
"is_bot": false,
"headline": "test: Tests for PSBT AddInput and AddOutput",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8b6e7f0c291df7c49d5f56e3583efb2cb1d6594",
"body": null,
"is_bot": false,
"headline": "tests: Add PSBT unit test for ComputeTimeLock",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0bc1c2e50847325f6b2fb59bb5545957dda6985c",
"body": null,
"is_bot": false,
"headline": "tests: Add test vectors from BIP 370",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0e4dbdeb5c863afe0453f12062ac93cf1cb25cd",
"body": null,
"is_bot": false,
"headline": "psbt: Change default psbt version to 2",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcc1dca77b30706b4f53d04a7384a7a71a520bbe",
"body": "walletcreatefundedpsbt, createpsbt, converttopsbt, and psbtbumpfee take\na psbt_version argument to set the version of the PSBT that they\nproduce. The default psbt_version is 2.",
"is_bot": false,
"headline": "Add psbt_version to PSBT RPCs and default to v2",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab38c301953da3e14c5e979d59e44ed736f89717",
"body": null,
"is_bot": false,
"headline": "Implement PSBTv2 field merging",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93e339e29ff51ed56c5a784d5e7dbc7ba48a029a",
"body": null,
"is_bot": false,
"headline": "Implement PSBTv2 AddInput and AddOutput",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b39c86ae60663df683ce8101d27e1ce292996ebe",
"body": "The constructor will create the PSBT of the specified version, as long\nas it is 0 or 2.",
"is_bot": false,
"headline": "Allow specifying PSBT version in constructor",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcc9a3c8dfdab1558a95b60831e573bcf907fefa",
"body": null,
"is_bot": false,
"headline": "Implement PSBTv2 in decodepsbt",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5770dbd39fc2f0f183ba8ea2674858d6701b9da3",
"body": "Function to compute the lock time for the transaction",
"is_bot": false,
"headline": "Add PSBT::ComputeLockTime()",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "863cf47b33e65bf88720ea78a04d0c1522980b30",
"body": null,
"is_bot": false,
"headline": "Update test_framework/psbt.py for PSBTv2",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "925161eaf0cb8710d335602f7e87c0dab149a7f5",
"body": null,
"is_bot": false,
"headline": "Implement PSBTv2 fields de/ser",
"author_name": "Ava Chow",
"author_login": "achow101",
"committed_at": "2026-04-29T22:04:22Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 30,
"commits_last_year": 2739,
"latest_release_at": "2021-10-18T12:41:02Z",
"latest_release_tag": "v0.20.2",
"releases_from_tags": true,
"days_since_last_push": 16,
"active_weeks_last_year": 43,
"days_since_latest_release": 1742,
"mean_days_between_releases": 89.7
},
"community": {
"has_readme": false,
"has_license": false,
"has_description": false,
"has_contributing": false,
"health_percentage": null,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 1,
"stars": 5,
"watchers": 2,
"fork_history": {
"days": [
{
"date": "2024-06-13",
"count": 1
}
],
"complete": true,
"collected": 1,
"total_forks": 1
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": true,
"example_dirs": [
"example",
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"depends/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"contrib/devtools/deterministic-fuzz-coverage/Cargo.toml",
"contrib/devtools/deterministic-unittest-coverage/Cargo.toml",
"test/lint/test_runner/Cargo.toml"
],
"largest_source_bytes": 2409168,
"source_files_sampled": 1986,
"oversized_source_files": 128,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [],
"dependencies": [],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 1,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 2
},
"bus_factor": 5,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "laanwj",
"commits": 7406,
"avatar_url": "https://avatars.githubusercontent.com/u/126646?v=4"
},
{
"type": "User",
"login": "fanquake",
"commits": 5266,
"avatar_url": "https://avatars.githubusercontent.com/u/863730?v=4"
},
{
"type": "User",
"login": "achow101",
"commits": 2395,
"avatar_url": "https://avatars.githubusercontent.com/u/3782274?v=4"
},
{
"type": "User",
"login": "sipa",
"commits": 2389,
"avatar_url": "https://avatars.githubusercontent.com/u/548488?v=4"
},
{
"type": "User",
"login": "hebasto",
"commits": 2157,
"avatar_url": "https://avatars.githubusercontent.com/u/32963518?v=4"
},
{
"type": "User",
"login": "gavinandresen",
"commits": 1101,
"avatar_url": "https://avatars.githubusercontent.com/u/331997?v=4"
},
{
"type": "User",
"login": "ryanofsky",
"commits": 909,
"avatar_url": "https://avatars.githubusercontent.com/u/7133040?v=4"
},
{
"type": "User",
"login": "glozow",
"commits": 795,
"avatar_url": "https://avatars.githubusercontent.com/u/25183001?v=4"
},
{
"type": "User",
"login": "jnewbery",
"commits": 794,
"avatar_url": "https://avatars.githubusercontent.com/u/1063656?v=4"
},
{
"type": "User",
"login": "jonasschnelli",
"commits": 774,
"avatar_url": "https://avatars.githubusercontent.com/u/178464?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.198
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml"
],
"has_docs_dir": true,
"linter_configs": [
"ruff.toml"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 17 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "b2a3ca3df901dcc19b07f7dcf3115d8f7835b931",
"ran_at": "2026-07-26T17:28:19Z",
"aggregate_score": 4.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-05-18T17:01:14Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2022-10-26T10:19:01Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/stickies-v/bitcoin",
"host": "github.com",
"name": "bitcoin",
"owner": "stickies-v"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 47,
"vitality": 68,
"community": 17,
"governance": 59,
"engineering": 69
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 68,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 87,
"inputs": {
"commits_last_year": 2739,
"human_commit_share": 1,
"days_since_last_push": 16,
"active_weeks_last_year": 43
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 16 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 16
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "43/52 weeks with commits",
"points": 29.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 43
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "2739 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 2739
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "at_risk",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 40,
"inputs": {
"releases_count": 30,
"latest_release_tag": "v0.20.2",
"releases_from_tags": true,
"days_since_latest_release": 1742,
"mean_days_between_releases": 89.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "30 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 30
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1742 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "release_recency",
"params": {
"days": 1742
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~89.7 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 89.7
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 69,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 69 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 69
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 17,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"forks": 1,
"stars": 5,
"watchers": 2,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "5 stars",
"points": 9.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 5
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 1
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "2 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 2
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": false,
"has_license": false,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 59,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "excellent",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 87,
"inputs": {
"bus_factor": 5,
"contributors_sampled": 100,
"top_contributor_share": 0.198
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "5 contributor(s) cover half of all commits",
"points": 45.9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 5
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 20% of commits",
"points": 18,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 20
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 17 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 24,
"inputs": {
"merged_prs": 1,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 2
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "1/3 decided PRs merged",
"points": 12.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1,
"decided": 3
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 59,
"inputs": {
"followers": 116,
"owner_type": "User",
"is_verified": null,
"owner_login": "stickies-v",
"public_repos": 28,
"account_age_days": 2186
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "116 followers of stickies-v",
"points": 14.9,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 116,
"login": "stickies-v"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "28 public repos, account ~5 yr old",
"points": 22.6,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 28
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 69,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "ruff.toml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "at_risk",
"name": "Documentation",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": "https://bitcoincore.org/en/download",
"has_readme": false,
"has_docs_dir": true,
"has_description": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://bitcoincore.org/en/download",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 47,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 47,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 4.7
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 17 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 11
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 61,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.9,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "90 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 90,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": true,
"has_tests": true,
"lockfiles": [
"Cargo.lock"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"depends/Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"contrib/devtools/deterministic-fuzz-coverage/Cargo.toml",
"contrib/devtools/deterministic-unittest-coverage/Cargo.toml",
"test/lint/test_runner/Cargo.toml"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "depends/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "depends/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "ruff.toml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "C++ (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C++"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Nix, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Nix, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 96,
"inputs": {
"primary_language": "C++",
"largest_source_bytes": 2409168,
"source_files_sampled": 1986,
"oversized_source_files": 128
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "C++ (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C++"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "128/1986 source files over 60KB",
"points": 51.5,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1986,
"oversized": 128
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"example",
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "example, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example, examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Community profile unavailable",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-26T17:28:38.153272Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/stickies-v/bitcoin.svg",
"full_name": "stickies-v/bitcoin",
"license_state": "standard",
"license_spdx": "MIT"
}