公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 17:19 UTC

achow101 / bitcoin

Bitcoin Core integration/staging tree

C++ · Python · CMIT★ 42 星标⑂ 11 复刻始于 2015年10月复刻在 GitHub 上查看 ↗

achow101/bitcoin 的健康指数为 100 分中的 52 分,处于「中等」区间。 其得分最高的类别是Vitality(65/100),最低的是Community & Adoption(33/100)。 最近一次更新在 4 天前。 近期的大部分工作由 5 位贡献者完成。

52
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

52
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Ava Chow个人账户
1,783 关注者111 个公开仓库始于 2013年3月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

65中等 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 4 天前
3.5/36提交节奏 — 52 周中有 5 周有提交
18/18提交量 — 最近一年 186 次提交
0/10OpenSSF Scorecard:Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
所用输入
commits_last_year186
human_commit_share1
days_since_last_push4
active_weeks_last_year5

发布纪律

76良好
评分方式
27/27有发布版本 — 已发布 100 个发布版本
16.2/36发布时效 — 最近一次发布版本于 288 天前
27/27发布节奏 — 约每 0 天发布一次
6/10OpenSSF Scorecard:Signed-Releases — 4 out of the last 5 releases have a total of 4 signed artifacts.
所用输入
releases_count100
latest_release_tagv29.2
releases_from_tags
days_since_latest_release288
mean_days_between_releases0

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

33存在风险 · 占总体的 18%

流行度与采用

40存在风险
评分方式
26.2/60星标 — 42 个星标
8.3/25复刻 — 11 个复刻
5.3/15关注者 — 10 位关注者
所用输入
forks11
stars42
watchers10
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

25危急
评分方式
0/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

56中等 · 占总体的 24%
评分方式
45.9/54巴士系数 — 5 位贡献者贡献了半数提交
17.7/22.5提交分布 — 头号贡献者编写了 21% 的提交
13.5/13.5贡献者广度 — 100 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 17 contributing companies or organizations
所用输入
bus_factor5
contributors_sampled100
top_contributor_share0.212
评分方式
0/46.8议题解决 — 没有议题或无数据
0/38.3PR 接受 — 已裁定的 PR 中 0/9 已合并
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_prs9
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
23.4/25所有者影响力 — achow101 有 1,783 位关注者
25/25既往记录 — 111 个公开仓库,账户约 13 年
所用输入
followers1,783
owner_typeUser
is_verified
owner_loginachow101
public_repos111
account_age_days4,890
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

基础的工程与文档实践是否到位?

57中等 · 占总体的 20%

工程实践

68中等
评分方式
24/24CI 工作流 — 1 个工作流
24/24存在测试
0/16Linter 配置
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文档 / 主页站点 — https://bitcoin.org/en/download
0/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttps://bitcoin.org/en/download
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

41存在风险 · 占总体的 16%

安全态势

41存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
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
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
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
4.5/7.5Signed-Releases — 4 out of the last 5 releases have a total of 4 signed artifacts.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.1
已排除计分(无数据或不适用):ci_tests, packaging。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

57中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 91 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.91
agent_instruction_files
agent_instruction_max_bytes
评分方式
18/18一条命令的引导启动 — depends/Makefile
22/22自动化测试
0/11Lint / 格式化配置
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可控的文件大小 — 采样的 1,940 个源文件中有 123 个超过 60KB
所用输入
primary_languageC++
largest_source_bytes2,409,168
source_files_sampled1,940
oversized_source_files123

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — example, examples
所用输入
example_dirsexample, examples
has_mcp_signal
api_schema_files

关键数据

42GitHub 星标
100贡献者
186最近 12 个月提交数
4距最近推送天数
100发布版本数
5巴士系数(bus factor)
0开放议题
软件包生态系统数

数据采集警告

  • 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

更多细节

Star 与 Fork 历史 0 ★ / 11 ⇿
0Star
11Fork
100发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

0246810121112018-092022-052026-01
主版本 0次版本 2修订 5

每个点涵盖 7 天。

