Registro público
Informe de salud del softwareesquema 0.23.0 · métricas 1.13.0 · 2026-07-21 16:02 UTC

colbymchenry / codegraph

Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, and Hermes Agent — fewer tokens, fewer tool calls, 100% local

CMIT★ 61.400 estrellas⑂ 3843 forksdesde ene 2026Ver en GitHub ↗

colbymchenry/codegraph tiene un índice de salud de 67 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (83/100) y la más baja, Security (41/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

67
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.

67
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

Colby MchenryCuenta personal
456 seguidores24 repositorios públicosdesde abr 2016

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.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@colbymchenry/codegraph1.4.1380.38844hace 10 días
npmsite2.60.41858237hace 1284 díasgameappwebsiteframeworkengineanimationhtml5svghtmlwebblog

Métricas por categoría

Vitalidad

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

83Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
14.5/36Cadencia de commits — 21/52 semanas con commits
18/18Volumen de commits — 757 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year757
human_commit_share0,93
days_since_last_push0
active_weeks_last_year21
Cómo se puntúa
27/27Publica versiones — 29 versiones publicadas
36/36Recencia de las versiones — última versión hace 10 días
27/27Cadencia de publicación — una versión cada ~1,4 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count29
latest_release_tagv1.4.1
releases_from_tagsno
days_since_latest_release10
mean_days_between_releases1,4

Comunidad y Adopción

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

80Bueno · 18% del índice global
Cómo se puntúa
60/60Estrellas — 61.400 estrellas
25/25Forks — 3843 forks
11.8/15Observadores — 135 observadores
Datos de entrada utilizados
forks3843
stars61.400
watchers135
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonwindow_too_short
Cómo se puntúa
22.5/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_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
74.4/80Descargas mensuales — 382.246 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@colbymchenry/codegraph, site
dependents
ecosystemsnpm
total_downloads
monthly_downloads382.246
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

61Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
2/22.5Distribución de commits — el principal contribuyente firma el 91% de los commits
13.5/13.5Amplitud de contribuyentes — 38 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled38
top_contributor_share0,911
Cómo se puntúa
38.5/46.8Resolución de issues — 82% de issues cerradas
28.3/38.3Aceptación de PR — 439/594 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs439
open_issues96
closed_issues446
issue_closed_ratio0,823
closed_unmerged_prs155
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
19.1/25Alcance del propietario — 456 seguidores de colbymchenry
22.2/25Trayectoria — 24 repos públicos, cuenta de ~10 años
Datos de entrada utilizados
followers456
owner_typeUser
is_verified
owner_logincolbymchenry
public_repos24
account_age_days3751
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 10 días
20/20Historial de versiones — 237 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@colbymchenry/codegraph, site
ecosystemsnpm
any_deprecatedno
min_days_since_publish10

Calidad de Ingeniería

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

65Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 30 merged PRs checked by a CI test -- score normalized to 0
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://colbymchenry.github.io/codegraph/
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepagehttps://colbymchenry.github.io/codegraph/
has_readme
has_docs_dir
has_description

Seguridad

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

41En riesgo · 16% del índice global
Cómo se puntúa
0/7.5Binary-Artifacts — binaries present in source code
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 30 merged PRs checked by a CI test -- score normalized to 0
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
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
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 8 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
1/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 25 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,5
Excluidos de la puntuación (sin datos o no aplicable): packaging. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages6
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de npm:@colbymchenry/codegraph@1.4.1 —lo que arrastra la instalación del paquete publicado—: 6 paquetes. No se analiza la alcanzabilidad.

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.

70Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .cursor/rules/codegraph.mdc, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 93 de 93 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files.cursor/rules/codegraph.mdc, CLAUDE.md
agent_instruction_max_bytes33.908
Cómo se puntúa
12.6/18Arranque con un solo comando — codegraph-kernel/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — site/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 92 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
2/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock, package-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configssite/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json
agent_commit_share0,92
toolchain_manifestscodegraph-kernel/Cargo.toml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — C (tipado estático)
51.6/55Tamaños de archivo manejables — 28/447 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC
largest_source_bytes34.970.232
source_files_sampled447
oversized_source_files28
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

61.400estrellas de GitHub
38contribuidores
757commits en los últimos 12 meses
0días desde el último push
29versiones publicadas
1factor bus
96issues abiertas
crates.io, npmecosistemas de paquetes

Advertencias de recopilación de datos

  • Could not fetch crates package 'codegraph-kernel' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

Historial de estrellas y forks 61.400 ★ / 3843 ⇿
61.400Estrellas
3843Forks
14Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

Solo se muestra el historial más reciente: este repositorio supera la ventana de recopilación, por lo que no se captura el historial más antiguo.

012.50025.00037.50050.00062.50061.40038432812026-062026-072026-07
Mayor 1Menor 4Parche 9
OpenSSF Scorecard 2.5 / 10
2.5agregado

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-21 16:01 UTC

0Binary-Artifactsbinaries present in source code
5Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 30 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
2Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 2
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities25 existing vulnerabilities detected
Dependencias directas 35
RegistroPaqueteRestricción de versiónManifiesto
crates.ionapi3codegraph-kernel/Cargo.toml
crates.ionapi-derive3codegraph-kernel/Cargo.toml
crates.iotree-sitter0.25codegraph-kernel/Cargo.toml
crates.iosha20.10codegraph-kernel/Cargo.toml
crates.ioregex1codegraph-kernel/Cargo.toml
crates.iotree-sitter-typescript0.23codegraph-kernel/Cargo.toml
crates.iotree-sitter-javascript0.25codegraph-kernel/Cargo.toml
crates.iotree-sitter-java0.23codegraph-kernel/Cargo.toml
crates.iotree-sitter-python0.23codegraph-kernel/Cargo.toml
crates.iotree-sitter-go0.23codegraph-kernel/Cargo.toml
crates.iotree-sitter-c=0.24.2codegraph-kernel/Cargo.toml
crates.iotree-sitter-cpp=0.23.4codegraph-kernel/Cargo.toml
crates.iotree-sitter-rust=0.24.2codegraph-kernel/Cargo.toml
crates.iotree-sitter-c-sharp=0.23.5codegraph-kernel/Cargo.toml
crates.iotree-sitter-ruby=0.23.1codegraph-kernel/Cargo.toml
crates.iotree-sitter-php=0.24.2codegraph-kernel/Cargo.toml
crates.iotree-sitter-swift=0.7.3codegraph-kernel/Cargo.toml
crates.iotree-sitter-r=1.2.0codegraph-kernel/Cargo.toml
crates.iotree-sitter-luau=1.2.0codegraph-kernel/Cargo.toml
crates.iotree-sitter-language0.1codegraph-kernel/Cargo.toml
npm@clack/prompts^1.3.0package.json
npmcommander^14.0.2package.json
npmfast-string-width^3.0.2package.json
npmfast-wrap-ansi^0.2.0package.json
npmignore^7.0.5package.json
npmjsonc-parser^3.3.1package.json
npmpicomatch^4.0.3package.json
npmsisteransi^1.0.5package.json
npmtree-sitter-wasms^0.1.11package.json
npmweb-tree-sitter^0.25.3package.json
npm@astrojs/starlight^0.39.2site/package.json
npm@fontsource-variable/archivo^5.2.8site/package.json
npm@fontsource/ibm-plex-mono^5.2.7site/package.json
npmastro^6.3.1site/package.json
npmsharp^0.34.5site/package.json
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

Avisos de dependencias 0

Instalar npm:@colbymchenry/codegraph@1.4.1 arrastra 6 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 16366,
      "has_wiki": true,
      "homepage": "https://colbymchenry.github.io/codegraph/",
      "languages": {
        "C": 65185610,
        "R": 4991,
        "C#": 6214,
        "Go": 892,
        "C++": 48307,
        "CSS": 5561,
        "Lua": 1931,
        "PHP": 5229,
        "Dart": 10455,
        "Java": 2532,
        "Luau": 1237,
        "Ruby": 3916,
        "Rust": 951316,
        "Astro": 16750,
        "Scala": 7484,
        "Shell": 94349,
        "Swift": 4714,
        "Kotlin": 5406,
        "Python": 12622,
        "JavaScript": 240732,
        "PowerShell": 4241,
        "TypeScript": 5212391
      },
      "pushed_at": "2026-07-21T15:56:40Z",
      "created_at": "2026-01-18T21:45:37Z",
      "owner_type": "User",
      "updated_at": "2026-07-21T15:56:54Z",
      "description": "Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, and Hermes Agent — fewer tokens, fewer tool calls, 100% local",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "C",
      "significant_languages": [
        "C"
      ]
    },
    "owner": {
      "blog": "https://colbymchenry.com",
      "name": "Colby Mchenry",
      "type": "User",
      "login": "colbymchenry",
      "company": null,
      "location": null,
      "followers": 456,
      "avatar_url": "https://avatars.githubusercontent.com/u/18431132?v=4",
      "created_at": "2016-04-12T23:56:33Z",
      "is_verified": null,
      "public_repos": 24,
      "account_age_days": 3751
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2026-07-10T22:40:02Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-07-10T08:44:54Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2026-07-09T04:20:52Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-07-07T19:27:57Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-07-02T03:18:13Z"
        },
        {
          "tag": "v1.1.6",
          "kind": "patch",
          "published_at": "2026-06-30T04:44:10Z"
        },
        {
          "tag": "v1.1.5",
          "kind": "patch",
          "published_at": "2026-06-30T02:08:40Z"
        },
        {
          "tag": "v1.1.4",
          "kind": "patch",
          "published_at": "2026-06-29T21:58:59Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2026-06-29T04:04:12Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2026-06-28T06:34:11Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-06-24T22:20:11Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-06-23T21:46:56Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2026-06-13T21:10:11Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-06-12T18:23:47Z"
        },
        {
          "tag": "v0.9.9",
          "kind": "patch",
          "published_at": "2026-06-02T15:37:39Z"
        },
        {
          "tag": "v0.9.8",
          "kind": "patch",
          "published_at": "2026-06-01T00:22:31Z"
        },
        {
          "tag": "v0.9.7",
          "kind": "patch",
          "published_at": "2026-05-28T20:28:15Z"
        },
        {
          "tag": "v0.9.6",
          "kind": "patch",
          "published_at": "2026-05-27T01:17:58Z"
        },
        {
          "tag": "v0.9.5",
          "kind": "patch",
          "published_at": "2026-05-26T08:00:05Z"
        },
        {
          "tag": "v0.9.4",
          "kind": "patch",
          "published_at": "2026-05-24T10:02:28Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2026-05-22T10:48:20Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2026-05-22T02:26:24Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-05-21T21:11:18Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-05-21T20:59:40Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-05-20T23:43:26Z"
        },
        {
          "tag": "v0.7.10",
          "kind": "patch",
          "published_at": "2026-05-19T16:32:56Z"
        },
        {
          "tag": "v0.7.9",
          "kind": "patch",
          "published_at": "2026-05-18T01:27:17Z"
        },
        {
          "tag": "v0.7.7",
          "kind": "patch",
          "published_at": "2026-05-18T00:29:04Z"
        },
        {
          "tag": "v0.7.6",
          "kind": "patch",
          "published_at": "2026-05-13T14:06:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "157c8e735dc9c14764b0362d216b6b9693cd5cf3",
          "body": "…ex — Swift compiler 185→98s, byte-identical (#1395)\n\nThe swiftc =2/nm:mc-* attribution located the wall: the\ngetSupertypes conformance walk ran 971,200 times (565s of combined\nworker time, 581µs each) — every resolveMethodOnType miss re-queried\nimplements/extends edges for every same-named type nod\n[…]\ndubbo old-vs-new identical\n(49k Java instance-method hits share both paths), Alamofire\nidentical; suite 2,689 ×2 with CODEGRAPH_KERNEL_EXPECT=1.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): generation-tagged supertype memo + method owner ind…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T15:56:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "974e6c8b957054ecba6053726546ea5ef4c1d9d0",
          "body": "…-pattern memo — kong −8% more (−23% cumulative), byte-identical (#1392)\n\nThe kong/tokio matcher-chain residue attributed (nm:mc-* sub-stage rows,\nshipped here too): matchMethodCall's cost is ~entirely\ninferLocalReceiverType — 61µs per miss on kong, 99% miss rate (39k `self:`\ncalls hunting a local d\n[…]\nbbo (49k Java instance-method HITS ride this\nscan), kong, tokio, Fusion dumps all byte-identical; suite 2,689 ×2 with\nCODEGRAPH_KERNEL_EXPECT=1.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): incremental receiver-inference scan memo + compiled…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T05:20:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "abb0a916f7da5175774f1a15d3bb478ed018985f",
          "body": "…olution — kong fresh index −16% (#1391)\n\nThe full-README competitor matrix ranked lua/kong as the largest\nlegitimate fresh-index gap (2.71×). Stage attribution (RESOLVE_PROFILE=2)\npinned it: resolveLuaRequire ran getAllFiles().filter(endsWith) FOUR\ntimes per require ref — ~7.5k string suffix scans \n[…]\nos — it was\nnever dropped on cache clears, so post-sync copybook lookups could serve\na stale file list; cache-drop is the always-safe direction.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): per-context basename index for Lua/Luau require res…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T05:02:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1aa4de6eaa0db4a7d7bd0cc7c1a7ac96d3a840ef",
          "body": "…laces the fixed 150k-ref gate for mid-run boot; tokio −23% (#1390)\n\nThe 9-language competitor matrix exposed tokio as the worst fresh-index\ngap: 77% of its wall was resolution running SEQUENTIALLY — 56k Rust refs\nsit under the fixed 150k pool gate while costing 36µs each (9× Go's\n4µs/ref on prometh\n[…]\nith\nCODEGRAPH_KERNEL_EXPECT=1. Known follow-up: sampling the rate mid-first-\nbatch would close the remaining ~0.3s to the forced-engage ceiling.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): adaptive pool engagement — projected-settle bar rep…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T04:20:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "082ea65f3a72cb0fb93516943814d33a2f5bc669",
          "body": "…/rn/mybatis stop scanning repos they can't match; iface memo (#1389)\n\nStore-arc round 2 (#1388 follow-up). The synthesis pool barrier on dubbo\ncarried ~1.4s of passes that provably could not emit an edge for the\nproject: reactRenderEdges fanned out over every class before checking for\na render meth\n[…]\nava generics text produces jsx edges),\nand §4d buffer→bind on Spring repos (extract() hook forces the decoded\npath — kernel=0 bundles measured).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(synthesis): provably-empty pass gates + prefilters — render/expo…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T02:15:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "27c3c55436907d549109e9d87b476bc5b4895f41",
          "body": "…ility unstrangles the resolver pool on macOS (#1388)\n\nPost-R7b store-arc round 1, found by the dubbo warm-wall decomposition\n(the cbm bar): resolution's loop-stage profile showed settle=3.0s — the\nmain thread idling on TWO resolver workers on an 11-core Mac. Pool sizing\nlogged `size=2 (budget=1068M\n[…]\nlver-pool-sizing gains a darwin-gated reclaimable-pages test +\nan off-darwin null pin; full suite 2,689 green ×2 with\nCODEGRAPH_KERNEL_EXPECT=1.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): darwin-honest memory budget — vm_stat-based availab…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T01:11:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3c1f30ab482030f61620cafb17856bf2e763222b",
          "body": "…leg validated (#1387)\n\nFlips the migration plan's R7b milestone to done: eleven languages across\nfour same-day batches (rust #1371; csharp/ruby/php #1378-#1380; swift/\nkotlin #1381-#1382; r/lua+luau/scala/dart #1383-#1386), batch 4 going\n4-for-4 first-run parity (12-of-13 arc-wide). Also records th\n[…]\nust:1-bookworm + node 22 container with the kernel built from\nscratch and CODEGRAPH_KERNEL_EXPECT=1 — the Linux leg for all 11\npost-R7a walkers.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): mark R7b complete — 20 languages default-routed, Linux …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T01:02:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d1b75a1a277cbcf5e4e7730be1c24fa483ce66ee",
          "body": "…3e + wasm byte-copy vendor, dart default-routed (#1386)\n\nR7b batch 4 #4 — the FINAL R7b language (docs/design/dart-kernel-port-checklist.md\nis the authoritative quirk list). The fourth vendored-grammar-C language,\nwith a twist: production dart resolved its wasm from tree-sitter-wasms,\nwhose dart de\n[…]\nted-file skip pin + two defer pins);\nfull suite 2,688 green ×2 with CODEGRAPH_KERNEL_EXPECT=1.\nDEFAULT_ROUTED += dart (20 langs — R7b COMPLETE).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Dart walker — dart module, vendored-grammar-C d4d8f…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T00:55:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bdd687b49f97a06972638ba61bd63c5f1514a828",
          "body": "…ter@0aca5d0a6f, scala default-routed (#1385)\n\nR7b batch 4 #3 (docs/design/scala-kernel-port-checklist.md is the\nauthoritative quirk list). The third vendored-grammar-C language and the\nbiggest grammar in the tree (35MB parser.c): the vendored wasm is\ntree-sitter/tree-sitter-scala master@0aca5d0a6f \n[…]\ne 2,669 green ×3 with CODEGRAPH_KERNEL_EXPECT=1\n(kernel-scaffold's stays-wasm example moved scala → pascal).\nDEFAULT_ROUTED += scala (19 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Scala walker — scala module, vendored-grammar-C mas…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-21T00:02:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e32135171e34b94ec6e11e1ea1fd6ad1605732d2",
          "body": "…C lua v0.4.1, tree-sitter-luau 1.2.0 pin, both default-routed (#1384)\n\nR7b batch 4 #2 (docs/design/lua-luau-kernel-port-checklist.md is the\nauthoritative quirk list). ONE walker for both dialects (ccpp precedent) —\nthe differences are exactly four: luau's type_definition aliases, the\n`export `-slic\n[…]\nalect defer\npins + kernel-arm wire-flag pins); full suite 2,647 green ×2 with\nCODEGRAPH_KERNEL_EXPECT=1. DEFAULT_ROUTED += lua, luau (18 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Lua+Luau walker — one lua module, vendored-grammar-…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T23:42:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b2f9ab1800d15477ee08ddbd6a3d8a26caf34410",
          "body": "…pin, r default-routed (#1383)\n\nR7b batch 4 #1 (docs/design/r-kernel-port-checklist.md is the authoritative\nquirk list; survey + probe record therein). The lightest-shared-surface,\nheaviest-hook port: languages/r.ts works entirely through the visitNode hook\n(every type list empty except callTypes:['\n[…]\nF + BOM variants +\ndefer pin + kernel-arm quirk pins); full suite 2,638 green ×2 with\nCODEGRAPH_KERNEL_EXPECT=1. DEFAULT_ROUTED += r (16 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b R walker — rlang module, tree-sitter-r 1.2.0 crate …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T23:28:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "45a53eb5b5a977189381baf3751af33a913a6393",
          "body": "…uild, kotlin default-routed (#1382)\n\nSixth R7b port — the T1½ batch finale. Checklist-first recipe\n(docs/design/kotlin-kernel-port-checklist.md, 1,121 lines, dist-extractor\nground truth); parity passed FIRST RUN on all three repos.\n\nTHE NOVEL MECHANISM — vendored-grammar-C (the §4 tracker's prescri\n[…]\ny row (the\nC-build ↔ wasm table identity proof); full suite 2,633 green ×2 under\nCODEGRAPH_KERNEL_EXPECT=1. DEFAULT_ROUTED += kotlin (15 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Kotlin walker — kotlin module, vendored-grammar-C b…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T22:33:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "09e301bbfae5728c3f4bee1cd6a992b81a52a33e",
          "body": "…3 bump, swift default-routed (#1381)\n\nFifth R7b batch-3 port, checklist-first recipe\n(docs/design/swift-kernel-port-checklist.md, 1,056 lines — the largest of the\narc, with a built-extractor-validated emission pin and a childForFieldName\ntruth table).\n\nGrammar bump first, validated standalone: tree\n[…]\n\ncases defer fixture) + swift grammar-parity row; full suite 2,626 green ×2\nunder CODEGRAPH_KERNEL_EXPECT=1. DEFAULT_ROUTED += swift (14 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Swift walker — swift module, tree-sitter-swift 0.7.…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T22:09:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a6c62d77dff4b9e7ad79bc8436ea7c1b31a9f5ce",
          "body": "…p, php default-routed (#1380)\n\nFourth and final R7b batch-2 port, checklist-first recipe\n(docs/design/php-kernel-port-checklist.md).\n\nGrammar bump first, validated standalone with the diff ENUMERATED + CLASSIFIED\n(unlike rust/ruby the php bump is NOT graph-neutral): tree-sitter-php ^0.22\n(tree-sitt\n[…]\nwire-flag pin, defer) + php\ngrammar-parity row; full suite 2,622 green ×2 under CODEGRAPH_KERNEL_EXPECT=1.\nDEFAULT_ROUTED += php (13 languages).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b PHP walker — php module, tree-sitter-php 0.24.2 bum…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T21:08:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19099312385b0b169963040df34a97747e72df18",
          "body": "…bump, ref-flag wire slot, ruby default-routed (#1379)\n\nThird R7b port, checklist-first recipe (docs/design/ruby-kernel-port-checklist.md).\n\nGrammar bump first, validated standalone (the rust pattern): tree-sitter-ruby\n^0.20.1 (tree-sitter-wasms, 2024-02) → v0.23.1 — crate pinned =0.23.1, wasm\nbuilt\n[…]\nODEGRAPH_KERNEL_EXPECT=1 (one unrelated\nmcp-initialize timing flake under parallel load, passes solo 3/3 ×3).\nDEFAULT_ROUTED += ruby (12 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Ruby walker — ruby module, tree-sitter-ruby 0.23.1 …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T20:44:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "286e9ccc2dad45336d4fd67052930322054d64b5",
          "body": "….5 pin, csharp default-routed (#1378)\n\nSecond R7b port, checklist-first recipe (docs/design/csharp-kernel-port-checklist.md;\nparity passed FIRST RUN again). No grammar bump — the #717 vendored wasm verified\ntable-identical to crate 0.23.5 (ABI 15, STATE_COUNT 8053, node-kind + field tables);\nfirst \n[…]\ns + 8 micro-pins + defer) + csharp grammar-parity row;\nfull suite 2,608 ×2 under CODEGRAPH_KERNEL_EXPECT=1. DEFAULT_ROUTED += csharp\n(11 langs).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b C# walker — csharp module, tree-sitter-c-sharp 0.23…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T18:46:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1ca9919435b401b20d7e9afa4297061997b0f99",
          "body": "…4.2 bump, rust default-routed (#1371)\n\nFirst R7b language port. Grammar: tree-sitter-rust pinned =0.24.2 + wasm\nvendored from tag 77a3747 (parser.c/scanner.c sha-matched against the\ncrates.io tarball), replacing the 2023 ABI-14 tree-sitter-wasms build —\nthe bump alone is precision-positive on the w\n[…]\n/ 13,440 / 39,030 nodes); kernel-rustlang-parity suite\n(torture + CRLF + defer) in npm test; full suite green x2 with\nCODEGRAPH_KERNEL_EXPECT=1.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7b Rust walker — rustlang module, tree-sitter-rust 0.2…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T05:08:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce0ae30e09b8f495219893e716ae3974eacd2bd4",
          "body": "…3→276s, 8c envelope ≈11min (§4d round 2) (#1369)\n\nStore-architecture arc round 2. The batched resolution loop reads\nunresolved_refs ONLY through the status index + the PK keyset pager;\nthe other five ref indexes (from_node, name, file_path, from_name,\nfailed_tail) serve sync-time paths — yet every \n[…]\nical; linux counts exact\n2,049,153/6,413,518 and dump sha 6dd1185b… reproduced (10,446,478\nlines); full suite green ×2 (153 files / 2588 tests).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(store): resolution ref-index window — kernel-scale resolution 42…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T04:24:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6d8e8fdab2f3f80cddac0f333886ca9dec5ca2e",
          "body": "…l-scale envelope best-ever 14.2min (§4d round 1) (#1368)\n\nStore-architecture arc round 1 (the cbm speed bar: dubbo warm wall\n10.7-11.2s vs their ~7.5). §4d measured dubbo's parse-loop as 94%\nstore-writer busy with B-tree maintenance as the floor (statement\nbatching and sorted inserts already killed\n[…]\nb… reproduced (10,446,478\nlines); full suite green ×2 (153 files / 2588 tests). Incremental\nsync paths untouched by construction (freshDb gate).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(store): parse-lane index deferral — dubbo fresh init −19%, kerne…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T04:02:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9647771659a453d08afda0d40fe243a50b29ca6f",
          "body": "…ment, fold I/O is a fixed budget (#1366)\n\nTwo nudge shapes probed at 8c kernel scale (passive checkpoint at the pool\nrecycle boundary, fire-and-forget and awaited). The awaited shape reached\nevery §7a.7 shallow floor (read 16.6s, inserts 31.4s, deletes 50.0s) and\npaid exactly what it saved (207.4s \n[…]\nrlaps\noff-thread, and the §7a.7 \"~45s gap to the floor\" is illusory. Code\nreverted; #1362's valve + recycling remain the optimum of this family.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): §7a.11 continuous-shallow WAL probe — killed by measure…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-20T00:01:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69ea438bac1c5b75a83a8d46bc1950448b10d3b4",
          "body": "…across the arc (§7a.10) (#1365)\n\nTask #5 step 2. The fuse-then-link refactor (#1364) left the extraction\nsweep as a clean per-file boundary: raw text in → collected facts out.\nThis ports that sweep to the native kernel: `cfnptr_scan_files`\n(codegraph-kernel/src/cfnptr.rs) strips and scans a batch o\n[…]\n.9→171.1s. E's attributed\nwall grew from overlap shift under parallel synthesis; the phase total\nis the honest number. Full record: plan §7a.10.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(kernel): cFnPtr native extraction sweep — step 2, pass 230→151s …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-19T22:48:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c6850d737b80a330cf45271342ebcb728064b8f9",
          "body": "…ered verbatim linking, pass −22% at kernel scale (#1364)\n\nTask #5 step 1 (plan §7a.8/§7a.9). The C/C++ function-pointer dispatch\nsynthesizer swept every file's text four times (typedefs, registrations,\npropagation, dispatch); at kernel scale the all-or-nothing source cache\ndeclines, so that was 4.4\n[…]\nte green ×2 (152 files / 2563 tests).\n\nStep 2 (native per-file extractor) now has its boundary: the extraction\nsweep, raw text in → records out.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): cFnPtr fuse-then-link — one extraction sweep + filt…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-19T16:43:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b877db617ccd17f1ece6961235e368ec46c55b46",
          "body": "…urement, fuse-then-link is step 1 (#1363)\n\nThree measurements before any port. The stripCStyle split('') rewrite\n(byte-identical segment-builder) measured 1.0× on 15.1M chars of linux C\n— V8's ~73MB/s scan rate IS the cost, and 78s ≈ 4 strips/file × that\nrate: the lever is the redundancy, not the s\n[…]\nrtion\norder + the §7a.4 probe-hash gate); step 2 = native per-file extractor\nbehind the same boundary (raw disk text — no preParse interaction).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): §7a.8 cFnPtr calibration — strip rewrite killed by meas…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-18T22:15:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "971a5a04838aed7885710e220b7394929e91013d",
          "body": "…r-readers fix, superphase −11.4% at 8c (#1362)\n\nThe §7a.6 anomaly probed to its mechanism with five discriminating runs\n(§7a.7 table): main-thread B-tree writes triple under attached readers\nbecause READERS PIN WAL checkpoint progress — the deep WAL taxes every\nwriter page operation (deletes 42.6s \n[…]\nsha 6dd1185b reproduced (10,446,478 lines),\ncounts 2,049,153/6,413,518, suite 2517 green. 2c unchanged by\nconstruction (no pool → no recycling).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): worker connection recycling — WAL-depth writes-unde…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-18T21:58:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5955d04c97de3311476b0ca9d8d84cfff4fcb0d3",
          "body": "… theories killed, writes-under-readers named (#1354)\n\nFresh CODEGRAPH_RESOLVE_PROFILE tables at 2c and 8c on the round-2 build:\nthe 8c settle stage is 3.6s — the double-buffer absorbs the entire\nresolveOne population, superseding §7a.2's core-invariant framing. The\n8c cost is writes-under-readers: \n[…]\n8.5s).\n\nLevers re-ranked: writes-under-readers probe > cFnPtr native site\nextraction (~230s of synthesis) > backpressure byte volume > recreate.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): §7a.6 per-ref measurement round — pool works, two cache…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-18T07:31:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b9d0f57a64b3cd5dcdc6a77d6f65038f2f528a66",
          "body": "…ernel/+mm/ deferral 58.6%→33.9% (#1353)\n\nCensus-driven cut of the top-ranked post-R7a lever. All passes TS-side,\nC-only (preParseCSource), shared by both arms:\n\n- parameterized-annotation whole-blank (__free/__printf/__counted_by/\n  __bpf_md_ptr…; extends through a stranded field `;`)\n- type-keywor\n[…]\n cg1212 re-run 16.4min (was 18.3min);\n8c parse sits on the single-writer floor, so the <10min-on-8c gap re-ranks\nto the per-ref resolution path.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(extraction): C deferral round 2 — 8 new preParse passes, linux k…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-18T06:00:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2d72891b594e78a9f431bc9c17278c6b77a26a1b",
          "body": "…t, 7 new blanks, c/cpp default-routed (#1346)\n\nParity: 0 diffs on redis/git/fmt/protobuf/ALS sweeps; full-init dumps\nbyte-identical on all five + linux at kernel scale (10.4M dump lines,\nsame sha256 both arms). Linux 2c/6GB envelope: kernel-arm 19.1min vs\nwasm-arm 22.9min (parse 356s vs 435s) on a \n[…]\nted by measurement (C/C++ error incidence 9-42%;\n--max-deferral flag); defer-reuse memo kills the 3x re-blank/re-parse\ncost deferred files paid.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R7a C/C++ walker — dual-lang ccpp module, preParse hois…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T21:56:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "44561b6aad535d7d7b2503228051b9834f19cbd6",
          "body": "…2 + cpp v0.23.4, sha-matched (#1345)\n\ntree-sitter-wasms shipped 2023-era C/C++ grammars; the kernel walker must\ncompile the crates.io versions, so production wasm upgrades FIRST and in\nisolation (the R2 pattern). Built with tree-sitter-cli 0.25.10 from each\ntag's CHECKED-IN parser.c: tree-sitter-c \n[…]\n — incl. the UE-macro, misparse-guard,\nMetal, and CUDA coverage. Checklist updated with the vendored revs and the\nmetal/cuda routing correction.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(extraction): vendor current C/C++ grammars (R7a prep) — c v0.24.…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T18:07:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34ad0801aa5c16616929aec22c15665e7e04f678",
          "body": "…ist (#1344)\n\nStep 1 of the §0a recipe for the C/C++ port: every tree-sitter.ts branch,\nextractor-config field, name-salvage helper, and gate the walker must\nmirror, with file:line anchors. Locks the architecture: preParse (all seven\nblanking passes) hoists to the kernel route point so none of it po\n[…]\nvalue-refs are C-only (cpp absent from\nVALUE_REF_LANGS), static-member refs are cpp-only, fn-ref spec is\ncFamilySpec with addressOfOnly for cpp.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): R7a survey complete — the C/C++ bug-for-bug port checkl…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T18:02:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "705e5013286eb1857a92e39ee5e941e9d3af6fe3",
          "body": "…nds (#1343)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): sync §0 P1 checklist with the completed §7a.3/§7a.4 rou…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T17:45:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "636c74a3d2751ff50897f0114fef7f4d75493387",
          "body": "…nvelope, LRU-cyclic-thrash lesson (#1342)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): §7a.4 cFnPtr round record — 2.07x standalone, 17.6min e…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T17:40:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d510de476638eb321b7dfc126848321d455bc887",
          "body": "…edge set hash-identical (#1341)\n\ncFnPtrEdges was 86% of kernel-scale synthesis (306s, §7a.3). Standalone\nprobe iterations against the live kernel DB attributed and fixed:\n\n- sliceLines split the ENTIRE file per node (~1.6M full-file splits across\n  the B/D/E sweeps) — split once per file, slice fro\n[…]\nerge-dedup applied, canonical sort) SHA256\n21c2a971... == the original code's 274,762 edges extracted from the live\nkernel DB. Pass suite 15/15.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(synthesis): cFnPtrEdges 2.07x at kernel scale — probe-profiled, …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T17:20:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9f10318424e3fe20cf81e9f2b3dbe1b02213715a",
          "body": "…liminated, envelope 19.3min; two theories falsified by measurement (#1340)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): §7a.3 batch-loop profile round — countGuard quadratic e…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T16:47:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7cc23668b50359731fa201a530ceca24e72a7ecb",
          "body": "…ed guard, DB-scaled valve caps + resolve profiler (#1339)\n\nThe §7a.2 per-ref profile overturned the assumption the whole arc was\nbuilt on: resolveOne owns only ~93s of the kernel-scale ~433s batch loop.\nLoop-stage attribution (CODEGRAPH_RESOLVE_PROFILE, shipped here) named the\nrest: backpressure fo\n[…]\nefault.\n\nGates: dubbo dump byte-identical; suite 2,491 passed / 4 skipped (kernel\nrequired). Kernel-scale payoff run lands in the plan doc next.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): batch-loop de-quadratic — keyset reads, changes-bas…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T16:27:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19cf1ec75b01077bf69b46dca39fedd54c76c798",
          "body": "…WAL 14x contained; resolution measured core-invariant (#1338)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): P1 record runs — 2c 20.4min (-23%), 8c 18.3min no-OOM, …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T14:52:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2adc7f60c06e1235638ed8dd447728432cd1edfa",
          "body": "…te loses the race it was assumed to lose (#1336)\n\nA truncate checkpoint started against an ACTIVE writer wins the lock and\nthen blocks that writer for its entire backfill; after the edge-index\nrecreate's multi-GB single-transaction burst that exceeds the writer's 5s\nbusy_timeout and fails the index\n[…]\nriter is awaiting the valve.\n\nDubbo gate: exit 0, peak 81MB (barrier folds carry containment), dump\nbyte-identical. Valve + sizing suites 27/27.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(db): WAL truncate at parked barriers ONLY — the timer-path trunca…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T14:11:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca88d3bd151a43663e6576257233b0de3f6e64c2",
          "body": "…izing corrections from the instrumented kernel-scale runs (#1335)\n\nFour §7a.1 instrumented-run findings, each measured:\n\n1. File-size trigger + truncate-at-barrier: a fully-backfilled WAL still\n   grows the FILE without bound — the writer only restarts at frame 0 when a\n   commit finds zero reader \n[…]\nAL_VALVE_DEBUG.\n\nSuite: 2,490 passed / 4 skipped (kernel required). Kernel-scale record\nruns with this build follow in the migration plan §7a.1.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(db,resolution): WAL file cap + cgroup cache credit + pool/parse s…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T13:56:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c1e821495a8d1b8906aac36ccc2354945c73777",
          "body": "…EGRAPH_WAL_VALVE_DEBUG (#1334)\n\nThree §7a.1 run-1 lessons (kernel-scale 2c/6GB: EXIT=137, WAL 22.2GB with\nthe backpressure hook DEPLOYED):\n\n1. TRUNCATE at parked barriers: a completed passive backfill bounds the\n   un-checkpointed backlog but the FILE only stops growing when a commit\n   finds zero \n[…]\nler's verbose plumbing, and give-up lines print under\n   CODEGRAPH_SYNTH_TIMINGS — run 1 failed silently because give-ups were\n   verbose-gated.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(db): WAL valve — TRUNCATE at parked barriers, futility latch, COD…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T13:17:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b8833fec5723f44e76855202bc8445481b02fdfc",
          "body": "…DEGRAPH_RESOLVE_WORKERS (#1333)\n\nPool sizing used os.cpus().length, which enumerates the HOST's CPUs: inside\na 2-CPU cpuset it sized 6 resolver workers (the §7a.1 false-'sequential'\npremise) and 8 parse workers, and at true 8-core concurrency six ~1GB\nworkers OOM-killed a 7GB container (oom_kill=5)\n[…]\npool's\ncore input switches to availableParallelism. Dev machines are unchanged\n(still 6 workers); the 8c/7GB kernel-scale container now sizes 4.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(resolution): memory-aware, cgroup-honest worker-pool sizing + CO…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T12:54:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e52295ceb17eb5e334ea381e2bfe4f96deb21a2",
          "body": "…ackpressure at pool-idle boundaries (#1332)\n\nAt kernel scale the pooled resolution/synthesis superphase grew a 22GB WAL\non a 4.6GB DB (cg1212, §7a.1): autocheckpointing is deferred for the run,\nand the valve's timer-driven passive checkpoints stay perpetually partial\nagainst the pool's continuous r\n[…]\nr = the\nsingle-transaction edge-index recreate) vs defaults 914MB; dumps\nbyte-identical (441,270 rows); wall unchanged (11s). Suite 2,479 green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(resolution): WAL containment for the pooled superphase — writer b…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T12:48:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "04ab45c91fff97263d2d305ecb2908bce80bd159",
          "body": "…ild + 33/33 suites, CRLF find credited (#1330)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): O2 Windows VM validation closed — win32-arm64 native bu…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T06:29:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5e329adc28fb1797e85dab59acc28e152dee2062",
          "body": "… regex crate's (?m)^ is \\n-only (#1329)\n\nOn CRLF checkouts (every Windows autocrlf clone) the JS reference's\nblock-continuation strip /^\\s*\\*\\s?/gm finds a line start after the \\r and\nits greedy \\s* consumes the \\n, leaving a bare \\r in the docstring; the\nkernel's (?m)^ pass matched after \\n only a\n[…]\nne-marker passes; CRLF variants of every torture fixture are\npinned in kernel-tsjs-parity, derived in-memory so nothing can normalize\nthem away.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(kernel): CRLF docstring parity — JS multiline ^ anchors after \\r,…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T06:28:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9e18ac2125d3d298fd3b39360764720727a42b48",
          "body": "…-blind pool), OOM + WAL-pinning findings, revised P1 order; O1 merged, O2 in progress (#1327)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): P1 first measurement round — premise correction (cpuset…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T06:15:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c1dc78d3fa9c7da2705b9554ba0727204d31c69c",
          "body": "Native extraction kernel: Rust parse+extract for TS/JS/Java/Python/Go, byte-identical, default-on (R1-R6)",
          "is_bot": false,
          "headline": "Merge pull request #1326 from colbymchenry/rust-kernel",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T05:36:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8060da28c0dcb8cbec7b51ca6a1fdfbac0060158",
          "body": "…hecklist, §0a operational handoff, superseded-expectation annotations\n\nR1-R6 are done; §0 is now the open-work list in recommended order\n(merge → Windows VM leg → P1 resolution → C/C++ port → long tail), and\n§0a carries everything a fresh session needs: where the work lives, the\nbuild/gate commands\n[…]\nith SUPERSEDED\nannotations pointing at the measurements that corrected them; §7a now\ncarries the R6 numbers that make it the top open perf item.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): make the migration plan a cold-start handoff — status c…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T05:29:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2a79432b1312c8949e3324e53d77a5406daa6546",
          "body": "…arness symlink robustness\n\ncg1212 (Linux kernel, 2 CPU/6GB): completes in 26.4min vs the ~27min\nbaseline with all new machinery active — no regression; graph scale\nidentical (2,048,664 nodes / 6,405,964 edges). The §6 parse expectation\n(6m → ~2m) was mis-premised: the tree is ~99% C, an unported T2\n[…]\nl (19.2m, 73% — P1). The tree's own Python tooling\nfiles: 99/99 byte-parity. kernel-parity.mjs now skips dangling\nsymlinks (Linux dtc fixtures).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): R6 — kernel-scale re-validation record (§4f) + parity-h…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T05:19:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f07fd545adac00d8ea9e236b8febf3aa9cbf9445",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kernel): record 2-CPU django/prometheus benchmarks in §4e",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T04:54:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c2503e2bee5f2a0c880ff536a33736ca31709ecc",
          "body": "Python (codegraph-kernel/src/python.rs) and Go (src/go.rs) join the\nnative kernel, mirroring the wasm extractors bug-for-bug. Python:\ndecorated_definition docstrings/decorators (decorates refs only for\nbare-identifier decorators — the call-kind quirk), function-in-class →\nmethod, module-level assign\n[…]\n); torture fixtures enforced in npm\ntest. DEFAULT_ROUTED now covers typescript/tsx/javascript/jsx/java/\npython/go. Full suite: 2,471 tests pass.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R5 — Python and Go ports, gates passed, default-on",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T04:50:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "28068fa0f13724ef974e238423aa04e664fdeb16",
          "body": "…er, main thread never materializes nodes\n\nKernel-routed files ship their flat tables from the parse worker to the\nstore worker as buffers (tryKernelExtractRaw → kernelBuffers on the\nresult → KernelStoreBundle); the store worker decodes and finalizes\n(finalizeStoreBundle shared with the object path \n[…]\nning many-core gap is a\nstore-architecture arc (deferred index builds, multi-file\ntransactions, buffer→bind), out of the kernel project's scope.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(kernel): direct-to-store decode — buffers flow to the store work…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T04:38:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "03d54e47a1f4eee216ccedc9eb994d34661bccb3",
          "body": "…ult-on\n\nJava joins the native kernel (codegraph-kernel/src/java.rs), mirroring\nthe wasm extractor's Java paths bug-for-bug: package namespaces,\nimports, javadoc, annotations→decorates, type_list inheritance,\nstatic-final constants, enum constants, anonymous classes (including\nthe TS side's 0-based-\n[…]\node JS object\nmaterialization); the buffer contract already carries everything.\n\nDEFAULT_ROUTED now includes java. Full suite: 2,467 tests pass.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R4 — Java port with Lombok synthesis, gate passed, defa…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T04:25:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c8cca9a6014086c99d0141af82690966d4812918",
          "body": "Gate evidence (docs/design/rust-kernel-migration-plan.md §4b):\n\n- Graph parity, byte-identical (stronger than the §5 ≤0.5% bar): full\n  codegraph-init dump-diffs kernel-vs-wasm on express (13,712 rows),\n  excalidraw (89,898), and vscode (2,378,238 rows) — identical bytes.\n  Python control repo (flas\n[…]\nsx, javascript, jsx}. Override:\nCODEGRAPH_KERNEL_LANGS (replaces the set) / CODEGRAPH_KERNEL=0 (kill).\nChangelog entry added under [Unreleased].\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R3 — TS/JS equivalence gate passed, kernel default-on",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T03:50:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ad5cd7ba2428d39b1c818247ac6c9c8a67d6a90",
          "body": "…arity with the wasm path\n\nReplaces the R1 seed .scm emitter with a bespoke Rust walker\n(codegraph-kernel/src/tsjs/) that mirrors TreeSitterExtractor's TS/JS\npaths function-for-function: declarations (incl. #808 field/property\nclassification), qualified names, docstrings (#780 wrapper climbs),\nsigna\n[…]\nopt-in (CODEGRAPH_KERNEL_LANGS) until\nthe R3 equivalence gate (large repo, DB dump-diff, retrieval invariants,\nagent A/B, Linux/Windows) passes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R2 — full TypeScript/JavaScript extraction port, byte-p…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T03:14:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c5eebe6beba7e0c251439f3c46d8445e0184f387",
          "body": "…t, routing + fallback, grammar-parity CI\n\nPhase 0 of the Rust extraction-kernel migration (docs/design/\nrust-kernel-migration-plan.md, now checked in with §3a recording the\nshipped state):\n\n- codegraph-kernel/ napi-rs crate: extractFile(path, content, language)\n  → five flat buffers (meta/nodes/edg\n[…]\nl back to the wasm path); bundles stage\n  lib/kernel/codegraph-kernel.node; release job runs the kernel suites\n  with CODEGRAPH_KERNEL_EXPECT=1.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kernel): R1 scaffold — napi-rs extraction kernel, buffer contrac…",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T01:13:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4efc6c70e23aacbe85fb2fdfcfddae1910d5527a",
          "body": "…g-safe index recreate (#1323)\n\nTwo hazards found by running today's full stack against the Linux kernel\n(70,129 files) in the cg1212 repro container:\n\n1. The parallel-synthesis fallback retried a worker-failed pass on the MAIN\n   thread. At multi-million-node scale a worker failure is usually a mem\n[…]\nn for the native extraction kernel (Rust parse+walk over dubbo's Java:\n202ms rayon / 1.07s single-thread vs 4.7s for the current wasm pipeline).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scale): kernel-scale hardening — OOM-safe pass skipping + watchdo…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-17T00:09:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "567b4ad4be6109b1688525537ffc4c6e1bd0e80f",
          "body": "…tion window, byte-identical graphs (#1322)\n\nThe resolution persist's measured cost is B-tree maintenance on the edges\ntable's five indexes (offline replay of a 224k-edge resolution set: 2.8s with\nall indexes, 1.1s with only the unique identity index, +0.3s to recreate the\nrest). On big runs (same >\n[…]\nw the gate): untouched, byte-identical.\nRecreation cost ~250ms, logged under CODEGRAPH_SYNTH_TIMINGS as\nedge-index-recreate. Suite green (2444).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): drop non-unique edge indexes during the bulk resolu…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T23:26:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cf38ef65afe942f5d8e1122b92b40017f0b9e67c",
          "body": "…, byte-identical graphs (#1321)\n\nThe ~36 independent synthesis passes (callback/event/framework wiring) ran\nsequentially on the indexer's main thread — 2.0s of a 4,402-file Java repo's\nindex, and the stage where kernel-class repos die (#1212). They now live in\nan explicit registry (SYNTH_PASSES) an\n[…]\nxed marks);\nthe pin test counts registry entries plus literal __mark sites.\n\nSuite green (2444). Sequential-path timing unchanged on excalidraw.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(synthesis): fan dynamic-dispatch passes across the resolver pool…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T23:07:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a2f3c31a971dd4cdc017e5c4459612587d20c4c4",
          "body": "…resolution, byte-identical graphs (#1320)\n\nFresh init on a 4,402-file Java repo (dubbo): 18.2s -> 13.5s (-26%), with\nthe resolution phase going 12.6s -> 7.9s (-38%). Graphs verified\nbyte-identical on both the pool path (dubbo) and the sequential path\n(excalidraw).\n\nTwo changes:\n\n1. The fastInit+poo\n[…]\nite green (2444). Sync path timings unchanged. Pool floor re-validated:\nforced-on at 40k refs is still net-slower, so the 150k threshold stands.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(resolution): defer checkpoints and double-buffer persist during …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T22:26:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1de7e8f8b57627249ce7aa3ed4709676cfa0cfd0",
          "body": "…1319)\n\nThree compounding defects (#1196) made a query bag of object-literal\nkeys (`profileInfo isTrialEligible quotaInfo billingMethod`) return\nunrelated results while the defining files never surfaced:\n\n1. Step 5b title-cased interior humps (profileInfo -> Profileinfo) and\n   then compared case-SE\n[…]\nene) is byte-\nidentical; NL queries shift toward more-central callables\n(useUIAppState/getDefaultAppState over observer periphery).\n\nFixes #1196\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(retrieval): multi-hump field-name queries reach their definers (#…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T21:11:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5a8942d1c5f639eff02eb1bca3aa755be995905",
          "body": "…red parent (#1318)\n\n`.gitignore: /repos/` lists `repos/` as ONE ignored entry, while the\nCLI hint (#1156) suggests `includeIgnored: [\"repos/a/\", \"repos/b/\"]` —\nthe child spelling. findIgnoredEmbeddedRepos tested the opt-in matcher\nagainst the PARENT path only, which a child pattern never matches, s\n[…]\ngets the\nsame per-repo check so the hint stops nagging about repos that are\nalready configured while still naming unopted siblings.\n\nFixes #1295\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scan): includeIgnored child patterns revive repos under a gitigno…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T21:01:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c472cfb52e476a31189211266ed21dbecd080926",
          "body": "…ricating call edges (#1317)\n\n\", \".join(sorted(x)) resolved by bare name to a project function named\njoin — one nested inside a DIFFERENT function, so scope alone rules the\nedge out. Both defects from #1230, fixed independently:\n\n1. Extraction: a member call on a LITERAL receiver (string, number,\n  \n[…]\nby construction. The issue's repro is\npinned: join has exactly one caller (format_fields), report_missing\nhas zero project callees.\n\nFixes #1230\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(resolution): literal-receiver builtins and nested locals stop fab…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:55:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "41c20297987416201a1de665eced2bf0dad1571b",
          "body": "…r bare-name guessing (#1316)\n\ntarget.conn.Exec(\"insert\") with `conn *sql.DB` emitted a BARE `Exec`\nref (the receiver chain was dropped for non-identifier receivers), and\nexact-match then bound it to the only local `Exec` — an unrelated\ninterface's method — fabricating an internal dependency (#1276)\n[…]\n/routes, validated,\nincluding the unexported `node` type); the removed edges are the\nprior bare-name guesses on external receivers.\n\nFixes #1276\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(go): field-chain calls resolve via validated type inference, neve…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:49:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ec877b08cc38a2354e1c3f012280c15367a0b41",
          "body": "…ethod (#1315)\n\nreproStore.notifyJoinGuildStatus() after `import { reproStore }`\nresolved its calls edge to the exported CONSTANT (resolvedBy:'import'),\nwhile the identical same-file call resolved to the method via\nlocal-variable receiver inference (#1108) — so `callers <method>`\nmissed every cross-\n[…]\ner reads still reference\nthe value.\n\nexcalidraw control: byte-identical graph (10,653 nodes / 19,483 calls\nedges before and after).\n\nFixes #1292\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(resolution): calls through an imported singleton resolve to the m…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:36:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce983a08fe617dcc3a363112b6523b500f1f342e",
          "body": "The CLI's bare-symbol branch passes includeCode=true to the\ncodegraph_node handler, but the symbol-pinned-to-file branch didn't —\nso exactly when a user disambiguated an overloaded name to one file\n(the point of -f), they got Location + trail with no code (#1284).\n\nFixes #1284\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): `node <symbol> -f <file>` includes the source body (#1314)",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:30:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8dcf92f285a88bf307b8948ec947dce45ff16805",
          "body": "A directory deletion arrives as ONE event on the directory's own path.\nThat path has no source extension, so handleChange dropped it at the\nisSourceFile gate before ever scheduling a sync — and the files inside\nmay never get events of their own (Windows's recursive watcher reports\nonly the top-most \n[…]\nied: manual `codegraph sync` cascades fine). Events for\nlive non-source files stay fully ignored, so build churn schedules\nnothing.\n\nFixes #1285\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(watch): schedule a sync when a directory is deleted (#1313)",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:27:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "18f0745f81548a601282a432e3ccfda44dfb475a",
          "body": "…1312)\n\nThe #1242 fix (WAL deferral + checkpoint valve, the 26x win on\nHDD-class storage) was wired only into indexAll. CodeGraph.sync never\ntouched wal_autocheckpoint, so every incremental run kept the default\n1000-page cadence and re-triggered the #1231 per-page checkpoint\nthrash — a 7-file sync t\n[…]\nl in the finally. Same kill switch\n(CODEGRAPH_NO_WAL_DEFER=1). Idle valve cost is one timer, so\nwatcher-frequency syncs stay cheap.\n\nFixes #1248\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(sync): defer WAL autocheckpoint for the whole incremental run (#…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:21:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b6a05d155b780ae5d391d19f21c4c01480d6423f",
          "body": "…names (#1311)\n\nSEC_ATTR UINT32 LostName(VOID) — an unknown attribute macro before a\ntypedef'd return type — misparses in tree-sitter's C grammar: the macro\nbecomes the type, the return type the declarator, and the PARAMETER\nLIST is stored as the function name (\"(VOID)\"). The C++ grammar\nrecovers th\n[…]\no name changes;\n7 nodes in memdebug.c improve start-line accuracy by 1 (the macro line\nno longer counts as part of the definition).\n\nFixes #1211\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(c): blank leading attribute macros so functions index under real …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:17:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e4379180263392034c8959fa35f84487fa3a3ba4",
          "body": "…names (#1310)\n\nAn out-of-line member definition inside a namespace block takes its\nqualifiedName from the declarator's receiver, which is spelled RELATIVE\nto the enclosing namespace — so `namespace simulator {\nManifestStartup::Output ManifestStartup::Apply(...) {} }` indexed as\nManifestStartup::App\n[…]\nhrough unchanged.\n\nleveldb re-index: node count byte-stable (3,044), calls edges +6,\nnamespace-qualified method names 947 -> 1,252.\n\nFixes #1291\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cpp): compose namespace prefix into out-of-line method qualified …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:10:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4dd29ea5c15e54b30400612e92e9a679705a047b",
          "body": "…iers (#1309)\n\ntemplate<typename T> T Box<T>::get() stored qualified_name Box<T>::get —\nthe <T> qualifier never matched the class node indexed as Box, so the\nmethod didn't link to its class, while the inline form of the same\nmethod produced Box::get. ICU-shaped multi-line template parameter\nlists le\n[…]\n_EXPORT misparse artifact and gmock conversion-operator names,\nboth distinct pre-existing shapes), node count byte-stable at 7,536.\n\nFixes #1286\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cpp): strip template args from out-of-line method receiver qualif…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T20:04:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e1f339f7322b178b81bc4117b8acf24f7a1eae05",
          "body": "cache.Put(\"a\", 1), store.Get(\"config\", out), bus.Handle(\"user.created\",\nh) — any verb-named method with a string first arg — were indexed as\nHTTP routes (38 of 82 route nodes were false positives on the\nreporter's 200 KLOC Go codebase). A registration's first argument must\nnow start with \"/\" (every \n[…]\n method instead of ANY.\n\nValidated on go-chi/chi (212 real routes retained, all path-shaped)\nand golang/groupcache (0 route nodes).\n\nFixes #1259\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(go): require URL-shaped paths for route detection (#1308)",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T19:59:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30421953acea3239935bf67ba94b231ae44a8f4c",
          "body": "…raw path ASCII (#1307)\n\ncodegraph's glyphs were ASCII on every Windows console while\n@clack/prompts drew its Unicode frame around them, so one index block\nmixed `|` and `│` rails (#398). supportsUnicode() now mirrors the\nis-unicode-supported detection clack bundles (Windows Terminal, VS\nCode, ConEm\n[…]\n  the progress callback. Only transient, self-erasing animation frames\n  remain on the raw path, so ASCII never lands in scrollback.\n\nFixes #398\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ui): consistent frame glyphs on Windows — agree with clack, keep …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T19:52:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6efd437b314cf56f35732cc5dcb84ac4eaceac4",
          "body": "… (#1306)\n\nList commands (status, query, callers, callees, impact, files) embedded\nANSI color codes even when stdout was a pipe, and NO_COLOR had no effect.\nOne switch now decides color for all codegraph-authored output:\n--no-color > --color > NO_COLOR > FORCE_COLOR > stdout TTY > CI.\n\nPiped init/in\n[…]\ns the animation but drops the color codes.\nThe detection mirrors picocolors' so @clack frames and our own lines\nagree within a run.\n\nFixes #1281\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): honor NO_COLOR/--no-color and go plain when stdout is piped…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T19:39:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5736e24bb6e5627bf664294ec718a0469be86866",
          "body": "…yte-identical graphs (#1305)\n\n* perf(index): ~34% faster fresh indexing, byte-identical graphs\n\nProfiling a fresh init on a medium TS repo (excalidraw, 657 files) showed\nthe main thread as the critical path: per-row SQLite statement calls,\nrepeated import-resolution walks, and per-row FTS trigger f\n[…]\nnode\nJS<->WASM marshaling is the floor, which a traversal swap cannot remove.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(index): faster fresh indexing + parallel reference resolution, b…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T19:21:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "246aee837341183912c82b3e727410e9fe1a1567",
          "body": "Follow-up to #1299: the per-pass bar still parked on one number while a\nsingle long pass ran — on C-heavy repos that's the fn-pointer dispatch\npass, which sweeps every C/C++ file four times (typedefs, registrations,\nfield propagation, dispatch sites) and dominates the linking phase.\n\nThe pass now re\n[…]\nhe linking bar now\nmoves through 88→89→90 where it previously sat at 88 for the whole\npass; graph byte-identical (50,520 nodes / 148,232 edges).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ui): within-pass progress for the C fn-pointer linking pass (#1300)",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T01:05:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad5300a6015bf7463c2a7b65341f3036ee7ad366",
          "body": "…ode:sqlite warning spam (#1299)\n\nTwo first-run UX bugs surfaced by indexing a real 1,342-file C repo:\n\n1. After 'Resolving refs' hit 100%, the ~40 dynamic-dispatch synthesis\n   passes ran with no progress surface, so the bar sat frozen at 100%\n   long enough to read as a hang (the C fn-pointer pass\n[…]\n.\n\nVerified end-to-end on the same repo: zero warnings, live linking bar,\nbyte-identical graph (50,520 nodes / 148,232 edges). Full suite green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ui): show synthesis as a 'Linking dynamic dispatch' phase; mute n…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T00:44:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "243ef1d3e2353a82b8200921e435167da3760a81",
          "body": "…nt verified releases (#1298)\n\nAll seven published packages (@colbymchenry/codegraph + six platform\nbundles) now have this repo's release.yml configured as their trusted\npublisher on npmjs.com, so publishes authenticate via the workflow's\nOIDC identity instead of a long-lived NPM_TOKEN. The runner u\n[…]\nges: how npm provenance\nand the GitHub Release attestations work and the commands to verify them\n(npm audit signatures / gh attestation verify).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): switch npm publishing to OIDC trusted publishing; docume…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T00:23:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a66683d3ebbea1165c96abc2f1d3c6332d868436",
          "body": "…grade (#1297)\n\nOne-time, strictly opt-in prompt at the end of codegraph install and\ncodegraph upgrade to join the CodeGraph Pro beta waitlist (same list as\nthe getcodegraph.com homepage form). Nothing is sent unless the user\nanswers yes AND enters an email; either answer is recorded machine-wide\nso no later install or upgrade re-asks, and --yes / non-interactive / CI\nruns never see the prompt.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(installer): offer CodeGraph Pro beta signup after install and up…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T00:11:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2b0b4b587ecfc07dc5ae089db39c5672593d3f9c",
          "body": "…bundles (#1296)\n\nEvery published artifact is now cryptographically verifiable as built by\nthis repo's Release workflow: npm publishes carry npm provenance (OIDC,\nshows the Provenance badge on npmjs.com), and the GitHub Release bundles\n+ SHA256SUMS get signed build attestations via\nactions/attest-bu\n[…]\nper-platform package.jsons — npm --provenance refuses to publish without\none matching the repo — and the root package.json gains the same field.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): publish npm packages with provenance and attest release …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-16T00:10:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e871c49a3173a637172f501f21f6a2753ea5a39f",
          "body": "…s can't drop sibling call sites (#1269) (#1270)\n\nPost-batch cleanup deleted resolved refs (and parked failed ones) by\n(from_node_id, reference_name, reference_kind) — no line/col. When one\ncaller had several call sites to the same callee and a batch boundary\nsplit them, the first batch's cleanup re\n[…]\n edges, fix keeps 5); nlohmann/json re-index is a strict superset\nof the previous edge set (0 lost, 422 recovered, spot-checked against\nsource).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(resolution): clean up processed refs by row id so batch boundarie…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-13T01:09:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6103f5e228a6ce2dacddbf77ed6b934f7179e48a",
          "body": "…rator method (#1268)\n\n* fix(cpp): resolve explicit operator calls (a.operator+(b)) to the operator method (#1247)\n\ntree-sitter-cpp can't parse an operator_name in field position: the\ncall_expression carries `function: <receiver>` plus an ERROR child\nwrapping the operator_name instead of a field_exp\n[…]\noperator[] call to an in-repo operator[]) — silent miss,\n  never a wrong edge\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cpp): resolve explicit operator calls (a.operator+(b)) to the ope…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-13T00:56:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ecc8b307ac2f8a7d06bff02ee513c4ea2380b2f8",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "docs(changelog): promote [Unreleased] into [1.4.1]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-10T22:38:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7155952084ed567c16015512c92b4cfa33d876bc",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "release: sync package-lock.json to 1.4.1",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-10T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8a47bdd79e1190065c783ea68ab81db8616fe45",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump version to 1.4.1",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T22:37:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "40aa092f5bd082a1d6b48245741646efbccd3091",
          "body": "…#1254)\n\n* fix(uninstall): remove the CLI binaries too, not just agent configs (#1071)\n\n`codegraph uninstall` swept agent configurations and stopped — every\ninstalled binary stayed behind, so `codegraph` still ran afterward. Three\ndisconnected paths each removed a fraction of an installation (uninst\n[…]\nand the\nwin32 test now pins the WORKING invocation instead of the broken one.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(uninstall): remove the CLI binaries too, not just agent configs (…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T22:37:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47823944a387deb2c042e7f3b2b3ea49212be4e9",
          "body": "…ging anything (#1243) (#1253)\n\nThe recommended MCP config launches the local binary, so a server left\nrunning drifts behind releases silently — users discover the version gap\nonly when something breaks. Per the reporter's preferred option 1, the\nserver now checks the latest GitHub release in the ba\n[…]\nCK=1\n(broad convention — already set by data-plane deployments) suppresses the\nnetwork call and the notice entirely. Documented in TELEMETRY.md.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): notice when a newer CodeGraph release exists, without chan…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T22:36:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b82fe71f85e8e112343d3d9e6b214b1f789cdeb",
          "body": "…tier when they collide with real callables (#1252)\n\nhandleExplore's named-symbol seeding treats every identifier-shaped query\ntoken as \"a symbol the agent named\" and grants its definition the\nnamed-FIRST sort tier. Natural-language questions broke this assumption:\nordinary words exact-matched unrel\n[…]\nofire and excalidraw\nbyte-identical, grpc improved (the add-collision file drops out and\nclientconn.go + dialoptions.go lead). Full suite green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(explore): stop NL-question words from hijacking the named-symbol …",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T21:20:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "70b1be6a21213c7be84bd9540f273596058bbea2",
          "body": "…clared type (#1220) (#1251)\n\nCarries #1221 by @w0lan plus a hardening pass: property-receiver typing consults property-shaped declarations only (typed property / promoted ctor param / pseudoconstructor assignment / assignment-followed classic ctor and typed setter), so same-named locals and parameters can never mistype a property.\n\nCo-authored-by: Roman Wolan <roman.wolan@morizon-gratka.pl>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(php): resolve method calls through $this-> properties on their de…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T20:47:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d0cd3a7d1d4e2ab93b0c24e21bf62054e35eab4",
          "body": "…atisfying symbol (#1240) (#1249)\n\n* chore: ignore .kommandr/ directory\n\n* fix(sync): resolve cross-file refs when an edit adds or removes the satisfying symbol (#1240)\n\nIncremental sync scoped reference resolution to the changed files' own\nrefs, and a completed pass deleted every ref it failed to r\n[…]\nre\ncache, reset by any full re-index). 8 regression tests added.\n\nFixes #1240\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(sync): resolve cross-file refs when an edit adds or removes the s…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T17:19:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "386bff0f8478c05209c439b9001f9970a833b536",
          "body": "… upgrade (#1238) (#1239)\n\n* fix(upgrade): refresh installer-written agent surfaces after a binary upgrade\n\ncodegraph upgrade swapped the binary but never revisited what earlier\ninstalls wrote into CLAUDE.md / AGENTS.md / GEMINI.md and the agent\nconfigs, so sections written by a pre-1.0 installer ke\n[…]\nresh change reporting\n\n---------\n\nCo-authored-by: xuing <np2v9bvbbs@privaterelay.appleid.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Colby McHenry <me@colbymchenry.com>",
          "is_bot": false,
          "headline": "fix(upgrade): refresh installer-written agent surfaces after a binary…",
          "author_name": "XU Pengfei",
          "author_login": "xuing",
          "committed_at": "2026-07-10T15:58:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "63eb488ed4bfb73081c45d6f672b177c1a96ed59",
          "body": "… resolved version after every upgrade (#1238, #1071) (#1245)\n\nTwo fixes to make `codegraph upgrade` trustworthy in the terminal it ran in:\n\n1. detectInstallMethod checked the bundle layout before the node_modules\n   path check, but the npm thin-installer's per-platform package IS a\n   complete bund\n[…]\nserves.\n\nCompanion to #1239: the misdetection also broke its post-upgrade\n`install --refresh` for npm users (the spawn resolved the stale shim).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(upgrade): stop npm installs self-shadowing on upgrade; verify the…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T15:52:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "edb9f2f14cd7394a4d31f94ebc871531ef498ab0",
          "body": "…re heartbeat silence AND no disk progress (#1231) (#1244)\n\nThe liveness watchdog judged the main thread by heartbeat silence alone,\nwhich cannot distinguish a true wedge (the #850 infinite loop it exists to\nkill) from one long synchronous SQLite statement on severely degraded\nstorage — so it SIGKIL\n[…]\noduction, with store stalls measured\nat 10-20s — completes cleanly where the old watchdog killed it, while\ntrue-wedge kill latency is unchanged.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(watchdog): don't kill a healthy index on degraded storage — requi…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T13:25:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "116cb596259a8881be1d90843ef20c4be8d258c7",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "docs(changelog): promote [Unreleased] into [1.4.0]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-10T08:43:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "531a046c8effd36b2e8e30e1fc6f08471bd7f839",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "release: sync package-lock.json to 1.4.0",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-10T08:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50e978ee8138a21f9ea74cbde22fd11a433a8d53",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: 1.4.0",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T08:42:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a11a439002dd0d7bda8683fb8da2b03deec956e6",
          "body": "…s, and WAL checkpoint write-back (#1231) (#1242)\n\nParse timeouts are now judged by the worker's own clock: the base timer\nonly marks a job late (after a long synchronous store stall, Node runs the\ntimers phase before the poll phase, so the timer fired before an\nalready-delivered result was processe\n[…]\npped\nfiles (was 8); guava-scale completes in 7.6 min with a full graph where\nv1.3.1 needed 25 min for a repo 5× smaller. Unthrottled: no change.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(indexing): HDD-class storage — false parse timeouts, dropped file…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T08:42:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e76a355df5a3489c4cd6ee26cb8bd967893b4348",
          "body": "…d de-quadratic its line accounting (#1235) (#1237)\n\nclosureCollectionEdges scanned every method/function node in every\nlanguage, but its dispatcher patterns ({ $0( / { it( ) are Swift/Kotlin\ntrailing-closure syntax — on PHP/JS repos the pass can never emit an\nedge, yet .push(/.add( fired its append\n[…]\n 72.7s, graph byte-identical.\nAlamofire: closure-collection edges byte-identical (9 edges, 4 fields).\nDrupal core control: graph byte-identical.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(resolution): gate closure-collection synthesis to Swift/Kotlin an…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-10T01:54:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e552dc2d2f5da4507ebe906b68b3ba806e204eb8",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "docs(changelog): promote [Unreleased] into [1.3.1]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-09T04:19:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a4d9f96873fb56732c74181adb43046a72c3ecf",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "release: sync package-lock.json to 1.3.1",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-09T04:19:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a8463f502a33b7dc88fd763fab3a40ef88ccf46",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 1.3.1",
          "author_name": "Colby McHenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-09T04:18:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a3f90089e8433ecf99c1d16461582dcbead99096",
          "body": "… fixes (#1212) (#1226)\n\nLarge-codebase indexing died at the end of \"Resolving refs\" two ways:\nwatchdog kills of healthy work (24k-file Java on Windows, #1212 — third\niteration of the #1091/#1122 class) and hard OOMs (Linux kernel scale,\nwhere v1.3.0 could not complete at any watchdog setting). Root\n[…]\nics kept:\nCODEGRAPH_SYNTH_TIMINGS pass/phase timings, CODEGRAPH_MCP_DEBUG hop\ntracing. Design record: docs/design/main-thread-stall-followup.md.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(indexing): bounded-memory yielding pipeline tail + daemon session…",
          "author_name": "Colby Mchenry",
          "author_login": "colbymchenry",
          "committed_at": "2026-07-09T04:18:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "58b6bf5c601185e0d48289fb10b1dd89fd080614",
          "body": "[skip ci] Auto-generated by Release workflow.",
          "is_bot": true,
          "headline": "docs(changelog): promote [Unreleased] into [1.3.0]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T19:26:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 29,
      "commits_last_year": 757,
      "latest_release_at": "2026-07-10T22:40:02Z",
      "latest_release_tag": "v1.4.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 21,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 1.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@colbymchenry/codegraph",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/@colbymchenry/codegraph",
          "is_deprecated": false,
          "latest_version": "1.4.1",
          "repository_url": null,
          "versions_count": 44,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 380388,
          "first_published_at": "2026-01-18T22:53:32.067000Z",
          "latest_published_at": "2026-07-10T22:42:49.408000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 10
        },
        {
          "name": "site",
          "exists": true,
          "license": "SEE LICENSE IN README.md",
          "keywords": [
            "game",
            "app",
            "website",
            "framework",
            "engine",
            "animation",
            "html5",
            "svg",
            "html",
            "web",
            "blog"
          ],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/site",
          "is_deprecated": false,
          "latest_version": "2.60.4",
          "repository_url": null,
          "versions_count": 237,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 1858,
          "first_published_at": "2013-09-20T20:48:56.696000Z",
          "latest_published_at": "2023-01-13T19:43:29.734000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1284
        }
      ]
    },
    "popularity": {
      "forks": 3843,
      "stars": 61400,
      "watchers": 135,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-11",
            "count": 20
          },
          {
            "date": "2026-06-12",
            "count": 47
          },
          {
            "date": "2026-06-13",
            "count": 34
          },
          {
            "date": "2026-06-14",
            "count": 26
          },
          {
            "date": "2026-06-15",
            "count": 36
          },
          {
            "date": "2026-06-16",
            "count": 44
          },
          {
            "date": "2026-06-17",
            "count": 28
          },
          {
            "date": "2026-06-18",
            "count": 39
          },
          {
            "date": "2026-06-19",
            "count": 21
          },
          {
            "date": "2026-06-20",
            "count": 17
          },
          {
            "date": "2026-06-21",
            "count": 26
          },
          {
            "date": "2026-06-22",
            "count": 34
          },
          {
            "date": "2026-06-23",
            "count": 43
          },
          {
            "date": "2026-06-24",
            "count": 36
          },
          {
            "date": "2026-06-25",
            "count": 32
          },
          {
            "date": "2026-06-26",
            "count": 41
          },
          {
            "date": "2026-06-27",
            "count": 22
          },
          {
            "date": "2026-06-28",
            "count": 28
          },
          {
            "date": "2026-06-29",
            "count": 20
          },
          {
            "date": "2026-06-30",
            "count": 22
          },
          {
            "date": "2026-07-01",
            "count": 22
          },
          {
            "date": "2026-07-02",
            "count": 18
          },
          {
            "date": "2026-07-03",
            "count": 19
          },
          {
            "date": "2026-07-04",
            "count": 13
          },
          {
            "date": "2026-07-05",
            "count": 15
          },
          {
            "date": "2026-07-06",
            "count": 20
          },
          {
            "date": "2026-07-07",
            "count": 28
          },
          {
            "date": "2026-07-08",
            "count": 23
          },
          {
            "date": "2026-07-09",
            "count": 24
          },
          {
            "date": "2026-07-10",
            "count": 18
          },
          {
            "date": "2026-07-11",
            "count": 15
          },
          {
            "date": "2026-07-12",
            "count": 16
          },
          {
            "date": "2026-07-13",
            "count": 25
          },
          {
            "date": "2026-07-14",
            "count": 26
          },
          {
            "date": "2026-07-15",
            "count": 19
          },
          {
            "date": "2026-07-16",
            "count": 13
          },
          {
            "date": "2026-07-17",
            "count": 18
          },
          {
            "date": "2026-07-18",
            "count": 12
          },
          {
            "date": "2026-07-19",
            "count": 7
          },
          {
            "date": "2026-07-20",
            "count": 19
          },
          {
            "date": "2026-07-21",
            "count": 14
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 3843
      },
      "star_history": {
        "days": [
          {
            "date": "2026-07-17",
            "count": 205
          },
          {
            "date": "2026-07-18",
            "count": 156
          },
          {
            "date": "2026-07-19",
            "count": 153
          },
          {
            "date": "2026-07-20",
            "count": 205
          },
          {
            "date": "2026-07-21",
            "count": 281
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_stars": 61400
      },
      "open_issues_and_prs": 331
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "site/tsconfig.json",
        "telemetry-worker/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [
        "codegraph-kernel/Cargo.toml"
      ],
      "largest_source_bytes": 34970232,
      "source_files_sampled": 447,
      "oversized_source_files": 28,
      "agent_instruction_files": [
        ".cursor/rules/codegraph.mdc",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 33908
    },
    "dependencies": {
      "manifests": [
        "codegraph-kernel/Cargo.toml",
        "package.json",
        "site/package.json",
        "telemetry-worker/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 6,
        "assessed_package": "npm:@colbymchenry/codegraph@1.4.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm"
      ],
      "dependencies": [
        {
          "name": "napi",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "napi-derive",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "tree-sitter",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "sha2",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10"
        },
        {
          "name": "regex",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tree-sitter-typescript",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.23"
        },
        {
          "name": "tree-sitter-javascript",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "tree-sitter-java",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.23"
        },
        {
          "name": "tree-sitter-python",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.23"
        },
        {
          "name": "tree-sitter-go",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.23"
        },
        {
          "name": "tree-sitter-c",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.24.2"
        },
        {
          "name": "tree-sitter-cpp",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.23.4"
        },
        {
          "name": "tree-sitter-rust",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.24.2"
        },
        {
          "name": "tree-sitter-c-sharp",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.23.5"
        },
        {
          "name": "tree-sitter-ruby",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.23.1"
        },
        {
          "name": "tree-sitter-php",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.24.2"
        },
        {
          "name": "tree-sitter-swift",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=0.7.3"
        },
        {
          "name": "tree-sitter-r",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=1.2.0"
        },
        {
          "name": "tree-sitter-luau",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=1.2.0"
        },
        {
          "name": "tree-sitter-language",
          "manifest": "codegraph-kernel/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "@clack/prompts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.2"
        },
        {
          "name": "fast-string-width",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.2"
        },
        {
          "name": "fast-wrap-ansi",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "ignore",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.5"
        },
        {
          "name": "jsonc-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.1"
        },
        {
          "name": "picomatch",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "sisteransi",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.5"
        },
        {
          "name": "tree-sitter-wasms",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.11"
        },
        {
          "name": "web-tree-sitter",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.25.3"
        },
        {
          "name": "@astrojs/starlight",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.39.2"
        },
        {
          "name": "@fontsource-variable/archivo",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.8"
        },
        {
          "name": "@fontsource/ibm-plex-mono",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.7"
        },
        {
          "name": "astro",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.3.1"
        },
        {
          "name": "sharp",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.34.5"
        }
      ],
      "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": 235,
        "merged_prs": 439,
        "open_issues": 96,
        "closed_ratio": 0.823,
        "closed_issues": 446,
        "closed_unmerged_prs": 155
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "colbymchenry",
          "commits": 674,
          "avatar_url": "https://avatars.githubusercontent.com/u/18431132?v=4"
        },
        {
          "type": "User",
          "login": "omonien",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/1296517?v=4"
        },
        {
          "type": "User",
          "login": "andreinknv",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/261684394?v=4"
        },
        {
          "type": "User",
          "login": "MO2k4",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/453360?v=4"
        },
        {
          "type": "User",
          "login": "arttttt",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/23432909?v=4"
        },
        {
          "type": "User",
          "login": "msnandhis",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/45960035?v=4"
        },
        {
          "type": "User",
          "login": "GeneralClaw",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/116990813?v=4"
        },
        {
          "type": "User",
          "login": "thismilktea",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/166263725?v=4"
        },
        {
          "type": "User",
          "login": "luoyxy",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/32702206?v=4"
        },
        {
          "type": "User",
          "login": "0x1306a94",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/14822396?v=4"
        }
      ],
      "contributors_sampled": 38,
      "top_contributor_share": 0.911
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "deploy-site.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 0,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
            "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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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 8 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": 2,
            "reason": "dependency not pinned by hash detected -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "25 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "157c8e735dc9c14764b0362d216b6b9693cd5cf3",
        "ran_at": "2026-07-21T16:01:42Z",
        "aggregate_score": 2.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/colbymchenry/codegraph",
    "host": "github.com",
    "name": "codegraph",
    "owner": "colbymchenry"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 67,
      "inputs": {
        "security": 41,
        "vitality": 83,
        "community": 80,
        "governance": 61,
        "engineering": 65
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 83,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "commits_last_year": 757,
              "human_commit_share": 0.93,
              "days_since_last_push": 0,
              "active_weeks_last_year": 21
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "21/52 weeks with commits",
                "points": 14.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "757 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 757
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 29,
              "latest_release_tag": "v1.4.1",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 1.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "29 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~1.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 80,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "forks": 3843,
              "stars": 61400,
              "watchers": 135,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "window_too_short"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "61,400 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 61400
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3,843 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3843
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "135 watchers",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 135
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "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": 22.5,
                "status": "met",
                "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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 93,
            "inputs": {
              "packages": [
                "@colbymchenry/codegraph",
                "site"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 382246
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "382,246 downloads/month across npm",
                "points": 74.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 382246,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 61,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 28,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 38,
              "top_contributor_share": 0.911
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 91% of commits",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 91
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "38 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 38
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "merged_prs": 439,
              "open_issues": 96,
              "closed_issues": 446,
              "issue_closed_ratio": 0.823,
              "closed_unmerged_prs": 155
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "82% of issues closed",
                "points": 38.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 82
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "439/594 decided PRs merged",
                "points": 28.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 439,
                      "decided": 594
                    }
                  }
                ],
                "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": 64,
            "inputs": {
              "followers": 456,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "colbymchenry",
              "public_repos": 24,
              "account_age_days": 3751
            },
            "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": "456 followers of colbymchenry",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 456,
                      "login": "colbymchenry"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "24 public repos, account ~10 yr old",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 24
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@colbymchenry/codegraph",
                "site"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 10
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 10 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "237 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 237
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 65,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://colbymchenry.github.io/codegraph/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "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://colbymchenry.github.io/codegraph/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "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": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 41,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 26,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 2.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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 8 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 2",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "25 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@colbymchenry/codegraph@1.4.1 runtime dependency closure — what installing the published package pulls in — 6 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@colbymchenry/codegraph@1.4.1",
                  "assessed": 6
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 6,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 6,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": 1
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 70,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".cursor/rules/codegraph.mdc",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 33908
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".cursor/rules/codegraph.mdc, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".cursor/rules/codegraph.mdc, CLAUDE.md"
                    }
                  }
                ],
                "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": "93 of 93 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 93,
                      "sampled": 93
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "site/tsconfig.json",
                "telemetry-worker/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.92,
              "toolchain_manifests": [
                "codegraph-kernel/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "codegraph-kernel/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "codegraph-kernel/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "site/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "site/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "92 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 92,
                      "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 2",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "primary_language": "C",
              "largest_source_bytes": 34970232,
              "source_files_sampled": 447,
              "oversized_source_files": 28
            },
            "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": "28/447 source files over 60KB",
                "points": 51.6,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 447,
                      "oversized": 28
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "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": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": [
    "Could not fetch crates package 'codegraph-kernel' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T16:02:16.193433Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/colbymchenry/codegraph.svg",
  "full_name": "colbymchenry/codegraph",
  "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.23.0 — metodología completa · wiki de métricas.

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