Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-26 17:28 UTC

darosior / bitcoin

Bitcoin Core integration/staging tree

C++ · Python · CMIT★ 3 estrellas⑂ 0 forksdesde feb 2019forkVer en GitHub ↗

darosior/bitcoin tiene un índice de salud de 54 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (76/100) y la más baja, Community & Adoption (14/100). Se actualizó por última vez hace 2 días. 5 personas concentran la mayor parte del trabajo reciente.

54
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

54
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Antoine PoinsotCuenta personal
595 seguidores103 repositorios públicosdesde sept 2016@chaincodelabs

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

76Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 2 días
36/36Cadencia de commits — 52/52 semanas con commits
18/18Volumen de commits — 3554 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year3554
human_commit_share1
days_since_last_push2
active_weeks_last_year52
Cómo se puntúa
16.2/27Publica versiones — 32 etiquetas de versión (sin releases de GitHub)
0/36Recencia de las versiones — última versión hace 2788 días
19.8/27Cadencia de publicación — una versión cada ~50,2 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count32
latest_release_tagv0.17.1
releases_from_tags
days_since_latest_release2788
mean_days_between_releases50,2
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

14Crítico · 18% del índice global
Cómo se puntúa
4.9/60Estrellas — 3 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars3
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
0/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readmeno
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

55Moderado · 24% del índice global
Cómo se puntúa
45.9/54Factor bus — la mitad de los commits recae en 5 contribuyente(s)
18.1/22.5Distribución de commits — el principal contribuyente firma el 19% de los commits
13.5/13.5Amplitud de contribuyentes — 100 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 17 contributing companies or organizations
Datos de entrada utilizados
bus_factor5
contributors_sampled100
top_contributor_share0,194
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — 0/8 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs8
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
20/25Alcance del propietario — 595 seguidores de darosior
25/25Trayectoria — 103 repos públicos, cuenta de ~9 años
Datos de entrada utilizados
followers595
owner_typeUser
is_verified
owner_logindarosior
public_repos103
account_age_days3589
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

69Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — ruff.toml
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

40En riesgo
Cómo se puntúa
0/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://bitcoincore.org/en/download
0/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttps://bitcoincore.org/en/download
has_readmeno
has_docs_dir
has_descriptionno

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

47En riesgo · 16% del índice global
Cómo se puntúa
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 — sin datos
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.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

62Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 97 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,97
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — depends/Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — ruff.toml
11/11Verificación estática de tipos — C++ (tipado estático)
10/10Entorno reproducible — Nix, lockfile
2/10Práctica demostrada con agentes — 1 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nix
has_tests
lockfilesCargo.lock
has_dockerfileno
typed_language
bootstrap_filesdepends/Makefile
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,01
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
Cómo se puntúa
45/45Código verificable por tipos — C++ (tipado estático)
51.5/55Tamaños de archivo manejables — 128/2007 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC++
largest_source_bytes2.409.168
source_files_sampled2007
oversized_source_files128
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example, examples
Datos de entrada utilizados
example_dirsexample, examples
has_mcp_signalno
api_schema_files

Datos clave

3estrellas de GitHub
100contribuidores
3554commits en los últimos 12 meses
2días desde el último push
32versiones publicadas
5factor bus
0issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