OpenSSF Scorecard 4.1 / 10
4.1综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-26 17:18 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用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
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
6Signed-Releases4 out of the last 5 releases have a total of 4 signed artifacts.
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": 334909,
      "has_wiki": false,
      "homepage": "https://bitcoin.org/en/download",
      "languages": {
        "C": 2583922,
        "M4": 54491,
        "C++": 13205214,
        "Nix": 2442,
        "HTML": 21833,
        "Rust": 40266,
        "Sage": 59399,
        "CMake": 253987,
        "Shell": 182971,
        "Python": 3924161,
        "Scheme": 23773,
        "Assembly": 28405,
        "Makefile": 107974,
        "Dockerfile": 4897,
        "Cap'n Proto": 12588,
        "Objective-C++": 5497
      },
      "pushed_at": "2026-07-21T22:03:00Z",
      "created_at": "2015-10-27T00:20:28Z",
      "owner_type": "User",
      "updated_at": "2026-07-08T18:28:13Z",
      "description": "Bitcoin Core integration/staging tree",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "C++",
      "significant_languages": [
        "C++",
        "Python",
        "C"
      ]
    },
    "owner": {
      "blog": "achow101.com",
      "name": "Ava Chow",
      "type": "User",
      "login": "achow101",
      "company": null,
      "location": null,
      "followers": 1783,
      "avatar_url": "https://avatars.githubusercontent.com/u/3782274?v=4",
      "created_at": "2013-03-06T01:36:16Z",
      "is_verified": null,
      "public_repos": 111,
      "account_age_days": 4890
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v29.2",
          "kind": "other",
          "published_at": "2025-10-11T05:38:34Z"
        },
        {
          "tag": "v30.0",
          "kind": "other",
          "published_at": "2025-10-11T04:48:42Z"
        },
        {
          "tag": "v30.0rc3",
          "kind": "other",
          "published_at": "2025-10-11T04:39:55Z"
        },
        {
          "tag": "v29.2rc2",
          "kind": "other",
          "published_at": "2025-10-11T04:39:58Z"
        },
        {
          "tag": "v28.3rc1",
          "kind": "other",
          "published_at": "2025-10-11T04:29:21Z"
        },
        {
          "tag": "v30.0rc2",
          "kind": "other",
          "published_at": "2025-10-11T04:13:34Z"
        },
        {
          "tag": "v29.2rc1",
          "kind": "other",
          "published_at": "2025-10-11T04:04:44Z"
        },
        {
          "tag": "v30.0rc1",
          "kind": "other",
          "published_at": "2025-10-11T03:59:41Z"
        },
        {
          "tag": "v29.1",
          "kind": "other",
          "published_at": "2025-10-11T03:55:35Z"
        },
        {
          "tag": "v29.1rc2",
          "kind": "other",
          "published_at": "2025-10-11T03:43:05Z"
        },
        {
          "tag": "v29.1rc1",
          "kind": "other",
          "published_at": "2025-10-11T03:52:56Z"
        },
        {
          "tag": "v28.2",
          "kind": "other",
          "published_at": "2025-07-16T02:34:40Z"
        },
        {
          "tag": "v28.2rc2",
          "kind": "other",
          "published_at": "2025-07-16T02:32:49Z"
        },
        {
          "tag": "v28.2rc1",
          "kind": "other",
          "published_at": "2025-07-16T02:30:34Z"
        },
        {
          "tag": "v29.0",
          "kind": "other",
          "published_at": "2025-07-16T02:29:42Z"
        },
        {
          "tag": "v29.0rc3",
          "kind": "other",
          "published_at": "2025-07-16T02:28:42Z"
        },
        {
          "tag": "v29.0rc2",
          "kind": "other",
          "published_at": "2025-07-16T02:27:46Z"
        },
        {
          "tag": "v29.0rc1",
          "kind": "other",
          "published_at": "2025-07-16T02:26:42Z"
        },
        {
          "tag": "v28.1",
          "kind": "other",
          "published_at": "2025-07-16T02:25:23Z"
        },
        {
          "tag": "v28.1rc2",
          "kind": "other",
          "published_at": "2025-07-16T02:23:58Z"
        },
        {
          "tag": "v28.1rc1",
          "kind": "other",
          "published_at": "2025-07-16T02:22:58Z"
        },
        {
          "tag": "v27.2",
          "kind": "other",
          "published_at": "2025-07-16T02:21:01Z"
        },
        {
          "tag": "v27.2rc1",
          "kind": "other",
          "published_at": "2025-07-16T02:15:54Z"
        },
        {
          "tag": "v28.0",
          "kind": "other",
          "published_at": "2025-07-16T02:15:29Z"
        },
        {
          "tag": "v28.0rc2",
          "kind": "other",
          "published_at": "2025-07-16T02:13:06Z"
        },
        {
          "tag": "v28.0rc1",
          "kind": "other",
          "published_at": "2025-07-16T02:11:47Z"
        },
        {
          "tag": "v26.2",
          "kind": "other",
          "published_at": "2025-07-16T02:07:07Z"
        },
        {
          "tag": "v26.2rc1",
          "kind": "other",
          "published_at": "2024-06-17T18:55:46Z"
        },
        {
          "tag": "v27.1",
          "kind": "other",
          "published_at": "2024-06-17T18:55:36Z"
        },
        {
          "tag": "v27.1rc1",
          "kind": "other",
          "published_at": "2024-06-17T18:55:32Z"
        },
        {
          "tag": "v27.0",
          "kind": "other",
          "published_at": "2024-06-17T18:55:26Z"
        },
        {
          "tag": "v25.2",
          "kind": "other",
          "published_at": "2024-06-17T18:09:30Z"
        },
        {
          "tag": "v26.1",
          "kind": "other",
          "published_at": "2024-04-01T23:55:14Z"
        },
        {
          "tag": "v25.2rc2",
          "kind": "other",
          "published_at": "2024-04-01T23:55:09Z"
        },
        {
          "tag": "v26.1rc2",
          "kind": "other",
          "published_at": "2024-04-01T23:55:06Z"
        },
        {
          "tag": "v27.0rc1",
          "kind": "other",
          "published_at": "2024-04-01T23:55:03Z"
        },
        {
          "tag": "v25.2rc1",
          "kind": "other",
          "published_at": "2024-04-01T23:54:58Z"
        },
        {
          "tag": "v26.1rc1",
          "kind": "other",
          "published_at": "2024-04-01T23:54:54Z"
        },
        {
          "tag": "v26.0",
          "kind": "other",
          "published_at": "2023-12-05T20:59:38Z"
        },
        {
          "tag": "v26.0rc3",
          "kind": "other",
          "published_at": "2023-12-05T20:59:34Z"
        },
        {
          "tag": "v26.0rc2",
          "kind": "other",
          "published_at": "2023-11-01T17:22:33Z"
        },
        {
          "tag": "v26.0rc1",
          "kind": "other",
          "published_at": "2023-11-01T16:36:39Z"
        },
        {
          "tag": "v24.2",
          "kind": "other",
          "published_at": "2023-11-01T16:36:35Z"
        },
        {
          "tag": "v25.1",
          "kind": "other",
          "published_at": "2023-10-17T21:17:45Z"
        },
        {
          "tag": "v24.2rc1",
          "kind": "other",
          "published_at": "2023-10-17T21:17:38Z"
        },
        {
          "tag": "v25.1rc1",
          "kind": "other",
          "published_at": "2023-10-17T21:17:52Z"
        },
        {
          "tag": "v25.0",
          "kind": "other",
          "published_at": "2023-06-27T05:25:57Z"
        },
        {
          "tag": "v23.2",
          "kind": "other",
          "published_at": "2023-06-27T02:41:24Z"
        },
        {
          "tag": "v24.1",
          "kind": "other",
          "published_at": "2023-06-27T05:25:54Z"
        },
        {
          "tag": "v23.2rc1",
          "kind": "other",
          "published_at": "2023-06-27T02:41:33Z"
        },
        {
          "tag": "v25.0rc2",
          "kind": "other",
          "published_at": "2023-06-27T03:38:07Z"
        },
        {
          "tag": "v24.1rc3",
          "kind": "other",
          "published_at": "2023-06-27T03:38:04Z"
        },
        {
          "tag": "v25.0rc1",
          "kind": "other",
          "published_at": "2023-06-27T03:38:02Z"
        },
        {
          "tag": "v24.1rc2",
          "kind": "other",
          "published_at": "2023-06-27T03:38:00Z"
        },
        {
          "tag": "v24.1rc1",
          "kind": "other",
          "published_at": "2023-06-27T03:37:57Z"
        },
        {
          "tag": "v23.1",
          "kind": "other",
          "published_at": "2022-12-20T20:37:54Z"
        },
        {
          "tag": "v24.0.1",
          "kind": "patch",
          "published_at": "2022-12-12T04:40:30Z"
        },
        {
          "tag": "v22.1",
          "kind": "other",
          "published_at": "2022-12-12T04:40:25Z"
        },
        {
          "tag": "v22.1rc2",
          "kind": "other",
          "published_at": "2022-12-03T23:24:16Z"
        },
        {
          "tag": "v23.1rc2",
          "kind": "other",
          "published_at": "2022-12-03T23:24:20Z"
        },
        {
          "tag": "v24.0",
          "kind": "other",
          "published_at": "2022-12-03T23:31:34Z"
        },
        {
          "tag": "v24.0rc4",
          "kind": "other",
          "published_at": "2022-11-09T18:38:01Z"
        },
        {
          "tag": "v23.1rc1",
          "kind": "other",
          "published_at": "2022-11-09T18:37:58Z"
        },
        {
          "tag": "v22.1rc1",
          "kind": "other",
          "published_at": "2022-11-09T18:37:28Z"
        },
        {
          "tag": "v24.0rc3",
          "kind": "other",
          "published_at": "2022-11-02T16:49:08Z"
        },
        {
          "tag": "v24.0rc2",
          "kind": "other",
          "published_at": "2022-11-02T16:49:05Z"
        },
        {
          "tag": "v24.0rc1",
          "kind": "other",
          "published_at": "2022-11-02T16:49:02Z"
        },
        {
          "tag": "v23.0",
          "kind": "other",
          "published_at": "2022-04-22T16:59:00Z"
        },
        {
          "tag": "v23.0rc5",
          "kind": "other",
          "published_at": "2022-04-22T16:58:57Z"
        },
        {
          "tag": "v23.0rc4",
          "kind": "other",
          "published_at": "2022-04-22T16:58:55Z"
        },
        {
          "tag": "v23.0rc3",
          "kind": "other",
          "published_at": "2022-04-22T16:58:52Z"
        },
        {
          "tag": "v23.0rc2",
          "kind": "other",
          "published_at": "2022-03-20T17:44:10Z"
        },
        {
          "tag": "v23.0rc1",
          "kind": "other",
          "published_at": "2022-03-20T17:38:02Z"
        },
        {
          "tag": "v0.21.2",
          "kind": "patch",
          "published_at": "2021-09-26T17:45:10Z"
        },
        {
          "tag": "v22.0",
          "kind": "other",
          "published_at": "2021-09-09T19:59:52Z"
        },
        {
          "tag": "v0.20.2rc3",
          "kind": "other",
          "published_at": "2021-09-09T18:53:02Z"
        },
        {
          "tag": "v0.21.2rc2",
          "kind": "other",
          "published_at": "2021-09-09T18:51:07Z"
        },
        {
          "tag": "v22.0rc3",
          "kind": "other",
          "published_at": "2021-09-09T18:48:25Z"
        },
        {
          "tag": "v0.21.2rc1",
          "kind": "other",
          "published_at": "2021-08-13T21:13:56Z"
        },
        {
          "tag": "v22.0rc2",
          "kind": "other",
          "published_at": "2021-08-04T17:24:28Z"
        },
        {
          "tag": "v22.0rc1",
          "kind": "other",
          "published_at": "2021-07-20T19:29:52Z"
        },
        {
          "tag": "v0.20.2rc2",
          "kind": "other",
          "published_at": "2021-07-01T20:21:39Z"
        },
        {
          "tag": "v21.99-guixtest1",
          "kind": "other",
          "published_at": "2021-05-28T19:39:32Z"
        },
        {
          "tag": "pr21239-ee0a67c32a88",
          "kind": "other",
          "published_at": "2021-05-17T21:09:11Z"
        },
        {
          "tag": "v0.21.1",
          "kind": "patch",
          "published_at": "2021-05-28T19:10:38Z"
        },
        {
          "tag": "v0.21.1rc1",
          "kind": "other",
          "published_at": "2021-04-16T21:29:20Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2021-01-15T21:00:41Z"
        },
        {
          "tag": "v0.19.2",
          "kind": "patch",
          "published_at": "2021-01-15T20:59:00Z"
        },
        {
          "tag": "v0.21.0rc5",
          "kind": "other",
          "published_at": "2021-01-05T19:40:48Z"
        },
        {
          "tag": "v0.21.0rc4",
          "kind": "other",
          "published_at": "2021-01-04T17:02:52Z"
        },
        {
          "tag": "v0.20.2rc1",
          "kind": "other",
          "published_at": "2020-12-24T21:05:47Z"
        },
        {
          "tag": "v0.19.2rc1",
          "kind": "other",
          "published_at": "2020-12-24T21:06:39Z"
        },
        {
          "tag": "v0.21.0rc3",
          "kind": "other",
          "published_at": "2020-12-11T18:16:57Z"
        },
        {
          "tag": "v0.21.0rc2",
          "kind": "other",
          "published_at": "2020-11-25T18:40:30Z"
        },
        {
          "tag": "v0.21.0rc1",
          "kind": "other",
          "published_at": "2020-11-20T05:34:15Z"
        },
        {
          "tag": "v0.20.1",
          "kind": "patch",
          "published_at": "2020-07-31T19:34:18Z"
        },
        {
          "tag": "v0.20.1rc1",
          "kind": "other",
          "published_at": "2020-07-31T18:03:51Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2020-06-02T17:30:20Z"
        },
        {
          "tag": "v0.20.0rc2",
          "kind": "other",
          "published_at": "2020-06-02T17:30:18Z"
        },
        {
          "tag": "v0.20.0rc1",
          "kind": "other",
          "published_at": "2020-04-12T18:21:15Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6ca6f3b37b992591726bd13b494369bee3bd6468",
          "body": "…ild issues\n\ndd68d0f40b614474f24469fbe1ba02f8f9146b31 Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54 (Ryan Ofsky)\n\nPull request description:\n\n  Includes:\n\n  - https://github.com/bitcoin-core/libmultiprocess/pull/193\n  - https://github.com/bitcoin-core/libmultiprocess/pul\n[…]\nunrelated to its changes and can be addressed separately.\n\nTree-SHA512: 3d03693d269c04d9ed10e8dd03e8059062929f37616d974c6fdf346ee62737c990ec550e013575e7474bfa4efcead3938bf9b259d62c073d76e720ebafe4ff66",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33241: Update libmultiprocess subtree to fix bu…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-25T21:11:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9703b7e6d563ea58f83a6eca819562365404f4ab",
          "body": "…ON macros\n\n46ca7712cb5fcf759cfc9f4f32d74215c8c83763 threading: remove unused template instantiations (Cory Fields)\nb537a6a6dbd3b2a6725ccfafd57c9cc50cd617b0 threading: remove obsolete critsect macros (Cory Fields)\n0d0e0a39b4a58fc48d2f0107e8c08bece58130bc threading: use a reverse lock rather than man\n[…]\n furszy:\n    ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763\n\nTree-SHA512: 5e423c8539ed5ddd784f5c3657bbd63be509d54942c25149f04e3764bcdf897bebf655553338d5af7b8c4f546fc1d4dd4176c2bce6f4683e76ae4bb91ba2ec80",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32592: threading: remove ancient CRITICAL_SECTI…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-23T16:18:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "323b3fd27283282f2f8eb1096f56f23d8230f2d6",
          "body": "…ee-3",
          "is_bot": false,
          "headline": "Merge commit 'dd68d0f40b614474f24469fbe1ba02f8f9146b31' into pr/subtr…",
          "author_name": "Ryan Ofsky",
          "author_login": "ryanofsky",
          "committed_at": "2025-08-22T21:15:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd68d0f40b614474f24469fbe1ba02f8f9146b31",
          "body": "…6f1e54\n\n1b8d4a6f1e54 Merge bitcoin-core/libmultiprocess#194: mpgen: Work around c++20 / capnproto 0.8 incompatibility\nf1fad396bf5f Merge bitcoin-core/libmultiprocess#195: ci: Add openbsd\need42f210d17 ci: Bump all tasks to actions/checkout@v5\n486a510bbeff ci: Remove ancient and problematic -lstdc++f\n[…]\naround c++20 / capnproto 0.8 incompatibility\n30930dff7b06 build: require CapnProto 0.7.0 or better\n\ngit-subtree-dir: src/ipc/libmultiprocess\ngit-subtree-split: 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d",
          "is_bot": false,
          "headline": "Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a…",
          "author_name": "Ryan Ofsky",
          "author_login": "ryanofsky",
          "committed_at": "2025-08-22T21:15:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "73220fc0f958f9b65f66cf0cf042af220b312fc6",
          "body": "…Rewind\n\na602f6fb7bf5f9e57299f4d6e246c82379fad8d2 test: index with an unclean restart after a reorg (Martin Zumsande)\n01b95ac6f496e24e525b2fc9d69ee8b543da65ff index: don't commit state in BaseIndex::Rewind (Martin Zumsande)\n\nPull request description:\n\n  The committed state of an index should never b\n[…]\nes-v:\n    re-ACK a602f6fb7bf5f9e57299f4d6e246c82379fad8d2\n\nTree-SHA512: 2559ea3fe066caf746a54ad7daac5031332f3976848e937c3dc8b35fa2ce925674115d8742458bf3703b3916f04f851c26523b6b94aeb1da651ba5a1b167a419",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33212: index: Don't commit state in BaseIndex::…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-22T14:51:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "46ca7712cb5fcf759cfc9f4f32d74215c8c83763",
          "body": "These were only required for the ENTER_CRITICAL_SECTION macro.",
          "is_bot": false,
          "headline": "threading: remove unused template instantiations",
          "author_name": "Cory Fields",
          "author_login": "theuni",
          "committed_at": "2025-08-22T14:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b537a6a6dbd3b2a6725ccfafd57c9cc50cd617b0",
          "body": null,
          "is_bot": false,
          "headline": "threading: remove obsolete critsect macros",
          "author_name": "Cory Fields",
          "author_login": "theuni",
          "committed_at": "2025-08-22T14:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d0e0a39b4a58fc48d2f0107e8c08bece58130bc",
          "body": "No functional change.",
          "is_bot": false,
          "headline": "threading: use a reverse lock rather than manual critsect macros",
          "author_name": "Cory Fields",
          "author_login": "theuni",
          "committed_at": "2025-08-22T14:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ddd554d318110e8270498760340854929c59405",
          "body": "… annotations",
          "is_bot": false,
          "headline": "tests: Add Assertions in reverse_lock tests to exercise thread-safety…",
          "author_name": "Cory Fields",
          "author_login": "theuni",
          "committed_at": "2025-08-22T14:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c88b1cbf57a333261dbb8cf2eae91cf76e056d96",
          "body": null,
          "is_bot": false,
          "headline": "tests: get rid of remaining manual critsect usage",
          "author_name": "Cory Fields",
          "author_login": "theuni",
          "committed_at": "2025-08-22T14:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c223de2af7203c9b15af6da24dd8cb09380ef99",
          "body": "…name\n\n1c3db0ed8e6f51d66facf4820a9225f6c617ac53 doc: use new block_to_connect parameter name (stickies-v)\n\nPull request description:\n\n  The parameter name was previously changed from `pblock` to `block_to_connect` in 9ba1fff29e4794615c599e59ef453848a9bdb880, without updating the documentation.\n\n  Ad\n[…]\nl/33237/commits/1c3db0ed8e6f51d66facf4820a9225f6c617ac53)\n\nTree-SHA512: 8b12243f1d9e5586e487dd705dc5b40ff12025bb5539eb4195f7fde4df38a9fe8eb0a9570a72f9463a2420f7307358409804fcb23bb73e32ff691ac4ef5bc35a",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33237: doc: use new block_to_connect parameter …",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-22T13:13:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "02f6758e0ce8a91fefbfa98500d47a4d660979c2",
          "body": "…i} to release binaries for IPC\"\n\nde65c86572c5ca96e388a444aae9aa73bbd8860a doc: capnproto instruction for Alpine and Arch (Sjors Provoost)\n49d1a1a3630685e0caf2e42e5152940aa8733de4 doc: add capnproto-devel to Fedora build instruction (Sjors Provoost)\neab5518913a63c6a7cf2a226081dfde47c2a66c8 doc: mark\n[…]\nnb84:\n    re ACK de65c86572c5ca96e388a444aae9aa73bbd8860a\n\nTree-SHA512: 842d7a89ef18a8c597ca05720c41a72e67500bc93430cf2c3b074cb2f4b936f1df58b5b1e99010e1ea5c1f8a9f8875fb9c20398f915feeacecee9b2fed3cb03c",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33233: doc: follow-ups to \"Add bitcoin-{node,gu…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-22T11:46:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "682bd04462d289d268c5ae0656b3e88014441ca2",
          "body": "966666de9a6211b8748f43d682490c924e132e58 doc: Remove wrong and redundant doxygen tag (MarcoFalke)\n\nPull request description:\n\n  `param@[in]` is not a valid doxygen tag. Also, no other function in this file uses the annotations, and they are redundant with the line above, so just remove them in `feer\n[…]\nll/33236/commits/966666de9a6211b8748f43d682490c924e132e58\n\nTree-SHA512: fcb6aa75c0f03b36f3caad023854ba276e0335cf47908a77006e182633b6a68f7b7d3115ef9fb97d143ca23730def05550f970265bb1fde97594ba68e724bde9",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33236: doc: Remove wrong and redundant doxygen tag",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-22T10:27:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a9701de0c9fdabf87e3e63f879de6b7037cf7367",
          "body": "…libxcb\n\ndecc3671c88bb3acdf137c6bc46892f99319104e guix: remove libxcb-xinerama.so.0 from allowed libs (fanquake)\n3d9314f3838c3b369bb79a64479f110c35b78644 depends: remove xinerama extension from libxcb (fanquake)\n\nPull request description:\n\n  This is listed on https://doc.qt.io/qt-5.15/linux-requirem\n[…]\nebasto:\n    ACK decc3671c88bb3acdf137c6bc46892f99319104e.\n\nTree-SHA512: 4131e665a0c48a866d2a6d1d3909a19481c20cf69c19ab14de63b379f73bff5151759b63504857f5ed2e01f58b895def1b7db532323ecc353fcd11493aa45c90",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33217: depends: remove xinerama extension from …",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-22T10:06:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "78351ed083b1113091d42d3dbb173d2200fbcc4b",
          "body": "7392b8b084be14b75536887b7ff216152d0a3307 miner: clamp options instead of asserting (Pieter Wuille)\n\nPull request description:\n\n  The `BlockAssembler::ClampOptions` function currently doesn't actually clamp most of the provided settings, but asserts that some are in range. This made sense while it wa\n[…]\nies suggested, but clamping is much better than crashing.\n\nTree-SHA512: 7a1e05b68edbf57beb682ee63e27666f42af6a2b70a81874d368a2cb10d107a589e0a388658c1039330b8cc9f6048479870095a9d552ca387a250ac118c1abf2",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33222: miner: clamp options instead of asserting",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-21T20:58:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "de65c86572c5ca96e388a444aae9aa73bbd8860a",
          "body": null,
          "is_bot": false,
          "headline": "doc: capnproto instruction for Alpine and Arch",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-21T16:29:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49d1a1a3630685e0caf2e42e5152940aa8733de4",
          "body": "Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>",
          "is_bot": false,
          "headline": "doc: add capnproto-devel to Fedora build instruction",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-21T16:15:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a602f6fb7bf5f9e57299f4d6e246c82379fad8d2",
          "body": "This test fails without the previous commit.",
          "is_bot": false,
          "headline": "test: index with an unclean restart after a reorg",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2025-08-21T15:42:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01b95ac6f496e24e525b2fc9d69ee8b543da65ff",
          "body": "The committed state of an index should never\nbe ahead of the flushed chainstate. Otherwise, in the case\nof an unclean shutdown, the blocks necessary to revert\nfrom the prematurely committed state would not be\navailable, which would corrupt the coinstatsindex in particular.\nInstead, the index state will be committed with the next\nChainStateFlushed notification.",
          "is_bot": false,
          "headline": "index: don't commit state in BaseIndex::Rewind",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2025-08-21T15:41:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c3db0ed8e6f51d66facf4820a9225f6c617ac53",
          "body": "This was previously changed in 9ba1fff29e4794615c599e59ef453848a9bdb880,\nwithout updating the documentation.\n\nCo-authored-by: stringintech <stringintech@gmail.com>",
          "is_bot": false,
          "headline": "doc: use new block_to_connect parameter name",
          "author_name": "stickies-v",
          "author_login": "stickies-v",
          "committed_at": "2025-08-21T14:54:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8333aa5302902f6be929c30b3c2b4e91c6583224",
          "body": "be776a1443fdf1a72e0d363c1566d71cb0cda8b5 wallet: Remove isminetype (Ava Chow)\n009a69a616cf30217f6583e45cc049895b9e10d2 wallet: Remove ISMINE_USED (Ava Chow)\n6a7aa015747e2634fe5a4b2f7fa0d104eb75c796 wallet: Remove COutput::spendable and AvailableCoinsListUnspent (Ava Chow)\n620abe985e5150c3151192d0874\n[…]\nll/32523/commits/be776a1443fdf1a72e0d363c1566d71cb0cda8b5\n\nTree-SHA512: 689759f6a6ba20a1ae988b0c3abacb15424844f29a1ec2fcb2d1ca9d87b44ae68313e8f61d6fd310281b681144f0ade67e90fcfab807e982b52ed99441d9c987",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32523: wallet: Remove isminetypes",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-21T14:52:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eab5518913a63c6a7cf2a226081dfde47c2a66c8",
          "body": null,
          "is_bot": false,
          "headline": "doc: mark bitcoin-{node,gui} installed in files.md",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-21T13:20:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "966666de9a6211b8748f43d682490c924e132e58",
          "body": "Remove it in feerate.\n\nFix it in the other places.",
          "is_bot": false,
          "headline": "doc: Remove wrong and redundant doxygen tag",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2025-08-21T13:16:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a815d126bc90f787f7adbe8cade45cb7307429b",
          "body": null,
          "is_bot": false,
          "headline": "doc: link to capnp version bump PR",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-21T10:10:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "decc3671c88bb3acdf137c6bc46892f99319104e",
          "body": null,
          "is_bot": false,
          "headline": "guix: remove libxcb-xinerama.so.0 from allowed libs",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2025-08-20T22:04:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d9314f3838c3b369bb79a64479f110c35b78644",
          "body": "This is listed on https://doc.qt.io/qt-5.15/linux-requirements.html as\n\"recommended\", however doesn't seem to be needed, and the fact that it's\nno-longer installed by default on modern linux distros, is\nannoying/confusing for users. See:\n\nhttps://github.com/bitcoin/bitcoin/issues/30061\nhttps://bitcoin.stackexchange.com/questions/122646/libxcb-xinerama0-library-required-by-bitcoin-qt\nhttps://github.com/bitcoin/bitcoin/pull/33197\nhttps://github.com/bitcoin/bitcoin/issues/32097",
          "is_bot": false,
          "headline": "depends: remove xinerama extension from libxcb",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2025-08-20T22:04:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d9789401be4c91a9eb3c1112564a6524bdc4f70",
          "body": "…es for IPC\n\nce7d94a492e61f2a43ea315e75be607d6aa71702 doc: add release note (Sjors Provoost)\n71f29d4fa90aaeb6472b3ce9d4f4e97f85ed487b doc: update build and dependencies docs for IPC (Sjors Provoost)\n3cbf747c328f1e74641dcefdf3ab19a09d167894 cmake: set ENABLE_IPC by default (Sjors Provoost)\n32a90e1b90\n[…]\n janb84:\n    ACK ce7d94a492e61f2a43ea315e75be607d6aa71702\n\nTree-SHA512: f7ab72933854e9dfce5746cdf764944bc26eec815f97cd0aa6b54fa499c3cccb1b678861ef5c1c793de28153d46bbb6e4d1b9aa0652163b74262e2d55ec8b813",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#31802: Add bitcoin-{node,gui} to release binari…",
          "author_name": "Ryan Ofsky",
          "author_login": "ryanofsky",
          "committed_at": "2025-08-20T21:29:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "04c115dfde369ae4c4458f140efec433d9e14e56",
          "body": "…emantics\n\n1d9f1cb4bd6b119e1d56cbdd7f6ce4d4521fffa3 kernel: improve BlockChecked ownership semantics (stickies-v)\n9ba1fff29e4794615c599e59ef453848a9bdb880 kernel: refactor: ConnectTip to pass block pointer by value (stickies-v)\n\nPull request description:\n\n  Subscribers to the BlockChecked validation\n[…]\n Code Review ACK 1d9f1cb4bd6b119e1d56cbdd7f6ce4d4521fffa3\n\nTree-SHA512: 7ed0cccb7883dbb1885917ef749ab7cae5d60ee803b7e3145b2954d885e81ba8c9d5ab1edb9694ce6b308235c621094c029024eaf99f1aab1b47311c40958095",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33078: kernel: improve BlockChecked ownership s…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-20T17:45:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bc797d2271ac495d72db86ff5a39ed28bf1374c4",
          "body": "…ead hash mismatch check\n\ncb173b8e939d63821a966d0d76b299f20742c619 test: use local `CBlockIndex` in block read hash mismatch test to avoid data race (Lőrinc)\n\nPull request description:\n\n  Avoid mutating the shared active tip `CBlockIndex` in the `blockmanager_readblock_hash_mismatch` test.\n  Instead\n[…]\nko:\n    lgtm ACK cb173b8e939d63821a966d0d76b299f20742c619\n\nTree-SHA512: 790528db0659f8cc5b87ed2b316bf274af68edc6158b0ce8821baccddf8d9bc4074afcb7260e3a61d5013d24ab51cc5c31e36693b8fb5ab913a44229fd6ad36b",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33154: test: use local `CBlockIndex` in block r…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-20T16:42:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3c58a5be96dea8e48031a0ba14d88eaa82698ac",
          "body": "…eze\" step\n\n0df2c3c42e8a3ee3da4ca6c4b9b9c28060bb1fe3 qt: Update `src/qt/locale/bitcoin_en.xlf` translation source file (Hennadii Stepanov)\n\nPull request description:\n\n  This PR follows our [Release Process](https://github.com/bitcoin/bitcoin/blob/53a996f122663e271efa52c45b173613b8ac635e/doc/release-\n[…]\nnb84:\n    re ACK 0df2c3c42e8a3ee3da4ca6c4b9b9c28060bb1fe3\n\nTree-SHA512: be87c096ef99ce7148d046f30427bc1480cb72b080eb8537a4eda3dfe4e856eeaa50cf6efb9a1c6af3d15e1123ec87a07101c539c066a8d4dd6afb817cd95137",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33193: Release: Prepare \"Translation string fre…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-20T16:26:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9cf7b3d90c76fd299e156d9615e42b938ee884b2",
          "body": "… params\n\n5dda364c4b1965da586db7b81de8be90b6919414 test: modify logging_filesize_rate_limit params (Eugene Siegel)\n\nPull request description:\n\n  Change `time_window` from 20s to 1h so `Reset` is not accidentally called if the test takes a while.\n\n  Change `num_lines` from 1024 to 10 since `LogRateLi\n[…]\noegge:\n    utACK 5dda364c4b1965da586db7b81de8be90b6919414\n\nTree-SHA512: f781402a3a47abc26314ee7cdf6c74e77da9b9d0dde44ba52e3c42f6c400830147554d7875e7d1217a2a378383e56d87e9712c84e877bb448112f703b87a52b1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33211: test: modify logging_filesize_rate_limit…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-20T09:30:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be776a1443fdf1a72e0d363c1566d71cb0cda8b5",
          "body": "Since the only remaining isminetypes are ISMINE_NO and ISMINE_SPENDABLE,\nthis enum is now just a bool and can be removed. IsMine is changed to\nreturn a bool and any usage of isminetypes and isminefilters are changed\nto be the remaining ISMINE_SPENDABLE case.",
          "is_bot": false,
          "headline": "wallet: Remove isminetype",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-19T21:49:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "009a69a616cf30217f6583e45cc049895b9e10d2",
          "body": "This isminetype is not a real isminetype as it is never returned by\nIsMine. This is only used for isminefilters in one function, which can\nbe better represented with a bool parameter avoid_reuse.",
          "is_bot": false,
          "headline": "wallet: Remove ISMINE_USED",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-19T21:49:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a7aa015747e2634fe5a4b2f7fa0d104eb75c796",
          "body": "In descriptor wallets, we consider all outputs to be spendable as we no\nlonger have mixed mine and watchonly in a wallet. As such,\nCOutput::spendable is meaningless and can be removed.\n\nFurthermore, CoinFilterParams::only_spendable can be removed as that was\nessentially checking for COutput::spendable.\n\nLastly, AvailableCoinsListUnspent can also be removed as the wrapper is\nnow only setting the feerate to std::nullopt which is trivial enough that\na dedicated wrapper is not needed.",
          "is_bot": false,
          "headline": "wallet: Remove COutput::spendable and AvailableCoinsListUnspent",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-19T21:49:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7392b8b084be14b75536887b7ff216152d0a3307",
          "body": null,
          "is_bot": false,
          "headline": "miner: clamp options instead of asserting",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2025-08-19T20:52:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5f853d952542ebd45339a270a98362696877657",
          "body": "…= m_best_block_index\n\n3aef38f44b76dfda77f47dc1a0e1fdc6ff3c7766 test: exercise index reorg assertion failure (furszy)\nacf50233cdfbb336c87d95d97db90a149e131052 index: fix wrong assert of current_tip == m_best_block_index (Hao Xu)\n\nPull request description:\n\n  In BaseIndex::Sync(), pindex in `Rewind(p\n[…]\n Code Review ACK 3aef38f44b76dfda77f47dc1a0e1fdc6ff3c7766\n\nTree-SHA512: 3ef9cc6dfdec10a9f95d7414c6a11aa216e4cf5974440d80ab19fc919abd2a3bd4c875718c9dc94523c33826f8582ec5a016374deb8fb2d35cd2fb7799b5c82e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32878: index: fix wrong assert of current_tip =…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-19T19:19:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "620abe985e5150c3151192d08746b7845a69dbbf",
          "body": "The is_mine output parameter is never used by any callers.",
          "is_bot": false,
          "headline": "interfaces, gui: Remove is_mine output parameter from getAddress",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-19T17:16:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5dda364c4b1965da586db7b81de8be90b6919414",
          "body": "Change time_window from 20s to 1h so Reset is not accidentally called\nif the test takes a while.\n\nChange num_lines from 1024 to 10 since LogRateLimiter is parameterized\nand does not require logging 1MiB of data.\n\nCo-Authored-By: stickies-v <stickies-v@protonmail.com>",
          "is_bot": false,
          "headline": "test: modify logging_filesize_rate_limit params",
          "author_name": "Eugene Siegel",
          "author_login": "Crypt-iQ",
          "committed_at": "2025-08-19T14:25:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0df2c3c42e8a3ee3da4ca6c4b9b9c28060bb1fe3",
          "body": "Steps to reproduce the diff:\n```\ncmake --preset dev-mode\ncmake --build build_dev_mode --target translate\n```",
          "is_bot": false,
          "headline": "qt: Update `src/qt/locale/bitcoin_en.xlf` translation source file",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2025-08-19T13:32:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22e689587a7ae02f82ad2464017731f3b23b5363",
          "body": "3c4a109aa821cbf1e46a67275b4f456673ed13d8 cmake: Drop python dependency for translate (Daniel Pfeifer)\n\nPull request description:\n\n  Translate the `share/qt/extract_strings_qt.py` script to CMake. This removes the python dependency from the `translate` target.\n\n  Resolves #33146\n\nACKs for top commit:\n[…]\nnb84:\n    re ACK 3c4a109aa821cbf1e46a67275b4f456673ed13d8\n\nTree-SHA512: 4fda8efd4301c49eef8bf2908073475fcff3f995cf6860187f8d08821559612303b303052c1e54a01ad31703fe63aea01e999d08f5471f2c479c97de8c240605",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33209: cmake: Drop python dependency for translate",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-19T12:47:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be356fc49be4a32f790c38ca72c76e9d6fa2de3d",
          "body": "… and wallet support\n\n5c8bf7b39e9bffba7c4d5778b56b1ebe72f5ea1b doc: add release notes for version 3 transactions (ishaanam)\n4ef8065a5e3d2fe9cd3d7a71224ef2ca2e7b495a test: add truc wallet tests (ishaanam)\n5d932e14dbe41c349ab41f88088398e0ab10d335 test: extract `bulk_vout` from `bulk_tx` so it can be u\n[…]\n  rkrux:\n    ACK 5c8bf7b39e9bffba7c4d5778b56b1ebe72f5ea1b\n\nTree-SHA512: da8aea51c113e193dd0b442eff765bd6b8dc0e5066272d3e52190a223c903f48788795f32c554f268af0d2607b5b8c3985c648879cb176c65540837c05d0abb5",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32896: wallet, rpc: add v3 transaction creation…",
          "author_name": "merge-script",
          "author_login": "glozow",
          "committed_at": "2025-08-19T10:00:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3c4a109aa821cbf1e46a67275b4f456673ed13d8",
          "body": "Resolves #33146",
          "is_bot": false,
          "headline": "cmake: Drop python dependency for translate",
          "author_name": "Daniel Pfeifer",
          "author_login": "purpleKarrot",
          "committed_at": "2025-08-19T08:00:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f58de8749e94c4f6d5ab4a13d098ccfc291336c7",
          "body": "2581258ec200efb173ea6449ad09b2e7f1cc02e0 ipc: Handle bitcoin-wallet disconnections (Ryan Ofsky)\n216099591632dc8a57cc1a3b1ad08e909f8c73cc ipc: Add Ctrl-C handler for spawned subprocesses (Ryan Ofsky)\n0c28068ceb7b95885a5abb2685a89bb7c03c1689 doc: Improve IPC interface comments (Ryan Ofsky)\n7f65aac78b9\n[…]\nadmz:\n    re-ACK 2581258ec200efb173ea6449ad09b2e7f1cc02e0\n\nTree-SHA512: 0095aa22d507803e2a2d46eff51fb6caf965cc0c97ccfa615bd97805d5d51e66a5b4b040640deb92896438b1fb9f6879847124c9d0e120283287bfce37b8d748",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32345: ipc: Handle unclean shutdowns better",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-18T19:19:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d31dc8f8189e93c82dadc01df9a2dd9cfdb50bf9",
          "body": "…for translate target\n\n05255d5d1ec1852d8d8d7683ccbf28351f57b89e cmake: Drop dependency on sed for translate target (Daniel Pfeifer)\nd5054beca50f992dc63dc596f0aff457eb9d217f cmake: Introduce translate.cmake script for translate target (Daniel Pfeifer)\n\nPull request description:\n\n  Using `file(GLOB)` \n[…]\nebasto:\n    ACK 05255d5d1ec1852d8d8d7683ccbf28351f57b89e.\n\nTree-SHA512: ae55d9199e6294109b37e5e18f21f2b0e582c1f9903421cf22a237cfdbd215cc431706563b3caa03068cdba79f936b019526638fe3a1f83b4f01a72817e39be1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33200: cmake: Introduce translate.cmake script …",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2025-08-18T10:54:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05255d5d1ec1852d8d8d7683ccbf28351f57b89e",
          "body": null,
          "is_bot": false,
          "headline": "cmake: Drop dependency on sed for translate target",
          "author_name": "Daniel Pfeifer",
          "author_login": "purpleKarrot",
          "committed_at": "2025-08-18T07:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5054beca50f992dc63dc596f0aff457eb9d217f",
          "body": "Using `file(GLOB)` in the generates step is discouraged because the\nglobbing result may be out of date when the target is built.\nPerforming the globbing in a script that is executed as the build\ntarget means the result is always reproducable and the overhead\nof globbing is only paid when used.\n\nAs a follow up, the dependency on `sed` may be removed by performing\nthe replacement with cmake. Also, the logic from extract_strings_qt.py\ncan be migrated to cmake.",
          "is_bot": false,
          "headline": "cmake: Introduce translate.cmake script for translate target",
          "author_name": "Daniel Pfeifer",
          "author_login": "purpleKarrot",
          "committed_at": "2025-08-18T07:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57e8f34fe20620b3350ca1f0fa5c7d8d3a06be82",
          "body": "…l legacy related functions\n\n60d1042b9a4db8daf9fffdc29053652e99b7126e wallet: Remove unused `WalletFeature` enums (woltx)\n66de58208a713e16f0d48bceed4d7496eae4b05b wallet: Remove `CWallet::nWalletVersion` and related functions (woltx)\n7cda3d0f5bdca64b11f966a60167cde5451071a3 wallet: Remove `IsFeature\n[…]\ntin4btc:\n    ACK 60d1042b9a4db8daf9fffdc29053652e99b7126e\n\nTree-SHA512: 1a7ad8e15d57df8f66545776e7d178a2cd5312c87769a29770588375e3de5f24247aab9919acf004ed3eca16d08ba595b5f1c7b2b3eef7752e89d9c295624583",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32977: wallet: Remove wallet version and severa…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-15T23:38:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97593c1fd3e63c32243340edd0f17e2d493bd0fc",
          "body": "… state change\n\nfab2980bdc55b5c77f574f879a6ab62db5eda427 assumevalid: log every script validation state change (Lőrinc)\n\nPull request description:\n\n  The `-assumevalid` option skips script verification for a specified block and all its ancestors during Initial Block Download.\n  Many new [users are s\n[…]\nn/bitcoin/commit/fab2980bdc55b5c77f574f879a6ab62db5eda427\n\nTree-SHA512: e90b66f7423b639356daace476942ce83e65e70466544394cbe2f15738bdbf716163eaf590c64c5448f9b41aeeaafe3342c48c6a7a478678a70b0310ca94e11d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32975: assumevalid: log every script validation…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-15T20:54:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c8bf7b39e9bffba7c4d5778b56b1ebe72f5ea1b",
          "body": null,
          "is_bot": false,
          "headline": "doc: add release notes for version 3 transactions",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T15:24:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ef8065a5e3d2fe9cd3d7a71224ef2ca2e7b495a",
          "body": null,
          "is_bot": false,
          "headline": "test: add truc wallet tests",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T15:24:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d932e14dbe41c349ab41f88088398e0ab10d335",
          "body": "…tests",
          "is_bot": false,
          "headline": "test: extract `bulk_vout` from `bulk_tx` so it can be used by wallet …",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T15:24:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2cb473d9f2152e33bab2c3c626801deb7841aa20",
          "body": "Adds v3 support to the following RPCs:\n- createrawtransaction\n- createpsbt\n- send\n- sendall\n- walletcreatefundedpsbt\n\nCo-authored-by: chungeun-choi <cucuridas@gmail.com>\nCo-authored-by: dongwook-chan <dongwook.chan@gmail.com>\nCo-authored-by: sean-k1 <uhs2000@naver.com>\nCo-authored-by: ishaanam <ishaana.misra@gmail.com>",
          "is_bot": false,
          "headline": "rpc: Support version 3 transaction creation",
          "author_name": "Bue-von-hon",
          "author_login": "Bue-von-hon",
          "committed_at": "2025-08-15T15:24:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c20343b4d318be62086676e0898e56221500de1",
          "body": null,
          "is_bot": false,
          "headline": "rpc: Add transaction min standard version parameter",
          "author_name": "Bue-von-hon",
          "author_login": "Bue-von-hon",
          "committed_at": "2025-08-15T15:05:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5a2d080116270ecd0414c14eb412fa30eaaedaf",
          "body": null,
          "is_bot": false,
          "headline": "wallet: don't return utxos from multiple truc txs in AvailableCoins",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T15:05:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da8748ad626fc5813eb06244630e12c8ceb3cedf",
          "body": null,
          "is_bot": false,
          "headline": "wallet: limit v3 tx weight in coin selection",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85c54106156f5bbac87f4442a0a27f1b9187125b",
          "body": null,
          "is_bot": false,
          "headline": "wallet: mark unconfirmed v3 siblings as mempool conflicts",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0804fc3cb11089000d3b0e8bed41df0b0bf5fff1",
          "body": null,
          "is_bot": false,
          "headline": "wallet: throw error at conflicting tx versions in pre-selected inputs",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc155226fee1f5c9a40ec37f6276e45c9c42b26a",
          "body": "In future commits we assume that coin_control.m_version has a\nvalue when making sure that we follow truc rules, so we should\ngive it a default value of CTransaction::CURRENT_VERSION.",
          "is_bot": false,
          "headline": "wallet: set m_version in coin control to default value",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e9617664e70b5e586c485e7c65ce342ffd66cdf",
          "body": "…coins",
          "is_bot": false,
          "headline": " wallet: don't include unconfirmed v3 txs with children in available …",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec2676becdf488f7a1151345a019c05dec926308",
          "body": null,
          "is_bot": false,
          "headline": "wallet: unconfirmed ancestors and descendants are always truc",
          "author_name": "ishaanam",
          "author_login": "ishaanam",
          "committed_at": "2025-08-15T14:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b4a1350dfd6b3892a9c314eeff28b22ef0c1a73",
          "body": "…tion error from \"mandatory\" to \"block\"\n\nc0d91fc69c67e6f7123326d4f3caeac069d2637b Add release note for #33050 and #33183 error string changes (Antoine Poinsot)\nb3f781a0ef4b763ef7ba8b5b20871a7707ec090e contrib: adapt max reject string size in tracing demo (Antoine Poinsot)\n9a04635432183c437829339dbf1\n[…]\ntagibbs:\n    ACK c0d91fc69c67e6f7123326d4f3caeac069d2637b\n\nTree-SHA512: b463e633c57dd1eae7c49d23239a59066a672f355142ec194982eddc927a7646bc5cde583dc8d6f45075bf5cbb96dbe73f7e339e728929b0eff356b674d1b68c",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33183: validation: rename block script verifica…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-15T11:13:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c99f5c5e1b42b9fe76b859967ba59f5af9db7676",
          "body": "… incrementalrelayfee, minrelaytxfee\n\nba84a25deec0b3b9b94ee51b373e715fec995791 [doc] update mempool-replacements.md for incremental relay feerate change (glozow)\n18720bc5d5b4d3acf91060859180d72cbfdf59b7 [doc] release note for min feerate changes (glozow)\n6da5de58cabc4133c379baa50845e30e5bc6b3e4 [pol\n[…]\ndeeq:\n    re-ACK ba84a25deec0b3b9b94ee51b373e715fec995791\n\nTree-SHA512: b4c35e8b506b1184db466551a7e2e48bb1e535972a8dbcaa145ce3a8bfdcc70a8807dc129460f129a9d31024174d34077154a387c32f1a3e6831f6fa5e9c399e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33106: policy: lower the default blockmintxfee,…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-15T09:39:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "578b512bdd88be0fc69ecb5e687ddda4d1d8dcd1",
          "body": "5c74a0b397cb3db94761bad78801eed4544155b9 config: add DEBUG_ONLY -logratelimit (Eugene Siegel)\n9f3b017bcc067bba1d1682a5d4e65b5450dc10c4 test: logging_filesize_rate_limit improvements (stickies-v)\n350193e5e2efabb3eb66197b91869b946ec5428c test: don't leak log category mask across tests (stickies-v)\n05d\n[…]\n Code review ACK 5c74a0b397cb3db94761bad78801eed4544155b9\n\nTree-SHA512: d32db5fcc28bb9b2a850f0048c8062200a3725b88f1cd9a0e137da065c0cf9a5d22e5d03cb16fe75ea7494801313ab34ffec7cf3e8577cd7527e636af53591c4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33011: log: rate limiting followups",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-14T22:15:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce7d94a492e61f2a43ea315e75be607d6aa71702",
          "body": null,
          "is_bot": false,
          "headline": "doc: add release note",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T19:00:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71f29d4fa90aaeb6472b3ce9d4f4e97f85ed487b",
          "body": "OpenBSD does not have this package, so recommend building from\nsource for now.",
          "is_bot": false,
          "headline": "doc: update build and dependencies docs for IPC",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T18:59:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cbf747c328f1e74641dcefdf3ab19a09d167894",
          "body": "Install capnp on non-depends CI jobs.\n\nUse the bitcoin-node binary in the macOS native non-depends job.",
          "is_bot": false,
          "headline": "cmake: set ENABLE_IPC by default",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T18:57:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32a90e1b9017f47eecedc2c76c6d09ab4f14c401",
          "body": "The bitcoin-node binary is built on all platforms which have\nmultiprocess enabled, but for functional tests it's only used in\nCentOS native (depends) job. The next commit will also add a\nnon-depends job.",
          "is_bot": false,
          "headline": "ci: use bitcoin-node for one depends job",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T18:57:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b333cc14d50b449183ed52de012b98bcbbe1dc9c",
          "body": null,
          "is_bot": false,
          "headline": "ci: build one depends job without multiprocess",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T18:57:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16bce9ac4cd02b2c8308f370bf39d70f9421e69b",
          "body": "This causes IPC binaries (bitcoin-node, bitcoin-gui) to be included\nin releases.\n\nThe effect on CI is that this causes more depends builds to build IPC\nbinaries, but still the only build running functional tests with them\nis the i686_multiprocess one.\n\nExcept for Windows.",
          "is_bot": false,
          "headline": "build: depends makes libmultiprocess by default",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-14T18:57:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8405fdb06e8ff3220590bfac84e98547067ec6b7",
          "body": "…ed getTipLocator and incaccurate getActiveChainLocator\n\n2b00030af84efd50cfc60125db4ae49da6b7aa9a interfaces, chain, refactor: Remove inaccurate getActiveChainLocator (pablomartin4btc)\n110a0f405cd696ebfd6edce07c1b347723e84a0f interfaces, chain, refactor: Remove unused getTipLocator (pablomartin4btc)\n[…]\nll/33169/commits/2b00030af84efd50cfc60125db4ae49da6b7aa9a\n\nTree-SHA512: b12ba6a15feeaeec692d69204a6e155e3af43edfac25597dabf14cacca1e4a2152574816e58dc544f39043c5721f5e707acf544f4541d3b9c0f8c0c40069215e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33169: interfaces, chain, refactor: Remove unus…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-14T18:30:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0d91fc69c67e6f7123326d4f3caeac069d2637b",
          "body": null,
          "is_bot": false,
          "headline": "Add release note for #33050 and #33183 error string changes",
          "author_name": "Antoine Poinsot",
          "author_login": "darosior",
          "committed_at": "2025-08-14T18:11:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e17b5da0d6d13485155c36e8d7c34ee72de8c98a",
          "body": "67e186deb01749ec6a3691d0b763bdc89ab2328f doc: update wallet build instruction (Sjors Provoost)\n\nPull request description:\n\n  Sqlite and the wallet are no longer optional, but they can still be opted out of. This PR updates the build instructions accordingly.\n\n  Updating this text now reduces churn i\n[…]\n janb84:\n    ACK 67e186deb01749ec6a3691d0b763bdc89ab2328f\n\nTree-SHA512: ea87a83c9fcb884f9ca380a006a93ede3cd1af5eb2bb5ccb54fc8124faa532e9473ae2461d775439da59e86178fbd04983113b43ce3d4c382cabe27866acd027",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33179: doc: update wallet build instruction",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-14T18:06:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b1a7c3e8dd78d97fbf47c2d056d043b05969176",
          "body": "de0675f9de5feae1f070840ad7218b1378fb880b refactor: Move `transaction_identifier.h` to primitives (marcofleon)\n6f068f65de17951dc459bc8637e5de15b84ca445 Remove implicit uint256 conversion and comparison (marcofleon)\n9c24cda72edb2085edfa75296d6b42fab34433d9 refactor: Convert remaining instances from ui\n[…]\n Code-review ACK de0675f9de5feae1f070840ad7218b1378fb880b\n\nTree-SHA512: 2413160fca7ab146a8d79d18ce3afcf7384cacc73c513d41928904aa453b4dd7a350064cee71e9c5d015da5904c7c81ac17603e50a47441ebc5b0c653235dd08",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33116: refactor: Convert uint256 to Txid",
          "author_name": "merge-script",
          "author_login": "glozow",
          "committed_at": "2025-08-13T18:50:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3f781a0ef4b763ef7ba8b5b20871a7707ec090e",
          "body": "The Script errors were last touched in 2020. This value was calculated after that\nin 2022 (commit 4b7aec2951fe4595946cdc804b0dec1921d79d05). The previous commit\nmade the size of the largest reject reason string 4 characters smaller (\"mandatory\"\nbecame \"block\"), so adapt the constant.",
          "is_bot": false,
          "headline": "contrib: adapt max reject string size in tracing demo",
          "author_name": "Antoine Poinsot",
          "author_login": "darosior",
          "committed_at": "2025-08-13T15:06:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a04635432183c437829339dbf10e7d702581010",
          "body": "Using \"block\" or \"mempool\" as the prefix in place of \"mandatory\" or \"non-mandatory\" is clearer\nto a user. \"non-mandatory\" was renamed into \"mempool\" as part of #33050. This takes care of the\nother half of this renaming as a scripted diff.\n\n-BEGIN VERIFY SCRIPT-\nsed -i 's/mandatory-script-verify/block-script-verify/g' $(git grep -l mandatory-script-verify)\n-END VERIFY SCRIPT-",
          "is_bot": false,
          "headline": "scripted-diff: validation: rename mandatory errors into block errors",
          "author_name": "Antoine Poinsot",
          "author_login": "darosior",
          "committed_at": "2025-08-13T15:05:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbf8b0980b93b7c6ca0e7ade7070523e3cf0bde2",
          "body": "f83c01d8824e66a7aeb987911332a06689a06d59 ci: Update `actions/checkout` version (Hennadii Stepanov)\n\nPull request description:\n\n  See: https://github.com/actions/checkout/releases/tag/v5.0.0.\n\nACKs for top commit:\n  bc1cindy:\n    ACK f83c01d8\n  pablomartin4btc:\n    ACK f83c01d8824e66a7aeb987911332a06\n[…]\n janb84:\n    ACK f83c01d8824e66a7aeb987911332a06689a06d59\n\nTree-SHA512: 491652abcb99f6e5c9a7bc66867c5e5fc7032d35d091cdbef5cdf7ed125bd93e612c058a771373e4a67ddc320b3bb8e22a6294aeade73df0f24b5584df8e47ab",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33171: ci: Update `actions/checkout` version",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-13T09:51:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d6887f0cec9098be5ec8a9cb14e71f1805a7ec3e",
          "body": "… GCC to 7\n\n776a163374168dd96a9ad7c2ff9666d838477dfa guix: increase maximum allowed (runtime) GCC to 7 (fanquake)\n\nPull request description:\n\n  Fixes:\n  ```bash\n  /distsrc-base/distsrc-d3b8a54a8120-x86_64-linux-gnu/build/bin/bitcoind: symbol __divmodti4 from unsupported version GCC_7.0.0(14)\n  /dist\n[…]\nebasto:\n    ACK 776a163374168dd96a9ad7c2ff9666d838477dfa.\n\nTree-SHA512: 8e5a77c509eb6164314fdb644ea199916e151eb0c7f48703f3a2bdedf0dea29b7f402ceacb2aaf42ebffba59080cefbb84253b2721047d973a851090447ba3b5",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33178: guix: increase maximum allowed (runtime)…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2025-08-13T08:14:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2b00030af84efd50cfc60125db4ae49da6b7aa9a",
          "body": "The getActiveChainLocator method name was misleading, and its functionality\nduplicated `Chain::findBlock`. This commit removes the method and replaces\nall its usages with direct `Chain::findBlock` calls.\n\nAdditionally, the comment of getActiveChainLocator has been outdated since\ncommit ed47094 from \n[…]\nransactions, the findBlock calls are now\nunified into a single call at the start of the function.\n\nCo-authored-by: Ryan Ofsky <ryan@ofsky.org>\nCo-authored-by: Matias Furszyfer <mfurszy@protonmail.com>",
          "is_bot": false,
          "headline": "interfaces, chain, refactor: Remove inaccurate getActiveChainLocator",
          "author_name": "pablomartin4btc",
          "author_login": "pablomartin4btc",
          "committed_at": "2025-08-13T03:21:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "110a0f405cd696ebfd6edce07c1b347723e84a0f",
          "body": "Also removed CChain::GetLocator() and replaced its call\nwith GetLocator() which uses LocatorEntries instead.\n\nCo-authored-by: ryanofsky <ryan@ofsky.org>\nCo-authored-by: l0rinc <l0rinc@users.noreply.github.com>",
          "is_bot": false,
          "headline": "interfaces, chain, refactor: Remove unused getTipLocator",
          "author_name": "pablomartin4btc",
          "author_login": "pablomartin4btc",
          "committed_at": "2025-08-13T03:08:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dadf15f88cbad37538d85415ae5da12d4f0f1721",
          "body": "…consensus-invalid txs\n\n876dbdfb4702410dfd4037614dc9298a0c09c63e tests: drop expect_disconnect behaviour for tx relay (Anthony Towns)\nb29ae9efdfeeff774e32ee433ce67d8ed8ecd49f validation: only check input scripts once (Anthony Towns)\n266dd0e10d08c0bfde63205db15d6c210a021b90 net_processing: drop Maybe\n[…]\n glozow:\n    ACK 876dbdfb4702410dfd4037614dc9298a0c09c63e\n\nTree-SHA512: 8bb0395766dde54fc48f7077b80b88e35581aa6e3054d6d65735965147abefffa7348f0850bb3d46f6c2541fd384ecd40a00a57fa653adabff8a35582e2d1811",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33050: net, validation: don't punish peers for …",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-12T21:35:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb173b8e939d63821a966d0d76b299f20742c619",
          "body": "…id data race\n\nCo-authored-by: stickies-v <stickies-v@protonmail.com>",
          "is_bot": false,
          "headline": "test: use local `CBlockIndex` in block read hash mismatch test to avo…",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2025-08-12T18:34:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73972d56176a8d35de88482f71c612373da7d7a8",
          "body": "…g in progress messages\n\ndb225cea56b0531cc42d4b89dc61b02890f432ff wallet, refactor: Replace GetDisplayName() with LogName() (Ryan Ofsky)\n01737883b3ff8051253c961b7dde50d055104ef9 wallet: Translate [default wallet] string in progress messages (Ryan Ofsky)\n\nPull request description:\n\n  Noticed while re\n[…]\nurszy:\n    utACK db225cea56b0531cc42d4b89dc61b02890f432ff\n\nTree-SHA512: 3e76e22ee692a7403d61c66615f56d0fa5f7883dd47553bcaec2f9ffd942daaa90ceb61830206bece50da53dcd737b6438c36bcb086030b2deb68c44172f3931",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#31296: wallet: Translate [default wallet] strin…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-12T18:33:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "67e186deb01749ec6a3691d0b763bdc89ab2328f",
          "body": "Sqlite is expected to be installed, but can still be opted out of.",
          "is_bot": false,
          "headline": "doc: update wallet build instruction",
          "author_name": "Sjors Provoost",
          "author_login": "Sjors",
          "committed_at": "2025-08-12T17:39:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c74a0b397cb3db94761bad78801eed4544155b9",
          "body": "Use -nologratelimit by default in functional tests if the bitcoind\nversion supports it.\n\nCo-Authored-By: stickies-v <stickies-v@protonmail.com>",
          "is_bot": false,
          "headline": "config: add DEBUG_ONLY -logratelimit",
          "author_name": "Eugene Siegel",
          "author_login": "Crypt-iQ",
          "committed_at": "2025-08-12T15:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f3b017bcc067bba1d1682a5d4e65b5450dc10c4",
          "body": "- Add helper functions and structs to improve readability and\n  reusability of test code\n- Make tests more specific by comparing all produced log lines with\n  expected log lines instead of relying on approximations or proxies.",
          "is_bot": false,
          "headline": "test: logging_filesize_rate_limit improvements",
          "author_name": "stickies-v",
          "author_login": "stickies-v",
          "committed_at": "2025-08-12T15:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "350193e5e2efabb3eb66197b91869b946ec5428c",
          "body": "This ensures log tests behave consistently when other tests modify\nthe log category mask.",
          "is_bot": false,
          "headline": "test: don't leak log category mask across tests",
          "author_name": "stickies-v",
          "author_login": "stickies-v",
          "committed_at": "2025-08-12T15:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05d7c22479bf96bab9f8c8b8fa90368429ad2c88",
          "body": "Deduplicates repeated usage of the same functionality.",
          "is_bot": false,
          "headline": "test: add ReadDebugLogLines helper function",
          "author_name": "stickies-v",
          "author_login": "stickies-v",
          "committed_at": "2025-08-12T15:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d630c2544e19480268426cda245796d4ce34ac3",
          "body": "This allows us to safely and explicitly manage the dual dependency\non the limiter: one for the Logger, and one for the CScheduler.",
          "is_bot": false,
          "headline": "log: make m_limiter a shared_ptr",
          "author_name": "stickies-v",
          "author_login": "stickies-v",
          "committed_at": "2025-08-12T15:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec484bd5ce437bde29f35a77d23c771468828e25",
          "body": "…n MacOS\n\ndb3228042b2278faf7713a6ed40cdbf8e62b8fd4 util: detect and warn when using exFAT on macOS (willcl-ark)\n\nPull request description:\n\n  exFAT is known to cause intermittent corruption on MacOS.\n\n  Therefore we should warn when using this fs format for either the blocks or data directories.\n\n  \n[…]\nadeeq:\n    reACK db3228042b2278faf7713a6ed40cdbf8e62b8fd4\n\nTree-SHA512: e4453a8e24b35c135e4eb0b4e47fe0c80f8b54700f458909c403aa37a0d2979ee165347bcd76e48e4d1ae5d3bae13f50e6afe714e33226a52f907b95df9d3b46",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#31453: util: detect and warn when using exFAT o…",
          "author_name": "merge-script",
          "author_login": "glozow",
          "committed_at": "2025-08-12T14:23:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "776a163374168dd96a9ad7c2ff9666d838477dfa",
          "body": "Fixes:\n```bash\n/distsrc-base/distsrc-d3b8a54a8120-x86_64-linux-gnu/build/bin/bitcoind: symbol __divmodti4 from unsupported version GCC_7.0.0(14)\n/distsrc-base/distsrc-d3b8a54a8120-x86_64-linux-gnu/build/bin/bitcoind: failed IMPORTED_SYMBOLS\n```\n\nwhich is occuring after #32750. I can't see any supported distro that is\nshipping a new enough glibc (2.31), but a GCC older than 7.0.",
          "is_bot": false,
          "headline": "guix: increase maximum allowed (runtime) GCC to 7",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2025-08-12T13:45:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba84a25deec0b3b9b94ee51b373e715fec995791",
          "body": "…ange",
          "is_bot": false,
          "headline": "[doc] update mempool-replacements.md for incremental relay feerate ch…",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-12T13:22:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "273e600e65c2e31a6e9a0bd72b40672aaa503b08",
          "body": "…t `GetCoinsCacheSizeState` switches from OK→LARGE→CRITICAL\n\n554befd8738ea993b3b555e7366558a9c32c915c test: revive `getcoinscachesizestate` (Lőrinc)\n64ed0fa6b7a2b637f236c3abf2f045adf6a067cf refactor: modernize `LargeCoinsCacheThreshold` (Lőrinc)\n1b40dc02a6a292239037ac5a44e0d0c9506d5fa2 refactor: ext\n[…]\nll/33021/commits/554befd8738ea993b3b555e7366558a9c32c915c\n\nTree-SHA512: f5057254de8fb3fa627dd20fee6818cfadeb2e9f629f9972059ad7b32e01fcd7dc9922eff9da2d363b36a9f0954d9bc1c4131d47b2a9c6cc348d9864953b91be",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33021: test/refactor: revive test verifying tha…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2025-08-11T22:15:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18720bc5d5b4d3acf91060859180d72cbfdf59b7",
          "body": null,
          "is_bot": false,
          "headline": "[doc] release note for min feerate changes",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T21:08:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6da5de58cabc4133c379baa50845e30e5bc6b3e4",
          "body": "…t/kvB\n\nLet's say an attacker wants to use/exhaust the network's bandwidth, and\nhas the choice between renting resources from a commercial provider and\ngetting the network to \"spam\" itself it by sending unconfirmed\ntransactions. We'd like the latter to be more expensive than the former.\n\nThe bandwid\n[…]\n transaction should pay at least $0.04.\n\nAt a price of 120k USD/BTC, 100sat is about $0.12. This price allows us\nto tolerate a large decrease in the conversion rate or increase in the\nnumber of nodes.",
          "is_bot": false,
          "headline": "[policy] lower default minrelaytxfee and incrementalrelayfee to 100sa…",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T21:07:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e515d2897eaa5a9b012eb78aef105e1cf80d42b",
          "body": "… explicit",
          "is_bot": false,
          "headline": "[prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption…",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "457cfb61b5323a13218b3cfb5a6a6d8b3a7c5f7f",
          "body": "Use a virtual size of 1000 to keep precision when using a feerate\n(which is rounded to the nearest satoshi per kvb) that isn't just an\ninteger.",
          "is_bot": false,
          "headline": "[prep/util] help MockMempoolMinFee handle more precise feerates",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3eab8b724044dc321f70e5eed66b149713158a04",
          "body": null,
          "is_bot": false,
          "headline": "[prep/test] replace magic number 1000 with respective feerate vars",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f2df0ef78be7b24798d0983c9b962740608f1f4",
          "body": "Back when we implemented coin age priority as a miner policy, miners\nmempools might admit transactions paying very low fees, but then want to\nset a higher fee for block inclusion. However, since coin age priority\nwas removed in v0.15, the block assembly policy is solely based on fees,\nso we do not n\n[…]\nto enforce a minimum entry feerate to\nthe mempool (minrelaytxfee). Set the minimum block feerate to the\nminimum non-zero amount (1sat/kvB) so it collects everything it finds in\nmempool into the block.",
          "is_bot": false,
          "headline": "[miner] lower default -blockmintxfee to 1sat/kvB",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d6213d6aa114aeed6804a585491d741386fd2739",
          "body": null,
          "is_bot": false,
          "headline": "[doc] assert that default min relay feerate and incremental are the same",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fbee5d7b61b83e68e4230c8a97ca308de92c4c3",
          "body": null,
          "is_bot": false,
          "headline": "[test] explicitly check default -minrelaytxfee and -incrementalrelayfee",
          "author_name": "glozow",
          "author_login": "glozow",
          "committed_at": "2025-08-11T20:58:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 186,
      "latest_release_at": "2025-10-11T05:38:34Z",
      "latest_release_tag": "v29.2",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 5,
      "days_since_latest_release": 288,
      "mean_days_between_releases": 0
    },
    "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": 11,
      "stars": 42,
      "watchers": 10,
      "fork_history": {
        "days": [
          {
            "date": "2018-09-14",
            "count": 1
          },
          {
            "date": "2019-05-14",
            "count": 1
          },
          {
            "date": "2021-01-02",
            "count": 1
          },
          {
            "date": "2021-04-23",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-07-24",
            "count": 1
          },
          {
            "date": "2022-05-01",
            "count": 1
          },
          {
            "date": "2023-04-01",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 11,
        "total_forks": 11
      },
      "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": 1940,
      "oversized_source_files": 123,
      "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": 9
      },
      "bus_factor": 5,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "laanwj",
          "commits": 7404,
          "avatar_url": "https://avatars.githubusercontent.com/u/126646?v=4"
        },
        {
          "type": "User",
          "login": "fanquake",
          "commits": 4672,
          "avatar_url": "https://avatars.githubusercontent.com/u/863730?v=4"
        },
        {
          "type": "User",
          "login": "sipa",
          "commits": 2305,
          "avatar_url": "https://avatars.githubusercontent.com/u/548488?v=4"
        },
        {
          "type": "User",
          "login": "achow101",
          "commits": 2100,
          "avatar_url": "https://avatars.githubusercontent.com/u/3782274?v=4"
        },
        {
          "type": "User",
          "login": "hebasto",
          "commits": 1952,
          "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": 830,
          "avatar_url": "https://avatars.githubusercontent.com/u/7133040?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"
        },
        {
          "type": "User",
          "login": "theuni",
          "commits": 734,
          "avatar_url": "https://avatars.githubusercontent.com/u/417043?v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.212
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 17 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "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": 6,
            "reason": "4 out of the last 5 releases have a total of 4 signed artifacts.",
            "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": "6ca6f3b37b992591726bd13b494369bee3bd6468",
        "ran_at": "2026-07-26T17:18:58Z",
        "aggregate_score": 4.1,
        "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": "2025-08-28T19:25:59Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/achow101/bitcoin",
    "host": "github.com",
    "name": "bitcoin",
    "owner": "achow101"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 52,
      "inputs": {
        "security": 41,
        "vitality": 65,
        "community": 33,
        "governance": 56,
        "engineering": 57
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 65,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 186,
              "human_commit_share": 1,
              "days_since_last_push": 4,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "186 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 186
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v29.2",
              "releases_from_tags": false,
              "days_since_latest_release": 288,
              "mean_days_between_releases": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 288 days ago",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 288
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "4 out of the last 5 releases have a total of 4 signed artifacts.",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "dormant",
              "guards": [
                "no_open_demand",
                "recent_release"
              ],
              "signals": [
                "scorecard_unmaintained"
              ],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": 0,
              "unanswered_open_issues": 0,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 334,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "no human commit for 334 days, with nothing left unanswered; held at dormant by nothing open to answer, a release within the year",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_quiet",
                    "params": {
                      "days": 334
                    }
                  },
                  {
                    "code": "abandonment_guarded",
                    "params": {
                      "guards": "nothing open to answer, a release within the year"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "forks": 11,
              "stars": 42,
              "watchers": 10,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "42 stars",
                "points": 26.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 42
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "11 forks",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "10 watchers",
                "points": 5.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "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": 87,
            "inputs": {
              "bus_factor": 5,
              "contributors_sampled": 100,
              "top_contributor_share": 0.212
            },
            "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 21% of commits",
                "points": 17.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 21
                    }
                  }
                ],
                "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": 9
            },
            "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/9 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 9
                    }
                  }
                ],
                "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": 73,
            "inputs": {
              "followers": 1783,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "achow101",
              "public_repos": 111,
              "account_age_days": 4890
            },
            "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": "1,783 followers of achow101",
                "points": 23.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1783,
                      "login": "achow101"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "111 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 111
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "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": 57,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "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": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://bitcoin.org/en/download",
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://bitcoin.org/en/download",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 41,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 41,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 17 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "4 out of the last 5 releases have a total of 4 signed artifacts.",
                "points": 4.5,
                "status": "partial",
                "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": 57,
        "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.91,
              "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": "91 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 91,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 61,
            "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": false,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 1940,
              "oversized_source_files": 123
            },
            "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": "123/1940 source files over 60KB",
                "points": 51.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1940,
                      "oversized": 123
                    }
                  }
                ],
                "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:18.931138Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/achow101/bitcoin.svg",
  "full_name": "achow101/bitcoin",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计.