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

stainless-code / codemap

Cut AI-agent token waste ~90% — query a local SQLite structural index of your JS/TS/CSS codebase with SQL in one round-trip instead of 3–5 file reads. Symbols, imports, calls, components, CSS tokens, coverage, markers. CLI, MCP (21 tools), HTTP, GitHub Action, ESM API. 71 recipes; AST+resolver; SARIF/audit/baselines for CI.

TypeScriptMIT★ 8 星标⑂ 1 复刻始于 2026年4月在 GitHub 上查看 ↗

stainless-code/codemap 的健康指数为 100 分中的 63 分,处于「中等」区间。 其得分最高的类别是Vitality(83/100),最低的是Community & Adoption(49/100)。 最近一次更新在 3 天前。 近期的大部分工作由 1 位贡献者完成。

63
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

1 关注者9 个公开仓库始于 2024年11月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npm@stainless-code/codemap0.11.48,315386 天前agentsaicodebasedependenciesimportsindexsqlitesymbols

按类别列示的指标

活力

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

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

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 38 个发布版本
36/36发布时效 — 最近一次发布版本于 6 天前
27/27发布节奏 — 约每 6 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count38
latest_release_tag@stainless-code/codemap@0.11.4
releases_from_tags
days_since_latest_release6
mean_days_between_releases6
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

49存在风险 · 占总体的 18%
评分方式
13.7/60星标 — 8 个星标
0/25复刻 — 1 个复刻
0/15关注者 — 0 位关注者
所用输入
forks1
stars8
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

52中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 没有议题或无数据
36.2/38.3PR 接受 — 已裁定的 PR 中 198/209 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/21 approved changesets -- score normalized to 0
所用输入
merged_prs198
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs11
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
2.2/25所有者影响力 — stainless-code 有 1 位关注者
10.6/25既往记录 — 9 个公开仓库,账户约 1 年
所用输入
followers1
owner_typeOrganization
is_verified
owner_loginstainless-code
public_repos9
account_age_days615
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
35/35发布时效 — 最近一次发布于 6 天前
20/20版本历史 — 38 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@stainless-code/codemap
ecosystemsnpm
any_deprecated
min_days_since_publish6

工程质量

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

77良好 · 占总体的 20%

工程实践

62中等
评分方式
24/24CI 工作流 — 5 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
14/20OpenSSF Scorecard:CI-Tests — 17 out of 22 merged PRs checked by a CI test -- score normalized to 7
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://stainless-code.com/codemap
10/10仓库描述
10/10主题标签 — 20 个主题标签
10/10Wiki
所用输入
topicsai-agents, ai-coding, ast, code-graph, code-index, code-intelligence, code-navigation, codebase, css, cursor, dead-code, dependencies, devtools, mcp, model-context-protocol, refactoring, sarif, sqlite, static-analysis, typescript
has_wiki
homepagehttps://stainless-code.com/codemap
has_readme
has_docs_dir
has_description

安全

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

52中等 · 占总体的 16%

安全态势

43存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
1.8/2.5CI-Tests — 17 out of 22 merged PRs checked by a CI test -- score normalized to 7
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/21 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
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 — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
5.2/7.5Vulnerabilities — 3 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4.3
已排除计分(无数据或不适用):branch_protection, packaging, signed_releases。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
13.2/25间接依赖不含已知公告 — 1 个受影响:@hono/node-server 1.19.15 (moderate 5.9)
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories1
affected_packages1
assessed_packages202
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
比对的是 npm:@stainless-code/codemap@0.11.4 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 202 个软件包。 未对可达性进行分析。

AI 就绪度

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

69中等 · 占总体的 0%
评分方式
45/45代理指令 — .cursor/rules/agents-first-convention.mdc, .cursor/rules/agents-tier-system.mdc, .cursor/rules/architecture-priming.mdc, .cursor/rules/authoring-discipline.mdc, .cursor/rules/codemap.mdc, .cursor/rules/concise-reporting.mdc, .cursor/rules/consumer-surfaces.mdc, .cursor/rules/docs-governance.mdc, .cursor/rules/docs-voice-priming.mdc, .cursor/rules/lessons.mdc, .cursor/rules/no-bypass-hooks.mdc, .cursor/rules/plan-pr-inspiration-discipline.mdc, .cursor/rules/pr-comment-fact-check.mdc, .cursor/rules/tracer-bullets.mdc, .cursor/rules/verify-after-each-step.mdc, AGENTS.md, docs/agents.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 83 次人类提交中有 83 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files.cursor/rules/agents-first-convention.mdc, .cursor/rules/agents-tier-system.mdc, .cursor/rules/architecture-priming.mdc, .cursor/rules/authoring-discipline.mdc, .cursor/rules/codemap.mdc, .cursor/rules/concise-reporting.mdc, .cursor/rules/consumer-surfaces.mdc, .cursor/rules/docs-governance.mdc, .cursor/rules/docs-voice-priming.mdc, .cursor/rules/lessons.mdc, .cursor/rules/no-bypass-hooks.mdc, .cursor/rules/plan-pr-inspiration-discipline.mdc, .cursor/rules/pr-comment-fact-check.mdc, .cursor/rules/tracer-bullets.mdc, .cursor/rules/verify-after-each-step.mdc, AGENTS.md, docs/agents.md
agent_instruction_max_bytes34,650
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — apps/docs/tsconfig.json, fixtures/minimal/tsconfig.json, tsconfig.json
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
8/8自动化维护 — 最近 100 次提交中有 4 次为自动依赖更新
8/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsapps/docs/tsconfig.json, fixtures/minimal/tsconfig.json, tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0.04
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
54.7/55可控的文件大小 — 采样的 355 个源文件中有 2 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes84,238
source_files_sampled355
oversized_source_files2
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — recipes
所用输入
example_dirsrecipes
has_mcp_signal
api_schema_files

关键数据

8GitHub 星标
1贡献者
273最近 12 个月提交数
3距最近推送天数
38发布版本数
1巴士系数(bus factor)
0开放议题
npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 4.3 / 10
4.3综合

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

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
7CI-Tests17 out of 22 merged PRs checked by a CI test -- score normalized to 7
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/21 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
0Dangerous-Workflowdangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
7Vulnerabilities3 existing vulnerabilities detected
直接依赖 10
注册表软件包版本约束清单文件
npm@clack/prompts1.7.0package.json
npm@modelcontextprotocol/sdk1.29.0package.json
npmbetter-sqlite312.11.1package.json
npmchokidar5.0.0package.json
npmlightningcss1.33.0package.json
npmoxc-parser0.140.0package.json
npmoxc-resolver11.24.2package.json
npmpackage-manager-detector1.7.0package.json
npmtinyglobby0.2.17package.json
npmzod4.4.3package.json
全部依赖 未采集

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

依赖安全公告 1

安装 npm:@stainless-code/codemap@0.11.4 会引入 202 个包(直接与传递):其中 1 个存在已知公告,0 个为直接依赖。

