Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-26 08:44 UTC

YugantM / hvtracker

AI Agent Trust Registry — independent, evidence-based trust scores for 300+ open-source AI agents. Runtime-trust calibrated (MCP, dependencies, provenance drift), with side-by-side comparison and embeddable live badges. Ranked by verifiable signals, not hype.

HTMLMIT★ 5 estrellas⑂ 1 forkdesde may 2026Ver en GitHub ↗

YugantM/hvtracker tiene un índice de salud de 57 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (84/100) y la más baja, Community & Adoption (29/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

57
global / 100
Moderado

Í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.

57
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

Yugant M. HadiyalCuenta personal
45 seguidores69 repositorios públicosdesde abr 2017Fraunhofer IOF

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Métricas por categoría

Vitalidad

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

77Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
7.6/36Cadencia de commits — 11/52 semanas con commits
18/18Volumen de commits — 489 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year489
human_commit_share0,99
days_since_last_push0
active_weeks_last_year11
Cómo se puntúa
27/27Publica versiones — 4 versiones publicadas
36/36Recencia de las versiones — última versión hace 24 días
27/27Cadencia de publicación — una versión cada ~12,1 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count4
latest_release_tagv3.1.0
releases_from_tagsno
days_since_latest_release24
mean_days_between_releases12,1
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

29Crítico · 18% del índice global
Cómo se puntúa
9.8/60Estrellas — 5 estrellas
0/25Forks — 1 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks1
stars5
watchers0
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)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

50Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.2/22.5Distribución de commits — el principal contribuyente firma el 99% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,993
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
36.1/38.3Aceptación de PR — 164/174 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs164
open_issues0
closed_issues17
issue_closed_ratio1
closed_unmerged_prs10
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
12/25Alcance del propietario — 45 seguidores de YugantM
25/25Trayectoria — 69 repos públicos, cuenta de ~9 años
Datos de entrada utilizados
followers45
owner_typeUser
is_verified
owner_loginYugantM
public_repos69
account_age_days3387
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.

Calidad de Ingeniería

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

84Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — ruff.toml
0/9.6Hooks de pre-commit
0/6.4.editorconfig
16/20OpenSSF Scorecard: CI-Tests — 25 out of 30 merged PRs checked by a CI test -- score normalized to 8
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://hvtracker.net
10/10Descripción del repositorio
10/10Topics — 11 topics
0/10Wiki
Datos de entrada utilizados
topicsa2a, ai-agents, ai-safety, leaderboard, mcp, open-source, ossf-scorecard, provenance, security, supply-chain, trust
has_wikino
homepagehttps://hvtracker.net
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?

36En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
2/2.5CI-Tests — 25 out of 30 merged PRs checked by a CI test -- score normalized to 8
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 16 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,6
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, packaging, signed_releases. 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.

66Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
15/15Documentación legible por máquinas (llms.txt) — llms.txt presente
40/40Historial de commits legible — 97 de 99 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txt
legible_history_share0,98
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes42.601
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — ruff.toml
0/11Verificación estática de tipos
10/10Entorno reproducible — Dockerfile
10/10Práctica demostrada con agentes — 96 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 1 de los últimos 100 commits son actualizaciones automáticas de dependencias
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,96
toolchain_manifests
dependency_bot_commit_share0,01
Cómo se puntúa
0/45Código verificable por tipos — HTML sin configuración de verificación de tipos
52.2/55Tamaños de archivo manejables — 3/58 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageHTML
largest_source_bytes349.335
source_files_sampled58
oversized_source_files3
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

5estrellas de GitHub
2contribuidores
489commits en los últimos 12 meses
0días desde el último push
4versiones publicadas
1factor bus
0issues abiertas
PyPIecosistemas 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

Más detalle

