Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-26 17:19 UTC

fanquake / bitcoin

Bitcoin integration/staging tree

C++ · Python · CMIT★ 23 зірки⑂ 6 форківз вер. 2012 р.форкПереглянути на GitHub ↗

fanquake/bitcoin має індекс здоров’я 60 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (93/100), найнижчий — Community & Adoption (28/100). Останнє оновлення було 1 день тому. Більшість нещодавньої роботи виконують 5 учасників.

60
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

60
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

fanquakeОсобистий обліковий запис
2 329 підписників107 публічних репозиторіївз черв. 2011 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

93Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 1 дн. тому
36/36Ритм комітів — 52/52 тижнів із комітами
18/18Обсяг комітів — 3 598 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year3 598
human_commit_share1
days_since_last_push1
active_weeks_last_year52
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 2 релізів
36/36Свіжість релізів — останній реліз 24 дн. тому
19.8/27Ритм релізів — реліз кожні ~85,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count2
latest_release_tagstatic_bitcoind_d436e20
releases_from_tagsні
days_since_latest_release24
mean_days_between_releases85,2

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

28Критичний · 18% загального індексу
Як обчислюється оцінка
21.8/60Зірки — 23 зірок
5.8/25Форки — 6 форків
2.7/15Спостерігачі — 4 спостерігачів
Використані вхідні дані
forks6
stars23
watchers4
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
0/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeні
has_licenseні
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

56Помірний · 24% загального індексу
Як обчислюється оцінка
45.9/54Бас-фактор — на 5 контриб’ютор(ів) припадає половина всіх комітів
18.1/22.5Розподіл комітів — головний контриб’ютор — автор 19% комітів
13.5/13.5Широта контриб’юторів — 100 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 17 contributing companies or organizations
Використані вхідні дані
bus_factor5
contributors_sampled100
top_contributor_share0,194
Як обчислюється оцінка
0/46.8Вирішення issue — немає issue або даних
0/38.3Прийняття PR — злито 0/8 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs8
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
24.2/25Охоплення власника — 2 329 підписників у fanquake
25/25Послужний список — 107 публічних репозиторіїв, вік облікового запису ~15 р.
Використані вхідні дані
followers2 329
owner_typeUser
is_verified
owner_loginfanquake
public_repos107
account_age_days5 514
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Інженерна якість

Чи наявні базові інженерні практики та документація?

69Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 1 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — ruff.toml
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configтак
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.

Документація

40У зоні ризику
Як обчислюється оцінка
0/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — http://www.bitcoincore.org
0/10Опис репозиторію
0/10Теми
0/10Wiki
Використані вхідні дані
topics
has_wikiні
homepagehttp://www.bitcoincore.org
has_readmeні
has_docs_dirтак
has_descriptionні

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

47У зоні ризику · 16% загального індексу

Стан безпеки

47У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — немає даних
0/2.5CI-Tests — немає даних
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 17 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4,7
Виключено з оцінювання (немає даних або не застосовно): branch_protection, ci_tests, packaging. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

61Помірний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 95 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,95
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
18/18Розгортання однією командою — depends/Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — ruff.toml
11/11Статична перевірка типів — C++ (статично типізована)
10/10Відтворюване середовище — Nix, lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixтак
has_testsтак
lockfilesCargo.lock
has_dockerfileні
typed_languageтак
bootstrap_filesdepends/Makefile
has_devcontainerні
has_linter_configтак
typecheck_configs
agent_commit_share0
toolchain_manifestscontrib/devtools/deterministic-fuzz-coverage/Cargo.toml, contrib/devtools/deterministic-unittest-coverage/Cargo.toml, test/lint/test_runner/Cargo.toml
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — C++ (статично типізована)
51.5/55Керовані розміри файлів — 129/2 018 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageC++
largest_source_bytes2 409 168
source_files_sampled2 018
oversized_source_files129
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — example, examples
Використані вхідні дані
example_dirsexample, examples
has_mcp_signalні
api_schema_files

Ключові факти

23зірок GitHub
100контриб'юторів
3 598комітів за останні 12 місяців
1днів від останнього пушу
2релізів
5бас-фактор
0відкритих issue
пакетних екосистем

Попередження щодо збору даних

  • 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

Докладніше

Історія зірок і форків 0 ★ / 6 ⇿
0Зірки
6Форки

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

123456612017-102021-102025-10

Кожна точка охоплює 8 днів.

OpenSSF Scorecard 4.7 / 10
4.7сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-26 17:19 UTC

