公开记录
软件健康报告模式 0.23.0 · 指标 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 星标⑂ 3,843 复刻始于 2026年1月在 GitHub 上查看 ↗

colbymchenry/codegraph 的健康指数为 100 分中的 67 分,处于「中等」区间。 其得分最高的类别是Vitality(83/100),最低的是Security(41/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

67
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

Colby Mchenry个人账户
456 关注者24 个公开仓库始于 2016年4月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npm@colbymchenry/codegraph1.4.1380,3884410 天前
npmsite2.60.41,8582371284 天前gameappwebsiteframeworkengineanimationhtml5svghtmlwebblog

按类别列示的指标

活力

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

83良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
14.5/36提交节奏 — 52 周中有 21 周有提交
18/18提交量 — 最近一年 757 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year757
human_commit_share0.93
days_since_last_push0
active_weeks_last_year21

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 29 个发布版本
36/36发布时效 — 最近一次发布版本于 10 天前
27/27发布节奏 — 约每 1.4 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count29
latest_release_tagv1.4.1
releases_from_tags
days_since_latest_release10
mean_days_between_releases1.4

社区与采用

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

80良好 · 占总体的 18%
评分方式
60/60星标 — 61,400 个星标
25/25复刻 — 3,843 个复刻
11.8/15关注者 — 135 位关注者
所用输入
forks3,843
stars61,400
watchers135
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonwindow_too_short

社区健康

50中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
74.4/80月度下载量 — npm 合计每月 382,246 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packages@colbymchenry/codegraph, site
dependents
ecosystemsnpm
total_downloads
monthly_downloads382,246
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

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

61中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
2/22.5提交分布 — 头号贡献者编写了 91% 的提交
13.5/13.5贡献者广度 — 38 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled38
top_contributor_share0.911
评分方式
38.5/46.8议题解决 — 82% 的议题已关闭
28.3/38.3PR 接受 — 已裁定的 PR 中 439/594 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs439
open_issues96
closed_issues446
issue_closed_ratio0.823
closed_unmerged_prs155
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
19.1/25所有者影响力 — colbymchenry 有 456 位关注者
22.2/25既往记录 — 24 个公开仓库,账户约 10 年
所用输入
followers456
owner_typeUser
is_verified
owner_logincolbymchenry
public_repos24
account_age_days3,751
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — npm 上有 2 个软件包
35/35发布时效 — 最近一次发布于 10 天前
20/20版本历史 — 237 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@colbymchenry/codegraph, site
ecosystemsnpm
any_deprecated
min_days_since_publish10

工程质量

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

65中等 · 占总体的 20%

工程实践

48存在风险
评分方式
24/24CI 工作流 — 2 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-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
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://colbymchenry.github.io/codegraph/
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepagehttps://colbymchenry.github.io/codegraph/
has_readme
has_docs_dir
has_description

安全

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

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

安全态势

26危急
评分方式
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.5许可证 — 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 — 无数据
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
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2.5
已排除计分(无数据或不适用):packaging。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages6
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 npm:@colbymchenry/codegraph@1.4.1 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 6 个软件包。 未对可达性进行分析。

AI 就绪度

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

70良好 · 占总体的 0%
评分方式
45/45代理指令 — .cursor/rules/codegraph.mdc, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 93 次人类提交中有 93 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files.cursor/rules/codegraph.mdc, CLAUDE.md
agent_instruction_max_bytes33,908
评分方式
12.6/18一条命令的引导启动 — codegraph-kernel/Cargo.toml(工具链约定,无任务运行器)
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — site/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 92 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
2/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
所用输入
has_nix
has_tests
lockfilesCargo.lock, package-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configssite/tsconfig.json, telemetry-worker/tsconfig.json, tsconfig.json
agent_commit_share0.92
toolchain_manifestscodegraph-kernel/Cargo.toml
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — C(静态类型)
51.6/55可控的文件大小 — 采样的 447 个源文件中有 28 个超过 60KB
所用输入
primary_languageC
largest_source_bytes34,970,232
source_files_sampled447
oversized_source_files28
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
0/40可运行示例
所用输入
example_dirs
has_mcp_signal
api_schema_files

关键数据

61,400GitHub 星标
38贡献者
757最近 12 个月提交数
0距最近推送天数
29发布版本数
1巴士系数(bus factor)
96开放议题
crates.io, npm软件包生态系统数

数据采集警告

  • 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

更多细节

Star 与 Fork 历史 61,400 ★ / 3,843 ⇿
61,400Star
3,843Fork
14发布

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

仅显示最近的历史——该仓库超出采集窗口,因此未采集最早的历史记录。

012,50025,00037,50050,00062,50061,4003,8432812026-062026-072026-07
主版本 1次版本 4修订 9
OpenSSF Scorecard 2.5 / 10
2.5综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。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
不适用Packagingpackaging 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
直接依赖 35
注册表软件包版本约束清单文件
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
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

依赖安全公告 0

安装 npm:@colbymchenry/codegraph@1.4.1 会引入 6 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "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"
}

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

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

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