Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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★ 8858 estrellas⑂ 691 forksdesde abr 2026Ver en GitHub ↗

getagentseal/codeburn tiene un índice de salud de 70 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Community & Adoption (82/100) y la más baja, Security (42/100). Se actualizó por última vez hace 1 día. Una sola persona concentra la mayor parte del trabajo reciente.

70
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

70
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

AgentsealOrganización
77 seguidores9 repositorios públicosdesde abr 2026

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmcodeburn0.9.1932.31050hace 2 díasclaude-codecursorcodexkimidevinibm-bobopencodepicodebuffcodewhaleai-codingtoken-usagecost-trackingobservabilitydeveloper-tools

Métricas por categoría

Vitalidad

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

80Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 1 días
10.4/36Cadencia de commits — 15/52 semanas con commits
18/18Volumen de commits — 1118 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year1118
human_commit_share1
days_since_last_push1
active_weeks_last_year15
Cómo se puntúa
27/27Publica versiones — 48 versiones publicadas
36/36Recencia de las versiones — última versión hace 2 días
27/27Cadencia de publicación — una versión cada ~2,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count48
latest_release_tagmac-v0.9.19
releases_from_tagsno
days_since_latest_release2
mean_days_between_releases2,1

Comunidad y Adopción

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

82Bueno · 18% del índice global
Cómo se puntúa
60/60Estrellas — 8858 estrellas
23.7/25Forks — 691 forks
7.9/15Observadores — 27 observadores
Datos de entrada utilizados
forks691
stars8858
watchers27
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
60.1/80Descargas mensuales — 32.310 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagescodeburn
dependents
ecosystemsnpm
total_downloads
monthly_downloads32.310
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

62Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
4.6/22.5Distribución de commits — el principal contribuyente firma el 80% de los commits
13.5/13.5Amplitud de contribuyentes — 61 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 14 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled61
top_contributor_share0,796
Cómo se puntúa
42.6/46.8Resolución de issues — 91% de issues cerradas
29/38.3Aceptación de PR — 412/544 PR decididos fusionados
1.5/15OpenSSF Scorecard: Code-Review — Found 3/29 approved changesets -- score normalized to 1
Datos de entrada utilizados
merged_prs412
open_issues21
closed_issues218
issue_closed_ratio0,912
closed_unmerged_prs132
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
13.6/25Alcance del propietario — 77 seguidores de getagentseal
7.8/25Trayectoria — 9 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers77
owner_typeOrganization
is_verified
owner_logingetagentseal
public_repos9
account_age_days95
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 2 días
20/20Historial de versiones — 50 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagescodeburn
ecosystemsnpm
any_deprecatedno
min_days_since_publish2

Calidad de Ingeniería

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

81Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 4 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://codeburn.app/
10/10Descripción del repositorio
10/10Topics — 12 topics
10/10Wiki
Datos de entrada utilizados
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

Seguridad

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

42En riesgo · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,2
Excluidos de la puntuación (sin datos o no aplicable): packaging. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

61Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — docs/providers/claude.md, docs/providers/gemini.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 100 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesdocs/providers/claude.md, docs/providers/gemini.md
agent_instruction_max_bytes3012
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — app/tsconfig.json, dash/tsconfig.json, tsconfig.json
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configsapp/tsconfig.json, dash/tsconfig.json, tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
54.1/55Tamaños de archivo manejables — 8/510 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes167.083
source_files_sampled510
oversized_source_files8
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

8858estrellas de GitHub
61contribuidores
1118commits en los últimos 12 meses
1días desde el último push
48versiones publicadas
1factor bus
21issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

Historial de estrellas y forks 0 ★ / 691 ⇿
0Estrellas
691Forks
48Versiones

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

0125250375500625750690632026-042026-062026-07
Mayor 0Menor 1Parche 14
OpenSSF Scorecard 4.2 / 10
4.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-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
n/dPackagingpackaging 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
Dependencias directas 21
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

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