公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-27 10:29 UTC

gkoreli / backlog-mcp

Your backlog is your agent's memory

TypeScriptMIT★ 5 星标⑂ 2 复刻始于 2025年12月在 GitHub 上查看 ↗

gkoreli/backlog-mcp 的健康指数为 100 分中的 60 分,处于「中等」区间。 其得分最高的类别是Vitality(89/100),最低的是Community & Adoption(36/100)。 最近一次更新在 6 天前。 近期的大部分工作由 1 位贡献者完成。

60
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

Goga Koreli个人账户
0 关注者5 个公开仓库始于 2025年11月

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

软件包生态系统

按类别列示的指标

活力

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

89优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 6 天前
18/36提交节奏 — 52 周中有 26 周有提交
18/18提交量 — 最近一年 920 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year920
human_commit_share1
days_since_last_push6
active_weeks_last_year26

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 92 个发布版本
36/36发布时效 — 最近一次发布版本于 6 天前
27/27发布节奏 — 约每 0.4 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count92
latest_release_tagv0.70.0
releases_from_tags
days_since_latest_release6
mean_days_between_releases0.4
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

36存在风险 · 占总体的 18%
评分方式
9.8/60星标 — 5 个星标
0/25复刻 — 2 个复刻
0/15关注者 — 0 位关注者
所用输入
forks2
stars5
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

49存在风险 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
7.9/22.5提交分布 — 头号贡献者编写了 65% 的提交
4.1/13.5贡献者广度 — 3 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled3
top_contributor_share0.647
评分方式
0/46.8议题解决 — 没有议题或无数据
35.3/38.3PR 接受 — 已裁定的 PR 中 109/118 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/29 approved changesets -- score normalized to 0
所用输入
merged_prs109
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs9
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
0/25所有者影响力 — gkoreli 有 0 位关注者
7.1/25既往记录 — 5 个公开仓库,账户约 0 年
所用输入
followers0
owner_typeUser
is_verified
owner_logingkoreli
public_repos5
account_age_days259
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
35/35发布时效 — 最近一次发布于 6 天前
20/20版本历史 — 91 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesbacklog-mcp
ecosystemsnpm
any_deprecated
min_days_since_publish6

工程质量

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

77良好 · 占总体的 20%

工程实践

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

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://gkoreli.com/one-hundred-pull-requests
10/10仓库描述
10/10主题标签 — 7 个主题标签
0/10Wiki
所用输入
topicsai, anthropic, claude, llm, mcp, model-context-protocol, task-management
has_wiki
homepagehttps://gkoreli.com/one-hundred-pull-requests
has_readme
has_docs_dir
has_description

安全

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

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

安全态势

37存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
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
0/7.5Vulnerabilities — 121 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3.7
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。
评分方式
18.5/35直接依赖不含已知公告 — 1 个受影响:@hono/node-server 1.19.15 (moderate 5.9)
10.4/25间接依赖不含已知公告 — 1 个受影响:sharp 0.34.5 (high 7.3)
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories2
affected_packages2
assessed_packages248
unassessed_packages0
affected_by_severityhigh 1, moderate 1
direct_affected_packages1
比对的是 npm:backlog-mcp@0.70.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 248 个软件包。 未对可达性进行分析。

AI 就绪度

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

72良好 · 占总体的 0%
评分方式
45/45代理指令 — .agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files.agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes33,296
评分方式
18/18一条命令的引导启动 — .mise.toml
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 65 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilespnpm-lock.yaml
has_dockerfile
typed_language
bootstrap_files.mise.toml
has_devcontainer
has_linter_config
typecheck_configspackages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
agent_commit_share0.65
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
55/55可控的文件大小 — 采样的 423 个源文件中有 0 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes56,219
source_files_sampled423
oversized_source_files0
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
0/40可运行示例
所用输入
example_dirs
has_mcp_signal
api_schema_files

关键数据

5GitHub 星标
3贡献者
920最近 12 个月提交数
6距最近推送天数
92发布版本数
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

更多细节

Star 与 Fork 历史 0 ★ / 2 ⇿
0Star
2Fork
42发布

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

111222212026-012026-032026-04
主版本 0次版本 29修订 13
OpenSSF Scorecard 3.7 / 10
3.7综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
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
0Vulnerabilities121 existing vulnerabilities detected
直接依赖 30
注册表软件包版本约束清单文件
npm@backlog-mcp/sharedworkspace:*packages/memory/package.json
npm@orama/orama^3.1.18packages/memory/package.json
npm@orama/stopwords^3.1.18packages/memory/package.json
npm@huggingface/transformers^3.8.1packages/memory/package.json
npm@hono/node-server^1.14.0packages/server/package.json
npm@huggingface/transformers^3.8.1packages/server/package.json
npm@modelcontextprotocol/sdk^1.25.1packages/server/package.json
npm@orama/orama^3.1.18packages/server/package.json
npm@orama/stopwords^3.1.18packages/server/package.json
npm@parcel/watcher2.5.6packages/server/package.json
npmajv^8.17.1packages/server/package.json
npmarctic^3.0.0packages/server/package.json
npmcommander^14.0.3packages/server/package.json
npmgray-matter^4.0.3packages/server/package.json
npmhono^4.7.0packages/server/package.json
npmmcp-remote^0.1.37packages/server/package.json
npmzod^4.3.5packages/server/package.json
npmzod^4.3.5packages/shared/package.json
npm@backlog-mcp/sharedworkspace:*packages/viewer/package.json
npm@nisli/core^0.54.0packages/viewer/package.json
npm@orama/highlight^0.1.9packages/viewer/package.json
npm@shikijs/engine-javascript^4.2.0packages/viewer/package.json
npm@shikijs/langs^4.2.0packages/viewer/package.json
npm@shikijs/themes^4.2.0packages/viewer/package.json
npmdiff^9.0.0packages/viewer/package.json
npmdompurify^3.3.1packages/viewer/package.json
npmmarked^17.0.1packages/viewer/package.json
npmmarked-shiki^1.2.1packages/viewer/package.json
npmmermaid^11.12.3packages/viewer/package.json
npmshiki^4.2.0packages/viewer/package.json
全部依赖 未采集

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

依赖安全公告 2

