公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-23 04:22 UTC

getagentseal / codeburn

Free, local tool to track AI coding token usage and cost across 31 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn

TypeScript · SwiftMIT★ 8,858 星标⑂ 691 复刻始于 2026年4月在 GitHub 上查看 ↗

getagentseal/codeburn 的健康指数为 100 分中的 70 分,处于「良好」区间。 其得分最高的类别是Community & Adoption(82/100),最低的是Security(42/100)。 最近一次更新在 1 天前。 近期的大部分工作由 1 位贡献者完成。

70
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

Agentseal组织
77 关注者9 个公开仓库始于 2026年4月

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

软件包生态系统

按类别列示的指标

活力

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

80良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 1 天前
10.4/36提交节奏 — 52 周中有 15 周有提交
18/18提交量 — 最近一年 1,118 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year1,118
human_commit_share1
days_since_last_push1
active_weeks_last_year15

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 48 个发布版本
36/36发布时效 — 最近一次发布版本于 2 天前
27/27发布节奏 — 约每 2.1 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count48
latest_release_tagmac-v0.9.19
releases_from_tags
days_since_latest_release2
mean_days_between_releases2.1

社区与采用

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

82良好 · 占总体的 18%
评分方式
60/60星标 — 8,858 个星标
23.7/25复刻 — 691 个复刻
7.9/15关注者 — 27 位关注者
所用输入
forks691
stars8,858
watchers27
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

62中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
4.6/22.5提交分布 — 头号贡献者编写了 80% 的提交
13.5/13.5贡献者广度 — 61 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 14 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled61
top_contributor_share0.796
评分方式
42.6/46.8议题解决 — 91% 的议题已关闭
29/38.3PR 接受 — 已裁定的 PR 中 412/544 已合并
1.5/15OpenSSF Scorecard:Code-Review — Found 3/29 approved changesets -- score normalized to 1
所用输入
merged_prs412
open_issues21
closed_issues218
issue_closed_ratio0.912
closed_unmerged_prs132
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
13.6/25所有者影响力 — getagentseal 有 77 位关注者
7.8/25既往记录 — 9 个公开仓库,账户约 0 年
所用输入
followers77
owner_typeOrganization
is_verified
owner_logingetagentseal
public_repos9
account_age_days95
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
35/35发布时效 — 最近一次发布于 2 天前
20/20版本历史 — 50 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagescodeburn
ecosystemsnpm
any_deprecated
min_days_since_publish2

工程质量

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

81良好 · 占总体的 20%

工程实践

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

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://codeburn.app/
10/10仓库描述
10/10主题标签 — 12 个主题标签
10/10Wiki
所用输入
topicsai-coding, claude-code, cli, codex, cost-tracking, developer-tools, observability, terminal-ui, token-usage, cursor-ide, menubar, web-dashboard
has_wiki
homepagehttps://codeburn.app/
has_readme
has_docs_dir
has_description

安全

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

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

安全态势

42存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 28 out of 28 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.8/7.5Code-Review — Found 3/29 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 14 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
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
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.2
已排除计分(无数据或不适用):packaging。 其余权重已重新归一化。

AI 就绪度

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

61中等 · 占总体的 0%
评分方式
45/45代理指令 — docs/providers/claude.md, docs/providers/gemini.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_filesdocs/providers/claude.md, docs/providers/gemini.md
agent_instruction_max_bytes3,012
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — app/tsconfig.json, dash/tsconfig.json, tsconfig.json
10/10可复现环境 — lockfile
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsapp/tsconfig.json, dash/tsconfig.json, tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
54.1/55可控的文件大小 — 采样的 510 个源文件中有 8 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes167,083
source_files_sampled510
oversized_source_files8
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
0/40可运行示例
所用输入
example_dirs
has_mcp_signal
api_schema_files

关键数据

8,858GitHub 星标
61贡献者
1,118最近 12 个月提交数
1距最近推送天数
48发布版本数
1巴士系数(bus factor)
21开放议题
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
  • deps.dev does not index npm:codeburn@0.9.19; advisories assessed against the repository dependency graph instead

更多细节

Star 与 Fork 历史 0 ★ / 691 ⇿
0Star
691Fork
48发布

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

0125250375500625750690632026-042026-062026-07
主版本 0次版本 1修订 14
OpenSSF Scorecard 4.2 / 10
4.2综合

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