软件包版本关系严重程度公告数修复版本
@hono/node-server1.19.15间接12.0.5

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "ai-coding",
        "ast",
        "code-graph",
        "code-index",
        "code-intelligence",
        "code-navigation",
        "codebase",
        "css",
        "cursor",
        "dead-code",
        "dependencies",
        "devtools",
        "mcp",
        "model-context-protocol",
        "refactoring",
        "sarif",
        "sqlite",
        "static-analysis",
        "typescript"
      ],
      "is_fork": false,
      "size_kb": 2752,
      "has_wiki": true,
      "homepage": "https://stainless-code.com/codemap",
      "languages": {
        "CSS": 1343,
        "MDX": 78403,
        "Astro": 21903,
        "Shell": 4210,
        "JavaScript": 56346,
        "TypeScript": 2412478
      },
      "pushed_at": "2026-07-22T16:21:05Z",
      "created_at": "2026-04-06T14:38:36Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T16:23:19Z",
      "description": "Cut AI-agent token waste ~90% — query a local SQLite structural index of your JS/TS/CSS codebase with SQL in one round-trip instead of 3–5 file reads. Symbols, imports, calls, components, CSS tokens, coverage, markers. CLI, MCP (21 tools), HTTP, GitHub Action, ESM API. 71 recipes; AST+resolver; SARIF/audit/baselines for CI.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://stainless-code.com/",
      "name": "STAINLESS CODE",
      "type": "Organization",
      "login": "stainless-code",
      "company": null,
      "location": null,
      "followers": 1,
      "avatar_url": "https://avatars.githubusercontent.com/u/188862219?v=4",
      "created_at": "2024-11-18T12:13:00Z",
      "is_verified": null,
      "public_repos": 9,
      "account_age_days": 615
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "@stainless-code/codemap@0.11.4",
          "kind": "other",
          "published_at": "2026-07-20T10:29:51Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2026-07-20T10:03:35Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-07-07T09:53:24Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-06-16T16:51:17Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-06-11T10:42:57Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2026-06-05T08:27:21Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-06-04T19:09:51Z"
        },
        {
          "tag": "v0.9.5",
          "kind": "patch",
          "published_at": "2026-05-28T10:25:47Z"
        },
        {
          "tag": "v0.9.4",
          "kind": "patch",
          "published_at": "2026-05-27T16:55:29Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2026-05-27T16:28:45Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2026-05-27T15:21:01Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-05-26T18:06:42Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-05-26T17:07:15Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-05-21T18:28:19Z"
        },
        {
          "tag": "v0.7.5",
          "kind": "patch",
          "published_at": "2026-05-18T07:38:21Z"
        },
        {
          "tag": "v0.7.4",
          "kind": "patch",
          "published_at": "2026-05-16T07:42:16Z"
        },
        {
          "tag": "v0.7.3",
          "kind": "patch",
          "published_at": "2026-05-15T18:45:15Z"
        },
        {
          "tag": "v0.7.2",
          "kind": "patch",
          "published_at": "2026-05-15T18:12:27Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-05-15T17:12:24Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-05-15T16:37:28Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-05-15T15:02:17Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-05-15T13:50:00Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-05-14T14:44:48Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-04-30T19:15:41Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-04-27T12:18:20Z"
        },
        {
          "tag": "v0.2.2",
          "kind": "patch",
          "published_at": "2026-04-09T07:42:57Z"
        },
        {
          "tag": "v0.2.1",
          "kind": "patch",
          "published_at": "2026-04-08T17:19:51Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-04-08T15:21:11Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-04-08T11:10:52Z"
        },
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2026-04-08T10:43:31Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2026-04-07T15:29:49Z"
        },
        {
          "tag": "v0.1.6",
          "kind": "patch",
          "published_at": "2026-04-07T14:55:15Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-04-07T14:07:13Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-04-07T13:52:22Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-04-07T11:03:58Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-04-07T10:00:39Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-04-07T08:34:53Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-04-07T07:31:51Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a7f1f1c671940a2a008a0de128c8306bb1582b1e",
          "body": "* chore(docs): bump Blume to 1.1.3\n\n* chore: override fast-uri to 3.1.4 for bun audit\n\nBlume 1.1.3 pulls ajv → fast-uri@3.1.3 (GHSA-v2hh-gcrm-f6hx, high). Pin the patched 3.1.4 release so CI audit can pass.",
          "is_bot": false,
          "headline": "chore(docs): bump Blume to 1.1.3 (#213)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-22T16:18:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bada9196dfac83045bed43612f1b36d8592af88c",
          "body": "Keep the marketing footer off content pages by dropping it from the Blume layout registry.",
          "is_bot": false,
          "headline": "docs: render site footer only on the homepage (#207)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T12:53:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4595ccf2505b85ce853b7dad121a733ce2d7ca4f",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#206)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T10:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd625cdeb5ab0dada0cdf2ff5f3940f2c03071c1",
          "body": "workflows is a PAT OAuth scope, not a workflow permissions key — GitHub rejects the file before Release can run.",
          "is_bot": false,
          "headline": "fix(release): drop invalid workflows permission from GITHUB_TOKEN (#205)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T10:27:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1359b49f95b21ef1bd3cb8b64c649634f0c11756",
          "body": "Keep \"Query your codebase.\" in the title only; align site, Hero, and package.json on the capacity pitch.",
          "is_bot": false,
          "headline": "docs: stop repeating brand one-liner in OG and npm descriptions (#204)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T10:22:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95b350f962a32b3f762e79fd5d4d46b33ee66957",
          "body": null,
          "is_bot": false,
          "headline": "docs(release): slim workflows permission comment",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T10:04:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7af7fc899f83b63a8b709f11fa128537341f8ae",
          "body": "GITHUB_TOKEN without workflows permission was rejected when pushing the\npost-publish tag after 0.11.3 shipped to npm.",
          "is_bot": false,
          "headline": "fix(release): grant workflows write so changeset tag push succeeds",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T10:03:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09efd9d34ccd88f7c6bc9a9ed22c518b0ffeca3e",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Commits](https://github.com/actions/checkout/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: '7'\n  depen\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 4 to 7 (#195)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T09:56:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed01ec656319d092dd333402b8a41406d3484e38",
          "body": "Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/v3...v4)\n\n-\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump github/codeql-action from 3 to 4 (#196)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T09:56:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "20b3f55b99cc5df5cf05abcc8a3317b5acd18bd1",
          "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifac\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/upload-artifact from 4 to 7 (#197)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T09:56:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b4a85479e41f0a9dda2985f29859e6ffb321d51f",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: '\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/setup-node from 4 to 7 (#198)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T09:55:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f67ce82475e5e47f4b12d52c4bda388699c894bd",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#203)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T09:55:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c629c55ec2199ea4dc10e51d66c50520b954d866",
          "body": "* feat(docs): ship Blume public docs site at /codemap\n\nAdd apps/docs (guides, recipes, concepts, reference + curated roadmap),\nTypeDoc API pipeline, CI/deploy workflows, and docs-voice agent skills.\n\n* docs: retire docs-site plan after public site ships\n\nDelete + lift content boundary into docs/READ\n[…]\n point Why / When to skip at it.\n\n* docs: address CodeRabbit nits on config guide and validate wrapper\n\nDocument root/databasePath knobs; fail fast on spawn errors and 120s timeout for blume validate.",
          "is_bot": false,
          "headline": "feat(docs): public site (#202)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-20T09:53:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e17d716b59b9a5ca7ce9fad8c06e8d98823c6e13",
          "body": "Release publish failed in worker-pool.dist.test.ts (node dist/index.mjs\n--full exited 1) because bun install built better-sqlite3's native addon\nagainst the runner's default Node ABI, then setup-node switched to Node\n24 for trusted publishing → ERR_DLOPEN_FAILED (NODE_MODULE_VERSION 141\nvs 137). Reo\n[…]\ntest:golden having indexed fixtures/minimal, but check runs\ntest:scripts before test:golden, so a fresh repo hit \"no such table:\nsymbols\". Case 1 now indexes via a shared indexFixtureMinimal() helper.",
          "is_bot": false,
          "headline": "fix(release): pin Node 24 before install so better-sqlite3 ABI matches",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-07T09:51:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f7f4414bddf924e00267d6b96e994ba28df6358",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#188)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T09:33:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdacb91643bd97fee54cccd83aea2e4dde98c02b",
          "body": "* chore(deps): bump packages and preserve agents init note styling\n\nRefresh runtime and toolchain deps to latest, and keep dim note() text\nin agents init after @clack/prompts 1.6 changed the default formatter.\n\n* harden: repin lockfile, slim changeset, guard dimNote wiring\n\nRe-sync bun.lock workspac\n[…]\nared bun engine floor was >=1.0.0 — tighten to match the actual\nruntime requirement. Node floor (^20.19.0) already covers styleText\n(added in 20.12.0).\n\nCodeRabbit review on #186.\n\n* rebuild lock file",
          "is_bot": false,
          "headline": "chore(deps): bump packages and preserve agents init note styling (#186)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-07T09:32:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4afb0e2c76263cdf9b7fe63c3d67b6c93f9b2ace",
          "body": "* adopt persist repo practices: release, CI, .agents\n\nRelease: npm trusted publishing (OIDC, no NPM_TOKEN) + Sigstore provenance.\nCI: least-priv perms, SHA-pinned checkout + persist-credentials:false, check-pack job, audit blocks on high/critical, dependabot.\nTooling: check:pack (attw+publint), :cha\n[…]\nrts must\nresolve against exports (prose depth + no-internals defer to\nauthoring-discipline § PROSE + existing items, no duplication).\n\n* add changeset for trusted publishing + provenance + sideEffects",
          "is_bot": false,
          "headline": "Adopt persist repo practices: release, CI, .agents (#187)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-07-07T08:22:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aaa5b3a2eb05554a3039d9672226b6effbfbcda0",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#185)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-16T16:49:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aff23766db67e8e171ea7d8ef1183f4a9631f76",
          "body": "Refresh runtime and toolchain deps to latest, add hono/js-yaml overrides\nso bun audit is clean, and include a patch changeset.",
          "is_bot": false,
          "headline": "chore(deps): bump packages and pin transitive audit fixes",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-16T16:47:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2eab3afbdd7109b15b8a1f885f65ecdd35264c21",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#171)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-11T10:41:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb73e0d272a0d5b93cd143f61054a7b927b4332b",
          "body": "* feat: tiered show lookup fast paths and covering index\n\nRoute lone name:Token queries to equality lookup; add\nidx_symbols_name_covering; document fast vs slow tiers in CLI/MCP help.\n\n* harden: lift tiered lookup docs across consumer surfaces\n\nFix roadmap anchor, glossary/show recipe cross-refs, mc\n[…]\n: lint-staged test globs and verify-after-each-step parity\n\nAdd *.test.tsx glob for co-staged pairs; align rule table and Rule 4 with\nlint-staged.config.js (scripts/**/*.test.mjs, relatedTests scope).",
          "is_bot": false,
          "headline": "feat: tiered show/snippet lookup fast paths (#184)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T09:44:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b509e4c808a3652604357dcea64a34833de0f74f",
          "body": "* feat: add map_id and codebase_map to context bootstrap\n\nAgents get a hash-stable routing card on context (CLI/MCP/HTTP) plus MCP\ninitialize instructions appendix; opt out via --no-codebase-map or compact.\n\n* harden: parity and watch-ordering for codebase map bootstrap\n\nAlign skill shard, MCP tool \n[…]\nstructions.\n\n* harden: test resolveMcpInitializeInstructions override path\n\nExtract instructions resolver from runMcpServer so CodeRabbit fix has\nregression coverage without stdio integration harness.",
          "is_bot": false,
          "headline": "feat: codebase map bootstrap (map_id + routing hints) (#183)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T09:16:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4f608738eecfe280a7e070ce5ea75c855f30a94",
          "body": "Fact-checked against context-engine, show-search-mode, and db indexes.\nRoadmap links both backlog items to executable tracer-bullet slices.",
          "is_bot": false,
          "headline": "docs(plans): add agent-ready bootstrap map and tiered lookup plans",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T08:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bd841b9d27d7f3fbe2d49f2144f53f862c3ceb3",
          "body": "Add schema rebuild warnings on minor bumps and remove maintainer-only\nwording from coverage-confirmed-dead consumer changelog body.",
          "is_bot": false,
          "headline": "chore(changeset): audit pending release notes for accuracy",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T08:16:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "abec46c9f7a32325a3e5d9ad6dbbadcf2e954347",
          "body": "Lift shipped agent milestones to agents.md, prune roadmap [x] backlog,\nand align docs with code (apply conflict count, SCHEMA_VERSION 40,\nbenchmark fan-out pairing, marketplace/substrate plan metadata).",
          "is_bot": false,
          "headline": "harden: doc fact-check fixes and roadmap prune",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T06:51:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd0b094c637117627de80ed6fdc636b9bc7ada1e",
          "body": "Delete orchestrator plan and check off roadmap now that #180–#182 are shipped.",
          "is_bot": false,
          "headline": "docs: close security-hardening program after PR3 merge",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T06:32:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3568c5f3e0f83f05ca0aaf9eebd7d0f0b69bb4cf",
          "body": "* feat(runtime): guard root switches and isolate test global state\n\nCodify one-root-per-process: initCodemap/configureResolver throw on mid-process\nroot changes except audit worktree reindex (runtime-swap bracket). Validate user\nconfig at loadUserConfig; roll beforeEach/afterEach teardown across ini\n[…]\n consumer-clean\ndocs/changeset; delete plan and repoint orchestrator + roadmap.\n\n* harden: cover loadUserConfig invalid .ts paths at load\n\n* chore(changeset): patch bump for runtime root guard tighten",
          "is_bot": false,
          "headline": "feat(runtime): guard root switches and isolate test global state (#182)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T06:25:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aae172f40bd2afd214d93e8d2e9941b0b1471312",
          "body": "* feat(impact): scope homonym symbols with inPath and per-file walks\n\nAdd --in / MCP in for defining-file disambiguation; homonym call graphs\nunion per file instead of merging by name. Docs, changeset, and tests.\n\n* harden: impact homonym parity, plan retirement, and inPath edge case\n\nAlign consumer surfaces, delete shipped plan, fix skipped_scope on unknown\nsymbols with inPath, and add homonym/MCP regression tests.\n\n* docs(glossary): add skipped_backends to impact envelope",
          "is_bot": false,
          "headline": "feat(impact): scope homonym symbols with inPath (#181)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T06:04:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5caca8e5ba5d08206fe68228e0d9dff8a17e014",
          "body": "* feat(security): harden query, serve, and validate read surfaces\n\nClose the formatted-query query_only gap, require --token on non-loopback\nserve binds, and reject validate paths that escape the project root or\nsymlink outside it.\n\n* harden: read-surface PR parity, bind policy, and ship docs\n\nAdd c\n[…]\nwave1 plan retirement\n\nAlign validate reason docs across consumer surfaces, extend formatted-query\nDML coverage to diff formats, retire security-hardening-wave1 plan with\norchestrator/roadmap updates.",
          "is_bot": false,
          "headline": "feat(security): harden query, serve, and validate read surfaces (#180)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-11T05:40:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8595173216db236050a363fcffc98d9c60471c44",
          "body": "…179)\n\n* feat(churn): git churn ingest and churn-complexity-hotspots recipe\n\nAdd file_churn substrate with full/incremental/idle refresh on every index pass, codemap ingest-churn for golden seeds, and a refactor-priority recipe ranked by churn × complexity with perf-baseline churn_ms gating.\n\n* hard\n[…]\n replaceFileChurn/mergeFileChurnForPaths in transactions; validate churn_trend on JSON ingest; align README, recipe, agent-content, and CLI help for churn.file override and hotspots alias distinction.",
          "is_bot": false,
          "headline": "feat(churn): git churn ingest and churn-complexity-hotspots recipe (#…",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T15:06:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "36106ff66b691bfbe682da5e5cb29a1779e24a1e",
          "body": "* feat(duplicates): body_hash structural dupes + harden pass\n\nAdd symbols.body_hash (canonical body AST for function-shaped symbols),\nSCHEMA_VERSION 39, duplicates recipe, golden scenario, and agent rule row.\nRetire ast-hash-duplication plan into architecture/glossary/golden-queries.\n\n* harden: null\n[…]\nion.body-hash agent-eval probe; fix spike-crap tier count\nafter fixture symbols; add duplicates-recipe-scope regression tests;\nsetter/nullish-scope unit tests; consumer doc caveats (LIMIT, async/gen).",
          "is_bot": false,
          "headline": "feat(duplicates): body_hash structural duplication detection (#178)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T13:12:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb8bae9492c879fa8d7b82ef726b9fe82b8705d6",
          "body": "* feat(audit): add findingKey helper for delta attribution (Plan 4 slice 4.1)\n\nProject rows to requiredColumns and JSON.stringify for stable keys aligned with computeDelta / diffRows identity; unit tests cover all v1 deltas.\n\n* feat(audit): attribution on --base added rows (Plan 4)\n\nTag ref-sourced \n[…]\nskill): sharpen harden-pr Task spawning and finding schema\n\nRequire parallel Task subagents per pass; add prompt template, JSON\nfinding shape, merge/dedupe rules, and explicit anti-inline-review rule.",
          "is_bot": false,
          "headline": "feat(audit): attribution on --base added rows (#177)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T10:54:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "16687a0d0bf403d2278d763c355575e161142eaa",
          "body": "* feat(recipes): add coverage-confirmed-dead recipe (Plan 3 slice 3.1)\n\nFork untested-and-dead with confidence/reason/caller_count columns — high when ingested coverage is 0%, medium when unmeasured; honors shared suppressions.\n\n* test(golden): coverage-confirmed-dead scenarios with preSetup clear-c\n[…]\nge-deletion-confidence plan and lift contract\n\nDelete shipped plan doc, mark roadmap item done, slim agent-enrichment-wave to plan 4 only, cross-link untested-and-dead, refresh fixture README goldens.",
          "is_bot": false,
          "headline": "feat(recipes): coverage-confirmed-dead with confidence columns (#176)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T10:12:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af86d100f3c6f107b575589a9a244728ea53e0b6",
          "body": "* feat(recipes): high-crap-score with graph-estimated coverage (plan 2)\n\nSpike locks 85/40/0% reachability tiers on fixtures/minimal; ships\nhigh-crap-score recipe (measured override when coverage ingested),\ngolden + script tests, and high-complexity-untested cross-link.\n\n* harden: CRAP consumer surf\n[…]\nfor PR #175\n\nTighten unresolved_import_blind_spot to name-only matching, extend changeset/CAPABILITIES/fixture README/agent skill, add labyrinth measured-vs-estimated test, and refresh README goldens.",
          "is_bot": false,
          "headline": "feat(recipes): high-crap-score with graph-estimated coverage (#175)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T09:50:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a11242e887c76bc439bb5fb09cc0d9589319e584",
          "body": "* feat(recipes): evidence columns on boundary-violations (slice 1.1)\n\nAdd reason and evidence_json to boundary-violations SQL; golden + golden-queries\ncontract; agent-enrichment-wave tracer doc for plans 1-4.\n\n* feat(recipes): caller evidence on deprecated-symbols (slice 1.2)\n\nreason has_callers/no_\n[…]\njson('true') for list-cap markers; exercise >3 caller branch via\nProductCard now() fixture; fix stale unimported-exports action text;\nadd architecture + skill evidence lines; refresh affected goldens.",
          "is_bot": false,
          "headline": "feat(recipes): evidence chains on high-judgment recipe rows (#174)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-10T09:29:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4982c49fd7a96a5185ed09bccca8caac0911c77",
          "body": "Add `symbols.cognitive_complexity` (Sonar-inspired, SCHEMA 38) with class-method coverage, recipe `high-cognitive-complexity` (default `min_score=15`), and `cognitive_complexity` column on `high-complexity-untested` rows (cyclomatic gate unchanged).\n\nIncludes else-if parent-nesting fix, harden pass (minor changeset, tests, golden), and harden-pr skill commits on branch.",
          "is_bot": false,
          "headline": "feat(index): Sonar cognitive complexity column and recipes",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T16:20:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf7df2fd94a855f0f48bc8ce509836e7f3e6d8d2",
          "body": "* feat(query): add CodeClimate and badge CI output formats.\n\nGitLab Code Quality ingestion and README/CI issue-count summaries are output modes on existing recipe rows — flat minor severity and codemap-badge/v1 per plan F.7/F.8.\n\n* chore(changeset): use patch bump for pre-v1 additive formats.\n\n* fix\n[…]\nerprint line with emitted begin + test gaps\n\nFingerprint hashes use the same line as location.lines.begin (default 1).\nAdd MCP/CLI/handler regression tests for warnings, combo guards, and happy paths.",
          "is_bot": false,
          "headline": "feat(query): CodeClimate and badge CI output formats (#172)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T13:35:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e74410cf2fd0095cca83ca501b8d69786fc17b56",
          "body": "* feat(mcp): add ToolAnnotations hints on tools/list and GET /tools\n\nMCP clients can distinguish read-only query tools from destructive apply\ntools via readOnlyHint/destructiveHint; HTTP catalog exposes the same fields.\n\n* fix(mcp): address PR review — SDK guard, tests, docs lift\n\n- M.6: probe ToolA\n[…]\noadmap item\n- Document index-mutator readOnlyHint: false in consumer surfaces\n\n* chore: add changeset for MCP ToolAnnotations release notes\n\n* test(mcp): cover M.6 guard false path for ToolAnnotations",
          "is_bot": false,
          "headline": "feat(mcp): ToolAnnotations hints on tools/list and GET /tools (#170)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T13:02:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2bc86e1fc4ee145c6beea56988d223df437d1af4",
          "body": "Repair broken anchors, add real heading targets for session/context\nwiring, correct packaging subtree count, and tighten benchmark CI\nwording after the reference-doc fact-check.",
          "is_bot": false,
          "headline": "docs: fix cross-refs and stale prose from top-level audit",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T12:37:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b98fc9e53548026ff36529c36ba0064956eb3d69",
          "body": "Repair broken Tier 11 anchor, tier-status contradictions, dangling LSP\npointer, and stale perf-plan tier citation after the plans lifecycle trim.",
          "is_bot": false,
          "headline": "docs: fix plan-sweep cross-refs flagged in review",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T12:08:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22d2ea0483d9466c18d5dc34e8700c279b4e4c18",
          "body": "Collapse substrate-extraction shipped tiers (1–6, partial 9–12) to stubs\nwith canonical pointers; slim github-marketplace (Slice 5 runbook) and\nperf-triangulation (Phase 3 open work). Fix audit-worktree API name,\nfts --no-fts claim, graph-CRAP motivator, apply-write-safety dupe table.",
          "is_bot": false,
          "headline": "docs(plans): lifecycle sweep — slim shipped inventory, fix fact errors",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T12:06:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe4209f20f45b8b896736ae6df28aa29b3d51e1a",
          "body": "Glossary § fan-in now points at C.9 closed-dead-subgraph caveat.\naudit-delta-attribution plan links audit verdict to Core substrate\nsection (not Recipe & audit enrichment).",
          "is_bot": false,
          "headline": "docs: fan-in caveat + fix audit-verdict roadmap anchors",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T12:01:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "684ce51382463ad87bcad5e7086a3ebccf5a729a",
          "body": "Lift dual-agent findings, apply-path rejected alternatives, and backlog\nitems into benchmark/architecture/roadmap; retarget cross-refs; delete\nthree adopted research notes per docs-governance Rule 8.",
          "is_bot": false,
          "headline": "docs: close research sweep — lift decisions, delete adopted archives",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T11:50:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "849a121a20f2af07de40220b2ec8160a0b0df237",
          "body": "bun run clean now wipes local index state under .codemap/ for a true fresh tree; .env and docs/research/scratch/ stay preserved.",
          "is_bot": false,
          "headline": "fix(clean): remove .codemap from git clean exclusions",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T11:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76aed6ef67ab3c9a96010e0962c1927f4feb3b88",
          "body": "Exclude local maintainer drafts alongside .env and .codemap so bun run clean does not delete gitignored scratch files.",
          "is_bot": false,
          "headline": "fix(clean): preserve docs/research/scratch from git clean -xdf",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T11:32:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f35a15fcc4c22946018d1fbf4c3cbbaea0d8ed52",
          "body": "Maintainers can keep uncommitted drafts under docs/research/scratch/; only .gitkeep is tracked. Documented in docs/README.md alongside tracked research/ evaluations.",
          "is_bot": false,
          "headline": "docs: add gitignored research/scratch for local working notes",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T11:31:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ab9607edaabf8d5bbb9fd13efa038ff8a04d332",
          "body": "Add roadmap entries and standalone plan files for audit attribution, evidence chains, apply write-safety, churn hotspots, cognitive complexity, AST-hash dupes, CRAP/coverage recipes, CI output formats, MCP annotations, and shell installer — plus agent-start sections on C.9, LSP, and Marketplace Action plans.",
          "is_bot": false,
          "headline": "docs: expand backlog with agent-ready implementation plans",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T11:26:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22588beae179d0479d3cb750927713c6e71625b9",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#168)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-05T08:26:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1632bdd5cff7560bf6d437f2c6bd940996d20bc3",
          "body": "* chore: bump deps and adopt Socket Firewall Free in CI\n\nRefresh toolchain and parser packages to latest, and route CI dependency\ninstalls through Socket Firewall Free so malicious packages are blocked\nbefore they reach runners.\n\n* chore: add changeset for dependency refresh",
          "is_bot": false,
          "headline": "chore: bump deps and adopt Socket Firewall Free in CI (#169)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T07:59:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "231d6cc32d77fa94b69ded7394457dfc558060c8",
          "body": "* feat(mcp): add ingest_coverage and query baseline parity\n\nClose the last two agent-relevant transport gaps: MCP/HTTP can load coverage artifacts and diff queries against saved baselines in one call, matching CLI ingest-coverage and query --baseline.\n\n* fix(mcp): address PR #167 review cycles 1–2\n\n\n[…]\nPR #167 review cycle 5 glossary gaps\n\nCross-ref MCP/HTTP baseline on query baseline entry, document ingest-coverage-run orchestration layer, and note baseline format incompatibilities in cmd-mcp help.",
          "is_bot": false,
          "headline": "feat(mcp): transport parity — ingest_coverage + query baseline (#167)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T07:52:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4bfb06732d5ebdc607bdf73b0460cd25cc926d38",
          "body": "* feat(cli): add codemap rename alias for homonym-safe renames\n\n`define_in` on rename-preview shipped in #165; this adds the thin\n`codemap rename` → `apply rename-preview` alias with positional\nergonomics and plan doc for the scoped-rename slice.\n\n* fix(cli): preserve missing --params operand in ren\n[…]\nreserves\ndry-run semantics end-to-end.\n\n* docs(cli): use generic paths in rename alias examples\n\nReplace dogfood bench fixture paths in README and rename --help with\nconsumer-facing placeholder paths.",
          "is_bot": false,
          "headline": "feat(cli): codemap rename alias for homonym-safe renames (#166)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-05T07:45:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e1e5e0b7bfc37f680d54b0ef4c2ee02e53f0222",
          "body": "Remove substrate-apply-utilization, scoped-rename-define-in, and\nin-repo-test-bench (Phases 1–3 shipped). Lift pointers to architecture,\ntesting-coverage, synthesis §7, and roadmap.",
          "is_bot": false,
          "headline": "docs: delete shipped plans and retarget cross-refs",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-04T19:14:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fe5e5f74801a3e3b42cfe0bc8ac6f10430b2dff",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#163)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-04T19:08:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b0406a9eae183d4d3220206a2a6296dc7e9e938",
          "body": null,
          "is_bot": false,
          "headline": "chore: add changeset for apply-engine release",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-04T19:07:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b73f0df647af794e210c9afd5d8e36b28266bcfd",
          "body": "* feat(apply): ship apply-engine steps 2–12 in one slice\n\nExtend codemap apply from rename-preview-only to a full substrate-shaped\nfix executor: three diff-shape recipes, rename-preview call/re-export CTEs,\nauto_fixable gating with --force, agent row/diff inputs, fixpoint loop,\noptional git commit, \n[…]\npe find-symbol-references apply hint with define_in\n\nC.6 apply-rename-preview command now passes define_in={{file_path}} so\nagents following read→apply after bindings-precise lookup stay homonym-safe.",
          "is_bot": false,
          "headline": "feat(apply): ship apply-engine steps 2–12 (#165)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-04T19:04:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c7064a946df4108d940d74d182ac5f9430a8178",
          "body": "* feat(index): callback dispatch synthesis tracer (SCHEMA 37)\n\nAdd calls.provenance and optional JSX parent→child heuristic edges via\nsynthesis.heuristicCalls (default off). Filter call-path to ast-only;\nship calls-including-heuristic recipe.\n\n* fix(index): Moat-A provenance filters and resolve orde\n[…]\nallback-dispatch-synthesis plan after JSX tracer\n\nDelete shipped plan; roadmap marks #164 done. EventEmitter/setState heuristics\nexplicitly out of scope for now. PR title lesson in .agents/lessons.md.",
          "is_bot": false,
          "headline": "feat(index): callback dispatch synthesis (#164)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-04T16:09:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6e50d77342938553e1d6d9c2800711950b92ab36",
          "body": "* feat(index): two-phase call resolution with unresolved_calls staging\n\nAdd SCHEMA_VERSION 36, call-resolver pass after bindings, incremental scoped\nre-resolve, and unresolved-call-sites / call-resolution-stats recipes.\n\n* fix(index): tighten call-resolve scope and meta semantics\n\nUse expandHeritage\n[…]\n points at shipped docs.\n\n* docs(test): align substrate matrix with coverage map\n\nAdd calls/coverage to SUBSTRATE_SCENARIO_BY_TABLE; fix glossary\narchitecture anchor; clarify CONTRIBUTING guard scope.",
          "is_bot": false,
          "headline": "feat(index): unresolved calls staging (SCHEMA 36) (#162)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-06-04T15:36:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d9c09e7868bb2b2585503c9703219f69d792213",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#161)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-28T10:24:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1e3d5841cccf90003105bb57984475549565557",
          "body": "* feat(cli): add MCP parity verbs for shell-only consumers\n\nWire CLI commands that call the same tool-handlers and resource builders\nas MCP/HTTP so consumers without a transport still get identical JSON.\n\n* fix(cli): whitelist parity verbs and tighten query batch validation\n\nvalidateIndexModeArgs bl\n[…]\narchitecture and glossary with handleContext and CLI --include-snippets.\n\n* chore(changeset): bump CLI parity release to patch\n\nAlign with repo convention: additive CLI twins ship as patch, not minor.",
          "is_bot": false,
          "headline": "feat(cli): MCP parity verbs for shell-only consumers (#160)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-28T10:22:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68799eff29d04fb7fc7dc0f99b1fdfe70ead95ce",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#159)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-27T16:54:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8ea64077028951b7c9d024e7f81d3f16de07fc5",
          "body": "…(#158)\n\nExpose --targets and --link-mode on codemap agents init for CI and sandboxes.\nCombine with --mcp to write MCP configs only for selected integrations.\nSide-effect paths compose targets with --git-hooks or --mcp on existing .agents/\nwithout --force.",
          "is_bot": false,
          "headline": "feat(agents): add --targets and --link-mode for non-interactive init …",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T16:53:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33cd88c56845c4bedaa6b597672453e482327eda",
          "body": "Replace a named external benchmark row with the existing large-app\nshape label used elsewhere in the same document.",
          "is_bot": false,
          "headline": "docs(plans): anonymize large-app fixture name in substrate plan",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T16:50:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b60d62b39058f480ae77076f3f5cda728f179e22",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#157)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-27T16:27:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae4a143ae0301f8750333feb5f386ff3479202a6",
          "body": "* feat(agents): inject workspace root for VS Code MCP init\n\nVS Code / Copilot now get `--root ${workspaceFolder}` via agents init --mcp,\nmatching Cursor so Copilot indexes the open workspace when spawn cwd differs.\n\n* test(agents): deepen VS Code MCP workspace-root coverage\n\nAddress PR review: regis\n[…]\nrget flag.\n\n* docs(plans): retire vscode MCP workspace-root plan\n\nLift migration + --root rationale into agents.md; delete shipped plan per\ndocs-governance (delete + lift, no slim-and-keep in plans/).",
          "is_bot": false,
          "headline": "feat(agents): inject workspace root for VS Code MCP init (#156)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T16:26:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "946816db1c4817775c3f883798b688fc465cc4dd",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#150)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-27T15:20:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "450ca2ec29765f9ebb4f83463171591873958364",
          "body": "…(#155)\n\n* feat(agents): safer init re-runs for mirrors, markers, and MCP merge\n\nInit must not clobber consumer-owned files: bundled-only IDE mirrors,\ncodemap-init:managed provenance before --force overwrite, and reject\ninvalid MCP map shapes instead of resetting them.\n\n* fix(agents): address PR rev\n[…]\nror provenance docs/changeset; deepen e2e tests\n\nDocument legacy mirror heuristic and symlink copy-mode marker behavior;\nextend dummy-corpus and unit coverage for legacy migration and symlink refusal.",
          "is_bot": false,
          "headline": "feat(agents): safer init re-runs for mirrors, markers, and MCP merge …",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T15:17:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bcca3a64ed4d1034358fc4f9c2505cf71bae45d",
          "body": "* feat(agents): PM-aware MCP spawn via agents init --mcp\n\nResolve codemap CLI invocation from the project package manager so MCP\nconfig works when codemap is a devDependency, not only on PATH.\n\n* fix(action): resolve WORKING_DIRECTORY from GITHUB_WORKSPACE\n\nAddress PR review: absolute project root f\n[…]\nested shell helper, broaden resolver/sync/e2e coverage, map detector yarn+berry to yarn@berry for dlx, and align consumer docs/CLI copy.\n\n* docs(agents): fix dlx vs local spawn examples in MCP section",
          "is_bot": false,
          "headline": "feat(agents): PM-aware MCP spawn via agents init --mcp (#154)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T14:44:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "535986fd47292cdae22abde67542f93d54cd963e",
          "body": "Release workflow failed because the changeset referenced \"codemap\"\ninstead of \"@stainless-code/codemap\". Also patch (not minor) per\npre-v1 bump policy — no schema break.",
          "is_bot": false,
          "headline": "fix(changeset): use scoped package name for session lifecycle",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T13:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "048278bca5e13dbcf8f130e082a190ebcd574046",
          "body": "* feat(mcp): session lifecycle hygiene without idle timeout\n\nAdd stdio disconnect detection and refcount-gated watcher sessions for\nmcp/serve; document explicit no-MCP-idle-timeout policy in architecture\nand agent docs.\n\n* fix(session-lifecycle): harden acquire/stop refcount races\n\nRoll back client \n[…]\ng before checking handle, so\nforceStop during HTTP first-request prime cannot orphan chokidar.\nAlso observe fire-and-forget release/stop rejections and harden\nthe parent-pid spy test with try/finally.",
          "is_bot": false,
          "headline": "feat(mcp): session lifecycle hygiene (#153)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T13:28:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "150c6c62e9a304e72deac5dc1b5610174cf059bb",
          "body": "* feat(output-budget): adaptive caps for trace, explore, and node\n\nScale snippet char budgets and explore row limits from indexed file\ncount when callers omit budget_chars; explicit overrides unchanged.\n\n* fix(output-budget): address PR review — integration tests and single COUNT\n\nAdd composer-level\n[…]\nlit-budget tests and MCP smoke\n\nRemove unused resolveEffectiveExploreRowLimit export, add mid-tier and\nsplit-budget integration tests, MCP explore/node transport smoke, and\nmcp-instructions tier docs.",
          "is_bot": false,
          "headline": "feat(output-budget): adaptive caps for trace, explore, and node (#152)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T12:30:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e71765247b2227cb45442674932869078981a029",
          "body": "* feat(context): add start_here session bootstrap shortcuts\n\nNon-compact context/MCP/HTTP envelopes now include intent-ranked\nquery_recipe cards and top hub files with export signatures so one\nbootstrap call replaces a common show → explore chain.\n\n* feat(context): complete rich context composer (sl\n[…]\n coverage.\n\n* test(context): prove hub split and marker_limit tiers\n\nAdd multi-hub fixture, large-repo marker cap test, MCP compact/intent\nsmoke, marker_limit unit assertions, and skill doc alignment.",
          "is_bot": false,
          "headline": "feat(context): rich context composer (#151)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T11:25:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41a418405b182a3f98cce22cd4ce8153969d1e3f",
          "body": "* feat(context): add index_freshness trust metadata (slice 1)\n\nSurface commit drift, watcher pending sync, and disk-ahead signals on\ncodemap context / MCP context so agents know when structural queries may\nlag the checkout. Watcher exposes debouncer state; slice 2 will extend\nMCP/HTTP tool responses\n[…]\nr batches\n\nTrack queued inFlight batches so pending_sync does not false-negative\nbetween serialized reindexes; always emit boot freshness warning after\nwatch prime settles, including on prime failure.",
          "is_bot": false,
          "headline": "feat: index freshness trust bundle (#149)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T10:51:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df31144081983f0274196ab39ed3d2db5f455506",
          "body": "Capture adoption ideas from competitive review as trigger-gated backlog\nsections, and codify that incremental indexing must keep all recipe-visible\ntables consistent in one pass — no lazy secondary surfaces.",
          "is_bot": false,
          "headline": "docs(roadmap): add agent-session backlog and split-brain floor",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-27T10:22:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e040d0f8de3aca31a25fe716b3f50ce8dcea7a0c",
          "body": "* feat(agent-eval): add log session capture helper\n\nGenerate entries-style MCP-on/off transcripts from live handlers and\nthe traditional probe for compare-live-logs. Wire AGENT_EVAL_CAPTURE=1\ninto run-arms.sh; document in benchmark.md and research note.\n\n* fix(agent-eval): address log capture review\n[…]\nonor AGENT_EVAL_PROBES/SESSION_DIR/SKIP_INDEX, run golden setup,\nvalidate probe goldenIds, and align env empty-string semantics with\nrun-arms.sh. Add helper tests; clarify benchmark and research docs.",
          "is_bot": false,
          "headline": "feat(agent-eval): add log session capture helper (#148)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T18:16:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92c55d35c19ed1a22f3c10462cabee2a80992554",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-26T18:05:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7afc9eba451720ae463dd0567eef71ac4e500bda",
          "body": "* fix(worker-pool): clear parse timeouts so --full exits promptly\n\nPromise.race with uncancellable delay() left 120s timers on the event\nloop after workers finished. Replace with explicit setTimeout +\nclearTimeout on worker response and dispose.\n\n* test(worker-pool): subprocess exit guard for timer \n[…]\nfast.\n\n* test(worker-pool): address review nits before merge\n\nStop exporting INLINE_PARSE_MAX; mirror the threshold in tests. Add\nnode dist --full subprocess exit regression (skips when dist/ absent).",
          "is_bot": false,
          "headline": "fix(worker-pool): clear parse timeouts so --full exits promptly (#146)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T17:54:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "01d49318324dc50bb9b6601a7810ef801ad248af",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: version packages (#125)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-26T17:03:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fa1e9d54420aef044c97a6e157c46be4ac10e17",
          "body": "Drop carets in package.json for reproducible installs; refresh bun.lock.\nDev tooling: oxfmt 0.52, oxlint 1.67, ts-native-preview 20260526.",
          "is_bot": false,
          "headline": "chore(deps): pin exact versions and bump oxfmt/oxlint",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T13:53:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0323a1f75c90a960622354ba813c8bf5c8f1af8a",
          "body": "…r (#145)\n\n* docs: lifecycle sweep — retire P1 agent-surface plans, fact-check references\n\nP1 agent-surface plans are complete; lift status to roadmap and fix stale\nschema, MCP, validate, and index-path claims across docs and agent templates.\n\n* docs: second sweep — type_heritage, MCP metadata, inde\n[…]\n* docs: address CodeRabbit PR #145 — MCP wiring, anchor, JSON example\n\nFact-checked 4/5 bot comments; push back on false-positive GitHub\ncapitalization (Actions expression github.base_ref is correct).",
          "is_bot": false,
          "headline": "docs: fact-check sweep — align docs and CLI help with shipped behavio…",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T13:49:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1dd422d26d7949054a144eafdc31b7665d326fa5",
          "body": "…w (#144)\n\n* feat(agent-eval): live MCP arms, log comparison, and external workflow\n\nClose P1 agent-surface eval work: live mode dispatches handleQuery/query_recipe\nwith a minimal CODEMAP_MCP_TOOLS allowlist, log mode compares exported session\ntranscripts, and workflow_dispatch runs probe or live ar\n[…]\n JSON,\nlog compare empty MCP-on guard, summary on partial failure, doc fixes.\n\n* fix(agent-eval): address PR #144 review cycle 9\n\nMCP-off zero-result error parity and probe summary before log compare.",
          "is_bot": false,
          "headline": "feat(agent-eval): live MCP arms, log comparison, and external workflo…",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T12:25:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e475d204d1168529ffaa7963881ec5f1f89cf90c",
          "body": "* fix(heritage): address PR #142 review findings (cycle 1)\n\nClass superClass generics, type-alias resolve, incremental scope expansion,\nmodule-level symbol preference, complex extends fallback, recipe dedupe;\nheritage-resolver tests + new recipe goldens; doc/glossary updates.\n\n* fix(heritage): addre\n[…]\ne)\n\nAdd persistTypeHeritageResolution unit test and run-index incremental\ntest proving scoped heritage re-resolve updates DB rows.\n\n* docs(recipes): note type kind filter on type-descendants (cycle 6)",
          "is_bot": false,
          "headline": "fix(heritage): PR #142 review fixes (6 cycles) (#143)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T10:21:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a085ec6217f261b2d451c26dc893b4e6c88be9b4",
          "body": "* docs(plans): add type-heritage-substrate plan for lifting recipe limits\n\nDocuments the substrate path to replace signature parsing in type-ancestors\nand type-descendants; links from roadmap and agent-surface related plans.\n\n* docs(delivery): mark #141 merged; track type-heritage-substrate as in fl\n[…]\nAdd AST-backed type_heritage extraction, import-aware resolve pass,\nand rewire type-ancestors/type-descendants to JOIN substrate rows.\nSchema bump 34→35; heritage-qualified fixture; goldens refreshed.",
          "is_bot": false,
          "headline": "feat(substrate): type_heritage table and recipe rewire (#142)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T08:30:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd5a1fa99feceb5d35e470f8ef63c047fde7e4b9",
          "body": "* feat(recipes): add type-ancestors and type-descendants recipes\n\nShip bundled SQL for extends/implements hierarchy walks parsed from\nsymbols.signature, with minimal fixture coverage and golden-query CI.\n\n* fix(recipes): address PR review findings for type hierarchy\n\n- Scope recursive heritage walks\n[…]\n; links from roadmap and agent-surface related plans.\n\n* Revert \"docs(plans): add type-heritage-substrate plan for lifting recipe limits\"\n\nThis reverts commit 3ece39256e7029a4286ae2c2f872bfbcc2e1e758.",
          "is_bot": false,
          "headline": "feat(recipes): type-ancestors and type-descendants (#141)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T08:11:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee9f6b240cfd7fddae5990ad54a87bad2fd7343c",
          "body": "Patch changeset for oxc-parser ^0.133.0 and dev TS native preview.",
          "is_bot": false,
          "headline": "chore(deps): bump oxc-parser and typescript native preview",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T07:16:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d515abea29cf8924817b6b157163f8aa6cda12b",
          "body": "* docs: post-merge sweep after agent-eval (#139)\n\nDelete ten shipped agent-surface plans; prune roadmap [x] backlog;\nrefresh README, glossary, templates, and cross-refs to agents.md.\n\n* docs: fix broken table in callback-dispatch-synthesis plan\n\nPipe characters in L.1 split the markdown table into extra columns.\n\n* docs: address PR #140 review findings\n\nFix plan anchor slugs, MCP-only tool wording, parse-worker env lift,\nand delivery-tracker maintenance steps for delete+lift lifecycle.",
          "is_bot": false,
          "headline": "docs: post-merge sweep after agent-eval (#139) (#140)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T07:13:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6065cadd21705862ee9a921fcf327552874a733",
          "body": "* feat(agent-eval): add probe A/B harness and agent log parser (PR 9)\n\nShip dev-only scripts/agent-eval tracer bullet so local runs compare MCP-on\nquery vs glob/read/grep discovery on golden-mirrored probes, with optional\nagent transcript parsing and benchmark.md methodology docs.\n\n* docs(plans): li\n[…]\n review findings\n\nBroaden log parser tool/content coverage, align averaged deltas, guard\ntraditional regex, restore CODEMAP_ROOT, exit 1 on partial probes, and\nreuse index in run-arms.sh when present.",
          "is_bot": false,
          "headline": "feat(agent-eval): probe A/B harness and log parser (PR 9) (#139)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-26T06:56:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "829075cc13a4241718935c2ec724addfa9928e3b",
          "body": "* feat(show): field-qualified search via --query and MCP show.query\n\nAgents can narrow symbol discovery with kind:/name:/path:/in: filters\ntranslated to parameterized SQL on symbols, with optional FTS for free\ntext and --print-sql for Moat-A transparency.\n\n* fix(show): address PR review — shared sea\n[…]\nse review findings — HTTP tests, changeset, tracker\n\nAdd HTTP show/snippet query + FTS warning tests; changeset for release\nnotes; mark roadmap/delivery tracker merge-ready; refresh PR #138 test plan.",
          "is_bot": false,
          "headline": "feat(show): field-qualified search (PR 7) (#138)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T17:43:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd479d27398adec4fec255d6ca853a521fc6c4ac",
          "body": "* fix(ci): re-baseline perf from slow GHA runner medians\n\nGHA ubuntu runners are bimodal (~630ms vs ~1117ms total on the same\ncommit). The May 20 baseline sat between tiers, so slow runners failed\nindex_create_ms at +31% while total_ms stayed under gate.\n\nRe-capture medians from slow-tier CI logs, r\n[…]\ny schedule\n\nSelf-index perf check is ~6 min and flakes on bimodal GHA runners.\nKeep the script + slow-tier baseline for local/scheduled drift checks;\nremove from ci-complete and branch-blocking PR CI.",
          "is_bot": false,
          "headline": "fix(ci): demote perf baseline from PR path to weekly schedule (#137)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T16:49:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3911abfbab19b9ff6196658188e650ba096e7c13",
          "body": "Break application ↔ agents-init import cycle by moving resolveAgentsTemplateDir to a leaf module. Re-export preserved; docs + boundary verification kit added.",
          "is_bot": false,
          "headline": "refactor(agents): extract agents-template-path leaf module (#136)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T16:02:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4b4b3686c5c34d686f5f128dbab3360cd04a478",
          "body": "* feat(agents): add --mcp flag for Cursor and Claude MCP wiring\n\nProject .cursor/mcp.json and Claude .mcp.json merge idempotently;\nClaude permissions allow mcp__codemap__*.\n\n* fix(agents): address PR #135 review findings for --mcp wiring\n\nMCP-only re-run on existing .agents/, interactive prompt fix,\n[…]\nentries include transportType stdio.\n\n* test(agents): close final PR #135 review nits\n\nAmazon Q legacy shape + idempotency tests, filtered integration E2E,\nregistry JSDoc fix, agents.md --mcp wording.",
          "is_bot": false,
          "headline": "feat(agents): agents init --mcp wiring (PR 8) (#135)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T15:24:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7cc66464f829affc03494f9a1543486beeef274",
          "body": "Unblocks the Release workflow — changeset version failed because the file referenced \"codemap\" instead of \"@stainless-code/codemap\".",
          "is_bot": false,
          "headline": "fix(changeset): use scoped package name in mcp-affected-tool",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T14:30:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff89d8cf72e851d03b409706c3cbab452c47cd8a",
          "body": "Add MCP/HTTP trace, explore, and node tools composing call-path and\nsymbol-neighborhood recipes with output budget, allowlist wiring, and docs.",
          "is_bot": false,
          "headline": "feat(mcp): trace, explore, and node MCP/HTTP tools (PR 6)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T14:27:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "386ffa663d2dbb94b16d07c85c6cdf91f04e5b4e",
          "body": "* feat(mcp): add affected tool for MCP and HTTP\n\nExtract shared affected-engine from cmd-affected; register affected on\nMCP/HTTP with paths/changed_since/test_glob/max_depth. Document in\nmcp-instructions and skill; include in CODEMAP_MCP_TOOLS allowlist.\n\n* fix(mcp): address PR review findings for a\n[…]\nparams and recency tests\n\nRequire integer coercion for recipe number params, document recency skip\non empty paths, and add MCP/HTTP/CLI parity tests for max_depth validation\nand recipe_recency writes.",
          "is_bot": false,
          "headline": "feat(mcp): MCP/HTTP affected tool (Phase 2) (#133)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T13:48:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a1de53ae978b2d038fdc355917391be416a5fe2",
          "body": "* feat(cli): add affected-tests recipe and codemap affected command\n\nReverse-dependency walk from changed files to test paths via test_suites\nand default test suffix globs; stdin/git/positional path sources.\n\n* docs: link PR 132 in agent-surface delivery tracker\n\n* docs: fix quick-resume link for PR\n[…]\nncy.\n\n* fix(affected): use pipe stdin in e2e spawn helper\n\nBlob ReadableStream stdin was flaky on Linux CI — path reads returned []\nwhile positional args worked. Write+end on an explicit pipe instead.",
          "is_bot": false,
          "headline": "feat(affected): affected-tests recipe + codemap affected CLI (#132)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T13:18:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8cf25ba787312224e7dfe0ca1945c45dae51285",
          "body": "* feat(recipes): add call-path and symbol-neighborhood trace recipes\n\nShip cycle-safe call-path tracing and depth-bounded symbol neighborhood\nexploration with golden fixtures — recipe half of the MCP trace plan.\n\n* docs: link PR 131 in agent-surface delivery tracker\n\n* fix(recipes): address trace recipe review findings\n\nPrefer call paths over file imports for via=all; document via modes and\nneighborhood depth semantics; expand golden coverage; changeset patch bump.",
          "is_bot": false,
          "headline": "feat(recipes): call-path and symbol-neighborhood trace recipes (#131)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T12:27:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5374b8519135066ce7271837d65bb0547c0c53d",
          "body": "* feat(index): per-file parse timeouts and worker recycle\n\nProcess one file per worker message with Promise.race timeouts (10–30s\nscaled by size), recycle workers every 250 files, route incremental parsing\nthrough the worker pool, and surface parse failure counts in the index summary.\n\n* fix(worker-\n[…]\nhput\n\nKeep per-file timeout via chunk bisection on timeout, inline parse for\nsmall batches (<=12 files), and worker recycle. Fixes CLI integration\ntest timeouts from per-message worker spawn overhead.",
          "is_bot": false,
          "headline": "feat(index): parse worker timeouts and recycle (#130)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T09:08:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6648add30205e1d07cf0c778a9d1332fd583fd43",
          "body": "Acquire <state-dir>/index.lock before indexing with in-process serialization,\nfail-fast when another live indexer holds the lock, and append parse failures\nto errors.log. Adds codemap unlock for stale lock recovery.",
          "is_bot": false,
          "headline": "feat(index): cross-process lock, unlock CLI, and errors.log (#129)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T08:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4318cc4694e5af6157842d864bc9075617d26af9",
          "body": "Disable the file watcher on WSL2 /mnt/* mounts unless CODEMAP_FORCE_WATCH=1,\nwith stderr pointing at git-hook fallback. Add codemap agents init --git-hooks\nfor non-blocking background incremental index on post-commit/merge/checkout.",
          "is_bot": false,
          "headline": "feat(watch): WSL watch policy and opt-in git hook auto-sync (#127)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T08:38:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed4ca6bc4d2feab67901079951d3077ca405c588",
          "body": "…126)\n\nInject a tool-selection playbook via MCP initialize instructions and\nexpose it as codemap://mcp-instructions. Add CODEMAP_MCP_TOOLS for\nsubset tool registration (eval ablation / minimal installs).",
          "is_bot": false,
          "headline": "feat(mcp): add server instructions and CODEMAP_MCP_TOOLS allowlist (#…",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T08:37:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8807614c17ef7febf5da9d8c5020d2abb1a36174",
          "body": "Capture wave/PR map, parallelization rules, and live status so agent-surface\nwork can pause and resume outside a single session.",
          "is_bot": false,
          "headline": "docs(plans): add agent-surface delivery PR tracker (#128)",
          "author_name": "Sutu Sebastian",
          "author_login": "SutuSebastian",
          "committed_at": "2026-05-25T08:37:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 38,
      "commits_last_year": 273,
      "latest_release_at": "2026-07-20T10:29:51Z",
      "latest_release_tag": "@stainless-code/codemap@0.11.4",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@stainless-code/codemap",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "agents",
            "ai",
            "codebase",
            "dependencies",
            "imports",
            "index",
            "sqlite",
            "symbols"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@stainless-code/codemap",
          "is_deprecated": false,
          "latest_version": "0.11.4",
          "repository_url": "https://github.com/stainless-code/codemap",
          "versions_count": 38,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 8315,
          "first_published_at": "2026-04-07T07:31:49.235000Z",
          "latest_published_at": "2026-07-20T10:29:49.671000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 8,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-16",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 5
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/docs/tsconfig.json",
        "fixtures/minimal/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 84238,
      "source_files_sampled": 355,
      "oversized_source_files": 2,
      "agent_instruction_files": [
        ".cursor/rules/agents-first-convention.mdc",
        ".cursor/rules/agents-tier-system.mdc",
        ".cursor/rules/architecture-priming.mdc",
        ".cursor/rules/authoring-discipline.mdc",
        ".cursor/rules/codemap.mdc",
        ".cursor/rules/concise-reporting.mdc",
        ".cursor/rules/consumer-surfaces.mdc",
        ".cursor/rules/docs-governance.mdc",
        ".cursor/rules/docs-voice-priming.mdc",
        ".cursor/rules/lessons.mdc",
        ".cursor/rules/no-bypass-hooks.mdc",
        ".cursor/rules/plan-pr-inspiration-discipline.mdc",
        ".cursor/rules/pr-comment-fact-check.mdc",
        ".cursor/rules/tracer-bullets.mdc",
        ".cursor/rules/verify-after-each-step.mdc",
        "AGENTS.md",
        "docs/agents.md"
      ],
      "agent_instruction_max_bytes": 34650
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "moderate": 1
        },
        "advisory_count": 1,
        "affected_count": 1,
        "assessed_count": 202,
        "malicious_count": 0,
        "assessed_package": "npm:@stainless-code/codemap@0.11.4",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@clack/prompts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.7.0"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.29.0"
        },
        {
          "name": "better-sqlite3",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "12.11.1"
        },
        {
          "name": "chokidar",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "5.0.0"
        },
        {
          "name": "lightningcss",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.33.0"
        },
        {
          "name": "oxc-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.140.0"
        },
        {
          "name": "oxc-resolver",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "11.24.2"
        },
        {
          "name": "package-manager-detector",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.7.0"
        },
        {
          "name": "tinyglobby",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.2.17"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "4.4.3"
        }
      ],
      "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": 5,
        "merged_prs": 198,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 11
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "SutuSebastian",
          "commits": 232,
          "avatar_url": "https://avatars.githubusercontent.com/u/41998826?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "agent-eval-external.yml",
        "ci.yml",
        "deploy-docs.yml",
        "perf-baseline.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 7,
            "reason": "17 out of 22 merged PRs checked by a CI test -- score normalized to 7",
            "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/21 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": 0,
            "reason": "dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "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": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 7,
            "reason": "3 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a7f1f1c671940a2a008a0de128c8306bb1582b1e",
        "ran_at": "2026-07-26T14:49:31Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T16:20:49Z",
      "oldest_open_prs": [
        {
          "number": 208,
          "created_at": "2026-07-21T17:14:03Z",
          "last_comment_at": "2026-07-21T17:14:10Z",
          "last_comment_author": "changeset-bot"
        },
        {
          "number": 210,
          "created_at": "2026-07-21T17:14:31Z",
          "last_comment_at": "2026-07-21T17:14:36Z",
          "last_comment_author": "changeset-bot"
        },
        {
          "number": 211,
          "created_at": "2026-07-21T17:14:45Z",
          "last_comment_at": "2026-07-21T17:14:51Z",
          "last_comment_author": "changeset-bot"
        },
        {
          "number": 212,
          "created_at": "2026-07-21T17:14:52Z",
          "last_comment_at": "2026-07-21T17:14:56Z",
          "last_comment_author": "changeset-bot"
        },
        {
          "number": 214,
          "created_at": "2026-07-22T16:21:05Z",
          "last_comment_at": "2026-07-22T16:21:10Z",
          "last_comment_author": "changeset-bot"
        }
      ],
      "last_merged_pr_at": "2026-07-22T16:18:27Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/stainless-code/codemap",
    "host": "github.com",
    "name": "codemap",
    "owner": "stainless-code"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 63,
      "inputs": {
        "security": 52,
        "vitality": 83,
        "community": 49,
        "governance": 52,
        "engineering": 77
      },
      "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": 72,
            "inputs": {
              "commits_last_year": 273,
              "human_commit_share": 0.83,
              "days_since_last_push": 3,
              "active_weeks_last_year": 11
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "273 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 273
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 38,
              "latest_release_tag": "@stainless-code/codemap@0.11.4",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "38 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 38
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 49,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 14,
            "inputs": {
              "forks": 1,
              "stars": 8,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8 stars",
                "points": 13.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "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": 18,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "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": 65,
            "inputs": {
              "packages": [
                "@stainless-code/codemap"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 8315
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "8,315 downloads/month across npm",
                "points": 52.3,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 8315,
                      "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": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "merged_prs": 198,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 11
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "198/209 decided PRs merged",
                "points": 36.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 198,
                      "decided": 209
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/21 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "followers": 1,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "stainless-code",
              "public_repos": 9,
              "account_age_days": 615
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1 followers of stainless-code",
                "points": 2.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1,
                      "login": "stainless-code"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "9 public repos, account ~1 yr old",
                "points": 10.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 9
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@stainless-code/codemap"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "38 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 38
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 62,
            "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": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": "17 out of 22 merged PRs checked by a CI test -- score normalized to 7",
                "points": 14,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai-agents",
                "ai-coding",
                "ast",
                "code-graph",
                "code-index",
                "code-intelligence",
                "code-navigation",
                "codebase",
                "css",
                "cursor",
                "dead-code",
                "dependencies",
                "devtools",
                "mcp",
                "model-context-protocol",
                "refactoring",
                "sarif",
                "sqlite",
                "static-analysis",
                "typescript"
              ],
              "has_wiki": true,
              "homepage": "https://stainless-code.com/codemap",
              "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://stainless-code.com/codemap",
                "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": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 52,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 4.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "17 out of 22 merged PRs checked by a CI test -- score normalized to 7",
                "points": 1.8,
                "status": "partial",
                "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/21 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": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 4,
                "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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "3 existing vulnerabilities detected",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the npm:@stainless-code/codemap@0.11.4 runtime dependency closure — what installing the published package pulls in — 202 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@stainless-code/codemap@0.11.4",
                  "assessed": 202
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "source": "osv",
              "advisories": 1,
              "affected_packages": 1,
              "assessed_packages": 202,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1",
              "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": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 202,
              "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": "moderate",
        "name": "AI Readiness",
        "value": 69,
        "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/agents-first-convention.mdc",
                ".cursor/rules/agents-tier-system.mdc",
                ".cursor/rules/architecture-priming.mdc",
                ".cursor/rules/authoring-discipline.mdc",
                ".cursor/rules/codemap.mdc",
                ".cursor/rules/concise-reporting.mdc",
                ".cursor/rules/consumer-surfaces.mdc",
                ".cursor/rules/docs-governance.mdc",
                ".cursor/rules/docs-voice-priming.mdc",
                ".cursor/rules/lessons.mdc",
                ".cursor/rules/no-bypass-hooks.mdc",
                ".cursor/rules/plan-pr-inspiration-discipline.mdc",
                ".cursor/rules/pr-comment-fact-check.mdc",
                ".cursor/rules/tracer-bullets.mdc",
                ".cursor/rules/verify-after-each-step.mdc",
                "AGENTS.md",
                "docs/agents.md"
              ],
              "agent_instruction_max_bytes": 34650
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".cursor/rules/agents-first-convention.mdc, .cursor/rules/agents-tier-system.mdc, .cursor/rules/architecture-priming.mdc, .cursor/rules/authoring-discipline.mdc, .cursor/rules/codemap.mdc, .cursor/rules/concise-reporting.mdc, .cursor/rules/consumer-surfaces.mdc, .cursor/rules/docs-governance.mdc, .cursor/rules/docs-voice-priming.mdc, .cursor/rules/lessons.mdc, .cursor/rules/no-bypass-hooks.mdc, .cursor/rules/plan-pr-inspiration-discipline.mdc, .cursor/rules/pr-comment-fact-check.mdc, .cursor/rules/tracer-bullets.mdc, .cursor/rules/verify-after-each-step.mdc, AGENTS.md, docs/agents.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".cursor/rules/agents-first-convention.mdc, .cursor/rules/agents-tier-system.mdc, .cursor/rules/architecture-priming.mdc, .cursor/rules/authoring-discipline.mdc, .cursor/rules/codemap.mdc, .cursor/rules/concise-reporting.mdc, .cursor/rules/consumer-surfaces.mdc, .cursor/rules/docs-governance.mdc, .cursor/rules/docs-voice-priming.mdc, .cursor/rules/lessons.mdc, .cursor/rules/no-bypass-hooks.mdc, .cursor/rules/plan-pr-inspiration-discipline.mdc, .cursor/rules/pr-comment-fact-check.mdc, .cursor/rules/tracer-bullets.mdc, .cursor/rules/verify-after-each-step.mdc, AGENTS.md, docs/agents.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": "83 of 83 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 83,
                      "sampled": 83
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 49,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "apps/docs/tsconfig.json",
                "fixtures/minimal/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.04
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "apps/docs/tsconfig.json, fixtures/minimal/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/docs/tsconfig.json, fixtures/minimal/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "4 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 4,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 84238,
              "source_files_sampled": 355,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/355 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 355,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "recipes"
              ],
              "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": "recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T14:49:44.903899Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/stainless-code/codemap.svg",
  "full_name": "stainless-code/codemap",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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