OpenSSF Scorecard 3.6 / 10
3.6agregado

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-26 08:44 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
8CI-Tests25 out of 30 merged PRs checked by a CI test -- score normalized to 8
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities16 existing vulnerabilities detected
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": [
        "a2a",
        "ai-agents",
        "ai-safety",
        "leaderboard",
        "mcp",
        "open-source",
        "ossf-scorecard",
        "provenance",
        "security",
        "supply-chain",
        "trust"
      ],
      "is_fork": false,
      "size_kb": 133209,
      "has_wiki": false,
      "homepage": "https://hvtracker.net",
      "languages": {
        "CSS": 20242,
        "HTML": 17607326,
        "Jinja": 290814,
        "Shell": 8094,
        "Python": 900188,
        "Dockerfile": 3793,
        "JavaScript": 41587
      },
      "pushed_at": "2026-07-26T08:12:23Z",
      "created_at": "2026-05-23T01:26:41Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T17:06:51Z",
      "description": "AI Agent Trust Registry — independent, evidence-based trust scores for 300+ open-source AI agents. Runtime-trust calibrated (MCP, dependencies, provenance drift), with side-by-side comparison and embeddable live badges. Ranked by verifiable signals, not hype.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "HTML",
      "significant_languages": [
        "HTML"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Yugant M. Hadiyal",
      "type": "User",
      "login": "YugantM",
      "company": "Fraunhofer IOF",
      "location": "Jena",
      "followers": 45,
      "avatar_url": "https://avatars.githubusercontent.com/u/27622259?v=4",
      "created_at": "2017-04-16T11:35:11Z",
      "is_verified": null,
      "public_repos": 69,
      "account_age_days": 3387
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2026-07-01T18:29:58Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-06-03T22:44:42Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2026-05-31T18:19:21Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-05-26T13:18:25Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "dd0e4bf8ea94b5c9276861ce9b077442ce2232c5",
          "body": "… items (#200)",
          "is_bot": false,
          "headline": "AGENTS.md: record 2026-07-23 #198/#199 UI deploy + close orphan/About…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-23T17:06:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cd051db670960ca85f81936d384c2676cc24875",
          "body": "…ks, a11y tables (#199)\n\n- Skip-to-main link + aria-current page indicator in shared site header\n- Blog snapshot/quarterly posts get full site chrome (header, footer, GA guard)\n- GA localhost guard + analytics.js on all remaining guard-less pages\n- Branded correct/submit pages replacing unstyled for\n[…]\ne pairs (distinct from evidence grade)\n- Empty states on movers gains/drops; org GitHub links use slug not display name\n- Watch/compare toggles 26px with expanded ::after hit area (mobile tap targets)",
          "is_bot": false,
          "headline": "UI/UX batch 2: skip link, aria-current nav, blog chrome, internal lin…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-23T16:53:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4c9d3a2b9db5ce66ca0401cd7cbee4930b6ee0fb",
          "body": "- category pages: grade letters visible again (color-on-color override removed)\n- leaderboard: fix Last Push sort (parseFloat truncated ISO dates to year)\n- agent hero grid: auto-fit columns (5th cell no longer orphaned)\n- methodology/roadmap/blog-comparison: remove stale pre-v4 copy and score denom\n[…]\n; Submit Agent unified to /submit/\n- filter empty-state row with clear button; clear-tracked confirmation; cat-view medal suppression\n- app.py header: add missing Trends/Capabilities/Corrections links",
          "is_bot": false,
          "headline": "UI/UX fix batch: P0 bugs, a11y, contrast tokens, retention (#198)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-23T16:51:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad761a322fb81cca4a20c95b820ce42da5c527dc",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-19 #193 deploy + live verification (#194)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-19T14:14:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6cf4db72997e20827036ebf40654b6ffde3e2276",
          "body": "…lash hygiene (#193)\n\n* Stop GSC crawl waste: login next-nesting, compare-fallback noindex, slash hygiene\n\nThe 2026-07-18 GSC coverage drilldowns (1,307 URLs across 5 buckets) traced\nto two self-inflicted infinite URL spaces plus trailing-slash inconsistency:\n\n- auth.js re-wrapped the current URL's \n[…]\nthropic.com>\n\n* CLAUDE.md: record the 2026-07-18 GSC crawl-waste fixes (#193)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Stop GSC crawl waste: login next-nesting, compare-fallback noindex, s…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-18T19:40:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7427e0d004ce3ef9ecd7d6df713e56838440a0e9",
          "body": "…dent (#192)\n\nGSC's 'Blocked by robots.txt' (33) and 'Server error (5xx)' (32) buckets\nare entirely /auth/github/login?next=... junk URLs with recursive next=\nparams; /track/ click redirects inflate the redirect bucket. Block both\ndeliberately. CLAUDE.md records the 2026-07-18 Cloudflare AI Crawl Control\nincident (managed robots injection + edge 403s, both owner-disabled and\nverified) and the restarted GSC validations.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "robots.txt: disallow /auth/ and /track/; log Cloudflare AI-block inci…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-18T18:53:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "658b7c3f0781f06c8c862e4a8cba4e736b53e13d",
          "body": "…sure (#191)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-16 provider-detection deploy + #186 clo…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-17T04:08:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed9d31034a2d4016f42b38a4b71ed9ed1cda5574",
          "body": "…try, scoped-marker fix (#190)\n\nOwner-requested full-coverage pass before deploying the #186 fix.\n\n- _manifest_has_dep_marker: markers with @ or / (scoped npm packages)\n  could never match — the tokenizer splits on both — so \"@google/genai\"\n  was dead; they now substring-match. A leading \"=\" require\n[…]\nade flips, 11 agents move >10 ranks (max 23), bystanders\nshift ≤7. Every spot-checked addition traces to a named dependency in a\nnamed manifest.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expand provider detection: 12 new rules, router labels, harness symme…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-16T20:48:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba03b0afc9fcfc58f144d7fec03f7e836146932d",
          "body": "…) (#189)\n\nClaude Code-native agents run inside the harness and never import the\nanthropic SDK, so the post-#98 dep/env-marker detector could never see\nthem — AIPass's 2026-07-04 \"Provider Removed: Anthropic\" event was our\nown #98 deploy, not a change in their repo (11 agents lost Anthropic\nthat day\n[…]\nts gain Anthropic (aipass 82.0→81.5,\nrank 50→51), max rank move +7, one boundary grade flip (context7\n65.0→64.5 B→C), bystanders shift ≤2 ranks.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Detect Claude Code harness wiring as Anthropic runtime evidence (#186…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-16T20:27:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eb61890517e53b3f28cf64e16a0fea7caa4aac06",
          "body": "…(#188)\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the Grok Build listing + OG denominator fix deploy …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-15T22:31:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ba19ed844e32345a1ae909b3b083c23af03ad8d",
          "body": "…nator (#187)\n\n- agents.json: Grok Build under Coding Agents (catalog 440 -> 441).\n  First-party xAI coding agent (Rust TUI, Apache-2.0) — own agent\n  runtime, NOT the denylisted supervisory-harness class from #180.\n- scorecard-cache.json: image-seed of the fresh OSSF scan (3.4/10);\n  same entry alr\n[…]\ns) at the call site.\n\nLocal full-pipeline verification: 45.9/100, Grade D, rank #217/372,\ncoverage grade B, OG card renders 'Rank #217 of 372'.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster: list Grok Build (xai-org/grok-build); fix OG-card rank denomi…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-15T22:21:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0480e7261889b3bfcb86274ee47824af3acf84fe",
          "body": "Maintainer listing request (issue #77, cacheplane/dawnai) — the agent was\nalready listed (prior roster batch) but without a package field. Adds the\nnpm_package the maintainer supplied; verified it points back at the repo\n(registry.repository = git+https://github.com/cacheplane/dawnai.git) and\nreturn\n[…]\ne\nthe live /agents/dawnai/ slug (slugify(name)); no rank/scoring policy change.\n\nGates green: pytest, --render-only, validate_html; ruff clean.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "DawnAI: attach verified npm package @dawn-ai/cli (#181)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-15T08:00:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c99ef97cc502e85c9474ff6b50fdc7c7047ee68",
          "body": "Fresh discovery sweep (790 repos, 615 novel, 565 past automated pre-checks)\ntriaged against docs/strict-inclusion-rubric.md down to 46 listings.\nCatalog 394 -> 440 (417 active + 23 legacy).\n\n  16 MCP Servers  · 12 Protocols & Tool Integration · 5 Sandboxes & Runtimes\n   3 Agent Frameworks · 3 Coding\n[…]\nue scans them first (full coverage <=24h).\n\nGates green: pytest, --render-only (board_invariant_violations: []), and\nvalidate_html; ruff clean.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster: list 46 agents/MCP servers; denylist the harness class (#180)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-14T23:16:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "709f0954f20dc836643ade52c1d509fac4841d65",
          "body": "…179)\n\nA maintainer (apify/apify-mcp-server#1086) read \"Transparency — License and\npublic checks\" at 12.2 and asked why an open-source repo loses transparency\npoints. The pillar is half OSSF Scorecard, but we published that nowhere: the\nmethodology listed the pillar weights, never the split inside a\n[…]\n exactly on the published max\n  for all five pillars, and they must sum to 100.\n\nNo scoring change — trust_score, rank and grade are untouched.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Show what each HVTrust pillar is made of; fix compare identity max (#…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-14T16:06:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1808dfb9b2133cd1464a72e1513f6c092ed77c56",
          "body": "…(#178)\n\nExpands the hosted /mcp surface 4 -> 8 tools, all free and backed by\nexisting cheap in-memory/registry paths (no new data source, no GitHub\nopen-lookup, no always-on process):\n\n- scan_stack: bulk pre-connect verdict for a whole requirements.txt /\n  package.json / mcp config (reuses the /api\n[…]\nlling\ncode ships (visa/legal hold). Cost-safety: all new tools ride the existing\n60/min/IP limiter + MCP_ENABLED kill switch + $6 Railway alert.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "MCP: add 4 free tools (scan_stack, leaderboard, categories, history) …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-13T18:23:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "08a0fdf25a64127837b1bec25a549bcff76a5d8c",
          "body": "The Tier-1 misses from the 2026-07-13 roster review: omo, BettaFish,\nAgent Browser, GraphRAG, Crush, OpenCLI, FastMCP, Beads, Suna,\nVibe-Trading, Agent Zero, Rowboat, Memvid, SurfSense, MemOS, Magentic-UI,\nClaude Agent SDK, OpenLLMetry, Julep, Cloudflare Agents, OpenAI Agents\nSDK (JS), Potpie, Deeps\n[…]\nig\nrepos) and are deliberately left UNMARKED so CI's stalest-first scorecard\nqueue scans them first (next cron ~01:00 UTC, full coverage <=24h).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster: list 23 agents across existing categories (#177)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-13T08:36:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "044070c68e3fbfdfa73d010cb1cc1417902c5c82",
          "body": "~10 rows legitimately sit at 0 commits with a recent push (default-branch-\nquiet repos, re-verified each boot by design since #160), which keeps\n_has_missing_commit_rows() true on nearly every boot. With repair-commits\nfirst in the elif chain, the pending branch was unreachable — freshly added\nagent\n[…]\ns commit counts for its\nrows anyway, and repair runs on the following boot. Regression test locks the\nmode choice (fails on the previous order).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Startup: pending-signals refresh outranks commit repair (#176)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-13T00:14:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4c7dd40320c6a7a1e5dc97d9bb7c52cc8a093a98",
          "body": "- agents.json: +20 canonical MCP servers (Playwright MCP, AWS MCP Servers,\n  Cloudflare/Supabase/Stripe/Notion/Grafana/Terraform/Browserbase/Firecrawl/\n  Qdrant/Atlassian/Apify/Kubernetes/Sentry/Elasticsearch/Perplexity/MindsHub/\n  AntV Chart/Blender), catalog 351 -> 371. npm/pypi package fields set\n[…]\n 20\n  (also overlaid onto the data branch @57ef892f2, freshest-wins).\n\nAll three gates green (pytest, --render-only, validate_html); ruff clean.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster: list 20 MCP servers under new 'MCP Servers' category (#175)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-12T23:34:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35e4c83b9f34e7d311ce003ca2dc85464a614dce",
          "body": "READMEs embed badges through GitHub's camo proxy — camo caches the SVG\nand strips referrers, and SVGs can't run analytics, so GA is\nstructurally blind to badge reach (each origin fetch here represents\nmany actual README views). The owner's only current visibility is\ngrepping Railway logs.\n\nSame patt\n[…]\nd file-serving branch. healthz gains badge_fetches\n{since, total, top-20 by slug}, which also shows which adopter repos\nactually drive exposure.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Count badge SVG fetches per agent slug; expose in healthz (#174)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-12T18:52:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8f1053d3444b949d1371f7b1509c8a781ad7d62c",
          "body": "…(#173)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-12 MCP load review + stdio v0.2.1 ship …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-12T18:30:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c0c1226074f6f5baed39680d11f18d2b678ad5a",
          "body": "The #169 scan_failed_at markers landed in the data-branch cache on\n2026-07-11; the first 2h batch refresh to meet one (batch 4/6,\n2026-07-12 18:00 UTC) crashed with KeyError: 'score' — the stale-cache\nfallback (elif cached: cached[\"score\"]) assumed every entry carries a\nscore, but marker-only entrie\n[…]\n marker-only entries behave exactly like an absent entry, and\nentries carrying old data + a failure marker keep serving the old\nscore as before.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Treat marker-only scorecard cache entries as misses, not hits (#172)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-12T18:29:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d81b2e0d4b9e4ff9af2b23d254bc060daaab8add",
          "body": "… (#171)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-11 scorecard-scan hardening (#167-#170)…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T12:37:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cb4e6d7b73adbf7cc3179e7d459c29c591a93c13",
          "body": "… (#170)\n\nRun 29151228066 validated #169's logic (the breaker correctly skipped\npast four repo-specific timeouts on healthy quota) but the runner was\nkilled AGAIN at minute 23 — still inside the sicko stall zone, before\nthe first success — so the demotion markers died with the runner and\nthe merge j\n[…]\nnsupported.\n- Merge step exits cleanly when a killed scan uploaded no artifact\n  (glob guard); the scan failure already routes to the alert job.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scorecard scan: shrink stall kill-window, cap CLI memory, guard merge…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T12:07:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a3121d032ed343ba827e04ec4fbf5f990cf0118",
          "body": "… (#169)\n\nThe pinned shard-3 verification run (29150539525) failed on FRESH\nquota and exposed the last deadlock: four repos that never succeed\n(activepieces — OSV backend error; BrowserGym/traceroot/mlflow —\nconsistent 300s timeouts even with plentiful quota) sat permanently at\nthe front of the stal\n[…]\nr failers get\nmarkers and the shard proceeds to its ~51 healthy repos. Mock-binary\nverified: demotion ordering, marker preservation, exit floor.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scorecard scan: demote failing repos; breaker asks the rate-limit API…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T11:35:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5ec3285d9b963cfa6ed01b7cd1eea0323603e423",
          "body": "The #167 hardening improved the merge (215/328 repos got fresh scans\non 2026-07-11) but shard 3 still failed in both runs since: the CLI\nburns a few thousand API calls per ~55-repo shard, so even SERIAL\nshards drain the PAT's 5k/hr quota after about two shards — the next\nshard starts starved, stalls\n[…]\ntead of six).\nMAX_CONSECUTIVE_TIMEOUTS 5->3 — the observed kills came during the\n4th-5th consecutive stall, so bail before the reclaim exposure.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scorecard scan: one shard per run, six quota windows a day (#168)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T11:10:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19ebc310db08793ec41ed86a6dd2dbf18bfd2b50",
          "body": "…(#167)\n\nThree of the last four scan runs failed. Root cause chain (from the\n2026-07-10 run logs): parallel shards share the PAT's 5k/hr quota →\nquota starvation turns each repo into a full 300s timeout → the stalls\nburn wall clock until the hosted runner is reclaimed (~40 min, exit\n143) → the shard\n[…]\nock scorecard binary: ordering, kill -9 mid-run\n(cache retains completed repos), budget stop, 5-timeout abort,\n0-success exit code. Gates green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scorecard scan: incremental writes, stalest-first queue, time budget …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T01:11:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0466dc250538a76b2b5c9f4cd5394bc407c0d853",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-11 retention/SEO batch (#163-#165) (#166)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T00:51:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "04dcb5c4065fdb8e4dcdeea3e5b7c5afab51d9c3",
          "body": "GSC: comparison queries collect impressions but almost no clicks\n(litellm vs vllm: 142 impressions at position ~9, zero clicks) while\nevery pair shared one generic template description. The snippet now\nnames both agents with their scores and grades plus what's actually\ncompared (provenance, Scorecar\n[…]\n, downloads).\nTitles untouched (the #114 GSC-churn lesson); the page body already\ncontains these numbers, so sitemap lastmod churn is unchanged.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Compare pages: data-rich meta descriptions (#165)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T00:47:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eaf0516d2711e10466ca8f52df12d83d9b1f1f1d",
          "body": "…p (#164)\n\nGSC: \"is <agent> safe\" is the query pattern that actually earns clicks\n(742 impressions, best CTRs), with agent pages sitting at positions\n8-10 — but the visible page never answered the question directly, and\nonly 17 of 23.7k impressions showed a review snippet.\n\n- Hero gains a .safety-ve\n[…]\n.\n- Titles and meta untouched.\n\nVerified: JSON-LD parses on rendered pages (review.rating present),\nverdict renders above the fold. Gates green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Agent pages: above-fold \"Is X safe?\" verdict + editorial Review marku…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T00:41:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c2421705ab81252d69870f8760ee9fe4ce0cf4f7",
          "body": "…163)\n\nGA (Jun 12–Jul 9): week-1 retention 1–3%, and the alerts-waitlist\npopup converted 554 views into 3 submits (377 dismissals) — it burned\ngoodwill without building a return loop. Meanwhile 64 watchlist adds\nshow real tracking intent with nothing pulling users back.\n\n- analytics.js: exit-intent \n[…]\nips render from a backdated snapshot, snapshot\nadvances after load, mobile stacks cleanly. Gates green (289 tests,\nrender, validate_html, ruff).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Homepage declutter + return-visit watch panel; remove alerts popup (#…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-11T00:33:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6705ae094a7363d0757faee92dc42c238b3acc81",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: record the 2026-07-10 platform-health pass (#157-#161) (#162)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T16:36:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1c7839f1e2052f3aca221832c23ee8f8ad9c6976",
          "body": "…#161)\n\nOnly batch mode carried legacy_rows forward from the prior render;\npending-only and repair-commits set legacy_agents=[] and wrote a render\nwith zero legacy rows. Any startup that fired one of those modes (e.g.\nthe deploy at 2026-07-10 16:16 UTC, whose repair-commits pass left\nbuild_report le\n[…]\npair-commits run\nagainst a render_state with no legacy rows: \"restored 23 missing legacy\nrow(s)\", build_report legacy=23, retired.json 23 slugs.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Carry forward + restore legacy rows in pending/repair refresh modes (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T16:32:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "633f7cc8b09998346474a40439d66960cc3d6d96",
          "body": "Rows written before the None-seed fix (#158) have weekly_commits=0 baked\nin, and the GraphQL signals prefetch can miss a repo indefinitely — the\nrepair pass only looked for None, so those zeros never healed (the 4\nagents added in #153 all show 0 commits on prod despite active repos).\n\nA push inside \n[…]\nined to keep fetch_and_build out of\nthe web process) share the same predicate. Genuinely quiet repos\n(0 commits, no recent push) stay untouched.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Repair selector: treat 0 commits + recent push as suspect (#160)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T16:13:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eec17ded00996171ffc1c1835b6488ead9f991c1",
          "body": "…tion (#159)\n\nLegacy agents keep internal rows (no public pages) that feed\ndata/retired.json — the 410 responses — and stay refreshable via the\nsignals pass. But prod only runs signals/batch modes, which never\nre-fetch a legacy agent that has no row, so when the cache lost them\n(code-only transition\n[…]\necur.\n\nLocal verification: \"restored 23 missing legacy row(s)\",\nbuild_report legacy=23 failed=0 (was legacy=0 failed=23),\nretired.json 23 slugs.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Restore lost legacy rows provisionally; fix SuperAGI status contradic…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T16:03:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "642fd4d928ebdc9720e8b6191489b4f83a253316",
          "body": "…e (#158)\n\nprovisional_agent_row seeded weekly_commits: 0, but 0 is a legitimate\n\"counted, none found\" value — app._has_missing_commit_rows() only treats\nNone as missing. New agents therefore looked already-counted, the startup\nrepair-commits refresh never fired for them, and they showed 0 commits\ni\n[…]\nount.\n\nTests lock the seed value and that _has_missing_commit_rows catches a\nfreshly-provisioned row (and stays quiet once a real count exists).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Seed provisional weekly_commits as None so the repair refresh can fir…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T15:51:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5a359ad32e47ec2f71c0adb713099a7d8d4bc110",
          "body": "Shards were sized for ~228 repos (~57/shard, ~40min — the tested profile).\nThe roster grew to ~350, pushing shards to 82 repos; shard 4 got the\nhosted runner reclaimed mid-scan (exit 143) at repo ~52 on 3 of the last\n4 daily runs, so every repo after the kill point was never scanned —\nwhich is why n\n[…]\nng\nagents coasted on freshest-wins cached values. Six shards restores ~59\nrepos each; the merge job globs scorecard-shard-*, so no other change.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "scorecard-scan: reshard 4 -> 6 for the grown roster (#157)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T15:45:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "86321ea21bc095e25b4a2714956e9afd7e9e6b28",
          "body": "The first deploy (#154) shipped the <img src=\"...?v=20260709\"> before the\nserving route existed (#155), so /threadplane-logo.png?v=20260709 returned\n404 for a window. Browsers cache 404s against the exact URL, and the\nversion string never changed — so clients that loaded the homepage in that\nwindow \n[…]\nves the\nPNG correctly (verified: 200, valid 64x64 RGBA, byte-identical to repo).\n\nBumping to ?v=20260710b forces a fresh fetch for every client.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump the Threadplane logo cache-buster to clear stale 404s (#156)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T10:56:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "78ad93e78758e10c86fe15e1cd729c98ad3804d6",
          "body": "…w-up) (#155)\n\nThe adopter logos are served by explicit FileResponse routes reading\nBASE_DIR (the image), because the catch-all StaticFiles mount serves\nOUTPUT_DIR (the volume). Adding threadplane-logo.png to the Dockerfile\nCOPY put it in the image but not on the volume, so /threadplane-logo.png\n404\n[…]\ne missing route, plus a regression test covering all five adopter\nlogos — the same BASE_DIR-vs-OUTPUT_DIR trap that bit the trend badge\nin #143.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Serve the Threadplane logo via an explicit BASE_DIR route (#154 follo…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T10:48:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a915abb365901cbcfc3e2c4098f86c720f63df68",
          "body": "Threadplane (cacheplane/angular-agent-framework) embeds the HVTrust badge\nin its README, so it joins Haystack, AIPass, Composio and LightRAG in the\nhomepage adopters strip.\n\nUses the project's own brand mark (marketing/assets/brand/plane.png),\ndownscaled to 64x64 (7.4KB, transparent). Rendered with \n[…]\nme out short).\n\nthreadplane-logo.png added to the Dockerfile COPY allow-list; without it\nthe image 404s in prod even though it resolves locally.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Featured in READMEs: add Threadplane with its brand logo (#154)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-10T10:39:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fb678ef24ff2f16386dacc6062781bf89594eb4f",
          "body": "Adds the four P1 recommended agents from\ndocs/research/new-agent-candidates-2026-07-09 — all verified via GitHub API\n(canonical repo, OSS license, first-party agent loop confirmed against\nREADME) and re-checked for canonical resolution + no repo/name collision:\n\n  Intelligent-Internet/ii-agent  (II-\n[…]\ngrok-dev)\n\nCatalog 347->351. All four render provisional (score 0) until the next\nsignals refresh scores them; board-invariant violations empty.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster: add 4 verified agents (discovery 2026-07-09) (#153)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T18:21:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17afe3e0db1b8dc7d6da6a2cac2da6e8ebe0c639",
          "body": "…eared (#151)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: Phase 4 held (gate unmet); Dependabot #133 + flake #150 cl…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T15:53:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "64f19c586e7ea225c7dbd8e6cfcf31996e182f91",
          "body": "…150)\n\ntest_sitemap_lastmod_stable_when_content_unchanged renders the site three\ntimes and asserts no page's sitemap <lastmod> re-stamps without a content\nchange. Renders now take minutes each (the site grew a lot through Phases\n1-3), so wall-clock time advanced between them and any page carrying a\n\n[…]\nso relative-time content is byte-identical between renders. Test-only\nchange; no production behavior touched. Verified: the file's 7 tests pass.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Freeze the clock in the sitemap-lastmod stability test (flake fix) (#…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T15:52:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ecb98ac31d6b70f4f64da3fc06543e117eafa1f",
          "body": "Bumps the minor-and-patch group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.139.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.49.0` | `0.51.0` |\n| [boto3](https://github.com/boto/boto3) | \n[…]\nion-update:semver-patch\n  dependency-group: minor-and-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump the minor-and-patch group across 1 directory with 8 updates (#133)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-09T15:46:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbcd09e03ebd0c856b60158182ecc93eb522ee5d",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: Phase 3 deployed + verified live (2026-07-09) (#149)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T15:09:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78352d1143bb35614384d3a79ec90d6631294efc",
          "body": "…y pending (#148)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 3 complete (code) — #145-#147, local-only, deplo…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T10:30:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e21f295f50deeb76de2816f34763ed299484b4fc",
          "body": "GET /api/v1/agents/<slug>/history returns one entry per daily snapshot\nover a hard 90-day window (_HISTORY_PUBLIC_DAYS), oldest first, restricted\nto a public-field whitelist (_HISTORY_PUBLIC_FIELDS) — rank, trust_score,\nboth grades, confidence, provenance, scorecard, signed-commits, stars,\ndownloads\n[…]\nor unknown slug; counted in machine_usage.api_v1.\nDocumented on /data-api/.\n\nTests: window cap, field whitelist, date ordering, CORS/cache, 404.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Public 90-day per-agent history API (plan 3.3) (#147)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T10:29:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "99442e8cbcecf7a7d13ce23caa0cace896f8b014",
          "body": "…an 3.2) (#146)\n\nSurfaces the history dataset as product:\n- /trends/ renders 5 era-annotated SVG line charts from the daily\n  snapshots (compute_ecosystem_trends + render_trend_chart_svg): roster,\n  MCP implemented, grade distribution, provider dependencies, staleness.\n  Score-derived series (grades\n[…]\npy (9 — series/eras, era-break, gap handling,\nfact-check figure tracing, signal-capture baselines, coverage minimum,\ncurrent-quarter exclusion).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "/trends/ ecosystem charts + quarterly State of Agent Trust report (pl…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T10:17:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c566028da4b74c83d1c7bcec332e88fd1a2e9b7",
          "body": "…) (#145)\n\nderive_agent_events now emits capability-surface drift from the snapshot\nfields locked by #89: mcp_status_changed, provider_added/provider_removed\n(surface grew/shrank, provider names listed), tool_surface_changed.\nWording says \"detected\" throughout — these track our public-evidence\ndetec\n[…]\nsurface section;\n287 agent pages render it from the local 35-day history. Events reach\nwatchers through the existing recent_events -> bell path.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Runtime-drift monitoring: capability-surface timeline (T3.5, plan 3.1…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-09T08:13:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4407d962204327cba8dd63b31a027df815d7f2d9",
          "body": "…#144)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: trend badge live (#141+#143); Railway blip self-resolved (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T22:22:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a56b5a23c8a2cdb61be538fe2ea285c8cbef7f5",
          "body": "…w-up) (#143)\n\nThe -trend branch read BASE_DIR/badge/ — the immutable code dir — while\ngenerate_badges() writes to the render output root (OUTPUT_DIR, the prod\nvolume). Origin therefore kept 404ing after #141 deployed. The original\nregression test passed falsely because BASE_DIR falls back to the repo\nroot locally, which contained locally-rendered badges; it now asserts the\nserved bytes equal the file the render wrote under OUTPUT_DIR.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Trend badge route: read from OUTPUT_DIR, not the code dir (#141 follo…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T22:20:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "17b6e92135c81e0173d2bcd01fe9dbb20c7a9ff3",
          "body": "…1 blocked by Railway CREATE_CONTAINER failures (#142)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: Phase 2 deploy state — live @71018954; trend-badge fix #14…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T21:32:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6aa7522af1112723a7e1f72c7c2a8384468a4489",
          "body": "…) (#141)\n\nBadges are served dynamically by badge_by_slug, which only knew the\n-grade suffix — /badge/<slug>-trend.svg (shipped in #137 and advertised\non the badges page) 404'd in prod. Trend badges need history (the\nera-aware rank series), so they are pre-rendered by generate_badges();\nthe route no\n[…]\nthe -trend suffix, 404ing unknown\nagents or a missing file.\n\nRegression test: trend badge serves 200 image/svg with content; unknown\nagent 404s.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Serve pre-rendered trend badges from the dynamic badge route (2.3 fix…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T21:11:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cedf9e42da3c667863136d443fa8546eae47a7b8",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 2 completion (#135-#139) (#140)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:50:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1585cac6eb5d37d52a1125dafde2e93f26159541",
          "body": "Every agent page now cross-links its nearest 4 same-category neighbours\nby category rank (\"Ranked neighbours in <category>\", padding from the\nother side at the edges) plus the category page — on top of the\nprovider/ecosystem, capability-matrix, org, and compare links already\nshipped. related_agents(\n[…]\nling links.\n\nThe GSC-precision half of 2.1 (196 crawled-not-indexed URLs) stays open\nuntil the owner exports URL-level data from Search Console.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Related-agents strip on agent pages (plan 2.1, structural mesh) (#139)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:50:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1d1f42cedf1bc5cec42d3e7206108671e565cf3",
          "body": "derive_agent_events gains the two events a watcher actually needs:\n- grade_changed (\"Trust grade B -> A\") — suppressed across\n  METHODOLOGY_VERSION changes like trust/rank, since grade is a score band\n  and cutovers flip grades wholesale;\n- drift_warning_raised / drift_warning_cleared — transitions \n[…]\nlors extended. Abandonment already existed\n(stale_warning at 90 days). Bell path verified: a watched grade flip\nyields exactly one notification.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Watchlist alerts: grade flips + drift warnings (plan 2.4) (#138)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:42:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19a9f1affc39fce8919ee5d211e11f84210481fa",
          "body": "New /badge/<slug>-trend.svg: grade + 30-day rank direction. trend_arrow()\nreads the era-aware sparkline series (trimmed at the last\nMETHODOLOGY_VERSION change), so a scoring cutover never renders as a\nmovement; +/-3-rank threshold keeps the dense board's jitter flat.\n324 x 3 badges per render; badge\n[…]\nping per\nspam freeze; aipass improved to A/81.9; lightrag improved to A/82.9.\nCandidate pool refreshed from the corrected top; no outreach sent.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Trend badge + adopter audit (plan 2.3) (#137)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:34:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3843ccdc0b4394da68b290c1c51a63226a02dc83",
          "body": "…plan 2.2) (#136)\n\nCompare pairs (the site's best-ranking SEO pages) gain:\n- a coverage-grade row with the leader highlighted;\n- a \"Runtime capability surface\" section via compare_capability_rows():\n  MCP server, providers, API-key requirement, plugin surface, provenance\n  drift side-by-side. Leads \n[…]\nce coverage is\n  thinner than the trailer's, the verdict box says so plainly.\n\nNo <title>/meta changes (GSC title-churn lesson from 2026-06-25).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Compare surface v2: capability diff, coverage grades, honest caveat (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:27:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34b27d79107d7381d4c1f102e66e495f705b8830",
          "body": "The correction form and DB table existed; the public process did not.\n/correct/ now leads with the full dispute policy: anything published is\ndisputable, evidence means public checkable sources, re-checks happen\nagainst the source, fixes ship on the next render, methodology-level\nerrors are disclose\n[…]\npage + all template pages), and the sitemap.\n\nNote: templates/correct.html is dead code (the route builds its own page\ninline) — left untouched.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Corrections & appeals policy on /correct/ (plan 2.5) (#135)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T16:20:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e6df910817f1c0df322f4f07527a1c53a89d58d",
          "body": "…, registry) (#134)\n\nOwner confirmed 2026-07-08: directory submissions are already DONE on\nSmithery, awesome-mcp-servers, and the official MCP registry (also\nre-verified live at 0.2.0 via the OIDC publish) — no open submission\nwork. Marketplace listing for hvtrust-gate: agreed, publish from the\nrepo\n[…]\nes UI when convenient; the action already works via\nuses: YugantM/hvtrust-gate@v1 without it. Mirror-on-bump process note\nrecorded in CLAUDE.md.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: record owner-confirmed submission status (Smithery, awesome-mcp…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T15:41:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e679156b15541bdb97df2f298dea89d5d2517174",
          "body": "…closed) (#132)\n\nOwner clarified the distribution repo is YugantM/hvtracker-mcp. The listing\ndoc is now a pointer to that repo's canonical kit (server.json,\nREGISTRY_SUBMISSIONS.md, manifest.json, tag-triggered CI). Records the\nv0.2.0 release executed there: compare_agents + capability/credential\nen\n[…]\n-mcp 0.2.0\nverified live in the registry. Master plan 1.3 flipped to done; remaining\nowner actions are only the signed-in directory submissions.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: MCP listing corrected to the canonical hvtracker-mcp repo (1.3 …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T09:14:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4c54e1d44acacbc7e2ad1fcf16a172c2176472c0",
          "body": "…#131)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 1 completion deploy (#128-#130, verified live) (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T01:19:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2c596a5c160f632518b339a1b6cfeeebd0585464",
          "body": "…) (#130)\n\nThe CI trust gate lives in the new public repo YugantM/hvtrust-gate\n(tags v1/v0.1.0): composite action, stdlib-only, resolves targets via\n/api/v1/mcp/verify, min-grade threshold with warn-only and\nfail-on-untracked modes, step-summary table; self-test verified green on\nGitHub runners. The\n[…]\n.\n\nMaster plan + CLAUDE.md updated: Phase 1 code complete; remaining owner\nactions are the MCP registry submissions and the Marketplace listing.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 1 wrap: hvtrust-gate shipped + badges-page CI snippet (plan 1.4…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T01:16:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "da14685ae163c71b9bcd9b326863844058e95189",
          "body": "…lds (plan 1.3) (#129)\n\nmcp_server.py v0.1.2 -> v0.2.0:\n- New compare_agents(a, b) tool: both trust profiles, an evidence-based\n  one-line verdict, and the published compare-page URL when one exists.\n- check_agent_trust now returns coverage_grade, a capabilities block\n  (mcp_status, provider_count, \n[…]\nr the official MCP registry\n(mcp-publisher), Smithery (server card already live), and no-account\ndirectories — registry auth is an owner action.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "MCP server productization: compare_agents + capability/credential fie…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T01:07:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "990d695e15b82a1851e8e5b9452ac6949908c653",
          "body": "/data-api/ now documents the full machine surface: /api/v1/mcp/verify\n(with spec link), per-agent JSON + latest.json (signed trust_credential,\nverify-yourself link), .well-known discovery, and a published stability\npromise (fields add-only within v1; breaking changes bump the path;\nCC BY 4.0 + attri\n[…]\n / mcp /\ndata_json / exports requests in-memory, exposed as machine_usage in\n/healthz — the master plan's Audience-A KPI baseline, zero storage.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "API docs completion + machine-usage counters (plan 1.2) (#128)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T00:55:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d236e4a448814a59ba155104da91fb8a8cad9e7c",
          "body": "…(#127)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 1 first batch deploy (#124-#126, verified live) …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T00:46:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dd31a22bd31abd63ebdd405a8166efb0e75a26c7",
          "body": "…#126)\n\nwrite_dataset_export() emits a citable CC BY 4.0 snapshot of every public\nfield (incl. flattened runtime capabilities) as .json.gz + .csv at a\nstable per-quarter URL, refreshed each render within the quarter and\nfrozen at end-of-quarter state once renders roll to the next filename.\nLinked fr\n[…]\nn asset #2).\n\nTests: quarter labels, JSON/CSV shape and ordering, None-safety,\nsame-quarter overwrite semantics, serving + docs-page assertions.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Quarterly dataset export: /data/exports/hvtrust-<Y>-Q<n> (plan 1.6) (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-08T00:43:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d7b617c6f62fd3aad423ac4d815f2ee078f91b4a",
          "body": "….1b) (#125)\n\nCompletes T3.3: the per-agent \"AI agent surface\" section now links each\ndetected provider to its /ecosystem/<slug>/ hub (provider->slug map built\nfrom ecosystem_pages in the generator and passed to the template) and the\nsection intro links /capabilities/. Capabilities also added to the\n[…]\ne_header nav (the homepage nav got it in #124).\n\nTest locks the acceptance: agent page contains /ecosystem/<provider>/ and\n/capabilities/ links.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Agent pages: link providers to ecosystem pages + capability matrix (1…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T21:06:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c1d4e7e344db7c2a17d4971ec2ff9673ca42d81f",
          "body": "… (#124)\n\nThe \"what can this agent touch\" view: build_capability_matrix(rows)\nreshapes the per-row runtime fields (mcp_server_support,\nexternal_service_dependencies, tool_plugin_surface,\npackage_provenance_drift) into one trust-ranked matrix page with summary\nstats. Provider chips link to their /eco\n[…]\nvider links, stats match\nlive data (70 MCP implemented / 17 providers / 85 require keys).\n\nPer-agent capability section (1.1b) lands separately.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "/capabilities/ hub: agent runtime capability matrix (T3.3, plan 1.1a)…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T20:59:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69462c9f83e418bece3b654c97f8041a45d4a729",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 0 deploy (verified live 2026-07-07) (#123)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T20:44:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "325cdbffd33c8232df968dfa2167e7e6200ebc55",
          "body": "…items (#122)\n\n- LobsterAI, Agent Orchestrator, Sandcastle rejected from listing (owner).\n  New REVIEWED_REJECTED denylist in discover_agents.py so discovery cannot\n  re-propose them; locked by test. Research doc annotated RESOLVED.\n- Postgres consolidation (0.5) verified ALREADY DONE: second instan\n[…]\n\n  (daily 0.228/0.277/0.271, no ratchet); total memory run-rate ~$3.4/mo.\n- Public /output/history/ paths stay as-is (owner decision, recorded).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Owner decisions 2026-07-07: reject 3 candidates, close Phase 0 gated …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T20:10:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2f4d157faf4f4138ea2c0aa5d9dc5676d01cbe51",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log Phase 0 execution (#116-#120) (#121)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:52:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c73f590e1534bc60cbde83e20f67f79633b84d5c",
          "body": "…an 1.5) (#120)\n\nCredential signing has been live since v4.0 but was illegible to outsiders.\nThis makes it tangible:\n\n- methodology page gains a \"#verify-yourself\" section with a 12-line\n  copy-paste Python snippet that verifies any agent's Ed25519-signed\n  trust_credential against the .well-known i\n[…]\non.\n\nVerified against live prod: haystack + vercel-ai-sdk credentials verify OK;\na tampered score fails both signature and evidence-hash checks.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Verify-a-score-yourself: methodology section + reference verifier (pl…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:51:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8fe97dde1f91b7160b47ecb2bac6216bc5cc1089",
          "body": "…#119)\n\nAdds the five P1 candidates from docs/research/new-agent-candidates-2026-07-06\n(mini-SWE-agent, Mistral Vibe, CowAgent, oh-my-pi, Solace Agent Mesh), all\nre-verified against live GitHub today, and applies the four repository moves\nin place preserving verified package fields:\n\n  sst/opencode \n[…]\nent flow). Slugs/URLs unchanged; the four moved\nagents show as NEW in rank-delta/sparklines until history re-accumulates\nunder the new repo key.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Roster refresh: 5 new agents + 4 repository moves (master plan 0.4) (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:42:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26058a879174e93727e74c53debce341f3cb34c5",
          "body": "…6) (#118)\n\nThe 13 hand-written blog_feed_items stamped now_iso on every render,\nchurning feed.json lastmod without content change (#114 follow-up). Each\nnow carries its real publish date, recovered from the post's JSON-LD\ndatePublished. The remaining now_iso uses are intentional (compare-article\nfallback; per-agent items whose content changes every render).\n\nLocked by test_handwritten_feed_items_have_stable_dates.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Stable publish dates for hand-written blog feed items (master plan 0.…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:34:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1b637a78c69a47e914c99f25e13101cfd6c9c1c0",
          "body": "check_board_invariants() sanity-checks the final ranked board each render:\nmax trust_score >= 99.5 (inflation/pinning), scores outside [0,100],\nmean |Δrank| > 15 vs prior snapshot without a METHODOLOGY_VERSION change\n(silent mass churn), listed-agent count drop > 5% (mass delisting/fetch\nfailure). V\n[…]\nnder\". Also logs task 0.1 completion (offsite backup,\nprivate repo hvtracker-history-backup, 46 snapshots seeded + verified) in\nthe master plan.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Board-integrity invariants at render time (master plan 0.3) (#117)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:24:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7042f9ad60291dd6a2d4617d06570407a71ddabc",
          "body": "- Add docs/master-plan-2026-07-07.md: verified live-state audit, ecosystem\n  forecast, phased feature plan (supersedes product-plan-2026-h2 as the\n  forward plan). Written self-contained for fresh AI sessions.\n- Commit the 2026-07-06 new-agent-candidates research (md + copy-ready JSON).\n- CLAUDE.md:\n[…]\nde, content-truth, GSC cleanup live);\n  credential signing verified end-to-end; GitHub About already updated.\n  Point \"Next\" at the master plan.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: master plan 2026-07-07 + CLAUDE.md truth sweep (task 0.2) (#116)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-07T19:10:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "743cccd55d9a366f23fa00f6a87f0d727881070c",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "CLAUDE.md: log GSC cleanup ship + deploy (#114) (#115)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-06T17:30:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ab7f67cadffcf2c477e2086c10f4e54c559efaf6",
          "body": "…410 (#114)\n\nSearch Console coverage export (2026-07-06) showed 913 of 1,558 known pages\nnot indexed: 87 404s, 328 redirect pages, 196 crawled/discovered-not-indexed.\nRoot causes fixed here:\n\n- Compare pairs: previously-published /compare/<a>-vs-<b>/ pages persist\n  across renders (data/seo_state.js\n[…]\ne site 3x into a tmp OUTPUT_DIR\nand locks pair persistence, lastmod stability (sentinel dates), stable\narticle dates, and the 301/410 behaviour.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "GSC cleanup: stop 404-churn, honest sitemap lastmod, retired-URL 301/…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-06T17:25:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b90913a2a430bca1398f999eaff687c92204e2f",
          "body": "Bring public copy up to the v4.x reality and announce the v4.2 calibration\ncorrection + the new evidence-coverage grade.\n\nContent-truth:\n- README: \"Version 3.1\" -> \"Version 4\" (runtime calibration, soft ceiling,\n  v4.2 fix, coverage grade); formula block gains the calibration layer;\n  Evidence Grade\n[…]\ngrade.\n- blog_index card, sitemap_urls, blog_feed_items entries added.\n\nDocs-and-copy only; no scoring/rank/generator-logic change. Gates green.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Content-truth pass + v4.2 announcement blog post (#113)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T22:52:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a49994369a0eb3e698a93b5ec0058b29b8736ff4",
          "body": "…nct from the trust band (#112)\n\nThe A–D letter grade (evidence_grade) has measured the trust-SCORE band since\nv4.0, but README/marketing still framed it as \"evidence depth\". Add a real,\nseparate coverage grade so breadth of evidence is honestly visible:\n\n- coverage_grade(signal_types): A>=4, B=3, C\n[…]\nw coverage grade\ninstead of hiding behind the number. Tests lock the thresholds. No change\nto trust_score, rank, or the existing evidence_grade.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add evidence-coverage grade (T3.3): independent-signal breadth, disti…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T22:42:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6d94714d2c4fd1d9563abc801538cef74334b61",
          "body": "…ation (#111)\n\ndocs/plan-2026-07-06-post-v4.2.md is the ACTIVE PLAN:\n- Railway bill fix (#106) verified via metrics API: web RAM avg\n  0.660 -> 0.228 GB (-65%), flat baseline, no ratchet; est. memory cost\n  $6.60 -> $2.28/mo. Re-check 2026-07-12.\n- Content-truth checklist: README still describes v3.\n[…]\n previously untracked docs/product-plan-2026-h2.md that\nCLAUDE.md references, and points the CLAUDE.md/AGENTS.md \"Next\" section at\nthe new plan.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Post-v4.2 plan doc: next steps, content-truth checklist, bill verific…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T22:18:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7b40132e50ba877651149fd4576a2a4ab775008",
          "body": "…v4.2) (#110)\n\nThe build loop never seeded row[\"trust_score\"] with the freshly-computed\nbase before compute_trust_score_v2 read it, so the bounded runtime\nadjustment layered on the PRIOR build's already-calibrated score and\nratcheted every render toward the 0/100 rails (humanlayer: real base 50.9\ndr\n[…]\nAdd a regression test locking\nnon-compounding + idempotency; document the correction in the methodology\nchangelog and trust policy decision log.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix compounding runtime calibration: re-derive from base each build (…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T21:18:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5519c24d1e0e3bbf43b01d4af40e18e281e1efca",
          "body": "…cumulator (#108)\n\nThe auto-scroll read viewport.scrollLeft each frame and added 0.5 to it. Many\nbrowsers (Safari, some Chrome) snap scrollLeft to an integer, so the +0.5 step\ntruncated straight back to the same value every frame — the ticker never moved\n(stuck at 0 for gainers, at max for the rever\n[…]\ntrip's initial jump-to-end by one frame so scrollWidth\nis settled first.\n\nGate: 197 tests pass (JS-only change; no Python touched), HTML valid.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix stuck daily-movers ticker: don't read scrollLeft back into the ac…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T15:20:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f2120106761ac0d0bf8de0e2f30093502e72acff",
          "body": "… rigged\") (#107)\n\nOwner report: three agents showed an identical 100 with different ranks —\nreads as rigged. Root cause: the v4.0 calibration hard-clamped base+bonuses\nto 100, piling strong agents onto the ceiling, then broke the tie on the two\nMOST fakeable signals (momentum, stars). Two real prob\n[…]\nceiling\nscaling (bonuses yes, penalties no) and the evidence-before-popularity order.\n\nGates: 197 passed, render clean, HTML valid, ruff clean.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scoring v4.1: soft ceiling + evidence-first tie-break (fix \"100s look…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-05T07:29:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "655f7227fa0a28a0ff8f240ad25a090fc31c05b9",
          "body": "… bill) (#106)\n\nCost investigation (Railway metrics API, June 1 onward): the web service\naveraged 0.47GB RAM (peaks 0.9GB) = ~$4.74/mo of the ~$5.74 total usage —\n83% of the bill, and the reason usage exceeds the Hobby plan's $5 credit.\nRoot cause: fetch_and_build.run_refresh() ran IN-PROCESS inside\n[…]\n prod where /app and /data/site are\nseparate.)\n\nGates: 195 passed (1 new for refresh_argv mode mapping), render clean,\nHTML valid, ruff clean.\n\nCo-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Run refreshes as a subprocess to stop RAM ratcheting (~83% of Railway…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-04T13:45:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "683beeb7a8b0d1d2d5abce36faa0dedfd45e90c7",
          "body": "…s (#105)\n\nVolume verification (railway ssh, read-only) diffed every generated page\nfamily on the prod volume against the current build and found leftovers that\nnothing ever deletes: org/i-am-bee and agents/bee-agent-framework (repo\nrename), use-cases/recently-active (data-driven page whose filter c\n[…]\n- untracked local artifacts, not\nproduced by current code, confirmed absent from prod.\n\nGates: 194 passed, render clean, HTML valid, ruff clean.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Prune stale generated page dirs for org/use-cases/ecosystem/categorie…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-03T15:32:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3cc3a6d6c4c2428dc9c37843862e02b44d635b23",
          "body": "Owner directive: the red per-row runtime-adjustment line (e.g. \"provenance\n+4.0 · MCP +2.0\") is gone from the leaderboard — users who want to understand\nthe score go to the methodology page — and Score Lab is retired since there\nis no experimental scoring anymore: the calibration it previewed IS the\n[…]\n new\nmethodology section renders with anchor, agent page copy corrected,\nsite-wide grep for score-lab returns nothing outside history snapshots.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove per-row adjustment text from leaderboard; retire Score Lab (#104)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-03T10:45:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "916203f2c3b74b89e4dee9436d3beca1fa9145a5",
          "body": "Replace the CSS-transform marquee with a JS-driven native scroll: overflow-x\nnow auto (was hidden, so the strip was unscrollable even paused), scrollbar\nhidden for a clean look, cursor grab/grabbing. Auto-scroll runs via\nrequestAnimationFrame directly setting scrollLeft, bounces back and forth at\nea\n[…]\n2 unique gainers, no repeats). No console errors.\n\nGates green: 195 tests (unchanged, no Python touched), render clean, HTML\nvalid, ruff clean.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Daily movers ticker: hover-pause then scroll left/right yourself (#103)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-03T10:09:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2c60e019bbe38d488d0e518ac32e6201532695a9",
          "body": "…re (#102)\n\nOwner-confirmed, explicit, no adopter heads-up (\"switch to new scoring to\nthe core... this being a legit profound change of the platform\"). Supersedes\nthe client-side-toggle version shipped earlier the same day (#101).\n\ntrust_score/rank/evidence_grade are now runtime-calibrated (base 5-d\n[…]\n195 tests (6 new: v2_why_summary already covered, plus 3 for\nthe methodology-boundary event suppression), render clean, HTML valid,\nruff clean.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "T3.4 core swap: runtime-calibrated score IS trust_score/rank everywhe…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T20:58:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd2f4df08b3d201c4a56d79b0e8ae1e095bc3f55",
          "body": "…101)\n\nOwner decision after the T3.1 false-positive audit closed with zero real\nsupply-chain risks found (see docs/t3.1-upset-review-2026-07-02.md addenda\n1-4): fold trust_score_v2 into the homepage as a distinct, labelled,\nreversible slice, defaulting to the calibrated view rather than opt-in.\n\n- v\n[…]\ny on real user toggles, not the initial default-view\napplication.\n\nGates green: 192 tests (2 new for v2_why_summary), render clean, HTML valid.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "T3.4: runtime-calibrated ranking becomes the default homepage view (#…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T20:18:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "385605fba6023c194513202dc03463502a0749e2",
          "body": "A scoring-methodology change (tracked in the existing methodology_version\nfield on every history snapshot -- already changed 4 times historically:\nv2.0 -> v3.0 -> v3.1 -> v3.2) is not a real rank movement, but the sparkline\npreviously connected across it, so a cutover could render as a misleading\n\"b\n[…]\n3.2 run) instead of 2026-05-23,\ncorrectly excluding the incomparable pre-v3.2 history while still showing\nreal movement within the current run.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reset rank-trend sparklines at methodology-version changes (#100)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T18:09:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b0be3f38b5a5957f7397c359568e136955642195",
          "body": "… (#99)\n\nExtends the T3.1 false-positive audit to the last class of bug: a project\nthat moved to a new GitHub org (leondz/garak -> nvidia/garak, for example)\nlooks identical to a real hijack from a string-comparison standpoint, but\nGitHub's own API already tells us the answer -- get_repo() transpare\n[…]\n with diminishing\nreturns confirms this is the real floor; remaining churn is the\nleaderboard-density effect from addendum 3, not further bugs.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Detect repo transfers in drift check + resolve all remaining warnings…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T17:50:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b14f8a5f7db485af7335b9de72b2e8716c2cd440",
          "body": "…positive class as drift (#98)\n\nOwner directive: no compromise on quality of scores/leaderboard. Extended the\nT3.1 audit beyond package_provenance_drift to the two remaining unvetted\nruntime dimensions, which turned out to have the same class of bug, worse:\n\n1. Substring-matching bug shared by both \n[…]\nnal 10%\nrank-churn ceiling conflates density with instability; owner decision needed\non whether to measure stability differently going forward.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Audit external_dependencies + tool_plugin_surface for the same false-…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T17:27:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5acd1e9d15d1b85af42fc27cc3a64a46506fd7bc",
          "body": "…(#97)\n\nManual investigation (live npm/PyPI registry queries) of the 3 A-grade drops\nnot explained by the same-owner drift fix (#96), per owner-approved option A:\n\n- Strands Agents: npm_package \"strands\" was an unrelated 2016 JS string-utils\n  package, not squatting -- a pre-existing name collision.\n[…]\nt problem. Option A is exhausted -- closing criterion 1 (churn ceiling)\nnow needs option B (revisit the ceiling or a phased dimension rollout).\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Correct wrong npm/pypi package guesses for 3 agents (T3.1 follow-up) …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T17:12:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3b04526600ba37628cb2a5f16bf2ee6670527165",
          "body": "…(#96)\n\npackage_provenance_drift's -5.0 \"warning\" penalty conflated two different\nsignals: a genuine different-owner package mismatch (real ambiguity) and a\nsame-owner, different-repo mismatch (JS/Python split, rename, monorepo\ncarve-out -- not evidence of hijack). detect_package_provenance_drift no\n[…]\nused the\nnetted total, which sign-cancellation distorts, instead of summed\nper-dimension magnitudes; corrected criterion 3 to PASS at 37%/34%).\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix drift false positives: don't warn on same-owner package variants …",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T16:59:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ab33d19ea805a0d630bfdf2ca332c4e6af59c1b",
          "body": "Documents the four runtime discovery fields (mcp_server_support,\nexternal_service_dependencies, tool_plugin_surface, package_provenance_drift)\nand the experimental v2 adjustment table, mirroring compute_trust_score_v2\nexactly. States explicitly that runtime signals are discovery-only and do not\naffe\n[…]\nown cases through compute_trust_score_v2 and asserts the documented\nconstants, so changing the formula without bumping the spec fails the suite.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Publish /spec/runtime-trust v0.1 (T3.2) (#95)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T16:33:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66bc36c570107c7ab3a1b1c37caa71ac46cb451f",
          "body": "GSC export (3mo, 2026-07-02) showed /categories/agent-frameworks/ at 1,091\nimpressions / position 16.4 for queries like \"ai agent framework\" — but the\ntitle tag said \"Best Agent Frameworks\", missing the \"AI\" the searcher typed.\nAdd \"AI\" to the title/og:title/twitter:title/JSON-LD name only; the H1 a\n[…]\nmatch their query clusters well (\"Is X Safe?\" mirrors the \"is X safe\"\nquery pattern seen in the export), so no other template needed this pass.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Category pages: match title to actual search query phrasing (#94)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T15:52:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7d0c3bc8f470ee584aa3766c35f2fadb742e6a8",
          "body": "Co-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Update Now/next bookkeeping for the 2026-07-02 batch (#88–#92) (#93)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T14:55:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "736fbc4e71b1d4a62602eace2b2487ecc48c2803",
          "body": "Cross-sectional analysis of trust_score_v2 vs production rank across all 319\nagents: churn metrics, biggest swings with per-dimension attribution, and\nproposed go/no-go criteria. Verdict as calibrated today: NO-GO — 19% of agents\nmove >10 ranks, six A-grade agents drop >10 driven almost entirely by \n[…]\ndominates every top swing in both\ndirections. Recommends drift-evidence audit + weight split + T3.2 spec before\nre-review. No production change.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "T3.1 upset-review report: v1->v2 calibration evidence + go/no-go (#92)",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T14:54:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "110869bd985ec5ca2891e9af4aec73c6b15b0f9e",
          "body": "… (#91)\n\nSplit into builder (venv pip install, pruned of pip/setuptools; scorecard-cache\nfetch) and runtime (fonts + gosu + code + venv copy). Two real fixes beyond\nstructure: python:slim ships no curl, so the old in-stage fetch of the fresh\nscorecard cache from the data branch silently fell back to\n[…]\nly:\ncontainer boots healthy (uvicorn via venv, gosu drop to hvt, /healthz ok with\n319 agents from prebuilt), all modules import, PID 1 non-root.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Multi-stage Dockerfile: venv builder + working scorecard fetch (T2.4)…",
          "author_name": "Yugant M. Hadiyal",
          "author_login": "YugantM",
          "committed_at": "2026-07-02T14:52:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 4,
      "commits_last_year": 489,
      "latest_release_at": "2026-07-01T18:29:58Z",
      "latest_release_tag": "v3.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 24,
      "mean_days_between_releases": 12.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 1,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-03",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 9
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": true,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 349335,
      "source_files_sampled": 58,
      "oversized_source_files": 3,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 42601
    },
    "dependencies": {
      "manifests": [
        "requirements-dev.txt",
        "requirements.txt"
      ],
      "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": [
        "pypi"
      ],
      "dependencies": [],
      "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": 9,
        "merged_prs": 164,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 17,
        "closed_unmerged_prs": 10
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "YugantM",
          "commits": 419,
          "avatar_url": "https://avatars.githubusercontent.com/u/27622259?v=4"
        },
        {
          "type": "User",
          "login": "codex",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/267193182?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.993
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "scorecard-scan.yml",
        "scorecard-self.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "ruff.toml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 8,
            "reason": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "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": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "16 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "dd0e4bf8ea94b5c9276861ce9b077442ce2232c5",
        "ran_at": "2026-07-26T08:44:22Z",
        "aggregate_score": 3.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T08:12:26Z",
      "oldest_open_prs": [
        {
          "number": 74,
          "created_at": "2026-06-24T15:04:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 75,
          "created_at": "2026-06-24T15:05:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 152,
          "created_at": "2026-07-09T17:05:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 183,
          "created_at": "2026-07-15T15:06:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 184,
          "created_at": "2026-07-15T15:06:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 185,
          "created_at": "2026-07-15T15:06:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 195,
          "created_at": "2026-07-22T15:04:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 196,
          "created_at": "2026-07-22T15:04:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 197,
          "created_at": "2026-07-22T15:05:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T17:06:47Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/YugantM/hvtracker",
    "host": "github.com",
    "name": "hvtracker",
    "owner": "YugantM"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 57,
      "inputs": {
        "security": 36,
        "vitality": 77,
        "community": 29,
        "governance": 50,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 489,
              "human_commit_share": 0.99,
              "days_since_last_push": 0,
              "active_weeks_last_year": 11
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "489 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 489
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 4,
              "latest_release_tag": "v3.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 24,
              "mean_days_between_releases": 12.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "4 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 24 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 24
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~12.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 12.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 29,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 1,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 50,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.993
            },
            "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 99% of commits",
                "points": 0.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 99
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 164,
              "open_issues": 0,
              "closed_issues": 17,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 10
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "164/174 decided PRs merged",
                "points": 36.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 164,
                      "decided": 174
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "followers": 45,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "YugantM",
              "public_repos": 69,
              "account_age_days": 3387
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "45 followers of YugantM",
                "points": 12,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 45,
                      "login": "YugantM"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "69 public repos, account ~9 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 69
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "ruff.toml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "ruff.toml"
                    }
                  }
                ],
                "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": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
                "points": 16,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "a2a",
                "ai-agents",
                "ai-safety",
                "leaderboard",
                "mcp",
                "open-source",
                "ossf-scorecard",
                "provenance",
                "security",
                "supply-chain",
                "trust"
              ],
              "has_wiki": false,
              "homepage": "https://hvtracker.net",
              "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://hvtracker.net",
                "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": "11 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 36,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 36,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "16 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": 2
            },
            "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": 66,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_llms_txt": true,
              "legible_history_share": 0.98,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 42601
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": "llms.txt present",
                "points": 15,
                "status": "met",
                "details": [
                  {
                    "code": "llms_txt_present",
                    "params": {}
                  }
                ],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "97 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.96,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.01
            },
            "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": "ruff.toml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "ruff.toml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "96 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 96,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "primary_language": "HTML",
              "largest_source_bytes": 349335,
              "source_files_sampled": 58,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "HTML without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "HTML"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/58 source files over 60KB",
                "points": 52.2,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 58,
                      "oversized": 3
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T08:44:39.769358Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/YugantM/hvtracker.svg",
  "full_name": "YugantM/hvtracker",
  "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 agregadas.