安装 npm:backlog-mcp@0.70.0 会引入 248 个包(直接与传递):其中 2 个存在已知公告,1 个为直接依赖。

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

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "anthropic",
        "claude",
        "llm",
        "mcp",
        "model-context-protocol",
        "task-management"
      ],
      "is_fork": false,
      "size_kb": 7050,
      "has_wiki": false,
      "homepage": "https://gkoreli.com/one-hundred-pull-requests",
      "languages": {
        "CSS": 124411,
        "HTML": 11100,
        "Shell": 243,
        "JavaScript": 116012,
        "TypeScript": 2578380
      },
      "pushed_at": "2026-07-20T19:05:18Z",
      "created_at": "2025-12-20T07:52:54Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T19:05:42Z",
      "description": "Your backlog is your agent's memory",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "gkoreli.com",
      "name": "Goga Koreli",
      "type": "User",
      "login": "gkoreli",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4",
      "created_at": "2025-11-10T08:36:47Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 259
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.70.0",
          "kind": "minor",
          "published_at": "2026-07-20T19:05:19Z"
        },
        {
          "tag": "v0.69.0",
          "kind": "minor",
          "published_at": "2026-07-19T05:54:41Z"
        },
        {
          "tag": "v0.68.0",
          "kind": "minor",
          "published_at": "2026-07-18T16:01:47Z"
        },
        {
          "tag": "v0.67.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:05:07Z"
        },
        {
          "tag": "v0.66.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:40:44Z"
        },
        {
          "tag": "v0.65.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:11:33Z"
        },
        {
          "tag": "v0.64.0",
          "kind": "minor",
          "published_at": "2026-07-17T21:05:58Z"
        },
        {
          "tag": "v0.63.0",
          "kind": "minor",
          "published_at": "2026-07-17T16:59:39Z"
        },
        {
          "tag": "v0.62.0",
          "kind": "minor",
          "published_at": "2026-07-17T04:45:26Z"
        },
        {
          "tag": "v0.61.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:17:25Z"
        },
        {
          "tag": "v0.60.0",
          "kind": "minor",
          "published_at": "2026-07-16T21:08:11Z"
        },
        {
          "tag": "v0.59.0",
          "kind": "minor",
          "published_at": "2026-07-16T18:56:31Z"
        },
        {
          "tag": "v0.58.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:24:18Z"
        },
        {
          "tag": "v0.57.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:13:25Z"
        },
        {
          "tag": "v0.56.0",
          "kind": "minor",
          "published_at": "2026-06-19T21:10:33Z"
        },
        {
          "tag": "v0.55.1",
          "kind": "patch",
          "published_at": "2026-06-19T20:37:56Z"
        },
        {
          "tag": "v0.55.0",
          "kind": "minor",
          "published_at": "2026-06-19T20:33:25Z"
        },
        {
          "tag": "v0.54.1",
          "kind": "patch",
          "published_at": "2026-06-19T19:51:29Z"
        },
        {
          "tag": "v0.53.7",
          "kind": "patch",
          "published_at": "2026-06-18T23:45:34Z"
        },
        {
          "tag": "v0.53.6",
          "kind": "patch",
          "published_at": "2026-06-18T23:41:42Z"
        },
        {
          "tag": "v0.53.5",
          "kind": "patch",
          "published_at": "2026-06-18T23:37:31Z"
        },
        {
          "tag": "v0.53.3",
          "kind": "patch",
          "published_at": "2026-06-18T22:24:11Z"
        },
        {
          "tag": "v0.53.2",
          "kind": "patch",
          "published_at": "2026-06-18T19:42:43Z"
        },
        {
          "tag": "v0.53.1",
          "kind": "patch",
          "published_at": "2026-06-18T16:44:17Z"
        },
        {
          "tag": "v0.53.0",
          "kind": "minor",
          "published_at": "2026-06-17T22:49:29Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-06-17T21:12:06Z"
        },
        {
          "tag": "v0.51.1",
          "kind": "patch",
          "published_at": "2026-06-17T04:16:58Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-06-16T23:13:31Z"
        },
        {
          "tag": "v0.50.3",
          "kind": "patch",
          "published_at": "2026-06-03T23:42:08Z"
        },
        {
          "tag": "v0.50.2",
          "kind": "patch",
          "published_at": "2026-05-25T07:05:36Z"
        },
        {
          "tag": "v0.50.1",
          "kind": "patch",
          "published_at": "2026-05-25T06:52:15Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-05-25T06:40:17Z"
        },
        {
          "tag": "v0.49.2",
          "kind": "patch",
          "published_at": "2026-04-29T21:40:55Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-04-29T19:04:28Z"
        },
        {
          "tag": "v0.48.2",
          "kind": "patch",
          "published_at": "2026-04-23T21:21:39Z"
        },
        {
          "tag": "v0.48.1",
          "kind": "patch",
          "published_at": "2026-04-20T20:31:07Z"
        },
        {
          "tag": "v0.47.5",
          "kind": "patch",
          "published_at": "2026-04-14T23:03:46Z"
        },
        {
          "tag": "v0.47.4",
          "kind": "patch",
          "published_at": "2026-04-14T22:43:24Z"
        },
        {
          "tag": "v0.47.3",
          "kind": "patch",
          "published_at": "2026-04-14T21:47:01Z"
        },
        {
          "tag": "v0.47.2",
          "kind": "patch",
          "published_at": "2026-04-14T20:48:50Z"
        },
        {
          "tag": "v0.47.1",
          "kind": "patch",
          "published_at": "2026-03-26T01:31:52Z"
        },
        {
          "tag": "v0.47.0",
          "kind": "minor",
          "published_at": "2026-03-26T01:21:05Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:29:34Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:14:27Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:50:02Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:21:05Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:56:06Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:37:30Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-02-21T23:52:30Z"
        },
        {
          "tag": "v0.39.1",
          "kind": "patch",
          "published_at": "2026-02-20T21:45:36Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-02-16T22:38:12Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-02-16T19:27:55Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-02-12T05:15:33Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-02-10T00:48:39Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-02-09T21:01:19Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-02-07T02:38:08Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-02-06T18:14:30Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-02-05T22:56:59Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-02-05T07:00:53Z"
        },
        {
          "tag": "v0.29.1",
          "kind": "patch",
          "published_at": "2026-02-03T06:25:54Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-02-03T01:15:19Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-01-31T18:34:02Z"
        },
        {
          "tag": "v0.27.2",
          "kind": "patch",
          "published_at": "2026-01-29T01:25:15Z"
        },
        {
          "tag": "v0.27.1",
          "kind": "patch",
          "published_at": "2026-01-28T22:55:02Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-01-28T01:44:28Z"
        },
        {
          "tag": "v0.26.1",
          "kind": "patch",
          "published_at": "2026-01-27T20:35:50Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-01-27T18:05:55Z"
        },
        {
          "tag": "v0.25.1",
          "kind": "patch",
          "published_at": "2026-01-27T01:07:18Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-01-26T23:00:42Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-01-26T20:21:30Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-01-26T19:59:57Z"
        },
        {
          "tag": "v0.21.2",
          "kind": "patch",
          "published_at": "2026-01-26T18:42:44Z"
        },
        {
          "tag": "v0.21.1",
          "kind": "patch",
          "published_at": "2026-01-26T18:30:54Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-01-26T06:41:12Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-01-25T04:08:57Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-01-24T19:40:42Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-01-24T03:16:55Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-01-23T03:02:51Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-01-22T19:57:39Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-01-22T07:58:31Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-01-22T06:35:34Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-01-21T07:33:24Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2026-01-21T00:48:16Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-01-21T00:44:49Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-01-21T00:40:58Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-01-21T00:40:28Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-01-20T04:57:01Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-01-20T01:58:47Z"
        },
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-01-17T03:47:56Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:41:11Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:21:14Z"
        },
        {
          "tag": "v0.6.7",
          "kind": "patch",
          "published_at": "2026-01-17T02:03:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "135db9d44ad5012d780eafc9b04b867000c35071",
          "body": "Recent-homes switcher (self-declaration on use, server-presented home\nidentity) + docs-native read-model memoization that fixes the large-home\nviewer hang. See CHANGELOG.\n\nAlso track CLAUDE.md (re-exports AGENTS.md for Claude Code).",
          "is_bot": false,
          "headline": "chore: bump versions (server 0.70.0, viewer 0.62.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "869d582f6ef32bceff19512613af875c886d4264",
          "body": "The home selector lists global + every recent project from /api/homes\n(most-recent-first), with a two-line entry (label + display_path), a ✓ on the\nactive home, a hover forget (✕) wired to DELETE /api/homes/:root, and an\nempty-state hint. All display strings come from the server presenter; the\nclient no longer derives labels or collapses paths itself.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(viewer): recent-homes switcher — render server-presented homes",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "421ab3ea1fd7f3c1b9ea3fe90914cca83d3ef04a",
          "body": "A project home is remembered the first time an agent works against it (any\ncore op that resolves a project home — CLI in a repo, MCP bridge, or viewer\n?project_root), like `code .` adds a folder to VS Code recents. No directory\nscanning: the switcher reads a use-declared manifest.\n\n- RecentHomesStor\n[…]\n display_path,\n  so the client renders strings verbatim instead of doing path surgery. Home\n  provenance now projects root/documents_dir/label/display_path from the domain\n  model.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(homes): recent-homes registry — self-declaration on use",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2248e3f831097c9b3ad1a64d3cc8d0e8b0d14385",
          "body": "…s rescan\n\nDocsNativeFilesystemStorage re-read and re-parsed every markdown file from\ndisk on every read (get/list/counts/iterateEntities/getDocumentById), and\nResourceManager.list() did the same full discoverDocuments() scan. On a\n1,300+ doc home the /operations feed fanned that out per-id, saturat\n[…]\n Memoize ResourceManager.list() the same way, invalidated on the same seams.\n\nMarkdown stays authoritative — the cache is derived state that rebuilds from\ndisk on any invalidation.\n\nSee docs/adr/0127.",
          "is_bot": false,
          "headline": "perf(storage): memoize docs-native read model; kill per-request corpu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:01:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d58ad769727be6581da25de15b02e319a3873443",
          "body": null,
          "is_bot": false,
          "headline": "docs: normalize engineering record spacing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e58ef4f1b5f06e8a364ea4b47d737358a4dbe3a2",
          "body": null,
          "is_bot": false,
          "headline": "docs: link backlog-mcp transformation story",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aa7557af25d80101030ce4a799e04a8fd44a979",
          "body": "…dings + cross-home) + ratify ADR 0126\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "chore: release 0.69.0 (recall done right: stemming/stop-words + embed…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:53:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e961bd78d7887fac97e889903aa850cd5b9ea08f",
          "body": "…-force Map scan) + sharpen the scale tripwire\n\nVerified against v3.1.18 source (trees/vector.ts): Orama's vector search is a\nplain Map + brute-force cosine for-loop, no ANN, toJSON dumps every raw vector\n(the ~512MB ceiling / in-memory-rebuild root). This equalizes the sqlite-vec\ncomparison (also b\n[…]\nd to a\ndistinct higher tripwire whose target is LanceDB, not sqlite-vec.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — capture Orama's under-the-hood vector search (brute…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:45:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c7d94a8f3556eacc6c8f244d4945ef9d3bde084",
          "body": "…a-done-right, sqlite-vec as designed fallback\n\nEvidence-based ruling on Goga's \"either Orama works properly or we explore\nalternatives.\" Two adversarially-verified research passes (competitor stacks;\nin-process alternatives) + the just-landed Orama fix. Findings: the \"they use\nDBs\" framing is large\n[…]\n as the pre-scoped fallback with four tripwires. Awaiting\nGoga's ruling.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — retrieval substrate ruling (Proposed): stay on Oram…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:49:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "072f667b21c39cfe137bf295286818761f7f8829",
          "body": "…pose deps) + CHANGELOG\n\nCodifies the invariant behind the tokenizer + embeddings fixes (goga-approved,\n2026-07-18): the core must behave identically for every consumer regardless of\nprocess lifetime, and must compose a dependency's real pipeline rather than\nhand-roll a parallel one. Evidence: the c\n[…]\nd-aid into the real\ntokenizer-compose fix and adds the embeddings entry.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: NORTH-STAR Invariant 10 + ADR 0125 (consumer-agnostic core; com…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:45:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "242c62f66f08e09be05a429c229367d685e129b0",
          "body": "embeddingsReady is a per-process flag, only ever warmed by\nensureEmbeddings(). loadFromDisk()'s cached-embeddings fast path sets\nhasEmbeddingsInIndex from the persisted cache and returns without ever\ncalling ensureEmbeddings() (that call is skipped specifically because\nhasEmbeddingsInIndex is alread\n[…]\nthis embeddings backfill both require a\none-time reindex).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): cold write paths lazily init embeddings, not a stale flag",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:37:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7adcfd1ef52248e96f22ce37d05518471f79105",
          "body": "compoundWordTokenizer was a bare object with a `.tokenize` method, so\nOrama's create() took the \"already-a-Tokenizer\" branch and used it\nverbatim — createTokenizer() (stemmer + stopWords + normalizeToken) was\nnever invoked. No stop-word removal and no English stemming have ever\nbeen active in this i\n[…]\nich incidentally\nshifted an internal chunk's output path).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): compose Orama's default tokenizer instead of replacing it",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:36:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d452b2a32827da6cd7563daea964a7d653152d61",
          "body": "…tative, source-verified at v3.1.18)\n\nCaptures why our custom compoundWordTokenizer silently dropped stop-words AND\nstemming: create.ts branch-3 uses any object with a .tokenize verbatim and\nnever calls createTokenizer(), so no stemmer/stopWords were ever active.\nSpecific deep-link citations (docs.o\n[…]\ndocs↔package inconsistencies. Two independent research passes converged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(ref): REF-0016 — Orama v3 text-analysis pipeline & BM25 (authori…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:05:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a719daf13d0f59911ae544bd26cfbeeaa5b0fc8",
          "body": "…ric-word overlap inflating grade-0 memories (R8)\n\nThe multi-term coordination re-ranker (applyCoordinationBonus) counted raw\nquery-term overlap with no stopword filtering, so a memory sharing only\nfunction words (\"what\", \"before\", \"a\", \"my\") with the query earned the same\ncoordination credit as one\n[…]\n745 → 0.8842, no regressions.\nRegression tests added to scoring.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(recall): discount stopwords in the coordination bonus — stop gene…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:33:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12c5f9902fa710310a8cf231fed48f102d579a77",
          "body": "…1 R8)\n\nExtends scripts/search-eval.mjs to score recall-queries-v2.jsonl-style\nfixtures where each query names its own production home (\"global\" or\n\"project\") instead of sharing one --project-root corpus. Per-home recall\nqueries now build one real CLI runtime per distinct home via\ncreateCliRuntime (\n[…]\nll@k 1.0000 across 4 human-judged (gate-eligible) queries.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(evaluation): per-home recall scoring in search-eval.mjs (ADR 012…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:23:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1706e1d106bc8665a87b55791e07d1c071727447",
          "body": "…sessor of record)\n\nCaptures the completed R8 judging (goga, assessor of record, human:goga\n2026-07-18): the graded sheet stays the human record; recall-queries-v2 +\nrecall-qrels-v2 are the machine gate the eval harness scores against, so any\nfuture ranker change is measured against Goga's ground tr\n[…]\ndgments are per-home; the data is correct and the\nharness must catch up.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human qrels — Goga's graded recall judgments (as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:14:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39a85bbb26d53baa624454fdd5bf0d3bb5dba7d5",
          "body": "…ject (TASK-0006)\n\nrecall/search --home all came back \"No memories found\" from within a project\neven though each home queried alone had hits. Two compounding causes: the\nambient project discovered from cwd was excluded from the fan-out (no\n--project-root → selection undefined → global only), and the\n[…]\nand ran full\nvalidation (typecheck, memory/viewer/server suites, build).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(cli): cross-home recall no longer returns empty from inside a pro…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:07:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b72098e783e4fcb8682e548b3be4b3c3221bcb07",
          "body": "…oposed)\n\nSalvaged from builder:boundary-decay (charter D2, Goga GO 2026-07-18), which\ncommitted this design before running out of credits mid-build. Lands the\nthree-class taxonomy DECISION only — AUTHORITATIVE (docs/committed config),\nDERIVED (index/caches, delete-safe), EVIDENCE (journal/telemetry\n[…]\nentionally dropped and gets written\nwhen the enforcement actually ships.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0123 — authoritative/derived/evidence boundary (design, Pr…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:53:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ba62f906aa857783c32b53779a5ec0f81d7bfa3",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): ADR 0122 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:45:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "174f1dd3c29c0534374459fa683f6158c35d373b",
          "body": "…sertion)\n\nMode-independent class in the composition block: every active declarative\nsubstrate's definitionVersion is a positive integer with a complete frozen\nchain; a synthetic v2 fixture with complete history loads clean; the same\nfixture without history yields exactly the missing-version-history\ndiagnostic while the substrate still loads and validates writes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(suite): schema-evolution structural class (ADR 0122 R5, first as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed6fd7f1a4c02a64f9cd97db916b132019f35228",
          "body": "…s (ADR 0122 Slice A)\n\nR1: the meta-schema accepts any positive-integer definitionVersion\n(previously z.literal(1)); the substrate-definition URN is unchanged.\nR2: a declaration at version N > 1 requires frozen history at\nsubstrates/history/<type>@<v>.json for every v in 1..N-1; each missing\nlink is\n[…]\ntions accept\nan optional permitted array, validated but entirely unused.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(substrates): unpin definitionVersion + freeze-on-bump diagnostic…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66e74665120fa89b2041fd4cd960039b35f2af33",
          "body": "…ons)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: CHANGELOG unreleased entry + checkpoint memory (legal-next-acti…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:33:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "20c1a48eb1ab26f840dbb5955e051873ef8b28f6",
          "body": "wakeup(operation=X) now carries focus.next — every transition the\nsubstrate's DECLARED workflow allows from the focal doc's current state,\ntransition names in declaration order, ' · '-joined (compiled-process\n2026-07, the 5% slice). Derived entirely from the existing declaration:\nzero new declaratio\n[…]\nd\n  the 3,072-byte ceiling holds with the ledger unchanged (2,987 bytes)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(wakeup): legal-next-actions line on the focal briefing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f21688f3d29c51720254055abd1a3c42586c5474",
          "body": "…CLI link setup), by goga",
          "is_bot": false,
          "headline": "memory: MEMO-0009 — Goga's first hand-written project memory (global …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee3bf1a955f5555f588e03469a958472b4a21f1f",
          "body": "…, non-goals, phases; evidence: stale 0.62.0, takeover incident, organ fragility)",
          "is_bot": false,
          "headline": "docs: PROMPT 0016 verbatim + ADR 0124 resilient-daemon charter (R1-R7…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:27:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adb2d5f446caa9921aae418ff1dae5dc29df8fca",
          "body": "…reely, truth stays legible, destruction test is the license) + It-IS reframed from 'convenience over files' to 'engine over legible truth' + resilient-daemon ledger row",
          "is_bot": false,
          "headline": "docs: PROMPT 0015 verbatim + NORTH-STAR Invariant 9 (engine absorbs f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:25:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bdf86f6ad3b58788ef18005c0f48e57191ba4d",
          "body": "…eal recorded demand, live results attached",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human judging sheet — four recall queries from r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc8e8a9d3a35e512781742a9823749211063c63c",
          "body": "… prep)",
          "is_bot": false,
          "headline": "docs: TASK-0006 — cross-home fused recall regression (found during R8…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46ab8389b0cdeb89885d24ba26ab2a98539e0e7b",
          "body": "…agent-system compiler assessed against all three anchors; PARKED UNTIL PAIN with five unpark tripwires",
          "is_bot": false,
          "headline": "docs: PROMPT 0014 verbatim + compiled-process Part Two — declarative …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:11:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe71443a5ac5735e3ec93f50fdfa42fb779e12ca",
          "body": "…layers; compile gates never the run-loop; grants seam; E-PROC experiment)",
          "is_bot": false,
          "headline": "docs: PROMPT 0013 verbatim + compiled-process cross-validation (five …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:08:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82b58b1d5849fd3bc243f6e6c3237962cc64774",
          "body": "…with cross-validation addendum + living PRESSURE-LEDGER",
          "is_bot": false,
          "headline": "docs: PROMPT 0012 verbatim (full document) + pressure-map assessment …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:06:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47130215264c70ac46fe8db122cf05cccb4d477d",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.68.0, viewer 0.60.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:00:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daa63b6974fda6129d7aba52ecb2d831863ddcc4",
          "body": "… + uniform MCP 'as' + whitespace normalization + test hygiene (review 0001 HIGH-1/MEDIUM-1/LOW)\n\nImplemented by codex gpt-5.6-sol @ high in sandboxed worktree; committed by granite (sandbox could not write the linked worktree index). Evidence: .codex/logs/fix-identity-request-scope/report.md",
          "is_bot": false,
          "headline": "fix(identity): per-home rung resolution for request-selected runtimes…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:59:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00585932db900e00f816be98f58bda2576a874d",
          "body": "…ed versions, frozen history, instance stamps, read-never-blocks, migrate-as-verb)",
          "is_bot": false,
          "headline": "docs: PROMPT 0011 verbatim + ADR 0122 substrate schema evolution (nam…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2903870ebe8cf13866bfdb1b003b542b1939d015",
          "body": "…-worktree memory-ID collision, lattice-class)",
          "is_bot": false,
          "headline": "docs: TASK-0004 (uncapped contradictions endpoint) + TASK-0005 (cross…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c84f0bac3eba9912851c263ef8e70e975ffb17f4",
          "body": "… two omission channels (MEMO-0006)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:desk-hardening procedural lesson — bounded folds have…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8dec569f04579c3c637ce9f6724bf664bb20a02b",
          "body": "…candidates leave (review 0001)\n\nThree Desk findings from the independent sol trunk review\n(docs/reviews/0001-sol-trunk-review-2026-07-18.md), fixed without touching\nthe seven-item output law, ranking, or the Desk's read-only posture.\n\nHIGH-2 composition bounds:\n- candidate .jsonl files: stat before\n[…]\npnpm -r test: memory 47, viewer 146, server 1341+2 skipped (was 1330+2).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): bound composition, host-independent determinism, reviewed …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22db8dc3a50f118e3571ad6a46dd6711e8cfd746",
          "body": "…-integrity finding)",
          "is_bot": false,
          "headline": "docs: TASK-0003 — search-demand packing parity gap (builder:telemetry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c215e125d9052bdc2ce04c7d25c497352142f6ca",
          "body": "…d state via ALS; memfs rename infidelity (MEMO-0006)\n\nFinal telemetry-integrity commit. DONE: all three review 0001 telemetry\nMEDIUMs fixed with tests (packed-away recall hits, per-request HTTP\nsessions, 8 MiB sink rotation), CHANGELOG Fixed entry, live-verified\nagainst the real built server (two /\n[…]\nn green (memory 47, viewer 146,\nserver 1340+2 skipped), typecheck clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-integrity procedural lesson — request-scope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:37:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd37adc2b1568c922f32250c13d33d8573cafb89",
          "body": "…iting review 0001\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry — telemetry integrity fixes c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:36:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "de23f4176836a1a382057f3a98b07e7635ce8994",
          "body": "…efore append\n\nReview 0001 MEDIUM: retrieval-telemetry.jsonl grew forever — no\nrotation, retention, or size cap — so a long-lived server under steady\nsearch traffic could fill the disk, and the resulting ENOSPC would\nbreak authoritative writes far beyond telemetry.\n\nappendTelemetryLine (retrieval-te\n[…]\nure, runtime-level wiring past a real 8 MiB\nsink, and the 8 MiB default.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): bound the sink — rotate once to <name>.1 past 8 MiB b…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:33:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5d693ee924322af2a2158af239aa3705611d766c",
          "body": "Review 0001 MEDIUM: the telemetry session UUID was module-global and\nminted once per process, so every request through the stateless HTTP\ntransport — which constructs a fresh server per request — shared one\nsession for the detached server's whole lifetime, letting independent\nclients be falsely corr\n[…]\nover shared runtimes record\ndistinct sessions with unchanged line shape.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): stateless HTTP/MCP requests each mint their own session",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:29:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e3aeafb106b272b1c66ebe9940696590613d2cc",
          "body": "…val, not the packed response\n\nReview 0001 MEDIUM: recordRecallDemand() partitioned the fused,\ntoken-packed final response per home, so a home whose hit was dropped\nby cross-home packing recorded ids: [] — a fabricated recall miss\ncorrupting the R6 mining trigger and promotion-lane evidence. Ids now\n[…]\nived behavior.\nRanking untouched (0121 R5); event line schema unchanged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): per-home recall ids derive from the home's own retrie…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a15c9486788f9057a46f1c36cc126e03592a38ca",
          "body": "…MEDIUM, 1 LOW); HIGH-1 verified by granite",
          "is_bot": false,
          "headline": "docs(reviews): review 0001 — independent sol trunk review (2 HIGH, 6 …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7608baf872fe0a6e4a853690d6036449c46024cc",
          "body": "…ompositions (MEMO-0005)\n\nFinal W2 commit. DONE: everything — implementation, 33 tests, docs,\nTASK-0001 done, rebase onto origin/main @ 002a13f, full validation green\n(memory 47, viewer 146, server 1330+2 skipped), first-person memory\nwritten at my own checkpoint via the stamped CLI.",
          "is_bot": false,
          "headline": "memory: engineer:lattice-w2 procedural lesson — two-filesystem test c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f05a2fb5792ae084a26e15a54c4cd4ecb10abd42",
          "body": "…dence (CLI-stamped, MEMO-0004 auto-capture)\n\nDONE: implementation + tests + docs; live verification in this worktree\n(canonical title + exact stub observed, reverted clean); rebased onto\norigin/main @ 002a13f (completion memory renumbered MEMO-0003 → MEMO-0004\nto clear main's MEMO-0003).\nREMAINS: full validation on the rebased tip + first-person memory + final\nreport.",
          "is_bot": false,
          "headline": "docs(lattice-w2): CHANGELOG Unreleased entry; TASK-0001 done with evi…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc038d3fd244905f87d43d9c6a50763303664c51",
          "body": "…, wire-budget absorption gate\n\nDONE: 33 new tests — git-law-freshness (19: real repo + 3 linked worktrees;\ndiverged/fresh/ahead/worktree-only/missing/ambiguous/cached-read/fail-open/\nsha256; grounding law facts; production-composition E2E at the MCP boundary\nwith byte-exact memfs mirrors), core-wak\n[…]\ns:1,decisions:3,operations:1}, 2962 ≤ 3072 bytes).\nIN PROGRESS: docs (CHANGELOG, TASK-0001) + rebase + memory + report.\nTotals: memory 47, viewer 146, server 1323+2 skipped — baseline +33, only added.",
          "is_bot": false,
          "headline": "test(lattice-w2): real-git probe/grounding/E2E suite, fold exact-text…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3309f5e141f595adb16e661cd273ffbe5836e3d6",
          "body": "…fold, wire doctrine\n\nDONE: W2 implementation — git-law-freshness probe (blob-hash detection, one\npinned canonical read, per-process cache), grounding law facts, fold serves\ncanonical vision title + exact one-line divergence stubs (vision.divergence,\nconstraints_divergence), CLI formatter lines, pro\n[…]\n class; at most ONE canonical read per\ncomposition, cached per process; hash comparison never textual diff;\nnon-worktree homes byte-identical (git-family e2e test now doubles as the\nfresh-case proof).",
          "is_bot": false,
          "headline": "feat(lattice-w2): canonical-fresh law disclosure — probe, grounding, …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "002a13f1a3e79401dfbe79be6e55d5eb5601a2c1",
          "body": "… (builder:cli-context finding)",
          "is_bot": false,
          "headline": "docs: TASK-0002 — refs validation must derive from substrate registry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:04:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0a88d1210ad32a867fe9960119c4fe69175fcbf",
          "body": "…ration fix\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:cli-context procedural lesson from the F3 context-hyd…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:02:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "722bea5e3c111ebf7efd7644372f573815b99a9b",
          "body": "… 0010 F3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry for CLI get --context (report…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b360d9991c2ea780e6cef751d1af9f0218a9066a",
          "body": "…(report 0010 F3)\n\nThe CLI get now takes --context and renders the same relational stubs the\nMCP backlog_get path returns (same core getItems/composeContextStubs call),\nin the CLI's recall-style stub grammar. Both surfaces emit the Tier-1\nexpand event on the context path for entity-id items only; plain gets stay\nbyte-identical. Parity covered in cli-get-context.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(cli): get --context — the ADR 0114 neighborhood reaches the CLI …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4192f1667930c5fe4c8362f6ccac67c53c45fe1b",
          "body": "…eport 0010 F3)\n\nrecordExpand keeps the ADR 0092.9 R-14 strong-usage signal (overlay line +\ncounter bump) but no longer emits Tier-1 telemetry; the new\nrecordContextExpand emits the session/actor-stamped expand event for\nentity-id gets with context:true — granite's ruling: plain gets and\nresource-path gets are reads, not expansions. Ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): Tier-1 expand is the neighborhood act, not reading (r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b645c96a97d9fa53e50e0c4ec64cbb61ad49ec51",
          "body": "…absorption assessment (7 absorbed, T1/T2 chartered frozen-lane, 3 refused, positioning seed)",
          "is_bot": false,
          "headline": "docs: PROMPT 0010 verbatim + REF-0015 (Cerebras KB) + knowledge-base …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T06:49:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45ce99b4eea6938fdffff7140e839d0c858653b9",
          "body": "…lane) + TASK-0001 (Lattice W2), report 0010 (findings F1-F4), fix 0116 index/frontmatter drift the session caught",
          "is_bot": false,
          "headline": "docs: dogfood session 01 — first project memories (MEMO-0002 release …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T02:34:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dd98c61c10b530584b23c25b7767c039aede08a",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.67.0, viewer 0.59.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:03:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f67338d85ea3fa869b6dd5248fa45a9445099e6f",
          "body": "…try build\n\nWritten via the built CLI (remember --layer procedural), attributed by\nthe ADR 0119.1 worktree stamp — no --as.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-t1 procedural lesson from the Tier-1 teleme…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:02:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b3e402f6a8f741b70c553f216d6a458de6cdbfe2",
          "body": "…probes\n\nTelemetry's actor resolution made the first ambientAgentIdentity() call\nin a vitest worker a REAL git probe, so the process-level rung cache\ncould carry the host repo's actual backlog.agent into tests that prove\nABSENT-identity behavior. The envActor test now seeds absent rungs\nexplicitly (\n[…]\nval-telemetry.jsonl sibling\n— still fully under the ignored state/ area.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): deterministic identity-ladder seeding around telemetry …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:59:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c7f342eccf01d7bac3ef1d23ec181019e3b6ea1",
          "body": "…ation README instrument note\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Tier-1 retrieval telemetry — CHANGELOG Unreleased entry + evalu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:55:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7dc971ae5d3252e5d922a663586018312b3fb248",
          "body": "…n, state-area\n\n16 new tests: session id stable per process + BACKLOG_SESSION override;\nrecall miss (ids: []) first-class with no overlay line; recall/search/\nexpand share one session; throwing sink or identity probe never\nsurfaces; project + global homes land events in <controlDir>/state/\nretrieval\n[…]\n Two\ncoordinator tests: per-home recall miss and per-home search demand.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): Tier-1 telemetry — session, misses, shared id, fail-ope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:54:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "628d2dd8e71aab6569622f3733018eb2d9f01c9e",
          "body": "backlog_search (MCP + CLI) records returned ids through the tracker —\nids only, never query text (Tier 2 is gated separately). The cross-home\ncoordinator records per-home search demand and no longer skips\nzero-contribution homes on recall: a consulted home with no returned ids\nis the per-home recall\n[…]\ne\ndemand signal. Observation only — result shapes and ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): search + cross-home telemetry hooks (ADR 0121 R7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "baf323a52ed71c8d81e16b048982342ae5245322",
          "body": "…ecall misses (ADR 0121 R7)\n\nNew memory/retrieval-telemetry.ts: one UUID session per process\n(BACKLOG_SESSION overrides), append-only {session, ts, event, ids, home,\nactor?} lines into <controlDir>/state/retrieval-telemetry.jsonl — the\nsame uncommitted state area as the usage overlay, never committe\n[…]\nail-open everywhere; overlay lines and retrieval\nresults byte-identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): Tier-1 retrieval telemetry — session-stamped events + r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1658d7cb9b445eb2fb97889d12c4b53428711292",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.66.0, viewer 0.58.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "724d4037c7f2ebfbf7358243d73a476c5edaa8b5",
          "body": "Frontmatter only, as directed; rulings text untouched. Note: the\ndirected status wording predates R6 (added on main in 93cf2a3, protocol\nnot code) — R6 is likewise unchanged by this implementation.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 status -> Implemented (builder, 2026-07-17)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f23a5e0e556862ec9c36467abb14ce1f4d7b7a5",
          "body": "CHANGELOG gains the Unreleased Added entry (set identity once via\ngit config backlog.agent; the briefing discloses the winning rung).\nREADME Configuration gains the ladder section with the five set-once\ncommands, the R1 worktree-over-env rationale, and the R4 shared-checkout\nanti-pattern. The five C\n[…]\ne.\nSKILL.md mentions neither --as nor BACKLOG_AGENT — nothing to update.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: teach the attribution ladder (CHANGELOG, README, --as help text)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c8c068f65da006409d7325536af623041e5ed8a",
          "body": "…act text\n\nReal repo + real linked worktree (git-family pattern), hermetic via\nGIT_CONFIG_GLOBAL/GIT_CONFIG_NOSYSTEM: all six rungs, the R1\nworktree-over-env inversion, the extension-absent gate (a stamp file\nwithout extensions.worktreeConfig never becomes rung 2 — git itself\nrefuses to read it), no\n[…]\nyte-identical\nabsent case, and the intact identity.md presence fallback.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): attribution-ladder precedence matrix + R2 disclosure ex…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a1ec2567f7202748938c12b0736bd69424bee9a",
          "body": "The briefing's meta line names the winning rung, exactly:\nidentity: <resolved-display-or-raw> (<source>) with source one of --as /\nworktree config / env / checkout config / user config. Display reuses\nthe fail-open read-side attribution index (ADR 0119 R2/R3): declared\nvalues render as the Agent tit\n[…]\nent / identity: present), and the MCP briefing JSON gains\nno key at all.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): wakeup meta discloses the identity source (ADR 0119.1 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca19107d544ce8886618b0677700e2aea4653d89",
          "body": "… (ADR 0119.1)\n\nThe six-rung ladder as one core module: explicit --as/MCP-as ->\ngit worktree config (extensions.worktreeConfig-gated) -> BACKLOG_AGENT\nenv -> git local config -> git global config -> absent. Returns value +\nwinning rung for R2 disclosure. R1: the deliberate worktree stamp beats\nthe i\n[…]\nd git, empty values -> rung absent, output\nbyte-identical to pre-0119.1.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): attribution ladder — implicit agent identity resolution…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11cd47465454e23106c0689e3f3b72673254b9f8",
          "body": "…ubstrates), ADR index truth (0119.1/0120/0121 + shipped retags + Historical split), NORTH-STAR roadmap checkboxes, AGENTS.md 4-package truth, evaluation README title; retire docs/framework-adr pointer",
          "is_bot": false,
          "headline": "docs: freshness pass — README front door (Desk, operation=, shipped s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb51bf4f99446dfe17d3f01c9f55b1608c4c2d39",
          "body": null,
          "is_bot": false,
          "headline": "fix: carry imperfect legacy docs through migration",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:34:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93cf2a301ee212ebb4df969d78ffe525ef3de4c6",
          "body": "…cope (goga's parallel-agent challenge)",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 R6 — writers get worktrees; one writing actor per s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:19:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63eaf0f85a0418e3d5eb4e6d463298984b68377f",
          "body": "…tribution ladder)",
          "is_bot": false,
          "headline": "docs: PROMPT 0009 verbatim + ADR 0119.1 implicit identity capture (at…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:13:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa4b53b2a0a1784fd85c6d454c424a13780e99ae",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.65.0, viewer 0.57.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32c7d667caa6b28133c10cd31f80b0dfbf717109",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): docs-native ID navigation fix under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bbce2e0f7ee1e084c79f120283b6c8380b8b03",
          "body": "…65 assertions, 25 failures\n\nSame-corpus before/after (sha 7c190d02dda3…, 229 documents, main code vs\nthis branch): 459 failures → 25.\n\n- navigation-id: 206 (bm25) + 224 (hybrid) → 0 + 0. Every entity now\n  resolves at rank 1 for BOTH forms of its own ID (space and hyphen).\n- navigation-title + memb\n[…]\nngle hit) in both modes. All\nnon-navigation per-class metrics identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun after ID-navigation fix — 24…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:07:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e695c6b7dc3dce87c6691eed11a4d7a12899d6d4",
          "body": "… zero-universe type-word fail-open\n\nTwo navigation plumbing bugs proved at corpus scale by the structural\ntruth suite (457 failures on main, dominated by navigation-id):\n\n1. The exact-ID fast path only knew built-in prefixes (TASK, EPIC, ...),\n   so docs-native display ids (\"ADR 0116\", \"REF-0004\", \n[…]\nRanking is untouched (ADR 0121 R5): no fusion, scoring, or decay change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): docs-native ID navigation — registry-derived ID intent +…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:59:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f60365f0e954d7e667143006e194a4de92182a6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): the Desk under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a2b09c3525535716ac5b44543a027d0ae5965b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): /desk redirect carries home selection through to the SPA",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a227fab8b55e75be0e72da9c6651bf458cf120c1",
          "body": "Core fold: per-class why-surfaced rules, budget=7 cap, worst-first band\nordering, honest per-class omission, determinism, worktree chip.\nEndpoint: /api/desk composition + provenance, degrade-without-readers,\n/desk chrome redirect. Grounding: frontmatter-over-git recency, lenient\nattention/author rea\n[…]\nrbatim\nrender, chips, copy-only affordances, fail-closed home selection.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(desk): fold rules, endpoint, grounding readers, viewer page",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "10bfc6dda97721a268703edae2d80a18362c1b6d",
          "body": "…(V1)\n\nThe Desk (attention-viewer proposal, PROMPT 0007): one deterministic,\ntransport-free core fold (core/desk.ts) composes JUDGE/REVIEW/READ/HEALTH\nfrom store state — ≤7 items total, worst-first across classes via declared\nseverity bands, per-class honest omission, why-surfaced sentence and a\ncop\n[…]\no the SPA),\nread-only, home-scoped, matching the existing design system.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(desk): server desk fold + /api/desk endpoint + viewer Desk page …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ae33054b809fe72f19b823079e0e91e4d7b1901",
          "body": "One memory, one home, fused reads: reads always fuse with provenance chips\n(0112 D made default), writes follow a nine-word rubric line (git ownership\nis the only real decision), 'meant for both' becomes usage-driven promotion\nwith provenance (cherry-pick for memories), identity is attribution and a\n[…]\nor art at verification\nlevels; signal-per-token audit: zero added turns.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: PROMPT 0008 verbatim + memory placement dissolution proposal",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2aa059a7b1787d010dae61e75ee774c9a24a06cc",
          "body": "…n (457 failures, -3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: changelog for rubric pair + wire ceiling; post-merge suite reru…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3ddc9fc9548193e4f147951f28991d65a87ffb6a",
          "body": "The client owns the hooks (0117/0118.1 law). SessionStart mounts the\nbriefing via the verified additionalContext contract (matcher covers\nstartup|resume|clear|compact, --max-knowledge 0 load-bearing, fail-open).\nSessionEnd/PreCompact cannot deliver text to the model in Claude Code —\nthe remember rub\n[…]\nwhich is what\nPROMPT 0006's first-person-at-checkpoint law wants anyway.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Claude Code session-hook recipe for the memory protocol",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d8f00e61ac4ac4e83b33862559038d58150d075",
          "body": "… ceiling\n\nADR 0118.1 Slice A + memory-flywheel F1:\n- MEMORY_PROTOCOL rides every briefing once, as its final block:\n  recall rubric (session-start, ~55 tokens) + remember rubric\n  (session-end twin: the three capture triggers + PROMPT 0006's\n  first-person law). Non-droppable under the ceiling.\n- H\n[…]\nflood 3,066 B ·\ncold-open 2,173 B · amnesia 1,557/1,596 B — all ≤ 3,072.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): the rubric pair — memory protocol in wakeup + hard wire…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2813d2690fb4239603b4e82222a211e31a97d09",
          "body": "…tions, 460 failures\n\nSame failure classes as the first run at proportional scale (corpus grew\n222→+ docs through today's merges): docs-native ID navigation broken at\ncorpus scale, hybrid taxes exact-ID lookup, intent-parser eats one title.\nDemonstrates the regenerate-per-run drift-proof property live.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun on current main — 2445 asser…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6031f91e91a14650842e3e5d29019afcac810d24",
          "body": "…ailures\n\nFirst run against the real corpus (222 documents: 143 adr, 5 prompt,\n14 reference entities + 60 resources; corpus 4b00540ce136…, both BM25\nand hybrid modes; byte-identical across two full runs).\n\nWhat holds by construction:\n- wakeup-reconciliation PASSES: 45 eligible decisions, 45 disclose\n[…]\n0096) but\n  shares no title tokens, so ordering is skipped and recorded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(eval): first structural truth suite run — 2399 assertions, 450 f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd1e6805471ee38af2b9931f3a65e8717afd3dc8",
          "body": "Lenient reads keep whatever YAML yields; ADR 0097 declares\nsupersedes: 0096-cron-entity-type.md as a scalar. A hand-written scalar\nis still a declaration of record — normalize to a one-element list so\nthe supersedes classes see it.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): accept scalar frontmatter supersedes declarations",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28313199b9c1aa71173eac24a4097750772dace5",
          "body": "…gate\n\nADR 0121 R9, with R4's truthful re-marking:\n\n- JUDGING.md gains the constructively-true assessor tier\n  (constructive:<generator> — truth by construction, no reviewer exists\n  to disagree) alongside human:<name> and llm:<agent-or-model>, plus the\n  note that the assessor role is adjudication,\n[…]\nllm: tier (24 queries, 235 qrels), preserving the\n  append-only history.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): R9 honesty repairs — assessor tiers replace the substring …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17d43bb5279d83d6052959f6c694a69327bec59d",
          "body": "One generator walks the real project corpus at run time and emits\njudge-free, constructively-true assertions, regenerated every run:\n\n- navigation-title / membership-title: every document's title as a query;\n  the document is the sole grade-3 target by construction (top-10 nav\n  window, top-20 membe\n[…]\n by\nconstruction: no timestamps, no timings, stable ordering everywhere.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(eval): structural truth suite generator (ADR 0121 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37b460c284a27a7d06f445c4156b4073ff7e57df",
          "body": "Unquoted, YAML treats \" #7)\" as a comment start and truncates the value;\nquoting preserves \"awaiting zombie-sweep ruling (report 0009 #7)\" exactly\nfor YAML-aware readers. Verified with js-yaml.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): quote the attention frontmatter values for YAML cleanliness",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "912a405c573aa9ddf6bdc6bacbf0b8c5938be927",
          "body": "…re note\n\n- Report 0009 (the judgment-queue probe) enters the tree with an appended\n  \"Reconciliation applied\" section: 12 flipped with evidence, 3 recorded\n  dispositions, 5 BUG ledgers, 4 NORTH-STAR rows, 7 zombies annotated,\n  and the genuinely-open remainder listed.\n- Report 0005 (owner's briefi\n[…]\nows 3/7/8/9 recorded as still open. The historical\n  table is untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): probe 0009 reconciliation ledger + briefing 0005 closu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30f1b154987327d68fa25eb4af9744537ba8e756",
          "body": "Context tools (0114, shipped 0.59.0), storage layout and docs home (0112\nfamily, 0.60.0-0.61.0), and ADR modeling (0113 Phases A-C) drifted: the\nwork shipped while the table still said open. Each row now carries its\nrelease evidence. The NAME row and the history/truth (0107 vs 0112) row\nare preserved as genuinely open - only table rows edited.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(north-star): mark the four shipped Open-decisions rows resolved",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c33b95fc4883b0fc7de3217ee6ea08b04542df2",
          "body": "BUG-0001/0002/0004/0005 -> Fixed (0.64.0) with rerun citations (reports\n0006/0007/0008, CHANGELOG 0.64.0). BUG-0003 stays Open with an in-flight\nnote (retrieval defect batch) - it is still a known issue in 0.64.0.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): reconcile EXP-1 BUG ledgers with the 0.64.0 reruns",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4509b5db7df0628b989f66802a6e4be5665b825",
          "body": "Seven pre-uplift ADRs (0009, 0018, 0021, 0037, 0083, 0084, 0097.1) whose\nreport-0003 citations are partial (phase-only, quarantine-posture, or\nGARDEN-classified) get a machine-findable attention line instead of a\nmanufactured disposition. Statuses untouched; the ruling stays human.\nNotably 0083: ADR\n[…]\nplemented; cross-encoder proposal remains conditional\" - not superseded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): annotate zombies awaiting the sweep ruling (report 0009 #7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3e18ff7c13ae36d1029df848fc6f191486492dc",
          "body": "….7, 0101)\n\n- 0036 pruning system: Superseded per report 0003 D10 (0092.x memory\n  architecture; decay reborn as 0092.12 ripeness; docs-native pivot 0112).\n- 0013.7 hosting Open Tension: resolved by ADR 0104's explicit text\n  (\"resolved in favor of neither: local is primary\"), per D14.\n- 0101 Phase \n[…]\n  engineering record documents the ID short-circuit), per 0003 appendix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): record dispositions report 0003 already proved (0036, 0013…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "176d18fd6dcfb7a613f9c9d4cd37bcc41b218cf8",
          "body": "…0.64.0)\n\nThe charter shipped in 0.64.0 and all three acceptance reruns ran\n2026-07-17; the status line now records the measured numbers, including\nthe honest aime shortfall (3.0/5 vs the 4/5 bar - the declared zero-setup\nboundary), per reports 0006/0007/0008 and the CHANGELOG.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(proposals): wakeup-first-impression — implemented and measured (…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "919971093fc4ee008484462f2dd9db370071bcc8",
          "body": "Eleven ADRs whose work shipped (CHANGELOG 0.59.0-0.62.0, 2026-07-16, plus\nthe 0092.x engineering records) but whose ledgers still said Proposed:\n0092.3, 0106, 0106.5, 0112, 0112.1-0112.4, 0113, 0114, 0115. Each new\nstatus carries its release/record citation inline. Records reality only -\nno dispositions manufactured (report 0009, drift item #3).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): reconcile executed-but-Proposed statuses with ship evidence",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d72374dfc496668203f8302984256887f114bab",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): remove conflict artifact from 0119-A rebase resolution",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:35:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f3cb6353c9afd2ecf971b142d1123d5706477dba",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): record ADR 0119 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a16d92f9b1fa64a944cf365a064a91f4b0d3a128",
          "body": "…ce rendering\n\nThe R8 fixture declares the agent substrate as a project declaration and\nproves: compile + claim of the real nine-agent fleet roster, search via\nthe declared projection, attribution round-trip (write as AGENT-0001 /\naime:beryl / MCP as-field -> journal actor + \"by <title>\" rendering),\n[…]\no the new\nwithAgentIdentity export stays live under the stubbed runners.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): nine-agent fixture (0119 R8) + --as wiring and provenan…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 92,
      "commits_last_year": 920,
      "latest_release_at": "2026-07-20T19:05:19Z",
      "latest_release_tag": "v0.70.0",
      "releases_from_tags": false,
      "days_since_last_push": 6,
      "active_weeks_last_year": 26,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 0.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "backlog-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "model-context-protocol",
            "claude",
            "anthropic",
            "ai",
            "llm",
            "agent-memory",
            "memory",
            "context-engineering",
            "substrates",
            "progressive-disclosure",
            "local-first",
            "markdown",
            "backlog",
            "task-management",
            "claude-code"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/backlog-mcp",
          "is_deprecated": false,
          "latest_version": "0.70.0",
          "repository_url": "https://github.com/gkoreli/backlog-mcp",
          "versions_count": 91,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2363,
          "first_published_at": "2025-12-27T07:10:15.214000Z",
          "latest_published_at": "2026-07-20T19:05:26.448000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [
        ".mise.toml"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/memory/tsconfig.json",
        "packages/server/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/viewer/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 56219,
      "source_files_sampled": 423,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".agents/skills/backlog-ui-framework/AGENTS.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 33296
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "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": 5
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "moderate": 1
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 248,
        "malicious_count": 0,
        "assessed_package": "npm:backlog-mcp@0.70.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@hono/node-server",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.14.0"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.25.1"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@parcel/watcher",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.5.6"
        },
        {
          "name": "ajv",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.17.1"
        },
        {
          "name": "arctic",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "commander",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.3"
        },
        {
          "name": "gray-matter",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "hono",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.7.0"
        },
        {
          "name": "mcp-remote",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.37"
        },
        {
          "name": "zod",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "zod",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@nisli/core",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.54.0"
        },
        {
          "name": "@orama/highlight",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.9"
        },
        {
          "name": "@shikijs/engine-javascript",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/langs",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/themes",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "diff",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.0"
        },
        {
          "name": "dompurify",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.1"
        },
        {
          "name": "marked",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.0.1"
        },
        {
          "name": "marked-shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.1"
        },
        {
          "name": "mermaid",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.12.3"
        },
        {
          "name": "shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 109,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 9
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "gkoreli",
          "commits": 595,
          "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4"
        },
        {
          "type": "User",
          "login": "gogakoreli",
          "commits": 266,
          "avatar_url": "https://avatars.githubusercontent.com/u/12997449?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.647
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-tag.yml",
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
            "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/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": 0,
            "reason": "121 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "135db9d44ad5012d780eafc9b04b867000c35071",
        "ran_at": "2026-07-27T10:29:36Z",
        "aggregate_score": 3.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T19:05:30Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-19T16:17:51Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/gkoreli/backlog-mcp",
    "host": "github.com",
    "name": "backlog-mcp",
    "owner": "gkoreli"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 43,
        "vitality": 89,
        "community": 36,
        "governance": 49,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "commits_last_year": 920,
              "human_commit_share": 1,
              "days_since_last_push": 6,
              "active_weeks_last_year": 26
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "26/52 weeks with commits",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 26
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "920 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 920
                    }
                  }
                ],
                "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": 92,
              "latest_release_tag": "v0.70.0",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 0.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "92 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 92
                    }
                  }
                ],
                "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 ~0.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "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": 36,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 2,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "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": 56,
            "inputs": {
              "packages": [
                "backlog-mcp"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2363
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,363 downloads/month across npm",
                "points": 45,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2363,
                      "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": "at_risk",
        "name": "Sustainability & Governance",
        "value": 49,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.647
            },
            "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 65% of commits",
                "points": 7.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 65
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": 66,
            "inputs": {
              "merged_prs": 109,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 9
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "109/118 decided PRs merged",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 109,
                      "decided": 118
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 21,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "gkoreli",
              "public_repos": 5,
              "account_age_days": 259
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of gkoreli",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "gkoreli"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~0 yr old",
                "points": 7.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "backlog-mcp"
              ],
              "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": "91 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "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": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ai",
                "anthropic",
                "claude",
                "llm",
                "mcp",
                "model-context-protocol",
                "task-management"
              ],
              "has_wiki": false,
              "homepage": "https://gkoreli.com/one-hundred-pull-requests",
              "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://gkoreli.com/one-hundred-pull-requests",
                "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": "7 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "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": "121 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the npm:backlog-mcp@0.70.0 runtime dependency closure — what installing the published package pulls in — 248 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:backlog-mcp@0.70.0",
                  "assessed": 248
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 248,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, moderate 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 18.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: sharp 0.34.5 (high 7.3)",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "sharp 0.34.5 (high 7.3)"
                    }
                  }
                ],
                "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": 248,
              "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
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 72,
        "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": [
                ".agents/skills/backlog-ui-framework/AGENTS.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 33296
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                ".mise.toml"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "packages/memory/tsconfig.json",
                "packages/server/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/viewer/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.65,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": ".mise.toml",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".mise.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "65 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 65,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 56219,
              "source_files_sampled": 423,
              "oversized_source_files": 0
            },
            "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": "0/423 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 423,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "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-27T10:29:45.479776Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/gkoreli/backlog-mcp.svg",
  "full_name": "gkoreli/backlog-mcp",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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