10Binary-Artifactsno binaries found in the repo
5Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests28 out of 28 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 3/29 approved changesets -- score normalized to 1
10Contributorsproject has 14 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities23 existing vulnerabilities detected
直接依赖 21
注册表软件包版本约束清单文件
npm@gsap/react^2.1.2app/package.json
npmgsap^3.15.0app/package.json
npmreact^19.2.7app/package.json
npmreact-dom^19.2.7app/package.json
npm@tanstack/react-query^5.62.7dash/package.json
npmclsx^2.1.1dash/package.json
npmlucide-react^0.468.0dash/package.json
npmreact^19.0.0dash/package.json
npmreact-dom^19.0.0dash/package.json
npmrecharts^3.3.0dash/package.json
npmtailwind-merge^3.0.2dash/package.json
npm@modelcontextprotocol/sdk^1.29.0package.json
npmbonjour-service^1.4.1package.json
npmchalk^5.4.1package.json
npmcommander^13.1.0package.json
npmink^7.0.0package.json
npmreact^19.2.5package.json
npmselfsigned^5.5.0package.json
npmstrip-ansi^7.2.0package.json
npmundici^7.27.2package.json
npmzod^3.25.76package.json
全部依赖 未采集

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "ai-coding",
        "claude-code",
        "cli",
        "codex",
        "cost-tracking",
        "developer-tools",
        "observability",
        "terminal-ui",
        "token-usage",
        "cursor-ide",
        "menubar",
        "web-dashboard"
      ],
      "is_fork": false,
      "size_kb": 18611,
      "has_wiki": true,
      "homepage": "https://codeburn.app/",
      "languages": {
        "CSS": 107170,
        "HTML": 56153,
        "Shell": 14216,
        "Swift": 624654,
        "JavaScript": 65456,
        "TypeScript": 4621387
      },
      "pushed_at": "2026-07-21T22:23:26Z",
      "created_at": "2026-04-13T22:11:53Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T04:15:38Z",
      "description": "Free, local tool to track AI coding token usage and cost across 31 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Swift"
      ]
    },
    "owner": {
      "blog": "https://agentseal.org/",
      "name": "Agentseal",
      "type": "Organization",
      "login": "getagentseal",
      "company": null,
      "location": "Germany",
      "followers": 77,
      "avatar_url": "https://avatars.githubusercontent.com/u/277308000?v=4",
      "created_at": "2026-04-18T17:17:21Z",
      "is_verified": null,
      "public_repos": 9,
      "account_age_days": 95
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "mac-v0.9.19",
          "kind": "other",
          "published_at": "2026-07-20T17:22:34Z"
        },
        {
          "tag": "desktop-v0.9.19",
          "kind": "other",
          "published_at": "2026-07-20T21:03:03Z"
        },
        {
          "tag": "v0.9.19",
          "kind": "patch",
          "published_at": "2026-07-20T16:43:57Z"
        },
        {
          "tag": "desktop-v0.9.17",
          "kind": "other",
          "published_at": "2026-07-17T21:02:53Z"
        },
        {
          "tag": "desktop-v0.9.16",
          "kind": "other",
          "published_at": "2026-07-17T02:31:18Z"
        },
        {
          "tag": "mac-v0.9.16",
          "kind": "other",
          "published_at": "2026-07-17T02:24:30Z"
        },
        {
          "tag": "v0.9.16",
          "kind": "patch",
          "published_at": "2026-07-17T02:24:17Z"
        },
        {
          "tag": "desktop-v0.9.15",
          "kind": "other",
          "published_at": "2026-07-16T22:52:05Z"
        },
        {
          "tag": "mac-v0.9.15",
          "kind": "other",
          "published_at": "2026-07-02T04:32:26Z"
        },
        {
          "tag": "v0.9.15",
          "kind": "patch",
          "published_at": "2026-07-02T04:32:09Z"
        },
        {
          "tag": "mac-v0.9.14",
          "kind": "other",
          "published_at": "2026-06-22T01:53:21Z"
        },
        {
          "tag": "v0.9.14",
          "kind": "patch",
          "published_at": "2026-06-22T01:56:00Z"
        },
        {
          "tag": "mac-v0.9.13",
          "kind": "other",
          "published_at": "2026-06-14T08:36:23Z"
        },
        {
          "tag": "mac-v0.9.12",
          "kind": "other",
          "published_at": "2026-06-09T23:04:28Z"
        },
        {
          "tag": "v0.9.12",
          "kind": "patch",
          "published_at": "2026-06-09T23:02:46Z"
        },
        {
          "tag": "mac-v0.9.11",
          "kind": "other",
          "published_at": "2026-05-27T13:13:11Z"
        },
        {
          "tag": "v0.9.11",
          "kind": "patch",
          "published_at": "2026-05-27T13:12:54Z"
        },
        {
          "tag": "mac-v0.9.10",
          "kind": "other",
          "published_at": "2026-05-20T11:25:02Z"
        },
        {
          "tag": "v0.9.10",
          "kind": "patch",
          "published_at": "2026-05-20T11:24:48Z"
        },
        {
          "tag": "v0.9.9",
          "kind": "patch",
          "published_at": "2026-05-17T09:48:23Z"
        },
        {
          "tag": "mac-v0.9.9",
          "kind": "other",
          "published_at": "2026-05-17T09:44:16Z"
        },
        {
          "tag": "mac-v0.9.8",
          "kind": "other",
          "published_at": "2026-05-11T00:16:59Z"
        },
        {
          "tag": "v0.9.8",
          "kind": "patch",
          "published_at": "2026-05-11T00:16:39Z"
        },
        {
          "tag": "mac-v0.9.7",
          "kind": "other",
          "published_at": "2026-05-07T06:17:33Z"
        },
        {
          "tag": "v0.9.7",
          "kind": "patch",
          "published_at": "2026-05-07T06:16:47Z"
        },
        {
          "tag": "mac-v0.9.6",
          "kind": "other",
          "published_at": "2026-05-03T19:17:51Z"
        },
        {
          "tag": "v0.9.6",
          "kind": "patch",
          "published_at": "2026-05-03T19:17:24Z"
        },
        {
          "tag": "mac-v0.9.5",
          "kind": "other",
          "published_at": "2026-05-02T17:18:03Z"
        },
        {
          "tag": "v0.9.5",
          "kind": "patch",
          "published_at": "2026-05-01T15:17:07Z"
        },
        {
          "tag": "mac-v0.9.4",
          "kind": "other",
          "published_at": "2026-04-30T16:25:46Z"
        },
        {
          "tag": "mac-v0.9.3",
          "kind": "other",
          "published_at": "2026-04-28T03:22:36Z"
        },
        {
          "tag": "mac-v0.9.0",
          "kind": "other",
          "published_at": "2026-04-25T00:01:08Z"
        },
        {
          "tag": "mac-v0.8.9",
          "kind": "other",
          "published_at": "2026-04-24T11:50:48Z"
        },
        {
          "tag": "mac-v0.8.8",
          "kind": "other",
          "published_at": "2026-04-22T20:01:32Z"
        },
        {
          "tag": "mac-v0.8.7",
          "kind": "other",
          "published_at": "2026-04-21T20:46:47Z"
        },
        {
          "tag": "mac-v0.8.6",
          "kind": "other",
          "published_at": "2026-04-21T14:45:38Z"
        },
        {
          "tag": "mac-v0.8.5",
          "kind": "other",
          "published_at": "2026-04-21T12:29:40Z"
        },
        {
          "tag": "mac-v0.8.4",
          "kind": "other",
          "published_at": "2026-04-21T01:36:38Z"
        },
        {
          "tag": "mac-v0.8.2",
          "kind": "other",
          "published_at": "2026-04-19T23:34:55Z"
        },
        {
          "tag": "mac-v0.8.1",
          "kind": "other",
          "published_at": "2026-04-19T20:01:12Z"
        },
        {
          "tag": "mac-v0.8.0",
          "kind": "other",
          "published_at": "2026-04-19T16:57:32Z"
        },
        {
          "tag": "v0.7.4",
          "kind": "patch",
          "published_at": "2026-04-19T10:40:32Z"
        },
        {
          "tag": "mac-v0.7.5",
          "kind": "other",
          "published_at": "2026-04-18T20:42:39Z"
        },
        {
          "tag": "mac-v0.7.4",
          "kind": "other",
          "published_at": "2026-04-18T20:14:11Z"
        },
        {
          "tag": "mac-v0.7.3",
          "kind": "other",
          "published_at": "2026-04-18T14:24:32Z"
        },
        {
          "tag": "mac-v0.7.2",
          "kind": "other",
          "published_at": "2026-04-18T00:19:47Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-04-17T12:10:55Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-04-16T23:34:10Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6e3c57a9ff95a624f1d9affa7384d32a67f359b7",
          "body": null,
          "is_bot": false,
          "headline": "feat(cli): add interactive sessions browser (#793)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-21T11:03:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2eb47181228e19d1e861c35d241179e4d322af44",
          "body": null,
          "is_bot": false,
          "headline": "sessions: correlate cross-provider work with pull requests (#792)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-21T09:50:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e1caae33ac754b50566cae1b55f1c0e76d297bb",
          "body": "* sessions: fold subagent runs into PR attribution\n\nSidechain (subagent) session cost never reached the by-PR view, so a\nsession orchestrated on one model with subagent lanes on another showed\nonly the parent model on every PR row. Fold each sidechain's cost, calls,\nmodels, and categories into the p\n[…]\nverified. Fresh real-data drives (lifetime, single-day,\nand a NON-CONTIGUOUS day selection) re-prove no-double-count and\nreconciliation to the cent.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "sessions: fold subagent runs into PR attribution (#791)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-21T03:47:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "45e93129f21c2e60bf3bd6cea4b71fc5923aa733",
          "body": "* sessions: attribute PR spend per turn instead of per session\n\nThe by-PR surfaces attributed a session's full cost to every PR it\nreferenced, so one orchestration session that touched many PRs rendered\nidentical full-session rows. Capture per-turn PR references during\ntranscript parsing and attribu\n[…]\n.\nThe expansion reset keyed only on the row URL set, so a period switch that\nreturned the same PRs kept a stale expansion open over changed numbers.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "sessions: attribute PR spend per turn instead of per session (#790)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-21T03:44:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a9d4471d17c1830830ca945801898553f4c1121d",
          "body": "…ab (#788)\n\nPart 1 (src): expose two add-only, optional aggregations on the menubar\npayload's `current`, computed on the unscoped all-provider path from the\nsurviving-session parse (carried history cannot contribute, as expected).\n\n- current.pullRequests: aggregateByPr rows (top 20 by cost) plus the\n[…]\nsion counts) and the Pull requests component tests\n(table, external link, footnote, both empty states). Nav-reflow assertions in\nSidebar and App tests updated.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "payload: spend by pull request and by branch; desktop Pull requests t…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T21:36:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "475ff502e05f4289e933efa340b7e7021166cdbb",
          "body": "* Resolve Fireworks-hosted models to friendly display names\n\nFireworks fleet models arrive as `accounts/fireworks/models/<slug>` and\nwere leaking the raw path/slug in reports and the dashboard (e.g.\n`fireworks/mode…`, `glm-5p2`). getShortModelName's path fallback now takes\nthe last path segment and \n[…]\n into a pure, tested aggregateModelTotals() keyed by the\nresolved display name so the rows merge into one. This also aligns the panel\nwith modelEfficiency, which is already keyed by getShortModelName.",
          "is_bot": false,
          "headline": "models: resolve Fireworks-hosted models to friendly display names (#787)",
          "author_name": "Rick Culpepper",
          "author_login": "therickfactr",
          "committed_at": "2026-07-20T21:22:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "15a381b7d2d6dc04109bfaa8dd43f735bfcf1ebb",
          "body": "…789)\n\nThe #782 titles threading added title to the sessions JSON row shape but\nmissed this emitter test's key list; caught by the first full-suite run\nsince the merge.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "test: cli-emitters expects the title field sessions rows now carry (#…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T21:18:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8097052f679877b05c86d60712f3a1d7eafd3048",
          "body": "Compact one-row strip: correction rate with count, median time to first\nedit, and the top reworked file, plus one coaching note derived locally\nwith the same thresholds and copy as the CLI's workflow-insights\nbuildCoachingNotes. Decodes two new optional payload blocks\n(current.workflow and current.t\n[…]\nyload, so it follows the selected agent tab automatically.\n\nAdds unit tests for the duration formatter, note selection, model\nderivation, and payload decoding.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "menubar: add Workflow strip after the Models section (#785)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T20:55:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4d2bcbac7f5018b5a41887e0d398ea8b3b017eb6",
          "body": "…w (#784)\n\nTwo Phase-1 desktop additions over the renderer's existing card grammar.\n\nOverview workflow card: a panel below the daily chart with two stat tiles\n(correction rate with count, median time to first edit) plus a top-rework\nline and one coaching caption. The caption is derived locally with \n[…]\n untitled rows keep the project as the\nheadline (unchanged). Title is also searchable and added as an optional\nSessionRow field so older CLIs render unchanged.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "app: Workflow card on Overview and session titles in the Sessions vie…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T20:55:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9676f53d0cc785469426580652ac04ec46752249",
          "body": "…#782)\n\nSame threading as prLinks: the cache-level title (last ai-title entry)\nrides onto SessionSummary in both the Claude and generic provider\npipelines, and the sessions table gains a TITLE column (truncated at 38\nchars, empty when a transcript never produced one, as subagent\ntranscripts typically do not). JSON rows carry it verbatim. Groundwork\nfor titles in the context browser, desktop Sessions view, and payload.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "sessions: thread captured titles onto SessionSummary and the report (…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T20:01:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "739d0b76420ceb2575b278a235595be36db86841",
          "body": "… (#781)\n\nThe desktop app's Life tab failed with 'invalid period': the renderer\nand CLI both learned lifetime, but the electron IPC allowlist between\nthem did not. The menubar's period row also overflowed once Lifetime\njoined it; labels compact to the desktop strip's forms (7D, 30D, 6M,\nLife). Perio\n[…]\ne label\nchange is safe. Follow-up worth doing: derive the IPC allowlist from\nthe renderer's period module so a new period cannot miss one layer of\nthree again.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "fix: Lifetime period end to end in the desktop app and menubar labels…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T19:56:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8676f0da01255bb4f94e8e3bacaeedad32e22f8b",
          "body": "The rich session capture (#758) stores every PR URL a transcript\nreferences, but nothing displayed it. codeburn sessions --by-pr now\ngroups spend by pull request: cost, savings, sessions, calls, and the\ndate span per PR, sorted by cost, with a GitHub-shortened label and\njson output. Attribution is b\n[…]\nrows are never mistaken for a\ngrand total. prLinks now ride from the cached file onto SessionSummary\nin both the Claude pipeline and the generic provider path.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "sessions: spend per pull request via --by-pr (#780)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T19:28:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "00160275cd4d73f9eef359853a52556be7f5fd19",
          "body": "The Update badge previously replaced only the menubar (via the CLI's\nmenubar --force installer), and the CLI banner only copied the update\ncommand to the clipboard. One click now runs the whole sequence: update\nthe CLI in place through the package manager it was installed with\n(brew upgrade, or npm \n[…]\npears for CLI-only updates, and the banner's primary action is Update\nnow with the copyable command kept as secondary. Six resolution tests,\nmutation-verified.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "menubar: one-click update for the CLI and the app together (#778)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T17:17:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ae1d1c026b10069d31b36e1b2aad8216541e8813",
          "body": "The update Download button opened the GitHub release page; it now\ndownloads the right artifact for the running platform directly: arm64\nor x64 dmg on macOS (preload newly exposes process.arch), the Setup exe\non Windows. Linux keeps the release page since it ships three formats\nand the user picks. Unknown platforms and preloads without arch fall\nback to the page. URL mapping is unit-tested per platform.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "app: Download button direct-downloads the update asset (#777)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T17:02:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "101574a05fbea06773b5b99b9d32f3152a34bbb6",
          "body": "Co-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "docs: present 0.9.19 directly in the changelog (#776)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T16:45:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d96149b60f5bad1aac5f46ab09a14c0ecd40c5c8",
          "body": "The 1ms-heartbeat stress test fails under saturated full-suite runs when\nfilesystem starvation makes guard operations report unavailable, which\nthe fence correctly treats as fail-closed. Isolation runs, the process\ntests, and mutation checks all hold. Retries go 2 to 5 and iterations\n300 to 120: a m\n[…]\ny attempt (six percent per\nverify compounds to a per-attempt pass chance under a tenth of a\npercent), while transient starvation now has five chances to clear.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "test: widen the fence stress test's flake shield (#775)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T16:39:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af291ae6216af08c2cf8890e79d370f8297187e2",
          "body": "0.9.18 was packaged from the pre-fix commit (364eed4) before the final\nnine commits landed; npm versions are immutable, so the corrected\nrelease ships as 0.9.19 everywhere. The changelog entry carries over\nwith a supersede note.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "release: 0.9.19 (#774)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T16:35:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10ac583fd4b7ea46aa4e7fc824dacadd45f322c8",
          "body": "….9.18 (#773)\n\nThe changelog entry predates the final merges; it now covers the\nno-data rendering, the cross-process refresh gate, the straddle guard,\nthe turn-attribution and insights accuracy fixes, the 10-year retention,\nand the small cache/currency fixes. README download badges move from\n0.9.16 to 0.9.18.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "docs: complete 0.9.18 notes for the post-cut train, point README at 0…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T16:29:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f5fe6c5ec8464ffdb70413e198534a3cf402438",
          "body": "Under a saturated full-suite run, fd/CPU starvation can make the\ntakeover-guard fs ops report unavailable, which the fence correctly\ntreats as fail-closed; the 1ms-heartbeat stress test misread that as the\nserialization race. Retries rescue environmental noise only: the real\nrace fails roughly 6 percent per verify across 300 verifies, so a\nmutated build cannot pass any attempt.",
          "is_bot": false,
          "headline": "test: retry-shield the fence-heartbeat stress test against fs starvation",
          "author_name": "reviewer",
          "author_login": null,
          "committed_at": "2026-07-20T16:25:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be748c81aab1821ace0688d788982fe4746e775e",
          "body": "…ge id (#772)\n\nThe incremental-append path groups the appended region before the file's\nown cached keys join the dedup set, so a streamed assistant id restated\nacross the append boundary counted twice, and the boundary merge could\nsplice it into the wrong turn (reproduced on real image-heavy session\n[…]\nout 0.3 percent of real files) and bounded to one file per\nrefresh. Regression test uses the cold-reparse oracle; mutation-verified\nagainst the unguarded code.\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "parser: full re-parse when an appended region restates a cached messa…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T16:22:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e27fe36bd5173587c7e8ac57fded4559ea8d8642",
          "body": "…ransaction (#743)\n\n* cache: strict cross-process gate for the warm session-cache refresh transaction (#645)\n\n* lock: serialize the fence against the owner's own heartbeat\n\nverifyStillOwner and the heartbeat tick both take the takeover guard;\nwithout in-process serialization the fence could observe \n[…]\n at heartbeatMs 1, mutation-\nverified against the unserialized code.\n\n---------\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "cache: strict cross-process gate for the warm session-cache refresh t…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-20T16:06:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17a23ead4059b1575f295b9ab15fa5b9f13026b8",
          "body": "…inflation (#762)\n\n* daily-cache: coverage-gated carry on re-derive + single-slice turn attribution\n\nP2: a tz-change re-derive no longer double-counts turns whose day bucket\nmoved across midnight — secondary slices are carried only outside the\nprovider's fresh coverage (floor widened by one day on t\n[…]\ntly one slice\n(majority-calls provider, tie broken by first call), restoring\nslice-sums equal day-counts on fresh builds, with its regression tests.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
          "is_bot": false,
          "headline": "daily-cache: fix tz-change double-count and multi-provider turn-stat …",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-20T15:57:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d8158afb1be2464e3161ed8b415ad600cd8b4b30",
          "body": "The one cache module still hardcoding ~/.cache/codeburn; every other\ncache (session, daily, codex, pricing) honors the relocation override,\nso a user moving the cache dir kept getting this single file in the\ndefault location. Found by the pre-release functional sweep.",
          "is_bot": false,
          "headline": "currency: honor CODEBURN_CACHE_DIR for the exchange-rate cache (#766)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T15:28:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbd93fee51c4d155139f6113aeb6a130d1105d7d",
          "body": "* fix(app,dash): render pre-history days as no data, not a currency zero\n\nDays before the first recorded day in history.daily were painted as a real\n0.00/0 calls in the daily activity heatmap and the daily spend charts. That\nzero is unknown, not measured, so those cells and bars now read \"No data\nre\n[…]\never drop a real first-day bucket, and an\nall-zero series lands in the established empty state.\n\nStackedBars no-data columns expose their state via aria-label, not only\na title on a non-focusable div.",
          "is_bot": false,
          "headline": "app,dash: render pre-history days as no data, not a currency zero (#765)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T15:03:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b30818138ea2bda3d3b5dee813f3a3a41ee607b4",
          "body": "…(#764)\n\nThree review leftovers plus one inconsistency found while fixing them.\n\ncomputePace returns undefined for a non-finite usedFraction instead of\nletting NaN sail through the clamp into every pace field.\n\nDaily-cache retention goes from 730 days to 3650: the cache is the only\ndurable record of\n[…]\nper 730\ndense days).\n\nThe vercel-gateway dashboard-range test pins a relative day instead of\n2026-06-01, which would have started failing once the rolling 6-month\nwindow moved past it around December.",
          "is_bot": false,
          "headline": "prerelease: quota NaN guard, 10-year daily retention, test date bomb …",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:37:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db8ef9b4666e844641732be31fe38aca6b4f40d3",
          "body": "…ce (#763)\n\nFive verified findings from the #756 review, each with a regression test:\n\nCorrections now count only follow-up prompts. The session-opening prompt\ncannot be correcting this assistant, however correction-shaped its task\ntext reads, and the revert pattern no longer matches ordinary 'rever\n[…]\nerage value now reaches the payload as null, never as a\nfabricated 100%.\n\nAlso shares the one-shot minimum-edit-turns threshold between\nworstOneShotCategory and the coaching gate so they cannot drift.",
          "is_bot": false,
          "headline": "insights: close the post-merge review findings on workflow intelligen…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:26:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "364eed44e80aa0ab9ffbcb8713f5e576eb044e22",
          "body": "chore: release 0.9.18",
          "is_bot": false,
          "headline": "Merge pull request #761 from getagentseal/chore/release-0.9.18",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:18:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8386df5f3c5d025b99b214d81071d875ad318176",
          "body": null,
          "is_bot": false,
          "headline": "chore: release 0.9.18",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:17:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76744124aba6fdd1df6493d4bd4a3a091e438682",
          "body": "fix(report): CLI totals read the durable daily cache, matching the menubar exactly",
          "is_bot": false,
          "headline": "Merge pull request #760 from getagentseal/fix/cli-durable-totals",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:14:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92843bc6470cb04a86d97601c64f109dd5e777af",
          "body": "fix(clients): display CLI values verbatim, align period windows, true Lifetime tab",
          "is_bot": false,
          "headline": "Merge pull request #759 from getagentseal/fix/client-math-parity",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T14:13:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dea61bad4e41d49c6f8c2df2a151715c1bf76e15",
          "body": "…nubar exactly",
          "is_bot": false,
          "headline": "fix(report): CLI totals read the durable daily cache, matching the me…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T13:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6eb8797efab2fe1499e4a4b0cdbf9e04415f3fcc",
          "body": "…ows across app/dash/menubar",
          "is_bot": false,
          "headline": "fix(clients): display CLI-computed values verbatim, align period wind…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T13:26:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba56ad72f58cba0368f42764c10301f4f35f7b44",
          "body": "feat(capture): parse-time capture of branch, LOC deltas, interruptions, titles, PR links",
          "is_bot": false,
          "headline": "Merge pull request #758 from getagentseal/feat/rich-session-capture",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T13:03:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ced2ed47f8afc590533a3d6aca6df8ca9b81745",
          "body": "…s, titles, PR links",
          "is_bot": false,
          "headline": "feat(capture): parse-time capture of branch, LOC deltas, interruption…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T12:56:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f32c00d2b17bee2e0017ece8997cc2ef57c7d8f6",
          "body": "…t, file churn, coverage) + dash wire-up (#756)\n\n* feat(insights): workflow intelligence (corrections, time-to-first-edit, file churn, coverage) + dash wire-up\n\n* menubar: propagate workflow-intelligence fields onto the cache-backed headline\n\nThe carry-forward headline (#755) serves totals from the \n[…]\nated, so they silently defaulted on the all-provider\npath (pricingCoverage rendered a dishonest 1.0). Propagate them like the\nother scan-only fields and pin it with a carried-headline regression\ntest.",
          "is_bot": false,
          "headline": "feat(insights): workflow intelligence (corrections, time-to-first-edi…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T12:47:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e99ee4bf37ffbe1b0a3e8eada81bdf8dafe59ce1",
          "body": "Claude Code deletes session transcripts after cleanupPeriodDays (default\n30) at startup. Daily totals survive in the daily cache, but per-session\ndetail older than the cutoff is unrecoverable, and most users learn this\nonly after losing months of history. Doctor now reports the effective\nretention and, below one year, warns with the exact settings.json edit\nthat preserves transcripts.",
          "is_bot": false,
          "headline": "doctor: surface Claude Code transcript retention (#757)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T12:25:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "380be66b4fb7a19a57381fa3accb502966e74180",
          "body": "Re-apply the CLI/dashboard Lifetime split from #391/#416 on current main.\n\n- add lifetime as a first-class period (all stays last 6 months)\n- wire period through cli-date, dashboard key 6, and CLI commands\n- refresh cli-date and cli-json-daily regression coverage\n\nPart of #389. Supersedes #416.",
          "is_bot": false,
          "headline": "feat(cli): add lifetime period for CLI and dashboard (#753)",
          "author_name": "Monish Khandelwal",
          "author_login": "0monish",
          "committed_at": "2026-07-20T12:24:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44df54774845458019a23f45e1acfc6c90c8292d",
          "body": "…ones (#689)\n\n* test(electron): isolate dev-resolution fixtures via CODEBURN_DEV_REPO_ROOT\n\nRework of the #681 fix per review: instead of stubbing the real repo\ndist/cli.js with snapshot-restore, the Vite-dev resolution branch gains a\nCODEBURN_DEV_REPO_ROOT override (matching the CODEBURN_PATH_DIRS \n[…]\n whenever a build had\nrun, so the toBeNull() assertion depended on the absence of a gitignored\nartifact. The override-set tests already prove the new branch and the\nnon-Vite test covers the null path.",
          "is_bot": false,
          "headline": "test(electron): make dev-resolution tests self-sufficient on fresh cl…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-20T12:23:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bcef34f08174a4bc75db318ecf2d2f38e6b4b1f8",
          "body": "…tion, run-out ETA (#726) (#728)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
          "is_bot": false,
          "headline": "menubar: linear pace on Codex quota windows — deficit/reserve, projec…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-20T12:21:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8435073eef59e6f6d7d126483377cd921e17153",
          "body": "…d linear pace (#725 Part 1) (#740)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
          "is_bot": false,
          "headline": "quota: provider-agnostic window model with provenance, merge rule, an…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-20T12:21:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92b2b5ef392daba9d03e11dfbdaddd86eabe0c58",
          "body": "Reuse one concrete six-month scan for interactive history and selected-period totals. This restores network-backed providers, removes concurrent refresh scans, and keeps non-interactive reports scoped to their requested period.",
          "is_bot": false,
          "headline": "fix(dashboard): Bound Daily Activity scans (#727)",
          "author_name": "ihearttokyo",
          "author_login": "ihearttokyo",
          "committed_at": "2026-07-20T12:21:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f2739e130262ed1bba0c8f6d34c6ae127a2d0ab",
          "body": "…v14) (#755)\n\n* daily-cache: never lose history the sources can no longer re-derive (v14)\n\nSession files are ephemeral (Claude Code deletes transcripts after ~30\ndays), so a cached day whose sources are gone exists nowhere else. Every\ninvalidation path (schema bump, savings-config change, timezone c\n[…]\nuites 71/71 green, tsc clean. Valid-input behavior unchanged except the\nprototype-key reclassification above.\n\n---------\n\nCo-authored-by: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>",
          "is_bot": false,
          "headline": "daily-cache: never lose history the sources can no longer re-derive (…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T12:21:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2312fd2eb0f4231ed3735595c28dee11f5a1e883",
          "body": "fix(yield): case-insensitive canonical repo grouping via realpathSync.native",
          "is_bot": false,
          "headline": "Merge pull request #751 from ozymandiashh/pr/714-delta",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-20T00:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49b377616bfd8507157f1020360f36293f13ac04",
          "body": "feat(kimicode): Kimi Code CLI provider, parse ~/.kimi-code wire sessions",
          "is_bot": false,
          "headline": "Merge pull request #750 from ozymandiashh/pr/747-kimicode",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-19T23:27:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3472885629c41725b40c19c0780ecce148b067bf",
          "body": "perf(parser): single-pass field extraction in the large-line JSONL scanner",
          "is_bot": false,
          "headline": "Merge pull request #752 from getagentseal/perf/single-pass-scanner",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-19T08:24:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56ea38917f763cd12a0acb0a42a56f34bd36138c",
          "body": "…anner",
          "is_bot": false,
          "headline": "perf(parser): single-pass field extraction in the large-line JSONL sc…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-19T00:23:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c9871b2f2244a8b5d97a997af1688e4153df04e",
          "body": "….native\n\nFollow-up to #719, closing the two deltas flagged in the #714 discussion:\n\n- fs.realpathSync preserves the caller's path casing on case-insensitive\n  filesystems (macOS APFS, Windows), so the same repo reached through\n  differently cased paths produced distinct canonical keys and split int\n[…]\n accepted residual: a main repo moved on disk after\n  'git worktree add' leaves git's linked-worktree metadata stale, so its\n  worktrees may not unify; that is git-state staleness, not a grouping bug.",
          "is_bot": false,
          "headline": "fix(yield): case-insensitive canonical repo grouping via realpathSync…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-19T00:12:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "023259584731c6b8da787981ef9a83742d07501b",
          "body": "…double count",
          "is_bot": false,
          "headline": "docs(kimicode): subagent accounting verified at kimi-code source, no …",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-19T00:11:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b95aef7e56b6c4efb8c8b565038b02f0ff6fabc",
          "body": "…ons (#747)\n\nAdds a provider for Kimi Code CLI (MoonshotAI/kimi-code, the successor of\nkimi-cli), reading ~/.kimi-code/sessions/wd_*/session_*/: state.json for\nsession metadata and per-agent agents/<id>/wire.jsonl event streams.\n\n- Usage from usage.record events: inputOther->input, output->output,\n \n[…]\ns\n  so a failed turn cannot bleed its tools into the next row.\n- KIMI_CODE_HOME override, eager registration, PROVIDER_ENV_VARS and\n  PROVIDER_PARSE_VERSIONS entries, probeRoots for doctor, docs page.",
          "is_bot": false,
          "headline": "feat(kimicode): Kimi Code CLI provider, parse ~/.kimi-code wire sessi…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-18T23:52:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "916119da2197373edd2fdee86ca8fd69bbaee5cc",
          "body": "perf(parser): incremental parse of append-grown session files",
          "is_bot": false,
          "headline": "Merge pull request #749 from getagentseal/perf/incremental-append-parse",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T23:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8892553d3a464cdb64badf035d7990b389ce2201",
          "body": "perf(app): spawn concurrency cap, background prefetch, Today default",
          "is_bot": false,
          "headline": "Merge pull request #748 from getagentseal/fix/app-spawn-storm",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T23:36:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f26bf69f886baeb29bdb36d1c4e808852c90d6cf",
          "body": "…efault to today",
          "is_bot": false,
          "headline": "perf(app): cap CLI spawn concurrency, background-priority prefetch, d…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T23:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8326aee4a6225c8ac37753f81a1e2a8841359e1a",
          "body": "…tead of byte 0",
          "is_bot": false,
          "headline": "perf(parser): parse appended session files from the cached offset ins…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T23:26:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00b33b13d3a3c5ea05b84044bb3da3550ca4fdc",
          "body": "fix(telemetry): cap cli_error per kind per day, flush app_close on quit",
          "is_bot": false,
          "headline": "Merge pull request #746 from ozymandiashh/pr/741-robustness",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T21:32:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a8a1d0fa4bb4f10649a4600306b7a3852325491",
          "body": "fix(classifier): attribute skills to skillBreakdown regardless of turn category",
          "is_bot": false,
          "headline": "Merge pull request #745 from ozymandiashh/pr/741-skills",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T21:32:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db39157ea6cf51d703183e29d1a3befc4d02d5fd",
          "body": "Two robustness fixes from the #741 telemetry audit:\n\n- cli_error had no rate limit: one install emitted 804 timeout events in a\n  single day (56% of all events ever received). track() now caps cli_error\n  at 20 per kind per calendar day. The day and per-kind counts persist in\n  the telemetry state f\n[…]\na synchronous failure can neither\n  skip the flush nor wedge quitting, and a full queue evicts its oldest\n  event rather than dropping app_close. Disabled or not-onboarded telemetry\n  quits instantly.",
          "is_bot": false,
          "headline": "fix(telemetry): cap cli_error per kind per day, flush app_close on quit",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-18T20:06:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "906cb2d550165a229c556d2617caa8a76ce89eec",
          "body": "feat(quickdesk): Amazon Quick Desktop provider (~/.quickwork)",
          "is_bot": false,
          "headline": "Merge pull request #735 from ozymandiashh/feat/quickdesk-provider",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T19:57:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56e836fa9e9c28417fa7c7857e3f9533b7e52844",
          "body": "…n category\n\nSkill attribution was gated on the turn classifying as 'general', but\nclassifyByToolPattern checks hasSkill last, so any turn invoking the Skill\ntool alongside Read/Bash/Edit/MCP got a real category and its skill was\nsilently dropped. Skill turns virtually always carry other tools, whic\n[…]\ntegory is now set for any turn with Skill tool_use; category assignment\nis untouched. The claude parse version is bumped so cached session summaries\n(which lack skill attribution) re-parse on upgrade.",
          "is_bot": false,
          "headline": "fix(classifier): attribute skills to skillBreakdown regardless of tur…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-18T19:54:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1850276bd1e52c19e573951a580014f0be43aced",
          "body": "Per-provider usage capture, placeholder guard, path-id display fallback",
          "is_bot": false,
          "headline": "Merge pull request #742 from getagentseal/fix/usage-snapshot-providers",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T11:41:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b71ec34a21d98ee6bc2c6898087323ec8852a43a",
          "body": "… display fallback",
          "is_bot": false,
          "headline": "fix(usage): per-provider snapshot capture, placeholder guard, path-id…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-18T10:37:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d5f745b5b1ea56494b97eda8492717dfbe6e42b",
          "body": "docs: desktop release flow + Linux build targets",
          "is_bot": false,
          "headline": "Merge pull request #739 from getagentseal/docs/desktop-release-flow",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T22:09:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8db765fd107b15dede99165da463d864383d97d",
          "body": "RELEASING.md: the desktop app is released manually under desktop-v<version>\ntags (build on macOS, gh release upload --clobber); no CI yet.\n\nDISTRIBUTION.md: document building deb/rpm and both arches from a macOS host,\nand that the rpm target needs 'brew install rpm' (rpmbuild) — it emits\ncodeburn-desktop-<version>.x86_64.rpm, the name the website links.",
          "is_bot": false,
          "headline": "docs: desktop release flow + widened Linux build targets",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T22:00:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dafe19e8152ad5c7e9a173b1fd79fea5ae14d98a",
          "body": "fix: clean build stamp + splash without hash + About update check",
          "is_bot": false,
          "headline": "Merge pull request #738 from getagentseal/fix/stamp-and-update-button",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:30:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a76626d21b8260cdffc0f22f85ee3a90fca0c23",
          "body": "…dates\n\n- build stamp ignores the pricing-snapshot files the build regenerates,\n  so a release checkout no longer shows a false -dirty\n- splash shows just the flame, CodeBurn, and the version (dropped the\n  commit-hash line); the clean build id stays in About only\n- About 'Check for updates' uses the in-app checker and reports inline\n  ('You're on the latest' / 'Update available: X · Download') instead\n  of blindly opening the releases page\n\n392/392.",
          "is_bot": false,
          "headline": "fix(app): clean build stamp, splash without hash, About checks for up…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:30:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fdace7292dc6df91b34a88dace092edc9c31f6c",
          "body": "brand: restore binary 0101 flame across all surfaces",
          "is_bot": false,
          "headline": "Merge pull request #737 from getagentseal/brand/binary-restore",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:16:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69ab1fc96c459a604d8ca64fefa952368438ca07",
          "body": "feat: telemetry captures model x purpose, MCP servers, skills",
          "is_bot": false,
          "headline": "Merge pull request #736 from getagentseal/feat/telemetry-usage-detail",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:16:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6c475b6571b6f108221908af066f267a191b06b",
          "body": "… skills\n\nThe once-daily usage_snapshot now includes each top model's primary\ntask category (which model for what purpose, one cheap by-model call\nper day), plus MCP servers and skills used (names + coarse usage\nbuckets). Names + buckets only, no prompts/paths/dollars; graceful\ndegradation if the by-model fetch fails. /telemetry page updated.",
          "is_bot": false,
          "headline": "feat(app): usage telemetry captures model x purpose, MCP servers, and…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:15:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b8d8eb7b1c5521114b0c5fa6072d67d6172cd92",
          "body": "Per owner decision: the binary 'burning code' flame is the mark\neverywhere, matching the app's identity as a code-cost tool. Desktop\napp icon + FlameMark (splash/sidebar/About/dock), menubar dock icon,\nbrand logo, and local dashboard all use the binary flame.",
          "is_bot": false,
          "headline": "brand: restore binary 0101 flame across all surfaces",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T21:14:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdb1475251a19c79ae93cb1777b2f7274af11fbb",
          "body": "…ssions and metrics (#707)\n\nAdds an eager provider for Amazon Quick Desktop (aws.amazon.com/quick/desktop),\nwhich stores local data under ~/.quickwork. Usage source of truth is the\nper-day EMF metrics JSONL (Model, InputTokens, OutputTokens, CostUSD,\nsession_id); real CostUSD passes through the cach\n[…]\nUICKWORK_HOME; schema-tolerant (sqlite_master and PRAGMA introspection,\nper-line JSONL error isolation). The on-disk schema is reverse-engineered and\ndocumented as such in docs/providers/quickdesk.md.",
          "is_bot": false,
          "headline": "feat(quickdesk): Amazon Quick Desktop provider, parse ~/.quickwork se…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-17T21:02:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a01273b7a8801705293d7b2f5871cce2a9c950f",
          "body": "chore(app): desktop 0.9.17",
          "is_bot": false,
          "headline": "Merge pull request #734 from getagentseal/chore/desktop-0.9.17",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7946b4f369e79090fc30f41d1acd9022f5ec7742",
          "body": "Patch release: Windows bundled-CLI fix (was not-found on 100% of\nWindows), enriched cli_error telemetry, and the unified solid-flame\nbrand. CLI/menubar stay 0.9.16 (no changes needing an npm/menubar\nrepublish; the desktop bundles current main's CLI).",
          "is_bot": false,
          "headline": "chore(app): desktop 0.9.17",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:55:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75de4ef07cedabc0e5d6ef2fb0612262193280ce",
          "body": "…elemetry\n\nfix: resolve bundled CLI on Windows (100% not-found) + enrich cli_error telemetry",
          "is_bot": false,
          "headline": "Merge pull request #733 from getagentseal/fix/windows-cli-and-error-t…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "707d621d7ab147940c000901fafa7e9a24e4d322",
          "body": "path.startsWith('/') POSIX guard rejected the Windows bundled-CLI path\n(C:\\...\\launch.js), so 100% of Windows installs got not-found\n(confirmed in telemetry: 84 events, all win32/x64). Use path.isAbsolute\neverywhere. cli_error now carries {cmd, kind, detail?} for\nself-diagnosing errors, never paths/args/stderr.",
          "is_bot": false,
          "headline": "fix(app): resolve bundled CLI on Windows + enrich cli_error telemetry",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:51:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2ff8a72f69d53989c6e73dc3e17a0778e1987b4",
          "body": "brand: original solid flame across all surfaces",
          "is_bot": false,
          "headline": "Merge pull request #732 from getagentseal/brand/solid-flame-all",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:34:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "862206ea81f8e87df5ff463caabbec207923a15b",
          "body": "Retires the binary-digit flame (which muddied below ~256px) in favor\nof the original solid flame everywhere: desktop app icon + FlameMark\n(splash, sidebar, About, dock), menubar dock icon, brand logo. One\nconsistent mark that stays crisp at every size, matching the website\nfavicon and local dashboard.",
          "is_bot": false,
          "headline": "brand: original solid flame across all surfaces",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:33:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9df2b81deda838f1ad23145a143d2bbcf074461d",
          "body": "brand: solid flame for the local dashboard mark",
          "is_bot": false,
          "headline": "Merge pull request #731 from getagentseal/brand/dash-solid-flame",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:29:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8af30ea3235b45eea904962f6ade506760090e29",
          "body": "The dashboard header logo and favicon render at 24px where the binary\nflame muddies; use the solid flame like the site favicon. Menubar dock\nicon keeps the binary squircle (large-icon context).",
          "is_bot": false,
          "headline": "brand: local dashboard uses the solid flame mark (crisp at 24px)",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15cd9af1b8aae367239a7fbb1ad0faeb5a180ddf",
          "body": "brand: binary-flame logo for local dashboard + menubar icon",
          "is_bot": false,
          "headline": "Merge pull request #730 from getagentseal/brand/binary-flame-logos",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:11:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03f597a334aeac3480b6f98146f8921ae49d15e2",
          "body": "Local web dashboard favicon + header (dash/public/codeburn-logo.png)\nand the menubar dock/app-icon source (assets/menubar-logo.png,\nassets/logo.png) now use the binary-flame mark, matching the desktop\napp and website. The menu-bar status item stays monochrome-template by\nApple convention; the new dock icon lands on the next menubar release.",
          "is_bot": false,
          "headline": "brand: binary-flame logo for local dashboard and menubar app icon",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T20:10:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb513d3f68e5d24517685610d2db1f74aedef4d5",
          "body": "…#729)\n\nThe AppImage-only Linux build hit users with a no-application-installed\nerror on double-click, because AppImages do not self-register and need\nchmod plus libfuse2 on newer distros. Add deb and rpm electron-builder\ntargets so Linux users get a native install that lands in the app menu\nwith no\n[…]\n.\n\nREADME hero grid now lists Debian/.deb, Fedora/.rpm, and AppImage\nalongside the macOS and Windows buttons, and the desktop release notes\nexplain the deb/rpm path plus the AppImage FUSE requirement.",
          "is_bot": false,
          "headline": "desktop: ship .deb and .rpm for Linux, surface all download targets (…",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T19:53:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "688467e86fab84987f266f468da9ad67f5b16b88",
          "body": "… the Plan tab (#723) (#724)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
          "is_bot": false,
          "headline": "menubar: surface Codex limit-reset credits (count and next expiry) in…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-17T12:58:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca46845e2ba1bc1366773ea95c5cfbcfc5f812ee",
          "body": "Desktop: update-available notifications",
          "is_bot": false,
          "headline": "Merge pull request #722 from getagentseal/feat/update-check",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T11:58:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fc9e303b919c02c0694e437211bd9b1f7e078e3",
          "body": "Checks the GitHub releases for newer desktop-v tags once per launch\nand every 24h (15s timeout, no identifying headers, offline = silent\nretry). A dismissible banner and a Settings About row surface the\nnewer version and link the release page; dismissal persists per\nversion so each release nags at most once. No auto-install: unsigned\nbuilds cannot, by platform constraint; the checker only notifies.\n\nApp 364/364 (+24), typechecks + build green.",
          "is_bot": false,
          "headline": "feat(app): update-available notifications",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T11:58:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cbc96a5decd34dbcce285bddbee964d36dd4c2e",
          "body": "Bump the desktop app version and point the README download badges at the\ndesktop-v0.9.16 release assets.",
          "is_bot": false,
          "headline": "release: desktop 0.9.16 (#721)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T02:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c58a705b133f600810219381d2e8947e8d4bf968",
          "body": "Bump the version and refresh the bundled LiteLLM pricing snapshots.\n\nSince 0.9.15, roughly sixty merged changes: the /advisor escalation\nbilling and unified large-line scanners for Claude, Copilot CLI\nsession.shutdown billing and skill extraction, the CodeWhale provider,\nkiro v2 credit pricing, Open\n[…]\nREADME.\n\nEvery merged PR was re-verified against this exact tree before the bump:\nfull JS suite (3527 tests), Swift suite (97), release build smoked, and\neight area audits with live functional probes.",
          "is_bot": false,
          "headline": "release: 0.9.16 (#720)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T02:15:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b6bf233f4601dbeae046c5a468a9ac4ab8e2afa4",
          "body": "…614) (#631)\n\n* feat(optimize): mcp-deferral-gaps finding family\n\nAdd three read-only detectors for MCP tool-def deferral coverage gaps:\n\n- mcp-deferral-off: sessions carrying MCP tool-def overhead with zero\n  ToolSearch invocations and no deferred_tools_delta inventory across\n  the window. Cause at\n[…]\nhe detector's parseVersion/\nversionPredates are exported and shared instead of adding a parallel\ncomparator.\n\nRefs getagentseal/codeburn#614\n\n---------\n\nCo-authored-by: AgentSeal <hello@agentseal.org>",
          "is_bot": false,
          "headline": "feat(act): defer-* plan kinds for native deferral config (part 2 of #…",
          "author_name": "AVSR Pavan Kumar",
          "author_login": "AVSRPA1KR",
          "committed_at": "2026-07-17T02:01:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "261d113b77f3872b7dbc42cdba0932a7306b99cf",
          "body": "yield: group commit attribution by canonical repo root (fixes #713)",
          "is_bot": false,
          "headline": "Merge pull request #719 from getagentseal/fix/yield-repo-grouping",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:59:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b95cb95ce484e0be71d7d90879f7db3a90fd143e",
          "body": "Sessions launched from monorepo subdirectories or separate worktrees\nof one repository formed independent attribution groups, each awarding\nthe same commit (double-counted productive sessions; the duplicate\nowner was not even flagged ambiguous). Groups now key on the realpath\nof git-common-dir, so a\n[…]\nhile distinct repos stay separate; ambiguity semantics\nunchanged, now correctly spanning the whole repo. rev-parse results\ncached per directory.\n\nFixes #713. Regression tests fail on the unfixed code.",
          "is_bot": false,
          "headline": "fix(yield): group commit attribution by canonical repo, not launch path",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:58:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3625b5906594dafebb6a27de3093257b5e2e0053",
          "body": "docs: add Homebrew tap bump to the release checklist",
          "is_bot": false,
          "headline": "Merge pull request #718 from getagentseal/docs/brew-release-step",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:47:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03d559e1efe65988d3fdd266e5d9a2cbc7bee83e",
          "body": "The tap sat six versions behind (issue #716) because nothing in the\nrelease process mentioned it. Step 5b documents the tarball sha bump.",
          "is_bot": false,
          "headline": "docs: Homebrew tap bump joins the CLI release checklist",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:46:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ebd8a9efee479c808b598afd49fca0d55ea453c",
          "body": "Energy: zero hidden-window work + instant currency changes",
          "is_bot": false,
          "headline": "Merge pull request #717 from getagentseal/fix/energy",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:42:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4bbcaaba788ef13b8ac65bf1d5e644c391fd8ce",
          "body": "Energy (field report: ~3x Chrome drain):\n- polls skip entirely while the window is hidden/minimized, with one\n  catch-up refresh on return when data is stale; visible-but-unfocused\n  keeps polling (second-monitor case)\n- all looping animations pause under html.page-hidden (the sidebar\n  flame flicke\n[…]\n can never overwrite the applied currency\n- USD default verified end to end\n\nMeasured: hidden window = 0 new CLI spawns over 5 cadences (was: full\npolling forever). App 340/340, build + package green.",
          "is_bot": false,
          "headline": "fix(app): zero background work when hidden; currency applies instantly",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T01:41:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b597449bede6fe20abc1cd7cbcfda028b7176887",
          "body": "* docs(readme): four-surface hero grid with per-surface install shortcuts\n\nReplace the single TUI screenshot and the scattered optimize, compare and\nold menubar shots with one 2x2 grid under the badges: Desktop, Web,\nTerminal, and macOS Menubar, each with its one-line way in (direct\ndownload badges \n[…]\nas overstuffed for a table cell; Opus 4.6 in the signals\ntable aged into Opus 4.8; the License section ran MIT and the affiliation\nnote into one paragraph; two stray em dashes and a double blank line.",
          "is_bot": false,
          "headline": "docs(readme): four-surface hero grid with install shortcuts (#715)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-17T00:07:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a55251ce8f3f6859deccab4f85af9bbb349260a6",
          "body": "…t follow-ups (#712)\n\nFollow-ups to #710, completing issue #708's second ask plus the two review\nnotes:\n\n- export: new records.csv with one row per call incl. subagentType and\n  model; sessions.csv gains both fields APPENDED after all legacy columns\n  so by-index consumers are unaffected; JSON field\n[…]\no longer merges into the main bucket (test-pinned across all formats)\n- README: note that the --min-cost 0.01 default can hide sub-cent agent\n  buckets; --min-cost 0 shows the complete agent inventory",
          "is_bot": false,
          "headline": "feat(export): subagentType and model on per-record exports; --by-agen…",
          "author_name": "ozymandiashh",
          "author_login": "ozymandiashh",
          "committed_at": "2026-07-16T23:35:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6e66d34582e2e36a10fb4890c7358a596a0f30dc",
          "body": "Orchestrator setups pin different agents to different models (planner on\nOpus, implementers on Sonnet, scouts on Haiku). The dashboard shows\n\"Skills & Agents\" and \"By Model\" as separate panels, so there was no way\nto see which agent drove which model's spend, or catch an agent that\nsilently switched\n[…]\nboth errors politely.\n\nExposing subagentType + per-record model on `codeburn export` (so users\ncan build custom crosses over the export) is a separate follow-up and is\nintentionally out of scope here.",
          "is_bot": false,
          "headline": "feat(models): agent x model cross-breakdown (--by-agent) (#710)",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-16T22:43:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db289fab65105a50d18224b89628c2db55ceb7ea",
          "body": "Audit batch: prefetch storm, day-bucketing unification, warm-path efficiency",
          "is_bot": false,
          "headline": "Merge pull request #711 from getagentseal/fix/audit-batch",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-16T22:37:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae18b1fd915d0e2504194af1137936c6c54f51d1",
          "body": "…rm-path collapse\n\n- prefetch fires exactly once per provider per session; memo sized to\n  detected providers so base keys never evict (was: 12 full-history\n  parses every 30s forever from LRU thrash re-triggering the effect)\n- day-aggregator buckets whole turns by user-message timestamp,\n  matching\n[…]\nd)\n  instead of aborting; onboarding hints Full Disk Access\n- rateLimited quota copy render tests; export -f json emits valid\n  empty JSON when no data\n\nRoot 2023 (+4), app 327 (+3), typechecks clean.",
          "is_bot": false,
          "headline": "fix: audit batch — prefetch one-shot, turn-anchored day bucketing, wa…",
          "author_name": "iamtoruk",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-16T22:37:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71a8e8e2502d335dee63d5421af8d29d87130560",
          "body": "…tility QoS for tick spawns (#703) (#704)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
          "is_bot": false,
          "headline": "menubar: skip unchanged background refreshes, 120s AC idle cadence, u…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-16T22:11:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4689b5afa9947149d22fb5216d4f0e4c722c0957",
          "body": "…eshes (#702)\n\n* menubar: honor Retry-After on Claude quota 429s, back off failed refreshes (#701)\n\n* Fix operator precedence in claudeDue fallback\n\n---------\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
          "is_bot": false,
          "headline": "menubar: honor Retry-After on Claude quota 429s, back off failed refr…",
          "author_name": "Aditya Vikram Singh",
          "author_login": "avs-io",
          "committed_at": "2026-07-16T21:52:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "568476b02dea65c910975e9b6478cfd25897c9ba",
          "body": "fix: cold_start telemetry emits once per launch",
          "is_bot": false,
          "headline": "Merge pull request #706 from getagentseal/fix/telemetry-metrics",
          "author_name": "Resham Joshi",
          "author_login": "iamtoruk",
          "committed_at": "2026-07-16T21:27:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 48,
      "commits_last_year": 1118,
      "latest_release_at": "2026-07-20T17:22:34Z",
      "latest_release_tag": "mac-v0.9.19",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 15,
      "days_since_latest_release": 2,
      "mean_days_between_releases": 2.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "codeburn",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "claude-code",
            "cursor",
            "codex",
            "kimi",
            "devin",
            "ibm-bob",
            "opencode",
            "pi",
            "codebuff",
            "codewhale",
            "ai-coding",
            "token-usage",
            "cost-tracking",
            "observability",
            "developer-tools"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/codeburn",
          "is_deprecated": false,
          "latest_version": "0.9.19",
          "repository_url": "https://github.com/getagentseal/codeburn",
          "versions_count": 50,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 32310,
          "first_published_at": "2026-04-13T22:15:36.608000Z",
          "latest_published_at": "2026-07-20T16:36:51.984000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2
        }
      ]
    },
    "popularity": {
      "forks": 691,
      "stars": 8858,
      "watchers": 27,
      "fork_history": {
        "days": [
          {
            "date": "2026-04-13",
            "count": 2
          },
          {
            "date": "2026-04-14",
            "count": 63
          },
          {
            "date": "2026-04-15",
            "count": 57
          },
          {
            "date": "2026-04-16",
            "count": 26
          },
          {
            "date": "2026-04-17",
            "count": 18
          },
          {
            "date": "2026-04-18",
            "count": 14
          },
          {
            "date": "2026-04-19",
            "count": 21
          },
          {
            "date": "2026-04-20",
            "count": 13
          },
          {
            "date": "2026-04-21",
            "count": 22
          },
          {
            "date": "2026-04-22",
            "count": 14
          },
          {
            "date": "2026-04-23",
            "count": 3
          },
          {
            "date": "2026-04-24",
            "count": 8
          },
          {
            "date": "2026-04-25",
            "count": 26
          },
          {
            "date": "2026-04-26",
            "count": 22
          },
          {
            "date": "2026-04-27",
            "count": 6
          },
          {
            "date": "2026-04-28",
            "count": 13
          },
          {
            "date": "2026-04-29",
            "count": 7
          },
          {
            "date": "2026-04-30",
            "count": 9
          },
          {
            "date": "2026-05-01",
            "count": 7
          },
          {
            "date": "2026-05-02",
            "count": 13
          },
          {
            "date": "2026-05-03",
            "count": 15
          },
          {
            "date": "2026-05-04",
            "count": 15
          },
          {
            "date": "2026-05-05",
            "count": 6
          },
          {
            "date": "2026-05-06",
            "count": 15
          },
          {
            "date": "2026-05-07",
            "count": 20
          },
          {
            "date": "2026-05-08",
            "count": 7
          },
          {
            "date": "2026-05-09",
            "count": 5
          },
          {
            "date": "2026-05-10",
            "count": 5
          },
          {
            "date": "2026-05-11",
            "count": 6
          },
          {
            "date": "2026-05-12",
            "count": 5
          },
          {
            "date": "2026-05-13",
            "count": 4
          },
          {
            "date": "2026-05-14",
            "count": 4
          },
          {
            "date": "2026-05-15",
            "count": 8
          },
          {
            "date": "2026-05-16",
            "count": 10
          },
          {
            "date": "2026-05-17",
            "count": 2
          },
          {
            "date": "2026-05-18",
            "count": 5
          },
          {
            "date": "2026-05-19",
            "count": 5
          },
          {
            "date": "2026-05-20",
            "count": 5
          },
          {
            "date": "2026-05-21",
            "count": 3
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-23",
            "count": 2
          },
          {
            "date": "2026-05-24",
            "count": 5
          },
          {
            "date": "2026-05-25",
            "count": 5
          },
          {
            "date": "2026-05-26",
            "count": 5
          },
          {
            "date": "2026-05-27",
            "count": 4
          },
          {
            "date": "2026-05-28",
            "count": 2
          },
          {
            "date": "2026-05-29",
            "count": 3
          },
          {
            "date": "2026-05-30",
            "count": 3
          },
          {
            "date": "2026-05-31",
            "count": 3
          },
          {
            "date": "2026-06-01",
            "count": 4
          },
          {
            "date": "2026-06-02",
            "count": 4
          },
          {
            "date": "2026-06-03",
            "count": 9
          },
          {
            "date": "2026-06-04",
            "count": 6
          },
          {
            "date": "2026-06-05",
            "count": 6
          },
          {
            "date": "2026-06-06",
            "count": 4
          },
          {
            "date": "2026-06-08",
            "count": 5
          },
          {
            "date": "2026-06-09",
            "count": 2
          },
          {
            "date": "2026-06-10",
            "count": 5
          },
          {
            "date": "2026-06-11",
            "count": 5
          },
          {
            "date": "2026-06-12",
            "count": 5
          },
          {
            "date": "2026-06-13",
            "count": 10
          },
          {
            "date": "2026-06-14",
            "count": 4
          },
          {
            "date": "2026-06-15",
            "count": 2
          },
          {
            "date": "2026-06-16",
            "count": 6
          },
          {
            "date": "2026-06-17",
            "count": 2
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 3
          },
          {
            "date": "2026-06-20",
            "count": 5
          },
          {
            "date": "2026-06-22",
            "count": 2
          },
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-24",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 2
          },
          {
            "date": "2026-06-26",
            "count": 2
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 5
          },
          {
            "date": "2026-07-01",
            "count": 3
          },
          {
            "date": "2026-07-02",
            "count": 3
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 4
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 2
          },
          {
            "date": "2026-07-07",
            "count": 2
          },
          {
            "date": "2026-07-08",
            "count": 3
          },
          {
            "date": "2026-07-09",
            "count": 4
          },
          {
            "date": "2026-07-13",
            "count": 3
          },
          {
            "date": "2026-07-14",
            "count": 4
          },
          {
            "date": "2026-07-15",
            "count": 3
          },
          {
            "date": "2026-07-17",
            "count": 3
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 2
          },
          {
            "date": "2026-07-21",
            "count": 3
          }
        ],
        "complete": true,
        "collected": 690,
        "total_forks": 691
      },
      "star_history": null,
      "open_issues_and_prs": 25
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "app/tsconfig.json",
        "dash/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 167083,
      "source_files_sampled": 510,
      "oversized_source_files": 8,
      "agent_instruction_files": [
        "docs/providers/claude.md",
        "docs/providers/gemini.md"
      ],
      "agent_instruction_max_bytes": 3012
    },
    "dependencies": {
      "manifests": [
        "app/package.json",
        "dash/package.json",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@gsap/react",
          "manifest": "app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.2"
        },
        {
          "name": "gsap",
          "manifest": "app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.15.0"
        },
        {
          "name": "react",
          "manifest": "app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "react-dom",
          "manifest": "app/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "@tanstack/react-query",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.62.7"
        },
        {
          "name": "clsx",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "lucide-react",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.468.0"
        },
        {
          "name": "react",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.0"
        },
        {
          "name": "react-dom",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.0"
        },
        {
          "name": "recharts",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "dash/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.2"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "bonjour-service",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.1"
        },
        {
          "name": "chalk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.1"
        },
        {
          "name": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "ink",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.0"
        },
        {
          "name": "react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.5"
        },
        {
          "name": "selfsigned",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.5.0"
        },
        {
          "name": "strip-ansi",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.2.0"
        },
        {
          "name": "undici",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.27.2"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "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": 4,
        "merged_prs": 412,
        "open_issues": 21,
        "closed_ratio": 0.912,
        "closed_issues": 218,
        "closed_unmerged_prs": 132
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "iamtoruk",
          "commits": 887,
          "avatar_url": "https://avatars.githubusercontent.com/u/65915470?v=4"
        },
        {
          "type": "User",
          "login": "ozymandiashh",
          "commits": 62,
          "avatar_url": "https://avatars.githubusercontent.com/u/234437643?v=4"
        },
        {
          "type": "User",
          "login": "AgentSeal",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/265224789?v=4"
        },
        {
          "type": "User",
          "login": "lfl1337",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/80782621?v=4"
        },
        {
          "type": "User",
          "login": "spMohanty",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/1581312?v=4"
        },
        {
          "type": "User",
          "login": "avs-io",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/247195684?v=4"
        },
        {
          "type": "User",
          "login": "andklee",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/106256645?v=4"
        },
        {
          "type": "User",
          "login": "NihalJain",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/3429351?v=4"
        },
        {
          "type": "User",
          "login": "tmchow",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/517103?v=4"
        },
        {
          "type": "User",
          "login": "mallek",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/6627101?v=4"
        }
      ],
      "contributors_sampled": 61,
      "top_contributor_share": 0.796
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "block-claude-coauthor.yml",
        "ci.yml",
        "firstlook.yml",
        "release-menubar.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "28 out of 28 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": 1,
            "reason": "Found 3/29 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 14 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "23 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6e3c57a9ff95a624f1d9affa7384d32a67f359b7",
        "ran_at": "2026-07-23T04:22:04Z",
        "aggregate_score": 4.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-21T11:04:16Z",
      "oldest_open_prs": [
        {
          "number": 744,
          "created_at": "2026-07-18T12:45:21Z",
          "last_comment_at": "2026-07-20T16:22:55Z",
          "last_comment_author": "iamtoruk"
        },
        {
          "number": 783,
          "created_at": "2026-07-20T20:22:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 786,
          "created_at": "2026-07-20T20:26:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 794,
          "created_at": "2026-07-21T22:16:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-21T11:03:48Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 106,
          "created_at": "2026-04-19T15:04:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 213,
          "created_at": "2026-05-04T14:01:23Z",
          "last_comment_at": "2026-05-04T22:04:29Z",
          "last_comment_author": "iamtoruk"
        },
        {
          "number": 234,
          "created_at": "2026-05-05T20:43:18Z",
          "last_comment_at": "2026-05-24T01:57:36Z",
          "last_comment_author": "m13v"
        },
        {
          "number": 389,
          "created_at": "2026-05-24T11:30:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 411,
          "created_at": "2026-05-28T20:44:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 428,
          "created_at": "2026-06-02T08:17:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 479,
          "created_at": "2026-06-11T14:45:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 574,
          "created_at": "2026-06-29T10:21:48Z",
          "last_comment_at": "2026-06-30T13:11:31Z",
          "last_comment_author": "Joon"
        },
        {
          "number": 597,
          "created_at": "2026-07-02T09:39:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 611,
          "created_at": "2026-07-03T13:31:45Z",
          "last_comment_at": "2026-07-16T09:13:33Z",
          "last_comment_author": "iamtoruk"
        },
        {
          "number": 626,
          "created_at": "2026-07-07T00:15:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 645,
          "created_at": "2026-07-09T18:49:51Z",
          "last_comment_at": "2026-07-18T11:12:21Z",
          "last_comment_author": "avs-io"
        },
        {
          "number": 703,
          "created_at": "2026-07-16T20:28:28Z",
          "last_comment_at": "2026-07-18T11:12:42Z",
          "last_comment_author": "avs-io"
        },
        {
          "number": 725,
          "created_at": "2026-07-17T13:00:15Z",
          "last_comment_at": "2026-07-17T19:10:26Z",
          "last_comment_author": "avs-io"
        },
        {
          "number": 767,
          "created_at": "2026-07-20T15:29:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 768,
          "created_at": "2026-07-20T15:51:43Z",
          "last_comment_at": "2026-07-20T17:02:09Z",
          "last_comment_author": "AVSRPA1KR"
        },
        {
          "number": 769,
          "created_at": "2026-07-20T15:52:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 770,
          "created_at": "2026-07-20T15:57:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 771,
          "created_at": "2026-07-20T16:05:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 795,
          "created_at": "2026-07-22T10:19:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/getagentseal/codeburn",
    "host": "github.com",
    "name": "codeburn",
    "owner": "getagentseal"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 42,
        "vitality": 80,
        "community": 82,
        "governance": 62,
        "engineering": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 80,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "commits_last_year": 1118,
              "human_commit_share": 1,
              "days_since_last_push": 1,
              "active_weeks_last_year": 15
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "15/52 weeks with commits",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 15
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1118 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1118
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 48,
              "latest_release_tag": "mac-v0.9.19",
              "releases_from_tags": false,
              "days_since_latest_release": 2,
              "mean_days_between_releases": 2.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "48 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 48
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 82,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "forks": 691,
              "stars": 8858,
              "watchers": 27,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8,858 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8858
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "691 forks",
                "points": 23.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 691
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "27 watchers",
                "points": 7.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "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": 75,
            "inputs": {
              "packages": [
                "codeburn"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 32310
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "32,310 downloads/month across npm",
                "points": 60.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 32310,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 61,
              "top_contributor_share": 0.796
            },
            "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 80% of commits",
                "points": 4.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 80
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "61 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 61
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 14 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 412,
              "open_issues": 21,
              "closed_issues": 218,
              "issue_closed_ratio": 0.912,
              "closed_unmerged_prs": 132
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "91% of issues closed",
                "points": 42.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 91
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "412/544 decided PRs merged",
                "points": 29,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 412,
                      "decided": 544
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 3/29 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "followers": 77,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "getagentseal",
              "public_repos": 9,
              "account_age_days": 95
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "77 followers of getagentseal",
                "points": 13.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 77,
                      "login": "getagentseal"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "9 public repos, account ~0 yr old",
                "points": 7.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 9
                    }
                  },
                  {
                    "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": [
                "codeburn"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 2
            },
            "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 2 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "50 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "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": 81,
        "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": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "28 out of 28 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": 100,
            "inputs": {
              "topics": [
                "ai-coding",
                "claude-code",
                "cli",
                "codex",
                "cost-tracking",
                "developer-tools",
                "observability",
                "terminal-ui",
                "token-usage",
                "cursor-ide",
                "menubar",
                "web-dashboard"
              ],
              "has_wiki": true,
              "homepage": "https://codeburn.app/",
              "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://codeburn.app/",
                "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": "12 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 42,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.2
            },
            "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 is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "28 out of 28 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 3/29 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 14 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "23 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 61,
        "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": [
                "docs/providers/claude.md",
                "docs/providers/gemini.md"
              ],
              "agent_instruction_max_bytes": 3012
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "docs/providers/claude.md, docs/providers/gemini.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/providers/claude.md, docs/providers/gemini.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": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "app/tsconfig.json",
                "dash/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "app/tsconfig.json, dash/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "app/tsconfig.json, dash/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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "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": 99,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 167083,
              "source_files_sampled": 510,
              "oversized_source_files": 8
            },
            "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": "8/510 source files over 60KB",
                "points": 54.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 510,
                      "oversized": 8
                    }
                  }
                ],
                "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",
    "deps.dev does not index npm:codeburn@0.9.19; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T04:22:30.848128Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/getagentseal/codeburn.svg",
  "full_name": "getagentseal/codeburn",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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