OpenSSF Scorecard 4.7 / 10
4.7agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-26 17:28 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 17 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 305301,
      "has_wiki": false,
      "homepage": "https://bitcoincore.org/en/download",
      "languages": {
        "C": 2664605,
        "M4": 55007,
        "C++": 14630787,
        "Nix": 3796,
        "HTML": 21831,
        "Rust": 41211,
        "Sage": 59880,
        "CMake": 275652,
        "Shell": 215378,
        "Python": 4282160,
        "Scheme": 19984,
        "Assembly": 28405,
        "Makefile": 108201,
        "Dockerfile": 5092,
        "Cap'n Proto": 16569,
        "Objective-C++": 5510
      },
      "pushed_at": "2026-07-24T14:43:17Z",
      "created_at": "2019-02-02T19:20:27Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T15:56:06Z",
      "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": "https://antoinep.com/",
      "name": "Antoine Poinsot",
      "type": "User",
      "login": "darosior",
      "company": "@chaincodelabs",
      "location": null,
      "followers": 595,
      "avatar_url": "https://avatars.githubusercontent.com/u/22457751?v=4",
      "created_at": "2016-09-26T20:05:51Z",
      "is_verified": null,
      "public_repos": 103,
      "account_age_days": 3589
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.17.1",
          "kind": "patch",
          "published_at": "2018-12-06T23:29:45Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2018-10-01T10:04:33Z"
        },
        {
          "tag": "v0.16.3",
          "kind": "patch",
          "published_at": "2018-09-17T23:55:20Z"
        },
        {
          "tag": "v0.16.2",
          "kind": "patch",
          "published_at": "2018-07-20T12:54:20Z"
        },
        {
          "tag": "v0.16.1",
          "kind": "patch",
          "published_at": "2018-06-13T12:32:11Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2018-02-22T19:20:48Z"
        },
        {
          "tag": "v0.15.2",
          "kind": "patch",
          "published_at": "2018-09-19T11:49:47Z"
        },
        {
          "tag": "v0.15.1",
          "kind": "patch",
          "published_at": "2017-11-06T08:46:24Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2017-09-10T22:13:03Z"
        },
        {
          "tag": "v0.14.3",
          "kind": "patch",
          "published_at": "2018-09-20T16:32:52Z"
        },
        {
          "tag": "v0.14.2",
          "kind": "patch",
          "published_at": "2017-06-15T10:44:01Z"
        },
        {
          "tag": "v0.14.1",
          "kind": "patch",
          "published_at": "2017-04-20T09:28:25Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2017-03-05T18:09:49Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2017-01-02T08:54:25Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2016-10-27T06:10:55Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2016-08-17T11:06:57Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2016-04-11T11:01:43Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2016-02-17T08:40:03Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2017-03-09T19:49:36Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2015-11-10T13:46:18Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2015-10-12T18:58:31Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2015-07-10T17:23:55Z"
        },
        {
          "tag": "v0.10.5",
          "kind": "patch",
          "published_at": "2017-03-09T19:48:56Z"
        },
        {
          "tag": "v0.10.4",
          "kind": "patch",
          "published_at": "2015-11-09T14:08:30Z"
        },
        {
          "tag": "v0.10.3",
          "kind": "patch",
          "published_at": "2015-10-11T08:49:25Z"
        },
        {
          "tag": "v0.10.2",
          "kind": "patch",
          "published_at": "2015-05-16T08:37:27Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2015-04-25T08:05:13Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2015-02-13T08:55:11Z"
        },
        {
          "tag": "v0.9.5",
          "kind": "patch",
          "published_at": "2015-05-21T08:48:26Z"
        },
        {
          "tag": "v0.9.4",
          "kind": "patch",
          "published_at": "2015-01-12T09:36:57Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2014-09-22T14:42:15Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2014-06-13T10:26:02Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "290cb2f17ef6ba9198934bbaec53fa962a1dfa18",
          "body": "…x scripts\n\n2cb3bfa8df7cab0635be221af1c8754dbbaff335 scripted-diff: Use long form of shell options in Guix scripts (Hennadii Stepanov)\n711eb10f08bcff5f4689abd4edebf96b913ad6b5 guix: Add copyright headers to Guix scripts (Hennadii Stepanov)\n80f831494e5347057199055b20c8b75bedd8bd07 guix: Fix `glibc` v\n[…]\nanquake:\n    ACK 2cb3bfa8df7cab0635be221af1c8754dbbaff335\n\nTree-SHA512: 9e21d4ad50f5d583efdd8f79d9f96d45a92f1982ea3a422565bceea38aa50bbd9a9360972b37a1b49907e67523d68f3d1f889cb26179ce735453eb4fae4d3fa4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35775: scripted-diff: Use C.UTF-8 locale in Gui…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T13:33:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d472a7798ac1ef0d7fe1fa11709e2cd2f9c6b4f3",
          "body": "…in only\n\n8a90c7cd9739ad30e014ee8531647280fea6a037 guix: Build for macOS using LLVM toolchain only (Hennadii Stepanov)\n7e1a750d45d9199b9a6ee6835bcb78f19cda059c guix, refactor: Use `target` variable instead of hardcoded value (Hennadii Stepanov)\n\nPull request description:\n\n  This PR makes macOS build\n[…]\nanquake:\n    ACK 8a90c7cd9739ad30e014ee8531647280fea6a037\n\nTree-SHA512: 02bfa784f89db980de2d2bb759200a0e8c0b10f48ac7e14e2bcdba75416aef30afa68d36e98c4652e18d282f023d1e94a351ff65b4a2731bdcac7c8a8c720623",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32764: guix: Build for macOS using LLVM toolcha…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T12:56:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9755d33390d843b0622e470df513c0707163057c",
          "body": "…e as source for translations on Transifex\n\na434d66025095764cf58c5a049cf4414f53ee52f cmake, translation: Specify English as target language explicitly (Hennadii Stepanov)\n4097d6d968e835ac1233efcbc31bb7b776bdb51f cmake, translation: Sort messages within contexts alphabetically (Hennadii Stepanov)\n312\n[…]\nsedited:\n    ACK a434d66025095764cf58c5a049cf4414f53ee52f\n\nTree-SHA512: 2f79af707974acd8c955e01c06b41794ae1702964bd5f6d260dba73f2f14d0b4b6e84f502f8515d84585e00db8db5b644cb6c47f91662a7ba5b6990f2d0ba115",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34808: cmake, translation: Use native Qt TS fil…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-23T12:55:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51143291a6c502a63f252d5e6b9cf9ef146de17c",
          "body": "419f7427eee25b6428bbce88e4898e20db9fd13c doc: fix outdated i2p URLs in comments (nebula-21)\n\nPull request description:\n\n  This PR only updates URLs in comments, no functional changes.\n  **Motivation**: While reviewing [PR\\#35696](https://github.com/bitcoin/bitcoin/pull/35696) I discovered that some \n[…]\nsedited:\n    ACK 419f7427eee25b6428bbce88e4898e20db9fd13c\n\nTree-SHA512: 1993239c9544f0e917315b6f3ce5102c5ceaa05422803136bf0a5e69beef000a2b1a170030ca5367a00f433448c6ca0420f3b18137b7e6fd903d4c93263078b2",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35782: doc: fix outdated i2p URLs in comments",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T12:35:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2cb3bfa8df7cab0635be221af1c8754dbbaff335",
          "body": "This improves readability and consistency across all Guix scripts.\n\n-BEGIN VERIFY SCRIPT-\n\nsed -i \"s/^set -e\\>/set -o errexit/g\" \\\n $( git grep -l \"set -e\" ./contrib/guix )\n\n-END VERIFY SCRIPT-",
          "is_bot": false,
          "headline": "scripted-diff: Use long form of shell options in Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-23T11:31:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "711eb10f08bcff5f4689abd4edebf96b913ad6b5",
          "body": null,
          "is_bot": false,
          "headline": "guix: Add copyright headers to Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-23T10:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "419f7427eee25b6428bbce88e4898e20db9fd13c",
          "body": null,
          "is_bot": false,
          "headline": "doc: fix outdated i2p URLs in comments",
          "author_name": "nebula-21",
          "author_login": "nebula-21",
          "committed_at": "2026-07-23T10:06:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22a03ca69443deb66b98deb37d8e84a33968ac10",
          "body": "efb4eae33861d3f316d77788f5c83b58dad94a0a clusterlin: avoid recomputing intersections in MergeChunks (Pieter Wuille)\n4b91ad149f0056c0a6dfdbc816b0c3b6f8d74827 clusterlin: reserve the suboptimal-chunk queue up front (Pieter Wuille)\ne6ca996255bb7edaebe18a104b113d69a07bc445 clusterlin: avoid heap allocat\n[…]\nfleon:\n    crACK efb4eae33861d3f316d77788f5c83b58dad94a0a\n\nTree-SHA512: 6bd523e8bc56dbc8ff2540ef26355e79895a8a11a26d08e22918aea0c002ee8f96916654d5a2b792515ef12ee022c65d71ab9a778f937a264aaf6e4ed6167b71",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35694: clusterlin: minor SFL optimizations",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-23T08:47:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b6f9ba7bad13b0c4169259000f7802854cdda0d",
          "body": "…ion` and unify with `submitBlock`\n\n75929b11edb4a59755b38788855b41b63ff4113d doc: add release note for submitSolution IPC changes (woltx)\ned75d70fdb82042c9f44f3bd51b33c8b415f50aa refactor: centralize SubmitBlock result handling (w0xlt)\ncbaa1696f3748c98466152a17687042f59de684f mining: add reason and \n[…]\nsedited:\n    ACK 75929b11edb4a59755b38788855b41b63ff4113d\n\nTree-SHA512: 31b1c305c20aaebdfa2d887665d9927830d0f97ba3c3469e2792148ad799d5a400a000cc0ca0b9add071d314e27c9da44d55228c442533a32a7c031678b78a55",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34672: mining: add reason/debug to `submitSolut…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-22T22:50:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5311b15727f2f282274472184185423e441abd85",
          "body": "…sspsbt when encountering invalid signatures\n\n7e19ce200b2e65770907a818b02e4ec3da9c5374 rpc: Fix descriptorprocesspsbt internal bug on invalid signatures (b-l-u-e)\n\nPull request description:\n\n  Fixes #32849\n  descriptorprocesspsbt crashes with an internal bug assertion when given a PSBT whose inputs \n[…]\n\n    lgtm re-ACK 7e19ce200b2e65770907a818b02e4ec3da9c5374\n\nTree-SHA512: c534fb5bd3401ee3ac0bc27eaedaaaaf23e5e8510ed9b96a747bb0e41e2bd3d2031b6b08e933e139bb426e97bd05fab6e91397205f4be1db9d17630eea49a8bf",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#33014: rpc: Fix internal bug in descriptorproce…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-22T21:38:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a90c7cd9739ad30e014ee8531647280fea6a037",
          "body": null,
          "is_bot": false,
          "headline": "guix: Build for macOS using LLVM toolchain only",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T19:20:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80f831494e5347057199055b20c8b75bedd8bd07",
          "body": "At the current time-machine commit\nc5eee3336cc1d10a3cc1c97fde2809c3451624d3, the default `glibc` package\nversion is 2.41.",
          "is_bot": false,
          "headline": "guix: Fix `glibc` version in comment",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:29:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8916f7967e1088e7b6157f708c2c85119d759fb2",
          "body": "The C.UTF-8 locale is set by default in `guix shell`, and there is no\nreason to avoid it nowadays. This change also silences superfluous\nwarnings from Qt tools, making build logs cleaner and other issues\neasier to spot.\n\nLocales in the `guix-*` launch scripts have been updated as well for\nconsistency with the rest of the codebase.\n\n-BEGIN VERIFY SCRIPT-\n\nsed -i \"s/\\<export LC_ALL=C\\>/export LC_ALL=C.UTF-8/g\" \\\n $( git grep -l \"export LC_ALL=C\" ./contrib/guix/* )\n\n-END VERIFY SCRIPT-",
          "is_bot": false,
          "headline": "scripted-diff: Use C.UTF-8 locale in Guix scripts",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:29:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2e074d66ac17ca7907909bbbb563e77185a45e5",
          "body": "…on on macOS\n\nfa0c8337a8d42564880715a07b00925d3e95dab1 test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS (MarcoFalke)\nfaa50c08b17b6f9afad5179a17a4a45ab79049c1 refactor: Run clang-format on qt test_main.cpp (MarcoFalke)\n\nPull request description:\n\n  Fixes https://github.com/bitcoin/bitcoin/issues/\n[…]\na07b00925d3e95dab1, tested on macOS Tahoe 26.5.2 (Intel).\n\nTree-SHA512: 3fd4e65f708ce5acd5243747661b76a5cf25e6810b49586dee5971f5f8bad13a907ee27d6830124c8c6d2b7e807661a59404f387ff59c1feeacfaa4b276bf270",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#951: test: Nudge toward QT_STYLE_OVERRIDE=fusi…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T14:16:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ced9ad782b8eec3a99c4cde62561b48312795a1",
          "body": "075e7f421876f9b4eeffa2977abc50708831844c net: Simplify `AddressPosition` comparitor (rustaceanrob)\n\nPull request description:\n\n  Picked from #35713 because this appears unintentional. There were no cases where the source attempted to compare `AddressPosition` by const reference, but such a compariso\n[…]\nited:\n    Re-ACK 075e7f421876f9b4eeffa2977abc50708831844c\n\nTree-SHA512: 4fc95026e6f9ec23757c97fc36a7fa94faf54a018727d0d2606215fc5705f3f1817607d8ff72544664cedc666914484ed490c6f75af63db1ce1a337be2e2949f",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35770: net: Simplify `AddressPosition` comparitor",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T14:12:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8844d3df759bfa070681327583427461d39105c",
          "body": "…om seeds\n\ncf0f2aeae009c98615bffd4dafd74e46f20a0ae6 p2p: Assume v2transport for addresses from seeds (Martin Zumsande)\n\nPull request description:\n\n  gmaxwell noted in https://github.com/bitcoin/bitcoin/pull/30951#issuecomment-5035178818 that addresses loaded from dns seeds and fixed seeds are still \n[…]\ndafd74e46f20a0ae6\n  stratospher:\n    tested ACK cf0f2aea.\n\nTree-SHA512: 921dfcf56960f66c37346f0a4d07e8ad8aa617d4cd1c4db36474e8275c47d5eb70a34c32d1378cbcfce356348b12c36c8fedcdaee3c90c2c4963256857407db4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35766: p2p: Assume v2transport for addresses fr…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T12:56:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "075e7f421876f9b4eeffa2977abc50708831844c",
          "body": "There were no cases where the source attempted to compare\n`AddressPosition` by const reference, but such a comparison is valid.\nThis may be fixed by simplifying the comparison operator here, which\nalso avoids copying the value.\n\nFound in #35713:\n```\n<AddressPosition>' requested here\n  817 |     BOOS\n[…]\ncoin/src/addrman.h:76:10: note: candidate function not viable: 'this' argument has type 'const AddressPosition', but method is not marked const\n   76 |     bool operator==(AddressPosition other) {\n```",
          "is_bot": false,
          "headline": "net: Simplify `AddressPosition` comparitor",
          "author_name": "rustaceanrob",
          "author_login": "rustaceanrob",
          "committed_at": "2026-07-22T12:54:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa0c8337a8d42564880715a07b00925d3e95dab1",
          "body": "Using the Fusion style works around QTBUG-49686.\n\nOtherwise, there could be a nullptr-deref under the QMacStyle.",
          "is_bot": false,
          "headline": "test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-22T11:52:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faa50c08b17b6f9afad5179a17a4a45ab79049c1",
          "body": null,
          "is_bot": false,
          "headline": "refactor: Run clang-format on qt test_main.cpp",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-22T11:51:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc49bd154a31b285c0f89be51767a424ac380924",
          "body": "226e6388b7fd5d128d3757a9fe6c7ebc44803231 depends: Update Qt to 6.8.4 (Hennadii Stepanov)\n\nPull request description:\n\n  Release notes: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.8.4/release-note.md\n\n  `depends/patches/qt/qtbase_platformsupport.patch` has been dropped as the fix was back\n[…]\nanquake:\n    ACK 226e6388b7fd5d128d3757a9fe6c7ebc44803231\n\nTree-SHA512: 20f371384c1fcfd5018218ef262b10568bd009e2f1fafca9fa42788aca4683ec706b7a4e35816b884b294b5f9bdb1aefda0bad75921d9e426558cccd80f913cd",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35709: depends: Update Qt to 6.8.4",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T10:50:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efa1800a885c1ae605e18605ef73957ea13e575c",
          "body": "e446ea09c4d37771798cf9b2d92c3cd1afeaac53 depends, zeromq: Apply upstream patch (Hennadii Stepanov)\n\nPull request description:\n\n  See https://github.com/zeromq/libzmq/pull/4911.\n\n  Here is an example of failure when building with [llvm-mingw 20260721 with LLVM 23.1.0 RC 1](https://github.com/mstorsjo\n[…]\nko:\n    self-ACK e446ea09c4d37771798cf9b2d92c3cd1afeaac53\n\nTree-SHA512: 6d839180452c97f8ddf5d0bd774ccc6a56bbf877069191a2486ed3b222efa4ec83da1de1b5727b973e340e1b7de0bb7a3d5fd81964398ebbad542d61634b8679",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35769: depends, zeromq: Apply upstream patch",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T09:46:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc4ceda8b610e0e32afd2f50b3dce5c754a3ad66",
          "body": "…uilding with GCC 16.x\n\n51d36dfd076a98cd761ab312ab10792725ed7a29 qt: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x (Hennadii Stepanov)\n\nPull request description:\n\n  According to the CMake documentation for [`AUTOMOC`](https://cmake.org/cmake/help/latest/prop_tgt/AUTOMOC.html), all `\n[…]\n    review ACK 51d36dfd076a98cd761ab312ab10792725ed7a29 🦅\n\nTree-SHA512: fe48e4925aaccb833bc065aa7f988f22482ef83d3d555e601d3955109f840b221be971c560668eac79506f567999d4e1b2a464ec3717b5cecb9a3eaaa1dbc01b",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#949: Fix `-Wsfinae-incomplete` warnings when b…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T09:11:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "559d042ba2567a05e8d540c7d9d9a94c7d2973d2",
          "body": "…ith getchainparams command\n\n7298281ba8dfb58e07121c74e64f07861ec21f5c bitcoin-util: replace netmagic command with getchainparams command (Anthony Towns)\n\nPull request description:\n\n  This is a follow-up to #35610. It replaces the `netmagic` command with a more versatile `getchainparams` command, as \n[…]\nsedited:\n    ACK 7298281ba8dfb58e07121c74e64f07861ec21f5c\n\nTree-SHA512: 153e97eb8d6bc6d98d925ce9718239c6ff5d7a80b760e7f3b807fc36f78e8da8550033c31016e1d1aee11484392dd80b76f9b1496a8dc6e47825910c170a0cd1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35736: bitcoin-util: replace netmagic command w…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-22T08:23:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f2ed31f70231506083f31d9b4839a93ad803029",
          "body": "…s after AFL fork\n\nfaada35f9c09844d0aeec7025d06a94427671a22 fuzz: [refactor] Use 100'000 digit separator in __AFL_LOOP (MarcoFalke)\nfae067ec4a408ca7adb7407e93d55d84ab2a8adb fuzz: Avoid dangling prevoutfetch threads after AFL fork (MarcoFalke)\n\nPull request description:\n\n  Presumably fixes https://is\n[…]\nsedited:\n    ACK faada35f9c09844d0aeec7025d06a94427671a22\n\nTree-SHA512: c249d7267f789084968f8510531f60fc71c9fbd6b4e574a181fd6da1af19a3cb7c03ba60c3ca70244b56ce44c602293517cdb6b0e969b4a2cc9d1afaa49ab0f8",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35767: fuzz: Avoid dangling prevoutfetch thread…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-22T07:48:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a31c30290d4c86000601de665866f9015635f48f",
          "body": "f3f302150b5fc115e0561dd639b9b389822999e9 ci: Put space and non-ASCII char in `BASE_BUILD_DIR` (Hennadii Stepanov)\na7e980af31b92f5a21be6b91bed353e65c5cf770 build: Quote host paths in NSIS installer template (Hennadii Stepanov)\n\nPull request description:\n\n  The CI scratch directory contains a space an\n[…]\n code review ACK f3f302150b5fc115e0561dd639b9b389822999e9\n\nTree-SHA512: 5785dc13961d656e73759888d653967e43d6a9e1eec46a12301c65d042bc53a824f2dd9cdaa602c1bfb1afb52c4753099a705eab3a337f88ac6a68893e2de7f9",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35746: ci: Test build directory path with spaces",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T07:36:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e446ea09c4d37771798cf9b2d92c3cd1afeaac53",
          "body": "See https://github.com/zeromq/libzmq/pull/4911.",
          "is_bot": false,
          "headline": "depends, zeromq: Apply upstream patch",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-22T06:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32eb52100296718f7c0469e3210ce1db73694793",
          "body": "…keys\n\n3bfdcbd7ee494c613deac0840ca6997fcc078c08 coins: reuse cache hasher for txid set (Lőrinc)\n2beab94896a3042201f3ad131e8dc2346e076940 coins: use SipHash-1-3-UJ for `CCoinsMap` (Lőrinc)\n7ff55cc6500e7a32204ffe774d00797f18153547 bench: add fixed-width SipHash benchmarks (Lőrinc)\n3aea85411f61e8890b34\n[…]\nptout21:\n    ACK 3bfdcbd7ee494c613deac0840ca6997fcc078c08\n\nTree-SHA512: c3c66051cb1ebdb0cddbc8b8bed2297c524842f92960531de23d9586c5bb950b302c33d06fc15c2320cbbf97273b22ec3f17fd0e7ddcc7df4a8132a47a606277",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35215: coins: use SipHash-1-3-UJ for CCoinsMap …",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-21T22:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "883ef1d85d74c928ae753e07116d3fc61de4e446",
          "body": "6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7 blockencodings: fix extra transaction count (Lőrinc)\nbe4e64d9e4051f7272c75c2819ceb075ed5452c7 test: characterize extra transaction miscount (Lőrinc)\n\nPull request description:\n\n  A short ID collision can invalidate a mempool-sourced transaction after an unrel\n[…]\nsedited:\n    ACK 6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7\n\nTree-SHA512: d4407dca7ca2b46795e52a5d611b66072d75ba966416d4ede27fa776ac0a7cbde52c8abae2daec532ec5f24d88e608622168ca066c0d1dbc133e098c8e6fe85a",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35727: blockencodings: fix extra transaction count",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-21T21:11:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3f302150b5fc115e0561dd639b9b389822999e9",
          "body": "The GHA workflows override `BASE_BUILD_DIR`, so the build tree no longer\nlives under `BASE_SCRATCH_DIR` and its word-splitting and UTF-8 coverage\nis bypassed on CI. Restore it by putting a space and a non-ASCII symbol\nin the externally defined path as well.",
          "is_bot": false,
          "headline": "ci: Put space and non-ASCII char in `BASE_BUILD_DIR`",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T19:25:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7e980af31b92f5a21be6b91bed353e65c5cf770",
          "body": "The `File` instructions embed the build and source directories unquoted,\nso `makensis` fails for the `deploy` target when either path contains\nspaces.",
          "is_bot": false,
          "headline": "build: Quote host paths in NSIS installer template",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T19:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faada35f9c09844d0aeec7025d06a94427671a22",
          "body": "This makes it easier to glance the exact value.",
          "is_bot": false,
          "headline": "fuzz: [refactor] Use 100'000 digit separator in __AFL_LOOP",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-21T17:37:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf0f2aeae009c98615bffd4dafd74e46f20a0ae6",
          "body": "By now, the vast majority of nodes in the network supports BIP324.\nEven if the optimistic guess would turn out to be wrong for a given\nnode, we would just reconnect with v1.\nThis is better than making v1 connections with peers when both nodes support v2.",
          "is_bot": false,
          "headline": "p2p: Assume v2transport for addresses from seeds",
          "author_name": "Martin Zumsande",
          "author_login": "mzumsande",
          "committed_at": "2026-07-21T16:59:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fae067ec4a408ca7adb7407e93d55d84ab2a8adb",
          "body": null,
          "is_bot": false,
          "headline": "fuzz: Avoid dangling prevoutfetch threads after AFL fork",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-21T16:55:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e1a750d45d9199b9a6ee6835bcb78f19cda059c",
          "body": null,
          "is_bot": false,
          "headline": "guix, refactor: Use `target` variable instead of hardcoded value",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T12:52:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d673ca765a5a05b0f16b3b6d62047deda092da9b",
          "body": "… and macOS/Windows\n\n0b0785daa00ba70fff809fbbf802fb09d02ea624 guix: split macOS and win builds (fanquake)\n008a3e29c8844c0be4457279f5c27c1bc57401c7 guix: split builds into Linux(gui) and macOS/Windows (fanquake)\na3b5dc05723641fe2ddf4fa47c329ffcbd22b228 cmake: Add `GenerateWindowsInstaller` script (He\n[…]\nebasto:\n    ACK 0b0785daa00ba70fff809fbbf802fb09d02ea624.\n\nTree-SHA512: 6222024c891d1bec69bb93ae28864142d7e75aae31968b727a3f7226e0debe89f2dc6954a0c26ccfccf2ce8a28d002aa0284a778c2df6c330c5262d41057602d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35537: guix: split builds into Linux, Linux GUI…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-21T12:23:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b36c2d78a3ad4940e1d5eb466b0e6650b1001ee3",
          "body": "…s cache limit\n\n5d57f2cefee2acec3c8e11d6b1d5b5fe97e6cfe7 test: cover unused mempool space in coins cache (woltx)\n\nPull request description:\n\n  This PR extends the existing unit test for `Chainstate::GetCoinsCacheSizeState()`.\n\n  `Chainstate::GetCoinsCacheSizeState()` calculates when the UTXO/coins c\n[…]\nsedited:\n    ACK 5d57f2cefee2acec3c8e11d6b1d5b5fe97e6cfe7\n\nTree-SHA512: c4131cdedd7bd48224d3323fdc1bbce668f171105939c8aa3c452080bbe22819f3910d2a5ce3f46a5a1b7eb625b63240a8c0b7c26fbd5f30927712545b0f765f",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35490: test: cover unused mempool space in coin…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-21T08:57:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1d85263f8ebb47ad4d6126ff992d4915dda026b",
          "body": "…ast peer with relay=false\n\n1fc9277a1c13c13f2ff1825f703a77ebcc9791be test: cover disconnect on private broadcast peer with relay=false (Bruno Garcia)\n\nPull request description:\n\n  Currently, there is no test case to verify the disconnection of a private broadcast connection when the peer does not su\n[…]\nbula-21:\n    ACK 1fc9277a1c13c13f2ff1825f703a77ebcc9791be\n\nTree-SHA512: 1fd7ad3a5fc690a25276a9654e297858d95607fa9c696a0a6f53223aeb3dde7f80e836d2cbf835a39487f953b04f73b4b8af0c79a2ee8f58c894259f7c9383ff",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35681: test: cover disconnect on private broadc…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T20:33:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4906594a3844d227f1f401b9114e6b872cccc576",
          "body": "…nimal` QPA plugin\n\nfd59d68c2629440e544ffa6c9a96b4252ebf45c3 qt, test: Enable tests on macOS with `minimal` QPA plugin (Hennadii Stepanov)\nc8b2aeb2263c50428e2a465aebc0103e73582ffc qt: Avoid implicit `NSApplication` instantiation (Hennadii Stepanov)\n\nPull request description:\n\n  On macOS, `test_bitco\n[…]\nin4btc:\n    tACK fd59d68c2629440e544ffa6c9a96b4252ebf45c3\n\nTree-SHA512: 9fae09668cffe8b207736c6a202af01666a06ae1a8adbd3061717b92a692c0b65b6fe853f192cdc8793073b1c02c3f6a61350a5974397ac016ff8924a51e084a",
          "is_bot": false,
          "headline": "Merge bitcoin-core/gui#950: qt, test: Run GUI tests on macOS with `mi…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T20:20:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0c196f9c11cd1bad6b8804c063b344caf56b8a9",
          "body": "…ule ignores\n\n6eca11175be68150ec860c26a7f4a7aaf9effb0e lint: remove E731 Ruff ignore (will)\nb52454538b08006b43a0bce8f4c9563c5e16ca83 lint: remove E712 Ruff ignore (will)\n\nPull request description:\n\n  Follows up on #34547 by dropping (and fixing) most remaining default Ruff rule ignores:\n\n  - [E712](\n[…]\nsedited:\n    ACK 6eca11175be68150ec860c26a7f4a7aaf9effb0e\n\nTree-SHA512: 763ad88b66fbe1df09c88c688865b7ebdcc4b431858776b5557eb7eec61b98795fb6946b32549f2e631648eae03a6a2882fcd2a673948e1a04d8b2ea358d83ce",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35721: lint: drop most remaining default Ruff r…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T20:07:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd59d68c2629440e544ffa6c9a96b4252ebf45c3",
          "body": "The crash source, implicit `NSApplication` instantiation with a\nnon-Cocoa QPA plugin, was fixed in the previous commit.",
          "is_bot": false,
          "headline": "qt, test: Enable tests on macOS with `minimal` QPA plugin",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T14:09:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8b2aeb2263c50428e2a465aebc0103e73582ffc",
          "body": "`[NSApplication sharedApplication]` creates the shared application\nobject if it does not yet exist. When running with the `minimal` or\n`offscreen` QPA plugins, which is common for testing purposes, the Cocoa\nplatform plugin never creates it, so these call sites were instantiating\n`NSApplication` as a side effect.\n\nUse the `NSApp` global instead and return early when it is `nil`.",
          "is_bot": false,
          "headline": "qt: Avoid implicit `NSApplication` instantiation",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T14:00:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "006f8f7d49a39bc1e3a302269c8ad244f05a209b",
          "body": "d24d3cbad0109adc1a8ca4b7cba16aa920fa2799 fuzz: add p2p_private_broadcast harness (frankomosh)\n\nPull request description:\n\n  Add a fuzz harness for `ConnectionType::PRIVATE_BROADCAST`, a privacy-preserving transaction relay mechanism whose p2p code paths had no meaningful fuzz coverage.\n\n  Current `p\n[…]\nrewtoth:\n    ACK d24d3cbad0109adc1a8ca4b7cba16aa920fa2799\n\nTree-SHA512: 0d2ff9a79aa87a6eb7d7efdbe03ebba545abad1d1e995dfe617e5bd8fd7a5098fd44d92fa6eac1695aa81f38e762b30ed7a7fd0db6c85aaa32bd1d068c946e38",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35090: fuzz: add p2p_private_broadcast harness",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-20T11:57:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51d36dfd076a98cd761ab312ab10792725ed7a29",
          "body": "According to the CMake documentation for `AUTOMOC`, all `moc` output\nfiles that are not included in a source file are aggregated into the\nCMake-generated `<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`, which is\nadded to the target's sources.\n\nWithin that single translation unit, `moc`-generated code che\n[…]\nh\n   `#ifdef ENABLE_WALLET` to prevent `-Wunused-private-field` warnings\n   when building with `-DENABLE_WALLET=OFF`.\n2. `test/lint/lint-includes.py` is adjusted to allow new `#include`\n   statements.",
          "is_bot": false,
          "headline": "qt: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-20T11:23:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b0785daa00ba70fff809fbbf802fb09d02ea624",
          "body": "Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>",
          "is_bot": false,
          "headline": "guix: split macOS and win builds",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-20T08:28:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "008a3e29c8844c0be4457279f5c27c1bc57401c7",
          "body": null,
          "is_bot": false,
          "headline": "guix: split builds into Linux(gui) and macOS/Windows",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-20T08:28:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3b5dc05723641fe2ddf4fa47c329ffcbd22b228",
          "body": "The new script is parameterized by paths to executables. It can be used\nto generate the installer from the install tree rather than the build\ntree. This capability will be used by the Guix scripts in subsequent\ncommits.",
          "is_bot": false,
          "headline": "cmake: Add `GenerateWindowsInstaller` script",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-18T16:35:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bfdcbd7ee494c613deac0840ca6997fcc078c08",
          "body": "Use `SaltedCoinsCacheHasher` for the temporary set of earlier txids in `CoinsViewOverlay`, and in existing overlay tests to exercise the new `Txid` overload.\nEvery entry is a computed transaction hash, and the set is limited to a few thousand elements per block, satisfying the SipHash-1-3-UJ jumbo-input requirements.\n\nCo-authored-by: Andrew Toth <andrewstoth@gmail.com>",
          "is_bot": false,
          "headline": "coins: reuse cache hasher for txid set",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2beab94896a3042201f3ad131e8dc2346e076940",
          "body": "Use the fixed-width `SipHasher13UJ::Hash` path for `CCoinsMap`, while keeping other `SaltedOutpointHasher` users on SipHash-2-4.\nThe salted outputs are process-local and must not be persisted, serialized, or compared across processes.\n\nRetained cache entries identify real transaction outputs and the\n[…]\nt accumulate.\nThe assumeutxo loader assumes snapshot txids are valid while loading and verifies the complete snapshot content hash before activation.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "coins: use SipHash-1-3-UJ for `CCoinsMap`",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ff55cc6500e7a32204ffe774d00797f18153547",
          "body": "Benchmark 32-byte hashes and inputs consisting of a 32-byte hash plus a 32-bit index with SipHash-2-4 and SipHash-1-3-UJ.\nThe UJ benchmark zero-extends the index into one 64-bit normal block.\nKeep all four measurements together after shared correctness coverage and before changing `CCoinsMap`'s hasher.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "bench: add fixed-width SipHash benchmarks",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aea85411f61e8890b34e1de5fd348a4bcc85552",
          "body": "Add SipHash-1-3-UJ outputs to the shared vectors for sequences of 8- and 32-byte blocks.\nCheck generic writes and applicable fixed-width `Hash` overloads against those outputs, and fuzz their equivalence including mixed normal/jumbo encodings.\n\nThe outputs were generated by an independent implementation that Claude Opus 4.8 produced using only the `SipHasher13UJ` class comment as its prompt.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>",
          "is_bot": false,
          "headline": "test: add SipHash-1-3-UJ coverage",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0ccd4ad171567c2b911160a76bde65ba379b4f6",
          "body": "Add const `SipHasher13UJ::Hash` overloads for one `uint256` jumbo block, optionally followed by one 64-bit normal block.\nReuse the generic hasher's initialized state and define these short paths in the header because the new hasher benefits from inlining.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>",
          "is_bot": false,
          "headline": "crypto: add fixed-width SipHash-1-3-UJ",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2d7931b5c8b9630ce99d86b8fe96c6b6a928f87",
          "body": "Add `SipHasher13UJ`, a block-oriented implementation accepting arbitrarily mixed 64-bit normal blocks and 256-bit jumbo blocks.\nFor hash-table use, cryptographic hash outputs must make up all but a small bounded number of retained jumbo blocks.\n\nThe generic interface serves as the executable specification for the fixed-width overloads added next.\n\nCo-authored-by: Lőrinc <pap.lorinc@gmail.com>\nCo-authored-by: Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>",
          "is_bot": false,
          "headline": "crypto: add generic SipHash-1-3-UJ",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25bfca06d6698663310f692ed64dd4ff8e2fc962",
          "body": "Move the SipHash round, compression, and finalization operations shared by `CSipHasher` and `PresaltedSipHasher` into inline `SipHashState` methods.\nThis centralizes state mutation, preserves the existing byte-path code generation, and keeps the security-sensitive follow-up focused on its changed block compression, round counts, and finalizer.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "refactor: simplify adding SipHash-1-3-UJ",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T05:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af50ba8500a81e1a79cdf953d27bbf53ee6c979f",
          "body": "Lock SipHash-2-4 behavior into shared vectors before refactoring its round and finalization code.\nStore inputs as ordered hex byte blocks so `CSipHasher` and the independent Python implementation hash the same byte sequence, with applicable `PresaltedSipHasher` overloads checked against the same vec\n[…]\n 32-byte block sequences.\nThe Python test reads a build-tree copy so functional-test staging behaves consistently when files are symlinked or copied.\n\nCo-authored-by: Pieter Wuille <pieter@wuille.net>",
          "is_bot": false,
          "headline": "test: add shared SipHash vectors",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-18T03:09:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18c05d93016b28a9afd4c716dfe00b6e0accb30b",
          "body": "…ttempt-limit success\n\n6ee05c4b188c0da8cefb7f361c3ba6866c5710b5 test: wallet: BnB incomplete result on attempt-limit success (Bruno Garcia)\n\nPull request description:\n\n  BnB can return a valid selection before exhausting the search tree, then hit `TOTAL_TRIES` while continuing to look for a better o\n[…]\nandamus:\n    ACK 6ee05c4b188c0da8cefb7f361c3ba6866c5710b5\n\nTree-SHA512: 32d0cc6da7586abdd195b87459da0a6ebbdcf8115bef41f5e625864bfa9ce8231a58f8d4b61708279ebeaef372e4f3b5fb18eab28a01dad53f043ba083330b3d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35590: test: wallet: BnB incomplete result on a…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-18T01:18:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b56b66fc64bedce52a4445f1dcb692c24600e443",
          "body": "…ingInput` params overload\n\nafab8d4225c720f8d8658d4ea134505b3d9531f9 fuzz, refactor: Remove `Serialize` overload (Hennadii Stepanov)\nefa7f8c1437681dfae536017da6f27c75f8f2309 fuzz: Remove unused `DeserializeFromFuzzingInput` params overload (Hennadii Stepanov)\n\nPull request description:\n\n  Clang rece\n[…]\n:\n    Review ACK afab8d4225c720f8d8658d4ea134505b3d9531f9\n\nTree-SHA512: 60e98034aa642a8bc0e43dd6c02e60927b5b51be21bbef5812569c797f5d80a04011bced43a34e237e454008382c792a8f7adbde960268f6ae2c0fe3bb2749b7",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35679: fuzz: Remove unused `DeserializeFromFuzz…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-17T21:33:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ee05c4b188c0da8cefb7f361c3ba6866c5710b5",
          "body": "BnB can return a valid selection before exhausting\nthe search tree, then hit TOTAL_TRIES while continuing\nto look for a better one. Add a unit test for that path\nusing a known exhaustion fixture plus an exact-match\ncoin, and assert the result is marked incomplete via\nGetAlgoCompleted() == false.\n\nCo-authored-by: Murch <murch@murch.one>",
          "is_bot": false,
          "headline": "test: wallet: BnB incomplete result on attempt-limit success",
          "author_name": "Bruno Garcia",
          "author_login": "brunoerg",
          "committed_at": "2026-07-17T18:14:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6aa5d8d9481f5e06b10095df7f46f0532f7ecdb7",
          "body": "A short ID collision can invalidate a mempool-sourced transaction after an unrelated transaction was found in extra_txn.\n\nTrack each slot's source so extra_count is decremented only when the invalidated slot came from extra_txn. Mark collided slots explicitly so later candidates do not refill them.",
          "is_bot": false,
          "headline": "blockencodings: fix extra transaction count",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-17T14:57:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be4e64d9e4051f7272c75c2819ceb075ed5452c7",
          "body": null,
          "is_bot": false,
          "headline": "test: characterize extra transaction miscount",
          "author_name": "Lőrinc",
          "author_login": "l0rinc",
          "committed_at": "2026-07-17T14:56:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7298281ba8dfb58e07121c74e64f07861ec21f5c",
          "body": "Co-Authored-By: ekzyis <ramdip.singhgill@gmail.com>",
          "is_bot": false,
          "headline": "bitcoin-util: replace netmagic command with getchainparams command",
          "author_name": "Anthony Towns",
          "author_login": "ajtowns",
          "committed_at": "2026-07-17T12:01:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d6ba4b3b572c978392ec030567aa9e689a259ba",
          "body": "… for a few trivially copyable types\n\n3e8e21b2efcee4299f50030c37176ace29b315ec txgraph: avoid moving primitive members (Lőrinc)\nd9f94aa882ae7ac5697d30c4478d9a1d633c3728 rpc: avoid moving RPC enum types (Lőrinc)\nb67baed4e7e4c553426f1192a97725bc53b9df70 coins: avoid moving `COutPoint` values (Lőrinc)\n\n[…]\n176ace29b315ec, I have reviewed the code and it looks OK.\n\nTree-SHA512: cbe55b13290ae261bba359dc6e5a3bbdfb7ae9d31bdf8e0da2eef65a0df776e4081ceeac3c82731a631bda656a86b3789651fa1f4d87875cee1dc96351bdfd7c",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34514: refactor: remove unnecessary `std::move`…",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-17T10:36:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "afab8d4225c720f8d8658d4ea134505b3d9531f9",
          "body": "Serialization parameters should be embedded into the object being\nserialized rather than passed as a separate argument. This works here\nbecause only serialization is performed and no new object needs to be\nconstructed.",
          "is_bot": false,
          "headline": "fuzz, refactor: Remove `Serialize` overload",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-16T14:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efa7f8c1437681dfae536017da6f27c75f8f2309",
          "body": "This overload has been unused since it was added in fac81affb527132945773a5315bd27fec61ec52f.",
          "is_bot": false,
          "headline": "fuzz: Remove unused `DeserializeFromFuzzingInput` params overload",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-16T14:05:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6eca11175be68150ec860c26a7f4a7aaf9effb0e",
          "body": "Replace assigned lambdas with local functions so Ruff can enforce E731.\nFor platform-specific immutable file cleanup, store the command as data\ninstead of creating conditional callbacks.",
          "is_bot": false,
          "headline": "lint: remove E731 Ruff ignore",
          "author_name": "will",
          "author_login": "willcl-ark",
          "committed_at": "2026-07-16T09:29:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b52454538b08006b43a0bce8f4c9563c5e16ca83",
          "body": "Use identity checks for literal false values to preserve RPC semantics.",
          "is_bot": false,
          "headline": "lint: remove E712 Ruff ignore",
          "author_name": "will",
          "author_login": "willcl-ark",
          "committed_at": "2026-07-16T09:04:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d9ec7f3d452789d04dce81dc02db0b3b778bb5",
          "body": "dab7f2c984bdf10ed65fec6e7b602486f853c456 test: cover -externalip/onlynet interaction in functional test (will)\n657a5aa3f3d0e8533d3d7dadfcc3b2908be83601 test: cover -externalip bypassing -onlynet (will)\n8c87e32bd3937251d6f30295cc1924048e5b74d1 net: let -externalip bypass -onlynet (will)\nf4af02e827b97\n[…]\n  w0xlt:\n    ACK dab7f2c984bdf10ed65fec6e7b602486f853c456\n\nTree-SHA512: a4ac9334b85da8b6902d3850e21d3a1c9d7dce70bcb79182448c8d5684e24462cd6e440385af7aa4420d9582e4dff9dc9e827ca7a6da0363fff2d3c531784d9b",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#34538: net: advertise -externalip addresses",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T22:42:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7bff765d514e0bdc8e6b2d156d3de0dd3800ab1d",
          "body": "…om enumerate response\n\n4c9de7d5b329f8ffca7222d8f53c2f5a5616dfc9 external_signer: validate fingerprint from enumerate response (Kyle 🐆)\n\nPull request description:\n\n  `enumeratesigners` takes the `fingerprint` field from the external signer's `enumerate` output and stores it without checking it. That\n[…]\nsedited:\n    ACK 4c9de7d5b329f8ffca7222d8f53c2f5a5616dfc9\n\nTree-SHA512: 7c3303b24e234e13a4c20c0b93552145b9ccffc29d1bae42ce8a2faf548377f051e52f8ffb3924679065b27d15fc7bf3859e5ae32a2bb185738cc29bc0ade486",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35639: external_signer: validate fingerprint fr…",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T21:15:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "773b1c9aa587304ec0dc348270bc2c2d2156ec14",
          "body": "72db4accbf5bae74d061db1aeee9e0688c0da2f5 coins: drop stale cursor null checks (Lőrinc)\n3d2f2d8de09d162863f7b8e7e48e347d7d87c648 coins: pass UTXO stats view by reference (Lőrinc)\n35aedb2823692756dbe958b08f415c2b3e0be4ea coins: drop cursor from base view (Lőrinc)\nc6fbe2f66cff3846068795b3e2c459242b7be5\n[…]\nrewtoth:\n    ACK 72db4accbf5bae74d061db1aeee9e0688c0da2f5\n\nTree-SHA512: 12a81330a6ec1b91a7e4393f3761ea9ed4702ecb24312f1defa5a9a079a396ce921fc52f74fe296e5ac7ab20d5b5a8a84e858c96847f333c58b7fa9de9e8143e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35572: coins: make cursor iteration DB-only",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T20:27:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d9e4f8dbd80260e52b29336b58eecb7c0d63cd6",
          "body": "…negative values\n\n3ae3a94f2bdc572cdf1b5223419a25650291ab56 wallet: avoid call bumpfeediscount with negative values (Pol Espinasa)\n\nPull request description:\n\n  in https://github.com/bitcoin/bitcoin/issues/34232 dergoegge reported an assertion fail in `SetBumpFeeDiscount`.\n\n  **Context**\n\n  The bump-\n[…]\ntin4btc:\n    ACK 3ae3a94f2bdc572cdf1b5223419a25650291ab56\n\nTree-SHA512: e76693eb66c4883ed3ef5edf1baa972657b0d532487803706312d486b4d4a4997f5dcbc64781a1a21b7b5628b06fcc97a6633382509061734d0f5615e851bef1",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35633: wallet: avoid call bumpfeediscount with …",
          "author_name": "Ava Chow",
          "author_login": "achow101",
          "committed_at": "2026-07-14T20:15:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4216e885a666e3a1290d87068912a34cb858a60",
          "body": "240d5f743aab0ff4f3e5d7d1783b410aa3306ad3 fuzz: Drop unnecessary mutexes (marcofleon)\n\nPull request description:\n\n  Quick cleanup addressing https://github.com/bitcoin/bitcoin/pull/35295#discussion_r3550382830.\n\n  This follows the same logic as 48df0939e7250a2de8a0c336bc3ddbcbe0578812 from https://gi\n[…]\n code review ACK 240d5f743aab0ff4f3e5d7d1783b410aa3306ad3\n\nTree-SHA512: 869127dc8cec4fc0688f92d67dc22f643cf3741c62d645eb4a959a9d8f46590efe19765f7df97ee36f9a3ca759c50fe983a3e6655e40a53ea99904e7a1ec00f6",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35723: fuzz: Drop unnecessary mutexes",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T19:35:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "240d5f743aab0ff4f3e5d7d1783b410aa3306ad3",
          "body": "Remove the `Mutex` from the `coins_view` and `coinscache_sim`\npool startup helpers. Fuzz targets are entered sequentially within a\nprocess and parallel fuzzing uses separate processes/forks, which each\nhave their own copy of the global thread pool. Therefore, a mutex to\nprevent two in-process callers from racing to start the pool isn't needed.",
          "is_bot": false,
          "headline": "fuzz: Drop unnecessary mutexes",
          "author_name": "marcofleon",
          "author_login": "marcofleon",
          "committed_at": "2026-07-14T18:21:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf0368fb76e4ee07fc1a461d73eaff3e4ddb5e6b",
          "body": "…drop fuzz test workaround\n\nfab8eeed82cc784f05a7407da0245e6f44563778 fuzz: clang-format LIMITED_WHILE (MarcoFalke)\nfa0d777ce2a91816ab0a6bd8a0f389e4840e84c5 fuzz: Clang-format LIMITED_WHILE like while (MarcoFalke)\nfa1a9bde5a614d052a188a2e0756d2475ce777e0 fuzz: Remove unused workaround after fix in li\n[…]\n-format cleanups added since last review, which seem nice\n\nTree-SHA512: 0836628f8ee54adf02571025456211a74f63d05058b72280b10111ecfbb93d30945f4a48f30cc790774de4e2b489907313e86b0fa6729f3480c64850c94848b4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35720: ipc: Update libmultiprocess subtree and …",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T18:10:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efb4eae33861d3f316d77788f5c83b58dad94a0a",
          "body": "MergeChunks scans the top chunk's transactions twice: once to count\nthe dependencies on the bottom chunk, and once to locate the randomly\npicked one. Remember the per-transaction dependency counts from the\nfirst pass, so the second pass only computes the intersection of the\nselected transaction, rather than one per transaction scanned.",
          "is_bot": false,
          "headline": "clusterlin: avoid recomputing intersections in MergeChunks",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b91ad149f0056c0a6dfdbc816b0c3b6f8d74827",
          "body": "Reserve capacity for one entry per transaction in m_suboptimal_chunks at\nconstruction time, avoiding repeated reallocations while MakeTopological\nand StartOptimizing fill the queue.",
          "is_bot": false,
          "headline": "clusterlin: reserve the suboptimal-chunk queue up front",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6ca996255bb7edaebe18a104b113d69a07bc445",
          "body": "Replace GetLinearization's four per-call heap-allocated vectors (the\nready chunk/transaction heaps and both dependency counters) with stack\narrays and explicit size counters. This especially benefits\nlinearization of small clusters, where the allocations make up a\nsignificant fraction of the total runtime.",
          "is_bot": false,
          "headline": "clusterlin: avoid heap allocations in GetLinearization",
          "author_name": "Pieter Wuille",
          "author_login": "sipa",
          "committed_at": "2026-07-14T17:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d4065d1fe4d9ad802e7c2b996d6cb12d66677a2",
          "body": "900a7785bf56ab92560a3ec63423c9376a7b255d ci: use Ubuntu 26.04 for lint container (fanquake)\n058a73a0aea6b949763bbea305391d7f2218c429 ci: use uv 11.x (fanquake)\n14f4ddcb55497faf25a3db60a7477ea4dbc236ed ci: mypy 2.3.0 (fanquake)\n\nPull request description:\n\n  Container: Ubuntu `24.04` -> `26.04`.\n  `uv\n[…]\nlcl-ark:\n    ACK 900a7785bf56ab92560a3ec63423c9376a7b255d\n\nTree-SHA512: fc664b9cd16257ae023a4a60566bb512bb9b12d72a81e34a4a6659490a9eb84922cef6e44c622d4b52048788ce880d71a9b5168591aadbb83eae62fe54f54fcb",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35718: ci: Update lint container dependencies",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-14T14:11:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d9fbf766643742359590f57ab18ac67c51e6889",
          "body": "…ig for btck_TransactionInput\n\n6667dc4eec7b458893920eb7f8631bdf2467c046 kernel: expose scriptSig for btck_TransactionInput (Peter Zafonte)\ne6de3a2d3c78d5b72f57bd6a5d711fed97ca70c1 kernel: expose witness stack for btck_TransactionInput (Peter Zafonte)\n\nPull request description:\n\n  Silent payments sca\n[…]\nckies-v:\n    ACK 6667dc4eec7b458893920eb7f8631bdf2467c046\n\nTree-SHA512: b5e9d32ec87a5f5a9fea5652ed69737eae1d1f9cfb777544b96d703bbd057c114e0b7afae4e9e9d09b8b546694b14fb923b747c04a8f0211ab6caa015d06967d",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35380: kernel: expose witness stack and scriptS…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-14T12:38:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "226e6388b7fd5d128d3757a9fe6c7ebc44803231",
          "body": null,
          "is_bot": false,
          "headline": "depends: Update Qt to 6.8.4",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-14T12:16:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fab8eeed82cc784f05a7407da0245e6f44563778",
          "body": "This is a whitespace-only clang-format change.\n\nTo verify it, one can run:\n\n```sh\n(git show | git apply --reverse ) && ( git diff -U0 | ./contrib/devtools/clang-format-diff.py -p1 -i -v ) && git diff HEAD\n```\n\nA few minor, non-macro formatting adjustments were made in touched files:\n\n* `src/wallet/t\n[…]\nuzz/crypter.cpp`: Removed a redundant double semicolon\n* `src/test/fuzz/txorphan.cpp`: Corrected indentation on an `else if` block.\n* `src/test/fuzz/mini_miner.cpp`: Removed an unnecessary empty line.",
          "is_bot": false,
          "headline": "fuzz: clang-format LIMITED_WHILE",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T11:48:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa0d777ce2a91816ab0a6bd8a0f389e4840e84c5",
          "body": null,
          "is_bot": false,
          "headline": "fuzz: Clang-format LIMITED_WHILE like while",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T11:31:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa1a9bde5a614d052a188a2e0756d2475ce777e0",
          "body": "… serializer",
          "is_bot": false,
          "headline": "fuzz: Remove unused workaround after fix in libmultiprocess byte-span…",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T11:31:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa55385ab36c6989a8583416759612195389c1b6",
          "body": "This is a style cleanup. The general pattern to use `LIMITED_WHILE`,\nwhich all other fuzz tests use, has some benefits:\n\n* When no data is available, a simple and single (let's say) 64 value in\n  the fuzz input will not result in 64 loops over the same body with the\n  same default/fallback values.\n*\n[…]\nt\n  can lead to the 'havoc' effect.\n* When a crash is reduced, deleting bytes will directly influence the\n  execution length, so byte-length of the fuzz input roughly corresponds\n  to run-time length.",
          "is_bot": false,
          "headline": "fuzz: Use LIMITED_WHILE over for-loop with consumed size integral",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T11:31:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa911d815dba280f7d4a1b3fe7b786be37afaf75",
          "body": "HEAD is the prior subtree update commit\n'a9d1b652f324126ef7e80d9ab0b9e4f60019dade'",
          "is_bot": false,
          "headline": "Merge commit '6d5f753921578eefdd3fce64cfc8ee7951b6cbc4' into HEAD",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T10:44:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d5f753921578eefdd3fce64cfc8ee7951b6cbc4",
          "body": "e8de5c7b68 Merge bitcoin-core/libmultiprocess#305: refactor: memcpy to std::ranges::copy to work around ubsan warn\n9307e68e5a Merge bitcoin-core/libmultiprocess#306: doc: Bump version 12 > 13\nfac7b9b7f6 refactor: memcpy to std::ranges::copy to work around ubsan warn\n1bd7025609 Merge bitcoin-core/lib\n[…]\nbool\n85df233845 test: add mapStringInt to foo.capnp to cover map serialization and deserialization\n\ngit-subtree-dir: src/ipc/libmultiprocess\ngit-subtree-split: e8de5c7b68e0ae21c94ae92aa22e5c3b213f9c12",
          "is_bot": false,
          "headline": "Squashed 'src/ipc/libmultiprocess/' changes from 28e056576a..e8de5c7b68",
          "author_name": "MarcoFalke",
          "author_login": null,
          "committed_at": "2026-07-14T10:35:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "900a7785bf56ab92560a3ec63423c9376a7b255d",
          "body": null,
          "is_bot": false,
          "headline": "ci: use Ubuntu 26.04 for lint container",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T10:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "058a73a0aea6b949763bbea305391d7f2218c429",
          "body": null,
          "is_bot": false,
          "headline": "ci: use uv 11.x",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T10:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14f4ddcb55497faf25a3db60a7477ea4dbc236ed",
          "body": null,
          "is_bot": false,
          "headline": "ci: mypy 2.3.0",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T10:22:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54e1a95a12e7d96e1207f9b558a9fc71d774c046",
          "body": "b0e09511586dcc76c3a6fe0251f1458b2c43aae1 ci: disable Qt build in OpenBSD cross job (fanquake)\n\nPull request description:\n\n  Disable this for now, until issues with `llvm-ranlib`, and gui deps are fixed:\n  ```bash\n  libtool: install: chmod 644 /home/runner/work/_temp/depends/work/staging/x86_64-unkno\n[…]\nebasto:\n    ACK b0e09511586dcc76c3a6fe0251f1458b2c43aae1.\n\nTree-SHA512: fab7bb503e4f729ced1a986535a05db6e9218077e3a55c24741cd956f759f42fa8e11f56952f657dfa002ac4f42e8207d7d6a7f19cf091307cf9350ec36e964c",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35719: ci: disable Qt build in OpenBSD cross job",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-14T10:20:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0e09511586dcc76c3a6fe0251f1458b2c43aae1",
          "body": "Disable this for now, until issues with llvm-ranlib, and gui deps are\nfixed:\n```bash\nlibtool: install: chmod 644 /home/runner/work/_temp/depends/work/staging/x86_64-unknown-openbsd/fontconfig/2.12.6-a12d0a13377/home/runner/work/_temp/depends/x86_64-unknown-openbsd/lib/libfontconfig.a\nlibtool: instal\n[…]\n2.12.6-a12d0a13377/home/runner/work/_temp/depends/x86_64-unknown-openbsd/lib/libfontconfig.a\nllvm-ranlib-22: error: Invalid option: '-t'\nmake[4]: *** [Makefile:539: install-libLTLIBRARIES] Error 1\n```",
          "is_bot": false,
          "headline": "ci: disable Qt build in OpenBSD cross job",
          "author_name": "fanquake",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T09:55:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "734c34bafda78c59d24016ff748c17e7403d6e6e",
          "body": "…ges on OpenBSD\n\na54ec373a69ed8369a508cfd0a6ec616f46b0cc4 depends: Build `qt` and `qrencode` packages for OpenBSD hosts (Hennadii Stepanov)\n\nPull request description:\n\n  This PR enables the building of GUI dependencies ( `qt` and `qrencode`) natively on OpenBSD:\n\n  <img width=\"1280\" height=\"960\" alt\n[…]\n6ec616f46b0cc4 - changes look fine, didn't build or test.\n\nTree-SHA512: 2d674b8b5677b2d1f91337243f1173dba4beb12bb8aa2ee6bad71de50dd403d6dd50009f1836c22abad63ec54ebb94bcfc9c664a8fc811f900b4ddef4623626e",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35427: depends: Build `qt` and `qrencode` packa…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-14T09:31:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee61b11a9e7cba73bc3e51b3c7b01de78a5a6655",
          "body": "d164a043426e395a0b11feea2094c5f00c528202 node: smooth oversized `-dbcache` warnings (Lőrinc)\n\nPull request description:\n\n  **Problem:** The oversized `-dbcache` warning threshold has a sharp formula cliff when detected RAM crosses the cutoff used by the warning logic.\n\n  This was reported during rev\n[…]\nw0xlt:\n    reACK d164a043426e395a0b11feea2094c5f00c528202\n\nTree-SHA512: deb81f0e192261f01dda6f1575a7b2e147f1e07e813d0833c7aeaf6a3fbd7594c0145ec1c98ded74efee9005108d229942949279c9458cbec4046913387db845",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35200: node: smooth oversized `dbcache` warnings",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-14T07:54:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e3554bf361ff6979b09fdedfdcbebf687590cd1c",
          "body": "…king wallet is at the tip\n\n9e62e4b1f346f70eaa23e83eff769b6e6cc04630 test: slow down rescaning process (Pol Espinasa)\n336f5a738b3d89abb8dd7ebdc4b31ac12a6de85f wallet: reserve walletrescan before checking wallet is at the tip (Pol Espinasa)\n\nPull request description:\n\n  `ImportDescriptors` rpc has a \n[…]\n:\n    lgtm reACK 9e62e4b1f346f70eaa23e83eff769b6e6cc04630\n\nTree-SHA512: be0027e1a7b77252ed9fb514c3b3311d6905903d4b0bfc1021a1e1c2bb06872ef599647ff8a4536929240717ae9db62fb75374f629cd3046c7192e2b8b4d7344",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35579: wallet: reserve walletrescan before chec…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-14T07:45:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11ae426552239f1e5bf351b354783f869989c88b",
          "body": "… + BUILD_FUZZ_BINARY\n\ndb35b9238fc903c1dcbc0d428b247250d46c3b41 ipc # build: Fix fuzz target CMakeLists.txt for external libmultiprocess (Ryan Ofsky)\n\nPull request description:\n\n  CMake `WITH_EXTERNAL_LIBMULTIPROCESS` and `BUILD_FUZZ_BINARY` options stopped working together recently due to #35118 co\n[…]\n247250d46c3b41, I have reviewed the code and it looks OK.\n\nTree-SHA512: 7cfb19a66dd4ccdcd6dfdedc3000fd20f488851f3235852717fd31698a7e8efb5c4e14705b0dc0c1ea506b38268f1ab030bca7865ddfdd85144598f435581247",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35715: cmake: Fix WITH_EXTERNAL_LIBMULTIPROCESS…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-13T21:53:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e544413c0def782b05487a8afd8e06cd27829826",
          "body": "…vOrderForm with explicit class members\n\nfed3cf6f0ed40ca9720d8f98b26f1b08afc93275 wallet: Replace CWalletTx's vOrderForm with specific fields (Ava Chow)\n4f8823e8e11b5bf58f51988f860c19998d896491 wallet: Drop vOrderForm from CommitTransaction (Ava Chow)\na2b0bfcd854548820057143f9b5b2213736c5497 wallet:\n[…]\nll/32763/commits/fed3cf6f0ed40ca9720d8f98b26f1b08afc93275\n\nTree-SHA512: c7deab5aaeac13656012f8b13c0161fd420d2a5348eebd7649310e78ccb1216995aa6a7cbd506ac8d11d7b46b0856d6e6a897bc39965b51cfcf2268356ace261",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#32763: wallet: Replace CWalletTx::mapValue and …",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-13T21:45:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe1cb6e40d7bae535c73e23c3bb1c7e6f14d644d",
          "body": "…ne-readable error code\n\na8223bb4e62c8facd7e99eb05221c67cdcf0b52c wallet: Introduce WalletError with machine-readable error code (pseudoramdom)\n\nPull request description:\n\n  Per discussion in https://github.com/bitcoin/bitcoin/pull/35436#issuecomment-4923786884, `WalletError` is split out so that it\n[…]\nspinasa:\n    ACK a8223bb4e62c8facd7e99eb05221c67cdcf0b52c\n\nTree-SHA512: 15fedf96cb5c3e8167a236bfa1a4d01d94f258a22943e53330ab432ad04a31f81f2eac8749f38390b2d34156d283d3bf76f293c640724bd0b090dc494123b230",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35690: wallet: Introduce WalletError with machi…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-13T21:06:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "441f3114f576b49a4e4033b0b417a68c6c50b1ec",
          "body": "… outdated workarounds\n\n2bab6bc73f2682a5914dd763e444af77d5688881 refactor: Drop support for FreeBSD < 14 (Hennadii Stepanov)\n91b5c8a07c6c99d58875d5d86a6c8ee858b462ed refactor: Remove FreeBSD-specific workaround (Hennadii Stepanov)\n56701ff6d5c695d80075075953e20eac5cabff4d doc: Clarify supported *BSD \n[…]\nsedited:\n    ACK 2bab6bc73f2682a5914dd763e444af77d5688881\n\nTree-SHA512: 6d9ca0ff881a60c33fe3aa18a03726426f07f2896b2f56b12804865acfa910aca7efdc1312eb4055e35aab8423d0c2326b89c1da448e01b4fa213f73dfd2b118",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35659: Clarify supported *BSD releases and drop…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-13T20:55:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0399df827c67493ef8269902a2abd9d27539e06f",
          "body": "a2e4cd7ad2a5ba1543ae1d25ee27d02c2315f4d0 depends: capnp 1.5.0 (fanquake)\n\nPull request description:\n\n  Update capnp in depends to [`1.5.0`](https://github.com/capnproto/capnproto/releases/tag/v1.5.0), which contains numerous security and bugfixes. More details here: https://github.com/capnproto/capn\n[…]\n janb84:\n    ACK a2e4cd7ad2a5ba1543ae1d25ee27d02c2315f4d0\n\nTree-SHA512: e616ab88a7692f17611865fbb36fc0c598ff6d8bcf18035f22d84681bbda8b6f5e7b8d7270baeeaf0d18e035de474003345f3bd75f020e615388ae04b3dd22f4",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35708: depends: capnp 1.5.0",
          "author_name": "Hennadii Stepanov",
          "author_login": "hebasto",
          "committed_at": "2026-07-13T20:47:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ab1fdd4696b269db0c93e240478d589eeb37151",
          "body": "…ase with MakeInMemoryWalletDatabase\n\n7508ac319d992eb0a731a7b2e879bcad5859c3c4 bench: replace CreateMockableWalletDatabase with MakeInMemoryWalletDatabase (Pablo Martin)\n\nPull request description:\n\n  Benchmarks don't need mock-specific behaviour (overridden `Filename()`, `Format()`, or the exposed b\n[…]\n janb84:\n    ACK 7508ac319d992eb0a731a7b2e879bcad5859c3c4\n\nTree-SHA512: 6f4086eb5700ba3da882378dcee76b3c075670cdea5d71b45c9b369e48c72b8f591e0c5a6bd4504719dd512b3b7d2b23230a8b76e471c6c0571c13325fa3cba0",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35705: bench: replace CreateMockableWalletDatab…",
          "author_name": "merge-script",
          "author_login": "sedited",
          "committed_at": "2026-07-13T20:29:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db35b9238fc903c1dcbc0d428b247250d46c3b41",
          "body": "**What failed:** Build error: 'mp/proxy-io.h' file not found when\nbuilding the ipc fuzz target.\n\n**Root cause:** Upstream commit 037ad770714 (fuzz: add IPC round-trip\ntarget) added target_link_libraries(fuzz bitcoin_ipc_fuzz multiprocess)\nusing the bare 'multiprocess' target, which only exists in su\n[…]\n\n**Fix:** Changed to 'Libmultiprocess::multiprocess', which is the\ncanonical namespaced target available in both subtree and external builds.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ipc # build: Fix fuzz target CMakeLists.txt for external libmultiprocess",
          "author_name": "Ryan Ofsky",
          "author_login": "ryanofsky",
          "committed_at": "2026-07-13T13:54:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d18fec892e22530c79bbba0080af288a61512c9a",
          "body": "…tyle guide\n\nfad5809cb92329f58c12679d0e276fe0769b5845 doc: Update enum class constant naming style guide (MarcoFalke)\n\nPull request description:\n\n  Lately, it seems there are frequent scripted-diffs and refactors to rename ALL_CAPS enum class constant names to something else, due to third-party macr\n[…]\njanb84:\n     ACK fad5809cb92329f58c12679d0e276fe0769b5845\n\nTree-SHA512: f652c0127022a5ea131e956aef0a2d8c98f4c4317519475a38e5f527a5f672b93a8e51743c1a588f38ddc795531168b68ab68f86471b61f25229761eff0f3879",
          "is_bot": false,
          "headline": "Merge bitcoin/bitcoin#35698: doc: Update enum class constant naming s…",
          "author_name": "merge-script",
          "author_login": "fanquake",
          "committed_at": "2026-07-13T13:54:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 32,
      "commits_last_year": 3554,
      "latest_release_at": "2018-12-06T23:29:45Z",
      "latest_release_tag": "v0.17.1",
      "releases_from_tags": true,
      "days_since_last_push": 2,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 2788,
      "mean_days_between_releases": 50.2
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 0,
      "stars": 3,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "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": 2007,
      "oversized_source_files": 128,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 8
      },
      "bus_factor": 5,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "laanwj",
          "commits": 7406,
          "avatar_url": "https://avatars.githubusercontent.com/u/126646?v=4"
        },
        {
          "type": "User",
          "login": "fanquake",
          "commits": 5407,
          "avatar_url": "https://avatars.githubusercontent.com/u/863730?v=4"
        },
        {
          "type": "User",
          "login": "achow101",
          "commits": 2465,
          "avatar_url": "https://avatars.githubusercontent.com/u/3782274?v=4"
        },
        {
          "type": "User",
          "login": "sipa",
          "commits": 2397,
          "avatar_url": "https://avatars.githubusercontent.com/u/548488?v=4"
        },
        {
          "type": "User",
          "login": "hebasto",
          "commits": 2235,
          "avatar_url": "https://avatars.githubusercontent.com/u/32963518?v=4"
        },
        {
          "type": "User",
          "login": "gavinandresen",
          "commits": 1101,
          "avatar_url": "https://avatars.githubusercontent.com/u/331997?v=4"
        },
        {
          "type": "User",
          "login": "ryanofsky",
          "commits": 923,
          "avatar_url": "https://avatars.githubusercontent.com/u/7133040?v=4"
        },
        {
          "type": "User",
          "login": "glozow",
          "commits": 795,
          "avatar_url": "https://avatars.githubusercontent.com/u/25183001?v=4"
        },
        {
          "type": "User",
          "login": "jnewbery",
          "commits": 794,
          "avatar_url": "https://avatars.githubusercontent.com/u/1063656?v=4"
        },
        {
          "type": "User",
          "login": "jonasschnelli",
          "commits": 774,
          "avatar_url": "https://avatars.githubusercontent.com/u/178464?v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.194
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "ruff.toml"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 17 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "290cb2f17ef6ba9198934bbaec53fa962a1dfa18",
        "ran_at": "2026-07-26T17:28:03Z",
        "aggregate_score": 4.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T23:12:26Z",
      "oldest_open_prs": [
        {
          "number": 9,
          "created_at": "2026-07-06T21:05:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 10,
          "created_at": "2026-07-06T21:24:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 11,
          "created_at": "2026-07-07T20:54:23Z",
          "last_comment_at": "2026-07-23T15:26:23Z",
          "last_comment_author": "darosior"
        }
      ],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/darosior/bitcoin",
    "host": "github.com",
    "name": "bitcoin",
    "owner": "darosior"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 47,
        "vitality": 76,
        "community": 14,
        "governance": 55,
        "engineering": 69
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 76,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 3554,
              "human_commit_share": 1,
              "days_since_last_push": 2,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "3554 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 3554
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "at_risk",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 40,
            "inputs": {
              "releases_count": 32,
              "latest_release_tag": "v0.17.1",
              "releases_from_tags": true,
              "days_since_latest_release": 2788,
              "mean_days_between_releases": 50.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "32 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 32
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2788 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2788
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~50.2 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 50.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 3,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 3 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 14,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 5,
            "inputs": {
              "forks": 0,
              "stars": 3,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3 stars",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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": 55,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "bus_factor": 5,
              "contributors_sampled": 100,
              "top_contributor_share": 0.194
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "5 contributor(s) cover half of all commits",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 19% of commits",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 19
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "100 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 17 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 8
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "0/8 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 8
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "followers": 595,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "darosior",
              "public_repos": 103,
              "account_age_days": 3589
            },
            "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": "595 followers of darosior",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 595,
                      "login": "darosior"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "103 public repos, account ~9 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 103
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 69,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "ruff.toml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "ruff.toml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://bitcoincore.org/en/download",
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://bitcoincore.org/en/download",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 47,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 47,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 4.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 17 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 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": 62,
        "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.97,
              "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": "97 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_nix": true,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "depends/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [
                "contrib/devtools/deterministic-fuzz-coverage/Cargo.toml",
                "contrib/devtools/deterministic-unittest-coverage/Cargo.toml",
                "test/lint/test_runner/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "depends/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "depends/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "ruff.toml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "ruff.toml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C++ (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Nix, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Nix, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "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": 2007,
              "oversized_source_files": 128
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C++ (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "128/2007 source files over 60KB",
                "points": 51.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 2007,
                      "oversized": 128
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example",
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example, examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example, examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Community profile unavailable",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T17:28:23.940327Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/darosior/bitcoin.svg",
  "full_name": "darosior/bitcoin",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.