10Binary-Artifactsno binaries found in the repo
н/дBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
н/дCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 17 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 292271,
      "has_wiki": false,
      "homepage": "http://www.bitcoincore.org",
      "languages": {
        "C": 3345308,
        "M4": 55751,
        "C++": 14677301,
        "Nix": 3796,
        "HTML": 21831,
        "Rust": 41211,
        "Sage": 59880,
        "CMake": 276437,
        "Shell": 215448,
        "Python": 4313705,
        "Scheme": 19984,
        "Assembly": 28405,
        "Makefile": 109129,
        "Dockerfile": 5092,
        "Cap'n Proto": 16569,
        "Objective-C++": 5510
      },
      "pushed_at": "2026-07-25T12:41:20Z",
      "created_at": "2012-09-22T05:28:42Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T12:41:41Z",
      "description": "Bitcoin 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": "fanquake",
      "type": "User",
      "login": "fanquake",
      "company": null,
      "location": null,
      "followers": 2329,
      "avatar_url": "https://avatars.githubusercontent.com/u/863730?v=4",
      "created_at": "2011-06-21T08:01:35Z",
      "is_verified": null,
      "public_repos": 107,
      "account_age_days": 5514
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "static_bitcoind_d436e20",
          "kind": "other",
          "published_at": "2026-07-02T15:57:17Z"
        },
        {
          "tag": "static_bitcoind_307825c",
          "kind": "other",
          "published_at": "2026-04-08T10:48:16Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e34b8d5a7dcd45e4faa3bb5fdeae64bf049037f6",
          "body": "…it (co)-authors\n\nf5d7cc66ecba075790e09b2933c782b218fa558f doc: Discourage adding AI agents as commit authors (sedited)\n\nPull request description:\n\n  The goal of the AI policy is to ensure that contributors maintain the responsibility of understanding the change they are contributing. Adding AI agen\n[…]\nheStack:\n    ACK f5d7cc66ecba075790e09b2933c782b218fa558f\n\nTree-SHA512: 134902fcf4748bf991a6c3df6e41d5edbbc0e57c35d15d9d84fe4d30153549c05546ea5fe22226356d01f6df15f0c7177d9b1af62b9f90982a7788613bdd94a9",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35794: doc: Discourage adding AI agents as comm…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-25T12:40:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b33a7fcd7bd896da7175a28802bac9ca53fa238d",
          "body": "…imiting with global rate limits\n\n349c72ee00a06581aa8cddaced6377c49a81d511 net_processing: Drop unnecessary txid arg from InitiateTxBroadcastToAll (Anthony Towns)\n12b0dc33c4af6fc0eb48ae4265c6c050c4d122d7 doc: Add release note for -txsendrate etc (Anthony Towns)\n5cde66341a66c37454a4b516016243060cdc8f\n[…]\nn/bitcoin/commit/349c72ee00a06581aa8cddaced6377c49a81d511\n\nTree-SHA512: 2196a23308cb7fe36738cf638edf5c5b0e9ba32b11c083609fd8b50291e05bb33484f9921f8beab28d94c58d1adddea4c8ae1182a60a7f53f54be7370e2a0e47",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34628: p2p: Replace per-peer transaction rate-l…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-25T10:15:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6b059d9dbdbd4d5b6f52993f93bf291181bf3900",
          "body": "… adjusted mempool vsize\n\n29b124416e4293aafda0097808c01f5a2cb8627c doc: add release notes for 32800 (Musa Haruna)\n5d25a0c28d19c4b2f3f5ecdf42fb11d1246855b1 rpc: add `vsize_adjusted` field to getrawtransaction output for mempool transactions (Musa Haruna)\neaef8d31118d26654c2bcea1c0528b66ea9b1b2d rpc: \n[…]\nsedited:\n    ACK 29b124416e4293aafda0097808c01f5a2cb8627c\n\nTree-SHA512: 9322ab1a2f7561b4221fb2bbe9f822c402f845c52a93de14008c1e5bc33e5c6f19ebc647ab6615b7c6be137c76cff6a33c6920818a78813de5632eb88c96a876",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32800: rpc: Distinguish between vsize and sigop…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-24T22:09:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11ebbd907217a037d2c0c9be0395091e1d6395e1",
          "body": "…-relay only connections\n\nc11508406e6e0cd14c07c58e23085e1a8ff543fa doc: Update docs that refer to -maxconnections (Martin Zumsande)\n69ce0dba2ae453d915eda0641f97e5bfe43c8273 test: add test that EvictTxPeerIfFull only evicts tx-relaying peers (brunoerg)\n3ed7f064180f8cf0102a8e27a7a73467733fe2ec p2p: tr\n[…]\ncofleon:\n    ACK c11508406e6e0cd14c07c58e23085e1a8ff543fa\n\nTree-SHA512: c71e1481eb235429a6c9d7ce771c7bf825f850b135e904ccfa3505112628fef4188b560d0be0847c968e5ece43c1518590069b7e6e2480790d3ef1ce07d1ac38",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#28463: p2p: Increase inbound capacity for block…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-24T21:30:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3a2c52f9d70db6076ce64b8f7ef0eb301d7935a5",
          "body": "…members `constexpr`\n\n05c35c402cc56e7082a48cc073434a40b0bebd8f refactor: Make all `const static` class members `constexpr` (rustaceanrob)\n\nPull request description:\n\n  Found in #35713. If a `static class` member is not inlined or `constexpr`, the linker will fail when attempting to ODR-use the const\n[…]\nsedited:\n    ACK 05c35c402cc56e7082a48cc073434a40b0bebd8f\n\nTree-SHA512: 2b823b94ddfae1a889b50ebdb6a8828d95baaa2578756daa826b6579045f7e92ea91562be96865c1df267f4dd288f91fd84ed60090e9ad38adc4efeb865cd90a",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35792: refactor: Make all `const static` class …",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-24T17:14:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f5d7cc66ecba075790e09b2933c782b218fa558f",
          "body": null,
          "is_bot": false,
          "headline": "doc: Discourage adding AI agents as commit authors",
          "author_name": "sedited",
          "author_login": "sedited",
          "committed_at": "2026-07-24T16:35:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05c35c402cc56e7082a48cc073434a40b0bebd8f",
          "body": "If a `static class` member is not inlined or `constexpr`, the linker\nwill fail when attempting to ODR-use the constant (passing as `const\nT&`). These can be fixed by finding all member variables that are\n`const` qualified and inlining them with `constexpr`. There is a\nclang-tidy pull request that wo\n[…]\n ${LINES[$file]}; do\n        args+=(-e \"${line}s/static const /static constexpr /\")\n    done\n    sed -i \"${args[@]}\" \"$file\"\ndone\n\necho >&2\necho \"===== proposed diff =====\" >&2\ngit --no-pager diff\n```",
          "is_bot": false,
          "headline": "refactor: Make all `const static` class members `constexpr`",
          "author_name": "rustaceanrob",
          "author_login": "rustaceanrob",
          "committed_at": "2026-07-24T13:01:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c11508406e6e0cd14c07c58e23085e1a8ff543fa",
          "body": null,
          "is_bot": false,
          "headline": "doc: Update docs that refer to -maxconnections",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69ce0dba2ae453d915eda0641f97e5bfe43c8273",
          "body": "Co-authored-by: Martin Zumsande <mzumsande@gmail.com>",
          "is_bot": false,
          "headline": "test: add test that EvictTxPeerIfFull only evicts tx-relaying peers",
          "author_name": "brunoerg",
          "author_login": "brunoerg",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ed7f064180f8cf0102a8e27a7a73467733fe2ec",
          "body": "… a peer to tx relay\n\nCo-authored-by: Amiti Uttarwar <amiti@uttarwar.org>",
          "is_bot": false,
          "headline": "p2p: trigger possible eviction if we support bloom filters and change…",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bd3d3dfa562724e3dbc4cec2d4290e4561655cd",
          "body": "Permit users to change the amount of inbounds that are permitted to relay\ntransactions. This is particularly relevant to ensure that superusers that are\nnot concerned with resource usage are not artificially restricted from offering\nmany transaction relay slots to the network.\n\nCo-authored-by: Martin Zumsande <mzumsande@gmail.com>",
          "is_bot": false,
          "headline": "init: make inbound tx relay percentage configurable",
          "author_name": "Amiti Uttarwar",
          "author_login": "amitiuttarwar",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc59aee196e278001a01a5f6baaaedb800a0b046",
          "body": "Co-authored-by: Martin Zumsande <mzumsande@gmail.com>",
          "is_bot": false,
          "headline": "test: add functional test for inbound maxconnection limits",
          "author_name": "Amiti Uttarwar",
          "author_login": "amitiuttarwar",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b76e0473647d0df5c32ffe1bcdcbbcadc5d0dfa",
          "body": "..and adjust the eviction logic.\nThe new default max connection number is 200, the default maximum of tx-relaying\ninbounds is limited to 50% of all inbound connections.\nWith 11 outbound connections, that is (200 - 11) * 0.5 = 94.5.\nAs a result, the tx-related maximum traffic should not change\ndrasti\n[…]\ner.\n\nOnce this commit is widely deployed, the added inbound capacity will\nallow us to increase the number of outgoing block-relay-only connections.\n\nCo-authored-by: Amiti Uttarwar <amiti@uttarwar.org>",
          "is_bot": false,
          "headline": "net: increase inbound capacity for block-relay-only connections",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2026-07-24T12:16:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "610dd320d1a80838fdf30ed1cb2e6ae1ec717f74",
          "body": "7295b8be704a406cf8875641aa9066e071323093 chainparams: remove my testnet3 seed (Sjors Provoost)\n\nPull request description:\n\n  With testnet3 long deprecated, albeit still not dropped #31975, and [testnet5](https://groups.google.com/g/bitcoindev/c/kGUMTxOvdJA) on the horizon, this seems like a good tim\n[…]\nlcl-ark:\n    ACK 7295b8be704a406cf8875641aa9066e071323093\n\nTree-SHA512: 30c9ad9480a09cf48138157b5529e2878469bc629edb60c5dd2605e078647b9b9b025937936d1b6e3a980c6be3fc36c512bdd91a6864c72c3e093cd60d691860",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35783: chainparams: remove my testnet3 seed",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-24T07:12:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "afa5e46bbc6dd750bd71920b659162a945abf0ae",
          "body": "51ee8ca1683ce1ba9997d0ccf014a1986afceb93 doc: clarify pruning impact on wallet sync (Memetic Money)\n\nPull request description:\n\n  This updates prune-related help text to document the existing caveat that wallets should remain loaded, and relevant indexes should remain active, while pruning is enable\n[…]\nlcl-ark:\n    ACK 51ee8ca1683ce1ba9997d0ccf014a1986afceb93\n\nTree-SHA512: 0705947909d194aaa82142528150cf14f9f4e0569790ea1a8b0ccd2850aa632f65234d44ac5a800a623412f20732b124e7af77e62f335d64dc8b363b144fca92",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35076: doc: clarify pruning impact on wallet sync",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-23T21:31:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26b730cdbf2c77c12f684fd50bd376212b725394",
          "body": "…ey::SetSeed\n\n2cf9d79d84cb485e31e2d78a5744c1e4dc5f5f44 key: validate BIP32 seed length in CExtKey::SetSeed (Muhammad)\n\nPull request description:\n\n  BIP32 specifies that the seed must be between 128 and 512 bits (16 to 64 bytes). CExtKey::SetSeed currently accepts any length, which could result in we\n[…]\nsedited:\n    ACK 2cf9d79d84cb485e31e2d78a5744c1e4dc5f5f44\n\nTree-SHA512: 0ac44f8a464172b465834e1b3edf457fc8a09eeaa89cdfb1286af577d3c90d75627af8b5c5edd66232d45c60812ebc7f6f402db6f804a56f727353b2bdca7c19",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35320: key: validate BIP32 seed length in CExtK…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-23T20:25:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "edf4b807f0513e5bfe423e4e956904e10c71742a",
          "body": "a33f240524da405cac49300d0ab129ece6d64498 Squashed 'src/secp256k1/' changes from bd0287d650..d2d04864ef (fanquake)\n\nPull request description:\n\n  Includes:\n  * https://github.com/bitcoin-core/secp256k1/pull/1765\n  * https://github.com/bitcoin-core/secp256k1/pull/1845\n  * https://github.com/bitcoin-cor\n[…]\nStack:\n    ACK c26d4e2d6f03e26c6c20a4cc854f26d150f38b14 🤫\n\nTree-SHA512: 01fafcbad34bf81055c97560cfda10cf01bc27fdc67e0d5104643e1139359e295abad4ccdcca2b182e8270454e12c9d814dc9636e18ebead5a2cac6cb8ed8052",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35781: Update secp256k1 subtree to latest master",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-23T20:11:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "774d11c58f221294950f05ac4d249e19583e4b7b",
          "body": "… failure-path vectors to script_tests.json\n\nc4068cf37b6674417c77ce1f295b51dd49a57e81 test: add negative zero CSV failure script test vector (azuchi)\n37edf0e2338e4ae811ec224bf27d143ffbee25e6 test: add CHECKLOCKTIMEVERIFY failure-path script test vectors (azuchi)\na86a96d17b37a30ba0664cda01ef42d2d8e16\n[…]\nsedited:\n    ACK c4068cf37b6674417c77ce1f295b51dd49a57e81\n\nTree-SHA512: e7baa9d96b0faec1115c7afb97aa2a8ac17a93d44637cd3e58ab91240b198b6d21c84a29129b586ff760f8f4ca8b1988c652b8f5ebd6ebaa0ffae6615c9aec5d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35664: test: add CLTV and CHECK(MULTI)SIGVERIFY…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-23T19:47:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "526673487ceef18d1df41d77b4783b9b3908ced5",
          "body": "… JSON-RPC interface\n\nca9ffb8e1238d1a94560517d00c5189d3546b99c rpc: add OpenRPC discovery alias (willcl-ark)\nef0676f40077af799ce244c539ee7fbc07cc20a0 rpc: factor getaddressinfo embedded field docs (will)\n1fb6b6056093f5770e0f2c8db89faf48f275174e test: add functional test for getopenrpcinfo (will)\n672\n[…]\n  w0xlt:\n    ACK ca9ffb8e1238d1a94560517d00c5189d3546b99c\n\nTree-SHA512: 5bf7abdb9f119d591306884f31b9da815908e5cb5812706c5496b39162c22cd949465d7b3ff1fdce7ff5b3c1b6367c14b6d28d58dee86698c0161d4d844d84c9",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34683: rpc: support a formal description of our…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-23T17:57:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "290cb2f17ef6ba9198934bbaec53fa962a1dfa18",
          "body": "…x scripts\n\n2cb3bfa8df7cab0635be221af1c8754dbbaff335 scripted-diff: Use long form of shell options in Guix scripts (Hennadii Stepanov)\n711eb10f08bcff5f4689abd4edebf96b913ad6b5 guix: Add copyright headers to Guix scripts (Hennadii Stepanov)\n80f831494e5347057199055b20c8b75bedd8bd07 guix: Fix `glibc` v\n[…]\nanquake:\n    ACK 2cb3bfa8df7cab0635be221af1c8754dbbaff335\n\nTree-SHA512: 9e21d4ad50f5d583efdd8f79d9f96d45a92f1982ea3a422565bceea38aa50bbd9a9360972b37a1b49907e67523d68f3d1f889cb26179ce735453eb4fae4d3fa4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35775: scripted-diff: Use C.UTF-8 locale in Gui…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T13:33:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d472a7798ac1ef0d7fe1fa11709e2cd2f9c6b4f3",
          "body": "…in only\n\n8a90c7cd9739ad30e014ee8531647280fea6a037 guix: Build for macOS using LLVM toolchain only (Hennadii Stepanov)\n7e1a750d45d9199b9a6ee6835bcb78f19cda059c guix, refactor: Use `target` variable instead of hardcoded value (Hennadii Stepanov)\n\nPull request description:\n\n  This PR makes macOS build\n[…]\nanquake:\n    ACK 8a90c7cd9739ad30e014ee8531647280fea6a037\n\nTree-SHA512: 02bfa784f89db980de2d2bb759200a0e8c0b10f48ac7e14e2bcdba75416aef30afa68d36e98c4652e18d282f023d1e94a351ff65b4a2731bdcac7c8a8c720623",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32764: guix: Build for macOS using LLVM toolcha…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T12:56:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9755d33390d843b0622e470df513c0707163057c",
          "body": "…e as source for translations on Transifex\n\na434d66025095764cf58c5a049cf4414f53ee52f cmake, translation: Specify English as target language explicitly (Hennadii Stepanov)\n4097d6d968e835ac1233efcbc31bb7b776bdb51f cmake, translation: Sort messages within contexts alphabetically (Hennadii Stepanov)\n312\n[…]\nsedited:\n    ACK a434d66025095764cf58c5a049cf4414f53ee52f\n\nTree-SHA512: 2f79af707974acd8c955e01c06b41794ae1702964bd5f6d260dba73f2f14d0b4b6e84f502f8515d84585e00db8db5b644cb6c47f91662a7ba5b6990f2d0ba115",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34808: cmake, translation: Use native Qt TS fil…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-23T12:55:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51143291a6c502a63f252d5e6b9cf9ef146de17c",
          "body": "419f7427eee25b6428bbce88e4898e20db9fd13c doc: fix outdated i2p URLs in comments (nebula-21)\n\nPull request description:\n\n  This PR only updates URLs in comments, no functional changes.\n  **Motivation**: While reviewing [PR\\#35696](https://github.com/bitcoin/bitcoin/pull/35696) I discovered that some \n[…]\nsedited:\n    ACK 419f7427eee25b6428bbce88e4898e20db9fd13c\n\nTree-SHA512: 1993239c9544f0e917315b6f3ce5102c5ceaa05422803136bf0a5e69beef000a2b1a170030ca5367a00f433448c6ca0420f3b18137b7e6fd903d4c93263078b2",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35782: doc: fix outdated i2p URLs in comments",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T12:35:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2cb3bfa8df7cab0635be221af1c8754dbbaff335",
          "body": "This improves readability and consistency across all Guix scripts.\n\n-BEGIN VERIFY SCRIPT-\n\nsed -i \"s/^set -e\\>/set -o errexit/g\" \\\n $( git grep -l \"set -e\" ./contrib/guix )\n\n-END VERIFY SCRIPT-",
          "is_bot": false,
          "headline": "scripted-diff: Use long form of shell options in Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-23T11:31:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "711eb10f08bcff5f4689abd4edebf96b913ad6b5",
          "body": null,
          "is_bot": false,
          "headline": "guix: Add copyright headers to Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-23T10:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7295b8be704a406cf8875641aa9066e071323093",
          "body": null,
          "is_bot": false,
          "headline": "chainparams: remove my testnet3 seed",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2026-07-23T10:08:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "419f7427eee25b6428bbce88e4898e20db9fd13c",
          "body": null,
          "is_bot": false,
          "headline": "doc: fix outdated i2p URLs in comments",
          "author_name": "nebula-21",
          "author_login": "nebula-21",
          "committed_at": "2026-07-23T10:06:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c26d4e2d6f03e26c6c20a4cc854f26d150f38b14",
          "body": null,
          "is_bot": false,
          "headline": "Update secp256k1 subtree to latest master",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T08:52:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a33f240524da405cac49300d0ab129ece6d64498",
          "body": "d2d04864ef Merge bitcoin-core/secp256k1#1765: Add \"silentpayments\" module implementing BIP352 (take 4, limited to full-node scanning)\n9e4ec507e9 Merge bitcoin-core/secp256k1#1890: nonce: terminate RFC6979 loop at UINT_MAX\nafff8cba00 Merge bitcoin-core/secp256k1#1894: extrakeys: check invariant that \n[…]\n6260b78a2 ci: add 'brew trust' invocation to macOS CI\n0cad3df503 Improve checks for scalar _get_bits methods\n\ngit-subtree-dir: src/secp256k1\ngit-subtree-split: d2d04864ef9b056151603a3ced7980958b058028",
          "is_bot": false,
          "headline": "Squashed 'src/secp256k1/' changes from bd0287d650..d2d04864ef",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T08:52:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22a03ca69443deb66b98deb37d8e84a33968ac10",
          "body": "efb4eae33861d3f316d77788f5c83b58dad94a0a clusterlin: avoid recomputing intersections in MergeChunks (Pieter Wuille)\n4b91ad149f0056c0a6dfdbc816b0c3b6f8d74827 clusterlin: reserve the suboptimal-chunk queue up front (Pieter Wuille)\ne6ca996255bb7edaebe18a104b113d69a07bc445 clusterlin: avoid heap allocat\n[…]\nfleon:\n    crACK efb4eae33861d3f316d77788f5c83b58dad94a0a\n\nTree-SHA512: 6bd523e8bc56dbc8ff2540ef26355e79895a8a11a26d08e22918aea0c002ee8f96916654d5a2b792515ef12ee022c65d71ab9a778f937a264aaf6e4ed6167b71",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35694: clusterlin: minor SFL optimizations",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T08:47:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b6f9ba7bad13b0c4169259000f7802854cdda0d",
          "body": "…ion` and unify with `submitBlock`\n\n75929b11edb4a59755b38788855b41b63ff4113d doc: add release note for submitSolution IPC changes (woltx)\ned75d70fdb82042c9f44f3bd51b33c8b415f50aa refactor: centralize SubmitBlock result handling (w0xlt)\ncbaa1696f3748c98466152a17687042f59de684f mining: add reason and \n[…]\nsedited:\n    ACK 75929b11edb4a59755b38788855b41b63ff4113d\n\nTree-SHA512: 31b1c305c20aaebdfa2d887665d9927830d0f97ba3c3469e2792148ad799d5a400a000cc0ca0b9add071d314e27c9da44d55228c442533a32a7c031678b78a55",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34672: mining: add reason/debug to `submitSolut…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-22T22:50:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5311b15727f2f282274472184185423e441abd85",
          "body": "…sspsbt when encountering invalid signatures\n\n7e19ce200b2e65770907a818b02e4ec3da9c5374 rpc: Fix descriptorprocesspsbt internal bug on invalid signatures (b-l-u-e)\n\nPull request description:\n\n  Fixes #32849\n  descriptorprocesspsbt crashes with an internal bug assertion when given a PSBT whose inputs \n[…]\n\n    lgtm re-ACK 7e19ce200b2e65770907a818b02e4ec3da9c5374\n\nTree-SHA512: c534fb5bd3401ee3ac0bc27eaedaaaaf23e5e8510ed9b96a747bb0e41e2bd3d2031b6b08e933e139bb426e97bd05fab6e91397205f4be1db9d17630eea49a8bf",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33014: rpc: Fix internal bug in descriptorproce…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-22T21:38:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a90c7cd9739ad30e014ee8531647280fea6a037",
          "body": null,
          "is_bot": false,
          "headline": "guix: Build for macOS using LLVM toolchain only",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T19:20:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80f831494e5347057199055b20c8b75bedd8bd07",
          "body": "At the current time-machine commit\nc5eee3336cc1d10a3cc1c97fde2809c3451624d3, the default `glibc` package\nversion is 2.41.",
          "is_bot": false,
          "headline": "guix: Fix `glibc` version in comment",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:29:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8916f7967e1088e7b6157f708c2c85119d759fb2",
          "body": "The C.UTF-8 locale is set by default in `guix shell`, and there is no\nreason to avoid it nowadays. This change also silences superfluous\nwarnings from Qt tools, making build logs cleaner and other issues\neasier to spot.\n\nLocales in the `guix-*` launch scripts have been updated as well for\nconsistency with the rest of the codebase.\n\n-BEGIN VERIFY SCRIPT-\n\nsed -i \"s/\\<export LC_ALL=C\\>/export LC_ALL=C.UTF-8/g\" \\\n $( git grep -l \"export LC_ALL=C\" ./contrib/guix/* )\n\n-END VERIFY SCRIPT-",
          "is_bot": false,
          "headline": "scripted-diff: Use C.UTF-8 locale in Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:29:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2e074d66ac17ca7907909bbbb563e77185a45e5",
          "body": "…on on macOS\n\nfa0c8337a8d42564880715a07b00925d3e95dab1 test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS (MarcoFalke)\nfaa50c08b17b6f9afad5179a17a4a45ab79049c1 refactor: Run clang-format on qt test_main.cpp (MarcoFalke)\n\nPull request description:\n\n  Fixes https://github.com/bitcoin/bitcoin/issues/\n[…]\na07b00925d3e95dab1, tested on macOS Tahoe 26.5.2 (Intel).\n\nTree-SHA512: 3fd4e65f708ce5acd5243747661b76a5cf25e6810b49586dee5971f5f8bad13a907ee27d6830124c8c6d2b7e807661a59404f387ff59c1feeacfaa4b276bf270",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#951: test: Nudge toward QT_STYLE_OVERRIDE=fusi…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:16:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ced9ad782b8eec3a99c4cde62561b48312795a1",
          "body": "075e7f421876f9b4eeffa2977abc50708831844c net: Simplify `AddressPosition` comparitor (rustaceanrob)\n\nPull request description:\n\n  Picked from #35713 because this appears unintentional. There were no cases where the source attempted to compare `AddressPosition` by const reference, but such a compariso\n[…]\nited:\n    Re-ACK 075e7f421876f9b4eeffa2977abc50708831844c\n\nTree-SHA512: 4fc95026e6f9ec23757c97fc36a7fa94faf54a018727d0d2606215fc5705f3f1817607d8ff72544664cedc666914484ed490c6f75af63db1ce1a337be2e2949f",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35770: net: Simplify `AddressPosition` comparitor",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T14:12:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8844d3df759bfa070681327583427461d39105c",
          "body": "…om seeds\n\ncf0f2aeae009c98615bffd4dafd74e46f20a0ae6 p2p: Assume v2transport for addresses from seeds (Martin Zumsande)\n\nPull request description:\n\n  gmaxwell noted in https://github.com/bitcoin/bitcoin/pull/30951#issuecomment-5035178818 that addresses loaded from dns seeds and fixed seeds are still \n[…]\ndafd74e46f20a0ae6\n  stratospher:\n    tested ACK cf0f2aea.\n\nTree-SHA512: 921dfcf56960f66c37346f0a4d07e8ad8aa617d4cd1c4db36474e8275c47d5eb70a34c32d1378cbcfce356348b12c36c8fedcdaee3c90c2c4963256857407db4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35766: p2p: Assume v2transport for addresses fr…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T12:56:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "075e7f421876f9b4eeffa2977abc50708831844c",
          "body": "There were no cases where the source attempted to compare\n`AddressPosition` by const reference, but such a comparison is valid.\nThis may be fixed by simplifying the comparison operator here, which\nalso avoids copying the value.\n\nFound in #35713:\n```\n<AddressPosition>' requested here\n  817 |     BOOS\n[…]\ncoin/src/addrman.h:76:10: note: candidate function not viable: 'this' argument has type 'const AddressPosition', but method is not marked const\n   76 |     bool operator==(AddressPosition other) {\n```",
          "is_bot": false,
          "headline": "net: Simplify `AddressPosition` comparitor",
          "author_name": "rustaceanrob",
          "author_login": "rustaceanrob",
          "committed_at": "2026-07-22T12:54:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa0c8337a8d42564880715a07b00925d3e95dab1",
          "body": "Using the Fusion style works around QTBUG-49686.\n\nOtherwise, there could be a nullptr-deref under the QMacStyle.",
          "is_bot": false,
          "headline": "test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-22T11:52:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faa50c08b17b6f9afad5179a17a4a45ab79049c1",
          "body": null,
          "is_bot": false,
          "headline": "refactor: Run clang-format on qt test_main.cpp",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-22T11:51:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc49bd154a31b285c0f89be51767a424ac380924",
          "body": "226e6388b7fd5d128d3757a9fe6c7ebc44803231 depends: Update Qt to 6.8.4 (Hennadii Stepanov)\n\nPull request description:\n\n  Release notes: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.8.4/release-note.md\n\n  `depends/patches/qt/qtbase_platformsupport.patch` has been dropped as the fix was back\n[…]\nanquake:\n    ACK 226e6388b7fd5d128d3757a9fe6c7ebc44803231\n\nTree-SHA512: 20f371384c1fcfd5018218ef262b10568bd009e2f1fafca9fa42788aca4683ec706b7a4e35816b884b294b5f9bdb1aefda0bad75921d9e426558cccd80f913cd",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35709: depends: Update Qt to 6.8.4",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T10:50:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efa1800a885c1ae605e18605ef73957ea13e575c",
          "body": "e446ea09c4d37771798cf9b2d92c3cd1afeaac53 depends, zeromq: Apply upstream patch (Hennadii Stepanov)\n\nPull request description:\n\n  See https://github.com/zeromq/libzmq/pull/4911.\n\n  Here is an example of failure when building with [llvm-mingw 20260721 with LLVM 23.1.0 RC 1](https://github.com/mstorsjo\n[…]\nko:\n    self-ACK e446ea09c4d37771798cf9b2d92c3cd1afeaac53\n\nTree-SHA512: 6d839180452c97f8ddf5d0bd774ccc6a56bbf877069191a2486ed3b222efa4ec83da1de1b5727b973e340e1b7de0bb7a3d5fd81964398ebbad542d61634b8679",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35769: depends, zeromq: Apply upstream patch",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T09:46:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc4ceda8b610e0e32afd2f50b3dce5c754a3ad66",
          "body": "…uilding with GCC 16.x\n\n51d36dfd076a98cd761ab312ab10792725ed7a29 qt: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x (Hennadii Stepanov)\n\nPull request description:\n\n  According to the CMake documentation for [`AUTOMOC`](https://cmake.org/cmake/help/latest/prop_tgt/AUTOMOC.html), all `\n[…]\n    review ACK 51d36dfd076a98cd761ab312ab10792725ed7a29 🦅\n\nTree-SHA512: fe48e4925aaccb833bc065aa7f988f22482ef83d3d555e601d3955109f840b221be971c560668eac79506f567999d4e1b2a464ec3717b5cecb9a3eaaa1dbc01b",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#949: Fix `-Wsfinae-incomplete` warnings when b…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T09:11:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "559d042ba2567a05e8d540c7d9d9a94c7d2973d2",
          "body": "…ith getchainparams command\n\n7298281ba8dfb58e07121c74e64f07861ec21f5c bitcoin-util: replace netmagic command with getchainparams command (Anthony Towns)\n\nPull request description:\n\n  This is a follow-up to #35610. It replaces the `netmagic` command with a more versatile `getchainparams` command, as \n[…]\nsedited:\n    ACK 7298281ba8dfb58e07121c74e64f07861ec21f5c\n\nTree-SHA512: 153e97eb8d6bc6d98d925ce9718239c6ff5d7a80b760e7f3b807fc36f78e8da8550033c31016e1d1aee11484392dd80b76f9b1496a8dc6e47825910c170a0cd1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35736: bitcoin-util: replace netmagic command w…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T08:23:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f2ed31f70231506083f31d9b4839a93ad803029",
          "body": "…s after AFL fork\n\nfaada35f9c09844d0aeec7025d06a94427671a22 fuzz: [refactor] Use 100'000 digit separator in __AFL_LOOP (MarcoFalke)\nfae067ec4a408ca7adb7407e93d55d84ab2a8adb fuzz: Avoid dangling prevoutfetch threads after AFL fork (MarcoFalke)\n\nPull request description:\n\n  Presumably fixes https://is\n[…]\nsedited:\n    ACK faada35f9c09844d0aeec7025d06a94427671a22\n\nTree-SHA512: c249d7267f789084968f8510531f60fc71c9fbd6b4e574a181fd6da1af19a3cb7c03ba60c3ca70244b56ce44c602293517cdb6b0e969b4a2cc9d1afaa49ab0f8",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35767: fuzz: Avoid dangling prevoutfetch thread…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-22T07:48:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a31c30290d4c86000601de665866f9015635f48f",
          "body": "f3f302150b5fc115e0561dd639b9b389822999e9 ci: Put space and non-ASCII char in `BASE_BUILD_DIR` (Hennadii Stepanov)\na7e980af31b92f5a21be6b91bed353e65c5cf770 build: Quote host paths in NSIS installer template (Hennadii Stepanov)\n\nPull request description:\n\n  The CI scratch directory contains a space an\n[…]\n code review ACK f3f302150b5fc115e0561dd639b9b389822999e9\n\nTree-SHA512: 5785dc13961d656e73759888d653967e43d6a9e1eec46a12301c65d042bc53a824f2dd9cdaa602c1bfb1afb52c4753099a705eab3a337f88ac6a68893e2de7f9",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35746: ci: Test build directory path with spaces",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T07:36:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e446ea09c4d37771798cf9b2d92c3cd1afeaac53",
          "body": "See https://github.com/zeromq/libzmq/pull/4911.",
          "is_bot": false,
          "headline": "depends, zeromq: Apply upstream patch",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T06:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32eb52100296718f7c0469e3210ce1db73694793",
          "body": "…keys\n\n3bfdcbd7ee494c613deac0840ca6997fcc078c08 coins: reuse cache hasher for txid set (Lőrinc)\n2beab94896a3042201f3ad131e8dc2346e076940 coins: use SipHash-1-3-UJ for `CCoinsMap` (Lőrinc)\n7ff55cc6500e7a32204ffe774d00797f18153547 bench: add fixed-width SipHash benchmarks (Lőrinc)\n3aea85411f61e8890b34\n[…]\nptout21:\n    ACK 3bfdcbd7ee494c613deac0840ca6997fcc078c08\n\nTree-SHA512: c3c66051cb1ebdb0cddbc8b8bed2297c524842f92960531de23d9586c5bb950b302c33d06fc15c2320cbbf97273b22ec3f17fd0e7ddcc7df4a8132a47a606277",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35215: coins: use SipHash-1-3-UJ for CCoinsMap …",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-21T22:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "883ef1d85d74c928ae753e07116d3fc61de4e446",
          "body": "6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7 blockencodings: fix extra transaction count (Lőrinc)\nbe4e64d9e4051f7272c75c2819ceb075ed5452c7 test: characterize extra transaction miscount (Lőrinc)\n\nPull request description:\n\n  A short ID collision can invalidate a mempool-sourced transaction after an unrel\n[…]\nsedited:\n    ACK 6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7\n\nTree-SHA512: d4407dca7ca2b46795e52a5d611b66072d75ba966416d4ede27fa776ac0a7cbde52c8abae2daec532ec5f24d88e608622168ca066c0d1dbc133e098c8e6fe85a",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35727: blockencodings: fix extra transaction count",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-21T21:11:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3f302150b5fc115e0561dd639b9b389822999e9",
          "body": "The GHA workflows override `BASE_BUILD_DIR`, so the build tree no longer\nlives under `BASE_SCRATCH_DIR` and its word-splitting and UTF-8 coverage\nis bypassed on CI. Restore it by putting a space and a non-ASCII symbol\nin the externally defined path as well.",
          "is_bot": false,
          "headline": "ci: Put space and non-ASCII char in `BASE_BUILD_DIR`",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T19:25:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7e980af31b92f5a21be6b91bed353e65c5cf770",
          "body": "The `File` instructions embed the build and source directories unquoted,\nso `makensis` fails for the `deploy` target when either path contains\nspaces.",
          "is_bot": false,
          "headline": "build: Quote host paths in NSIS installer template",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T19:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faada35f9c09844d0aeec7025d06a94427671a22",
          "body": "This makes it easier to glance the exact value.",
          "is_bot": false,
          "headline": "fuzz: [refactor] Use 100'000 digit separator in __AFL_LOOP",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-21T17:37:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf0f2aeae009c98615bffd4dafd74e46f20a0ae6",
          "body": "By now, the vast majority of nodes in the network supports BIP324.\nEven if the optimistic guess would turn out to be wrong for a given\nnode, we would just reconnect with v1.\nThis is better than making v1 connections with peers when both nodes support v2.",
          "is_bot": false,
          "headline": "p2p: Assume v2transport for addresses from seeds",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2026-07-21T16:59:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fae067ec4a408ca7adb7407e93d55d84ab2a8adb",
          "body": null,
          "is_bot": false,
          "headline": "fuzz: Avoid dangling prevoutfetch threads after AFL fork",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-21T16:55:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e1a750d45d9199b9a6ee6835bcb78f19cda059c",
          "body": null,
          "is_bot": false,
          "headline": "guix, refactor: Use `target` variable instead of hardcoded value",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T12:52:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d673ca765a5a05b0f16b3b6d62047deda092da9b",
          "body": "… and macOS/Windows\n\n0b0785daa00ba70fff809fbbf802fb09d02ea624 guix: split macOS and win builds (fanquake)\n008a3e29c8844c0be4457279f5c27c1bc57401c7 guix: split builds into Linux(gui) and macOS/Windows (fanquake)\na3b5dc05723641fe2ddf4fa47c329ffcbd22b228 cmake: Add `GenerateWindowsInstaller` script (He\n[…]\nebasto:\n    ACK 0b0785daa00ba70fff809fbbf802fb09d02ea624.\n\nTree-SHA512: 6222024c891d1bec69bb93ae28864142d7e75aae31968b727a3f7226e0debe89f2dc6954a0c26ccfccf2ce8a28d002aa0284a778c2df6c330c5262d41057602d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35537: guix: split builds into Linux, Linux GUI…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T12:23:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b36c2d78a3ad4940e1d5eb466b0e6650b1001ee3",
          "body": "…s cache limit\n\n5d57f2cefee2acec3c8e11d6b1d5b5fe97e6cfe7 test: cover unused mempool space in coins cache (woltx)\n\nPull request description:\n\n  This PR extends the existing unit test for `Chainstate::GetCoinsCacheSizeState()`.\n\n  `Chainstate::GetCoinsCacheSizeState()` calculates when the UTXO/coins c\n[…]\nsedited:\n    ACK 5d57f2cefee2acec3c8e11d6b1d5b5fe97e6cfe7\n\nTree-SHA512: c4131cdedd7bd48224d3323fdc1bbce668f171105939c8aa3c452080bbe22819f3910d2a5ce3f46a5a1b7eb625b63240a8c0b7c26fbd5f30927712545b0f765f",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35490: test: cover unused mempool space in coin…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-21T08:57:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1d85263f8ebb47ad4d6126ff992d4915dda026b",
          "body": "…ast peer with relay=false\n\n1fc9277a1c13c13f2ff1825f703a77ebcc9791be test: cover disconnect on private broadcast peer with relay=false (Bruno Garcia)\n\nPull request description:\n\n  Currently, there is no test case to verify the disconnection of a private broadcast connection when the peer does not su\n[…]\nbula-21:\n    ACK 1fc9277a1c13c13f2ff1825f703a77ebcc9791be\n\nTree-SHA512: 1fd7ad3a5fc690a25276a9654e297858d95607fa9c696a0a6f53223aeb3dde7f80e836d2cbf835a39487f953b04f73b4b8af0c79a2ee8f58c894259f7c9383ff",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35681: test: cover disconnect on private broadc…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T20:33:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4906594a3844d227f1f401b9114e6b872cccc576",
          "body": "…nimal` QPA plugin\n\nfd59d68c2629440e544ffa6c9a96b4252ebf45c3 qt, test: Enable tests on macOS with `minimal` QPA plugin (Hennadii Stepanov)\nc8b2aeb2263c50428e2a465aebc0103e73582ffc qt: Avoid implicit `NSApplication` instantiation (Hennadii Stepanov)\n\nPull request description:\n\n  On macOS, `test_bitco\n[…]\nin4btc:\n    tACK fd59d68c2629440e544ffa6c9a96b4252ebf45c3\n\nTree-SHA512: 9fae09668cffe8b207736c6a202af01666a06ae1a8adbd3061717b92a692c0b65b6fe853f192cdc8793073b1c02c3f6a61350a5974397ac016ff8924a51e084a",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#950: qt, test: Run GUI tests on macOS with `mi…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T20:20:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0c196f9c11cd1bad6b8804c063b344caf56b8a9",
          "body": "…ule ignores\n\n6eca11175be68150ec860c26a7f4a7aaf9effb0e lint: remove E731 Ruff ignore (will)\nb52454538b08006b43a0bce8f4c9563c5e16ca83 lint: remove E712 Ruff ignore (will)\n\nPull request description:\n\n  Follows up on #34547 by dropping (and fixing) most remaining default Ruff rule ignores:\n\n  - [E712](\n[…]\nsedited:\n    ACK 6eca11175be68150ec860c26a7f4a7aaf9effb0e\n\nTree-SHA512: 763ad88b66fbe1df09c88c688865b7ebdcc4b431858776b5557eb7eec61b98795fb6946b32549f2e631648eae03a6a2882fcd2a673948e1a04d8b2ea358d83ce",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35721: lint: drop most remaining default Ruff r…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T20:07:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd59d68c2629440e544ffa6c9a96b4252ebf45c3",
          "body": "The crash source, implicit `NSApplication` instantiation with a\nnon-Cocoa QPA plugin, was fixed in the previous commit.",
          "is_bot": false,
          "headline": "qt, test: Enable tests on macOS with `minimal` QPA plugin",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T14:09:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8b2aeb2263c50428e2a465aebc0103e73582ffc",
          "body": "`[NSApplication sharedApplication]` creates the shared application\nobject if it does not yet exist. When running with the `minimal` or\n`offscreen` QPA plugins, which is common for testing purposes, the Cocoa\nplatform plugin never creates it, so these call sites were instantiating\n`NSApplication` as a side effect.\n\nUse the `NSApp` global instead and return early when it is `nil`.",
          "is_bot": false,
          "headline": "qt: Avoid implicit `NSApplication` instantiation",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T14:00:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "006f8f7d49a39bc1e3a302269c8ad244f05a209b",
          "body": "d24d3cbad0109adc1a8ca4b7cba16aa920fa2799 fuzz: add p2p_private_broadcast harness (frankomosh)\n\nPull request description:\n\n  Add a fuzz harness for `ConnectionType::PRIVATE_BROADCAST`, a privacy-preserving transaction relay mechanism whose p2p code paths had no meaningful fuzz coverage.\n\n  Current `p\n[…]\nrewtoth:\n    ACK d24d3cbad0109adc1a8ca4b7cba16aa920fa2799\n\nTree-SHA512: 0d2ff9a79aa87a6eb7d7efdbe03ebba545abad1d1e995dfe617e5bd8fd7a5098fd44d92fa6eac1695aa81f38e762b30ed7a7fd0db6c85aaa32bd1d068c946e38",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35090: fuzz: add p2p_private_broadcast harness",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T11:57:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51d36dfd076a98cd761ab312ab10792725ed7a29",
          "body": "According to the CMake documentation for `AUTOMOC`, all `moc` output\nfiles that are not included in a source file are aggregated into the\nCMake-generated `<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`, which is\nadded to the target's sources.\n\nWithin that single translation unit, `moc`-generated code che\n[…]\nh\n   `#ifdef ENABLE_WALLET` to prevent `-Wunused-private-field` warnings\n   when building with `-DENABLE_WALLET=OFF`.\n2. `test/lint/lint-includes.py` is adjusted to allow new `#include`\n   statements.",
          "is_bot": false,
          "headline": "qt: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T11:23:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b0785daa00ba70fff809fbbf802fb09d02ea624",
          "body": "Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>",
          "is_bot": false,
          "headline": "guix: split macOS and win builds",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-20T08:28:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "008a3e29c8844c0be4457279f5c27c1bc57401c7",
          "body": null,
          "is_bot": false,
          "headline": "guix: split builds into Linux(gui) and macOS/Windows",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-20T08:28:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3b5dc05723641fe2ddf4fa47c329ffcbd22b228",
          "body": "The new script is parameterized by paths to executables. It can be used\nto generate the installer from the install tree rather than the build\ntree. This capability will be used by the Guix scripts in subsequent\ncommits.",
          "is_bot": false,
          "headline": "cmake: Add `GenerateWindowsInstaller` script",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-18T16:35:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bfdcbd7ee494c613deac0840ca6997fcc078c08",
          "body": "Use `SaltedCoinsCacheHasher` for the temporary set of earlier txids in `CoinsViewOverlay`, and in existing overlay tests to exercise the new `Txid` overload.\nEvery entry is a computed transaction hash, and the set is limited to a few thousand elements per block, satisfying the SipHash-1-3-UJ jumbo-input requirements.\n\nCo-authored-by: Andrew Toth <andrewstoth@gmail.com>",
          "is_bot": false,
          "headline": "coins: reuse cache hasher for txid set",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2beab94896a3042201f3ad131e8dc2346e076940",
          "body": "Use the fixed-width `SipHasher13UJ::Hash` path for `CCoinsMap`, while keeping other `SaltedOutpointHasher` users on SipHash-2-4.\nThe salted outputs are process-local and must not be persisted, serialized, or compared across processes.\n\nRetained cache entries identify real transaction outputs and the\n[…]\nt accumulate.\nThe assumeutxo loader assumes snapshot txids are valid while loading and verifies the complete snapshot content hash before activation.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "coins: use SipHash-1-3-UJ for `CCoinsMap`",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ff55cc6500e7a32204ffe774d00797f18153547",
          "body": "Benchmark 32-byte hashes and inputs consisting of a 32-byte hash plus a 32-bit index with SipHash-2-4 and SipHash-1-3-UJ.\nThe UJ benchmark zero-extends the index into one 64-bit normal block.\nKeep all four measurements together after shared correctness coverage and before changing `CCoinsMap`'s hasher.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "bench: add fixed-width SipHash benchmarks",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aea85411f61e8890b34e1de5fd348a4bcc85552",
          "body": "Add SipHash-1-3-UJ outputs to the shared vectors for sequences of 8- and 32-byte blocks.\nCheck generic writes and applicable fixed-width `Hash` overloads against those outputs, and fuzz their equivalence including mixed normal/jumbo encodings.\n\nThe outputs were generated by an independent implementation that Claude Opus 4.8 produced using only the `SipHasher13UJ` class comment as its prompt.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>",
          "is_bot": false,
          "headline": "test: add SipHash-1-3-UJ coverage",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0ccd4ad171567c2b911160a76bde65ba379b4f6",
          "body": "Add const `SipHasher13UJ::Hash` overloads for one `uint256` jumbo block, optionally followed by one 64-bit normal block.\nReuse the generic hasher's initialized state and define these short paths in the header because the new hasher benefits from inlining.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>",
          "is_bot": false,
          "headline": "crypto: add fixed-width SipHash-1-3-UJ",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2d7931b5c8b9630ce99d86b8fe96c6b6a928f87",
          "body": "Add `SipHasher13UJ`, a block-oriented implementation accepting arbitrarily mixed 64-bit normal blocks and 256-bit jumbo blocks.\nFor hash-table use, cryptographic hash outputs must make up all but a small bounded number of retained jumbo blocks.\n\nThe generic interface serves as the executable specification for the fixed-width overloads added next.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>\nCo-authored-by: Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>",
          "is_bot": false,
          "headline": "crypto: add generic SipHash-1-3-UJ",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25bfca06d6698663310f692ed64dd4ff8e2fc962",
          "body": "Move the SipHash round, compression, and finalization operations shared by `CSipHasher` and `PresaltedSipHasher` into inline `SipHashState` methods.\nThis centralizes state mutation, preserves the existing byte-path code generation, and keeps the security-sensitive follow-up focused on its changed block compression, round counts, and finalizer.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "refactor: simplify adding SipHash-1-3-UJ",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af50ba8500a81e1a79cdf953d27bbf53ee6c979f",
          "body": "Lock SipHash-2-4 behavior into shared vectors before refactoring its round and finalization code.\nStore inputs as ordered hex byte blocks so `CSipHasher` and the independent Python implementation hash the same byte sequence, with applicable `PresaltedSipHasher` overloads checked against the same vec\n[…]\n 32-byte block sequences.\nThe Python test reads a build-tree copy so functional-test staging behaves consistently when files are symlinked or copied.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "test: add shared SipHash vectors",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T03:09:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18c05d93016b28a9afd4c716dfe00b6e0accb30b",
          "body": "…ttempt-limit success\n\n6ee05c4b188c0da8cefb7f361c3ba6866c5710b5 test: wallet: BnB incomplete result on attempt-limit success (Bruno Garcia)\n\nPull request description:\n\n  BnB can return a valid selection before exhausting the search tree, then hit `TOTAL_TRIES` while continuing to look for a better o\n[…]\nandamus:\n    ACK 6ee05c4b188c0da8cefb7f361c3ba6866c5710b5\n\nTree-SHA512: 32d0cc6da7586abdd195b87459da0a6ebbdcf8115bef41f5e625864bfa9ce8231a58f8d4b61708279ebeaef372e4f3b5fb18eab28a01dad53f043ba083330b3d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35590: test: wallet: BnB incomplete result on a…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-18T01:18:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b56b66fc64bedce52a4445f1dcb692c24600e443",
          "body": "…ingInput` params overload\n\nafab8d4225c720f8d8658d4ea134505b3d9531f9 fuzz, refactor: Remove `Serialize` overload (Hennadii Stepanov)\nefa7f8c1437681dfae536017da6f27c75f8f2309 fuzz: Remove unused `DeserializeFromFuzzingInput` params overload (Hennadii Stepanov)\n\nPull request description:\n\n  Clang rece\n[…]\n:\n    Review ACK afab8d4225c720f8d8658d4ea134505b3d9531f9\n\nTree-SHA512: 60e98034aa642a8bc0e43dd6c02e60927b5b51be21bbef5812569c797f5d80a04011bced43a34e237e454008382c792a8f7adbde960268f6ae2c0fe3bb2749b7",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35679: fuzz: Remove unused `DeserializeFromFuzz…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-17T21:33:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ee05c4b188c0da8cefb7f361c3ba6866c5710b5",
          "body": "BnB can return a valid selection before exhausting\nthe search tree, then hit TOTAL_TRIES while continuing\nto look for a better one. Add a unit test for that path\nusing a known exhaustion fixture plus an exact-match\ncoin, and assert the result is marked incomplete via\nGetAlgoCompleted() == false.\n\nCo-authored-by: Murch <murch@murch.one>",
          "is_bot": false,
          "headline": "test: wallet: BnB incomplete result on attempt-limit success",
          "author_name": "Bruno Garcia",
          "author_login": "brunoerg",
          "committed_at": "2026-07-17T18:14:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7",
          "body": "A short ID collision can invalidate a mempool-sourced transaction after an unrelated transaction was found in extra_txn.\n\nTrack each slot's source so extra_count is decremented only when the invalidated slot came from extra_txn. Mark collided slots explicitly so later candidates do not refill them.",
          "is_bot": false,
          "headline": "blockencodings: fix extra transaction count",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-17T14:57:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be4e64d9e4051f7272c75c2819ceb075ed5452c7",
          "body": null,
          "is_bot": false,
          "headline": "test: characterize extra transaction miscount",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-17T14:56:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7298281ba8dfb58e07121c74e64f07861ec21f5c",
          "body": "Co-Authored-By: ekzyis <ramdip.singhgill@gmail.com>",
          "is_bot": false,
          "headline": "bitcoin-util: replace netmagic command with getchainparams command",
          "author_name": "Anthony Towns",
          "author_login": "ajtowns",
          "committed_at": "2026-07-17T12:01:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d6ba4b3b572c978392ec030567aa9e689a259ba",
          "body": "… for a few trivially copyable types\n\n3e8e21b2efcee4299f50030c37176ace29b315ec txgraph: avoid moving primitive members (Lőrinc)\nd9f94aa882ae7ac5697d30c4478d9a1d633c3728 rpc: avoid moving RPC enum types (Lőrinc)\nb67baed4e7e4c553426f1192a97725bc53b9df70 coins: avoid moving `COutPoint` values (Lőrinc)\n\n[…]\n176ace29b315ec, I have reviewed the code and it looks OK.\n\nTree-SHA512: cbe55b13290ae261bba359dc6e5a3bbdfb7ae9d31bdf8e0da2eef65a0df776e4081ceeac3c82731a631bda656a86b3789651fa1f4d87875cee1dc96351bdfd7c",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34514: refactor: remove unnecessary `std::move`…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-17T10:36:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ca9ffb8e1238d1a94560517d00c5189d3546b99c",
          "body": "OpenRPC service discovery specifies `rpc.discover` as the discovery\nmethod name.\n\nExpose `rpc.discover` as an alias for `getopenrpcinfo`, so clients that\nexpect the standard OpenRPC discovery method can retrieve the same\ngenerated document without changing the existing Bitcoin Core RPC.",
          "is_bot": false,
          "headline": "rpc: add OpenRPC discovery alias",
          "author_name": "willcl-ark",
          "author_login": "willcl-ark",
          "committed_at": "2026-07-17T08:40:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afab8d4225c720f8d8658d4ea134505b3d9531f9",
          "body": "Serialization parameters should be embedded into the object being\nserialized rather than passed as a separate argument. This works here\nbecause only serialization is performed and no new object needs to be\nconstructed.",
          "is_bot": false,
          "headline": "fuzz, refactor: Remove `Serialize` overload",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-16T14:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efa7f8c1437681dfae536017da6f27c75f8f2309",
          "body": "This overload has been unused since it was added in fac81affb527132945773a5315bd27fec61ec52f.",
          "is_bot": false,
          "headline": "fuzz: Remove unused `DeserializeFromFuzzingInput` params overload",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-16T14:05:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6eca11175be68150ec860c26a7f4a7aaf9effb0e",
          "body": "Replace assigned lambdas with local functions so Ruff can enforce E731.\nFor platform-specific immutable file cleanup, store the command as data\ninstead of creating conditional callbacks.",
          "is_bot": false,
          "headline": "lint: remove E731 Ruff ignore",
          "author_name": "will",
          "author_login": "willcl-ark",
          "committed_at": "2026-07-16T09:29:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b52454538b08006b43a0bce8f4c9563c5e16ca83",
          "body": "Use identity checks for literal false values to preserve RPC semantics.",
          "is_bot": false,
          "headline": "lint: remove E712 Ruff ignore",
          "author_name": "will",
          "author_login": "willcl-ark",
          "committed_at": "2026-07-16T09:04:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d9ec7f3d452789d04dce81dc02db0b3b778bb5",
          "body": "dab7f2c984bdf10ed65fec6e7b602486f853c456 test: cover -externalip/onlynet interaction in functional test (will)\n657a5aa3f3d0e8533d3d7dadfcc3b2908be83601 test: cover -externalip bypassing -onlynet (will)\n8c87e32bd3937251d6f30295cc1924048e5b74d1 net: let -externalip bypass -onlynet (will)\nf4af02e827b97\n[…]\n  w0xlt:\n    ACK dab7f2c984bdf10ed65fec6e7b602486f853c456\n\nTree-SHA512: a4ac9334b85da8b6902d3850e21d3a1c9d7dce70bcb79182448c8d5684e24462cd6e440385af7aa4420d9582e4dff9dc9e827ca7a6da0363fff2d3c531784d9b",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34538: net: advertise -externalip addresses",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T22:42:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7bff765d514e0bdc8e6b2d156d3de0dd3800ab1d",
          "body": "…om enumerate response\n\n4c9de7d5b329f8ffca7222d8f53c2f5a5616dfc9 external_signer: validate fingerprint from enumerate response (Kyle 🐆)\n\nPull request description:\n\n  `enumeratesigners` takes the `fingerprint` field from the external signer's `enumerate` output and stores it without checking it. That\n[…]\nsedited:\n    ACK 4c9de7d5b329f8ffca7222d8f53c2f5a5616dfc9\n\nTree-SHA512: 7c3303b24e234e13a4c20c0b93552145b9ccffc29d1bae42ce8a2faf548377f051e52f8ffb3924679065b27d15fc7bf3859e5ae32a2bb185738cc29bc0ade486",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35639: external_signer: validate fingerprint fr…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T21:15:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "773b1c9aa587304ec0dc348270bc2c2d2156ec14",
          "body": "72db4accbf5bae74d061db1aeee9e0688c0da2f5 coins: drop stale cursor null checks (Lőrinc)\n3d2f2d8de09d162863f7b8e7e48e347d7d87c648 coins: pass UTXO stats view by reference (Lőrinc)\n35aedb2823692756dbe958b08f415c2b3e0be4ea coins: drop cursor from base view (Lőrinc)\nc6fbe2f66cff3846068795b3e2c459242b7be5\n[…]\nrewtoth:\n    ACK 72db4accbf5bae74d061db1aeee9e0688c0da2f5\n\nTree-SHA512: 12a81330a6ec1b91a7e4393f3761ea9ed4702ecb24312f1defa5a9a079a396ce921fc52f74fe296e5ac7ab20d5b5a8a84e858c96847f333c58b7fa9de9e8143e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35572: coins: make cursor iteration DB-only",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T20:27:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d9e4f8dbd80260e52b29336b58eecb7c0d63cd6",
          "body": "…negative values\n\n3ae3a94f2bdc572cdf1b5223419a25650291ab56 wallet: avoid call bumpfeediscount with negative values (Pol Espinasa)\n\nPull request description:\n\n  in https://github.com/bitcoin/bitcoin/issues/34232 dergoegge reported an assertion fail in `SetBumpFeeDiscount`.\n\n  **Context**\n\n  The bump-\n[…]\ntin4btc:\n    ACK 3ae3a94f2bdc572cdf1b5223419a25650291ab56\n\nTree-SHA512: e76693eb66c4883ed3ef5edf1baa972657b0d532487803706312d486b4d4a4997f5dcbc64781a1a21b7b5628b06fcc97a6633382509061734d0f5615e851bef1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35633: wallet: avoid call bumpfeediscount with …",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T20:15:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4216e885a666e3a1290d87068912a34cb858a60",
          "body": "240d5f743aab0ff4f3e5d7d1783b410aa3306ad3 fuzz: Drop unnecessary mutexes (marcofleon)\n\nPull request description:\n\n  Quick cleanup addressing https://github.com/bitcoin/bitcoin/pull/35295#discussion_r3550382830.\n\n  This follows the same logic as 48df0939e7250a2de8a0c336bc3ddbcbe0578812 from https://gi\n[…]\n code review ACK 240d5f743aab0ff4f3e5d7d1783b410aa3306ad3\n\nTree-SHA512: 869127dc8cec4fc0688f92d67dc22f643cf3741c62d645eb4a959a9d8f46590efe19765f7df97ee36f9a3ca759c50fe983a3e6655e40a53ea99904e7a1ec00f6",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35723: fuzz: Drop unnecessary mutexes",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T19:35:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "240d5f743aab0ff4f3e5d7d1783b410aa3306ad3",
          "body": "Remove the `Mutex` from the `coins_view` and `coinscache_sim`\npool startup helpers. Fuzz targets are entered sequentially within a\nprocess and parallel fuzzing uses separate processes/forks, which each\nhave their own copy of the global thread pool. Therefore, a mutex to\nprevent two in-process callers from racing to start the pool isn't needed.",
          "is_bot": false,
          "headline": "fuzz: Drop unnecessary mutexes",
          "author_name": "marcofleon",
          "author_login": "marcofleon",
          "committed_at": "2026-07-14T18:21:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf0368fb76e4ee07fc1a461d73eaff3e4ddb5e6b",
          "body": "…drop fuzz test workaround\n\nfab8eeed82cc784f05a7407da0245e6f44563778 fuzz: clang-format LIMITED_WHILE (MarcoFalke)\nfa0d777ce2a91816ab0a6bd8a0f389e4840e84c5 fuzz: Clang-format LIMITED_WHILE like while (MarcoFalke)\nfa1a9bde5a614d052a188a2e0756d2475ce777e0 fuzz: Remove unused workaround after fix in li\n[…]\n-format cleanups added since last review, which seem nice\n\nTree-SHA512: 0836628f8ee54adf02571025456211a74f63d05058b72280b10111ecfbb93d30945f4a48f30cc790774de4e2b489907313e86b0fa6729f3480c64850c94848b4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35720: ipc: Update libmultiprocess subtree and …",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T18:10:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efb4eae33861d3f316d77788f5c83b58dad94a0a",
          "body": "MergeChunks scans the top chunk's transactions twice: once to count\nthe dependencies on the bottom chunk, and once to locate the randomly\npicked one. Remember the per-transaction dependency counts from the\nfirst pass, so the second pass only computes the intersection of the\nselected transaction, rather than one per transaction scanned.",
          "is_bot": false,
          "headline": "clusterlin: avoid recomputing intersections in MergeChunks",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b91ad149f0056c0a6dfdbc816b0c3b6f8d74827",
          "body": "Reserve capacity for one entry per transaction in m_suboptimal_chunks at\nconstruction time, avoiding repeated reallocations while MakeTopological\nand StartOptimizing fill the queue.",
          "is_bot": false,
          "headline": "clusterlin: reserve the suboptimal-chunk queue up front",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6ca996255bb7edaebe18a104b113d69a07bc445",
          "body": "Replace GetLinearization's four per-call heap-allocated vectors (the\nready chunk/transaction heaps and both dependency counters) with stack\narrays and explicit size counters. This especially benefits\nlinearization of small clusters, where the allocations make up a\nsignificant fraction of the total runtime.",
          "is_bot": false,
          "headline": "clusterlin: avoid heap allocations in GetLinearization",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d4065d1fe4d9ad802e7c2b996d6cb12d66677a2",
          "body": "900a7785bf56ab92560a3ec63423c9376a7b255d ci: use Ubuntu 26.04 for lint container (fanquake)\n058a73a0aea6b949763bbea305391d7f2218c429 ci: use uv 11.x (fanquake)\n14f4ddcb55497faf25a3db60a7477ea4dbc236ed ci: mypy 2.3.0 (fanquake)\n\nPull request description:\n\n  Container: Ubuntu `24.04` -> `26.04`.\n  `uv\n[…]\nlcl-ark:\n    ACK 900a7785bf56ab92560a3ec63423c9376a7b255d\n\nTree-SHA512: fc664b9cd16257ae023a4a60566bb512bb9b12d72a81e34a4a6659490a9eb84922cef6e44c622d4b52048788ce880d71a9b5168591aadbb83eae62fe54f54fcb",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35718: ci: Update lint container dependencies",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-14T14:11:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d9fbf766643742359590f57ab18ac67c51e6889",
          "body": "…ig for btck_TransactionInput\n\n6667dc4eec7b458893920eb7f8631bdf2467c046 kernel: expose scriptSig for btck_TransactionInput (Peter Zafonte)\ne6de3a2d3c78d5b72f57bd6a5d711fed97ca70c1 kernel: expose witness stack for btck_TransactionInput (Peter Zafonte)\n\nPull request description:\n\n  Silent payments sca\n[…]\nckies-v:\n    ACK 6667dc4eec7b458893920eb7f8631bdf2467c046\n\nTree-SHA512: b5e9d32ec87a5f5a9fea5652ed69737eae1d1f9cfb777544b96d703bbd057c114e0b7afae4e9e9d09b8b546694b14fb923b747c04a8f0211ab6caa015d06967d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35380: kernel: expose witness stack and scriptS…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-14T12:38:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 2,
      "commits_last_year": 3598,
      "latest_release_at": "2026-07-02T15:57:17Z",
      "latest_release_tag": "static_bitcoind_d436e20",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 24,
      "mean_days_between_releases": 85.2
    },
    "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": 6,
      "stars": 23,
      "watchers": 4,
      "fork_history": {
        "days": [
          {
            "date": "2017-10-25",
            "count": 1
          },
          {
            "date": "2018-04-29",
            "count": 1
          },
          {
            "date": "2022-01-03",
            "count": 1
          },
          {
            "date": "2023-05-03",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 6,
        "total_forks": 6
      },
      "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": 2018,
      "oversized_source_files": 129,
      "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": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 8
      },
      "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": 5411,
          "avatar_url": "https://avatars.githubusercontent.com/u/863730?v=4"
        },
        {
          "type": "User",
          "login": "achow101",
          "commits": 2471,
          "avatar_url": "https://avatars.githubusercontent.com/u/3782274?v=4"
        },
        {
          "type": "User",
          "login": "sipa",
          "commits": 2397,
          "avatar_url": "https://avatars.githubusercontent.com/u/548488?v=4"
        },
        {
          "type": "User",
          "login": "hebasto",
          "commits": 2235,
          "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": 923,
          "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.194
    },
    "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": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "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": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": "e34b8d5a7dcd45e4faa3bb5fdeae64bf049037f6",
        "ran_at": "2026-07-26T17:19:21Z",
        "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-07-25T14:22:23Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/fanquake/bitcoin",
    "host": "github.com",
    "name": "bitcoin",
    "owner": "fanquake"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 47,
        "vitality": 93,
        "community": 28,
        "governance": 56,
        "engineering": 69
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 93,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 3598,
              "human_commit_share": 1,
              "days_since_last_push": 1,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "3598 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 3598
                    }
                  }
                ],
                "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": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "releases_count": 2,
              "latest_release_tag": "static_bitcoind_d436e20",
              "releases_from_tags": false,
              "days_since_latest_release": 24,
              "mean_days_between_releases": 85.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "2 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 24 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 24
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~85.2 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 85.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 28,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 30,
            "inputs": {
              "forks": 6,
              "stars": 23,
              "watchers": 4,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "23 stars",
                "points": 21.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "6 forks",
                "points": 5.8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "4 watchers",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": 56,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "bus_factor": 5,
              "contributors_sampled": 100,
              "top_contributor_share": 0.194
            },
            "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 19% of commits",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 19
                    }
                  }
                ],
                "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": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 8
            },
            "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": "0/8 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 8
                    }
                  }
                ],
                "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": "good",
            "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": 74,
            "inputs": {
              "followers": 2329,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "fanquake",
              "public_repos": 107,
              "account_age_days": 5514
            },
            "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": "2,329 followers of fanquake",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2329,
                      "login": "fanquake"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "107 public repos, account ~15 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 107
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 15
                    }
                  }
                ],
                "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": "http://www.bitcoincore.org",
              "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": "http://www.bitcoincore.org",
                "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): Branch-Protection, CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 10
            },
            "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.95,
              "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": "95 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 95,
                      "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": 2018,
              "oversized_source_files": 129
            },
            "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": "129/2018 source files over 60KB",
                "points": 51.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 2018,
                      "oversized": 129
                    }
                  }
                ],
                "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:19:41.768705Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fanquake/bitcoin.svg",
  "full_name": "fanquake/bitcoin",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистика.