Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-23 04:14 UTC

MartinNevlaha / stratus-v2

go + svelte

Go · SvelteSin licencia detectada★ 1 estrella⑂ 0 forksdesde feb 2026Ver en GitHub ↗

MartinNevlaha/stratus-v2 tiene un índice de salud de 46 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (83/100) y la más baja, Community & Adoption (12/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

46
global / 100
En riesgo

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

46
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

MartinNevlahaCuenta personal
1 seguidor10 repositorios públicosdesde jun 2019

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.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/MartinNevlaha/stratus-v2v0.14.6-121hace 5 días

Métricas por categoría

Vitalidad

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

83Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
8.3/36Cadencia de commits — 12/52 semanas con commits
18/18Volumen de commits — 230 commits en el último año
10/10OpenSSF Scorecard: Maintained — 19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year230
human_commit_share1
days_since_last_push5
active_weeks_last_year12
Cómo se puntúa
27/27Publica versiones — 86 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~9,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count86
latest_release_tagv0.14.6
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases9,7
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?

12Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 1 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
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_licenseno
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?

51Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
38.2/38.3Aceptación de PR — 1/1 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
2.2/25Alcance del propietario — 1 seguidores de MartinNevlaha
19.6/25Trayectoria — 10 repos públicos, cuenta de ~7 años
Datos de entrada utilizados
followers1
owner_typeUser
is_verified
owner_loginMartinNevlaha
public_repos10
account_age_days2606
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 121 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/MartinNevlaha/stratus-v2
ecosystemsgo
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

48En riesgo · 20% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_cino
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
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?

22Crítico · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
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/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Licencia — license file not detected
7.5/7.5Maintained — 19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2,2
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. 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.

75Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 88 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,88
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes5194
Cómo se puntúa
18/18Arranque con un solo comando — Makefile
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — frontend/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 34 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum, package-lock.json
has_dockerfileno
typed_language
bootstrap_filesMakefile
has_devcontainerno
has_linter_configno
typecheck_configsfrontend/tsconfig.json
agent_commit_share0,34
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
54.8/55Tamaños de archivo manejables — 1/349 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes660.867
source_files_sampled349
oversized_source_files1
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

1estrellas de GitHub
1contribuidores
230commits en los últimos 12 meses
5días desde el último push
86versiones publicadas
1factor bus
0issues abiertas
Go, npmecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 2.2 / 10
2.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-23 04:13 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
n/dDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
0Vulnerabilities24 existing vulnerabilities detected
Dependencias directas 13
RegistroPaqueteRestricción de versiónManifiesto
npm@types/d3-force^3.0.10frontend/package.json
npm@xterm/addon-fit^0.10.0frontend/package.json
npm@xterm/xterm^5.5.0frontend/package.json
npmchart.js^4.5.1frontend/package.json
npmd3-force^3.0.0frontend/package.json
npmdompurify^3.0.0frontend/package.json
npmmarked^12.0.0frontend/package.json
npmsvelte-chartjs^4.0.1frontend/package.json
Gogithub.com/creack/ptyv1.1.24go.mod
Gogithub.com/google/uuidv1.6.0go.mod
Gogolang.org/x/syncv0.20.0go.mod
Gomodernc.org/sqlitev1.46.1go.mod
Gonhooyr.io/websocketv1.8.17go.mod
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": [],
      "is_fork": false,
      "size_kb": 5504,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 2678187,
        "HTML": 6651,
        "Python": 36186,
        "Svelte": 431028,
        "Makefile": 2406,
        "TypeScript": 75142
      },
      "pushed_at": "2026-07-17T14:00:28Z",
      "created_at": "2026-02-24T21:51:34Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T14:00:54Z",
      "description": "go + svelte",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Go",
      "significant_languages": [
        "Go",
        "Svelte"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "MartinNevlaha",
      "company": null,
      "location": null,
      "followers": 1,
      "avatar_url": "https://avatars.githubusercontent.com/u/51342345?v=4",
      "created_at": "2019-06-03T21:02:24Z",
      "is_verified": null,
      "public_repos": 10,
      "account_age_days": 2606
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.14.6",
          "kind": "patch",
          "published_at": "2026-07-17T14:00:29Z"
        },
        {
          "tag": "v0.14.5",
          "kind": "patch",
          "published_at": "2026-07-11T18:30:17Z"
        },
        {
          "tag": "v0.14.4",
          "kind": "patch",
          "published_at": "2026-06-29T13:36:54Z"
        },
        {
          "tag": "v0.14.3",
          "kind": "patch",
          "published_at": "2026-06-29T13:09:34Z"
        },
        {
          "tag": "v0.14.2",
          "kind": "patch",
          "published_at": "2026-06-27T09:16:15Z"
        },
        {
          "tag": "v0.14.1",
          "kind": "patch",
          "published_at": "2026-06-26T20:46:07Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-06-26T08:35:01Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2026-04-29T18:58:06Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-04-27T13:57:18Z"
        },
        {
          "tag": "v0.12.11",
          "kind": "patch",
          "published_at": "2026-04-20T21:01:43Z"
        },
        {
          "tag": "v0.12.10",
          "kind": "patch",
          "published_at": "2026-04-20T20:57:19Z"
        },
        {
          "tag": "v0.12.9",
          "kind": "patch",
          "published_at": "2026-04-20T20:54:52Z"
        },
        {
          "tag": "v0.12.8",
          "kind": "patch",
          "published_at": "2026-04-20T20:51:52Z"
        },
        {
          "tag": "v0.12.7",
          "kind": "patch",
          "published_at": "2026-04-20T20:46:28Z"
        },
        {
          "tag": "v0.12.6",
          "kind": "patch",
          "published_at": "2026-04-20T20:44:54Z"
        },
        {
          "tag": "v0.12.5",
          "kind": "patch",
          "published_at": "2026-04-20T20:42:53Z"
        },
        {
          "tag": "v0.12.4",
          "kind": "patch",
          "published_at": "2026-04-20T20:36:39Z"
        },
        {
          "tag": "v0.12.3",
          "kind": "patch",
          "published_at": "2026-04-20T20:33:52Z"
        },
        {
          "tag": "v0.12.2",
          "kind": "patch",
          "published_at": "2026-04-20T20:27:21Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2026-04-20T20:22:58Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-04-20T17:17:19Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-04-17T12:14:53Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2026-04-17T11:04:59Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-04-14T10:18:11Z"
        },
        {
          "tag": "v0.9.20",
          "kind": "patch",
          "published_at": "2026-04-10T06:13:46Z"
        },
        {
          "tag": "v0.9.19",
          "kind": "patch",
          "published_at": "2026-04-09T13:21:58Z"
        },
        {
          "tag": "v0.9.18",
          "kind": "patch",
          "published_at": "2026-03-31T06:48:18Z"
        },
        {
          "tag": "v0.9.17",
          "kind": "patch",
          "published_at": "2026-03-31T06:34:36Z"
        },
        {
          "tag": "v0.9.16",
          "kind": "patch",
          "published_at": "2026-03-30T19:29:11Z"
        },
        {
          "tag": "v0.9.13",
          "kind": "patch",
          "published_at": "2026-03-30T18:00:44Z"
        },
        {
          "tag": "v0.9.12",
          "kind": "patch",
          "published_at": "2026-03-30T07:40:11Z"
        },
        {
          "tag": "v0.9.11",
          "kind": "patch",
          "published_at": "2026-03-30T07:27:13Z"
        },
        {
          "tag": "v0.9.10",
          "kind": "patch",
          "published_at": "2026-03-30T07:24:43Z"
        },
        {
          "tag": "v0.9.9",
          "kind": "patch",
          "published_at": "2026-03-30T07:19:06Z"
        },
        {
          "tag": "v0.9.8",
          "kind": "patch",
          "published_at": "2026-03-29T17:49:09Z"
        },
        {
          "tag": "v0.9.7",
          "kind": "patch",
          "published_at": "2026-03-29T16:19:24Z"
        },
        {
          "tag": "v0.9.6",
          "kind": "patch",
          "published_at": "2026-03-29T15:49:36Z"
        },
        {
          "tag": "v0.9.5",
          "kind": "patch",
          "published_at": "2026-03-29T13:24:53Z"
        },
        {
          "tag": "v0.9.4",
          "kind": "patch",
          "published_at": "2026-03-29T11:13:34Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2026-03-29T11:07:19Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2026-03-29T11:03:39Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-03-29T09:09:13Z"
        },
        {
          "tag": "v0.8.6",
          "kind": "patch",
          "published_at": "2026-03-29T08:24:25Z"
        },
        {
          "tag": "v0.8.5",
          "kind": "patch",
          "published_at": "2026-03-29T08:15:24Z"
        },
        {
          "tag": "v0.8.4",
          "kind": "patch",
          "published_at": "2026-03-29T07:38:27Z"
        },
        {
          "tag": "v0.8.3",
          "kind": "patch",
          "published_at": "2026-03-29T07:30:09Z"
        },
        {
          "tag": "v0.8.2",
          "kind": "patch",
          "published_at": "2026-03-29T06:14:18Z"
        },
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-03-28T21:13:18Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-03-28T19:38:13Z"
        },
        {
          "tag": "v0.7.29",
          "kind": "patch",
          "published_at": "2026-03-28T15:51:04Z"
        },
        {
          "tag": "v0.7.28",
          "kind": "patch",
          "published_at": "2026-03-28T14:54:26Z"
        },
        {
          "tag": "v0.7.27",
          "kind": "patch",
          "published_at": "2026-03-28T11:44:06Z"
        },
        {
          "tag": "v0.7.26",
          "kind": "patch",
          "published_at": "2026-03-27T21:23:39Z"
        },
        {
          "tag": "v0.7.25",
          "kind": "patch",
          "published_at": "2026-03-17T06:41:07Z"
        },
        {
          "tag": "v0.7.24",
          "kind": "patch",
          "published_at": "2026-03-13T17:09:00Z"
        },
        {
          "tag": "v0.7.23",
          "kind": "patch",
          "published_at": "2026-03-13T09:30:27Z"
        },
        {
          "tag": "v0.7.20",
          "kind": "patch",
          "published_at": "2026-03-13T08:03:59Z"
        },
        {
          "tag": "v0.7.19",
          "kind": "patch",
          "published_at": "2026-03-12T08:06:44Z"
        },
        {
          "tag": "v0.7.17",
          "kind": "patch",
          "published_at": "2026-03-12T06:12:43Z"
        },
        {
          "tag": "v0.7.15",
          "kind": "patch",
          "published_at": "2026-03-10T08:50:54Z"
        },
        {
          "tag": "v0.7.13",
          "kind": "patch",
          "published_at": "2026-03-10T07:10:31Z"
        },
        {
          "tag": "v0.7.12",
          "kind": "patch",
          "published_at": "2026-03-09T20:40:39Z"
        },
        {
          "tag": "v0.7.11",
          "kind": "patch",
          "published_at": "2026-03-09T12:13:58Z"
        },
        {
          "tag": "v0.7.10",
          "kind": "patch",
          "published_at": "2026-03-09T08:12:03Z"
        },
        {
          "tag": "v0.7.9",
          "kind": "patch",
          "published_at": "2026-03-09T08:07:19Z"
        },
        {
          "tag": "v0.7.8",
          "kind": "patch",
          "published_at": "2026-03-07T06:38:09Z"
        },
        {
          "tag": "v0.7.6",
          "kind": "patch",
          "published_at": "2026-03-06T09:30:49Z"
        },
        {
          "tag": "v0.7.5",
          "kind": "patch",
          "published_at": "2026-03-06T08:33:48Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-03-06T08:15:11Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-03-03T11:44:37Z"
        },
        {
          "tag": "v0.6.9",
          "kind": "patch",
          "published_at": "2026-03-03T10:47:07Z"
        },
        {
          "tag": "v0.6.8",
          "kind": "patch",
          "published_at": "2026-03-01T19:26:29Z"
        },
        {
          "tag": "v0.6.7",
          "kind": "patch",
          "published_at": "2026-02-28T06:43:58Z"
        },
        {
          "tag": "v0.6.5",
          "kind": "patch",
          "published_at": "2026-02-28T06:37:40Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2026-02-27T20:17:33Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2026-02-27T14:22:22Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2026-02-26T14:28:37Z"
        },
        {
          "tag": "v0.5.1",
          "kind": "patch",
          "published_at": "2026-02-26T09:36:37Z"
        },
        {
          "tag": "v0.4.9",
          "kind": "patch",
          "published_at": "2026-02-26T08:10:03Z"
        },
        {
          "tag": "v0.4.8",
          "kind": "patch",
          "published_at": "2026-02-25T18:47:53Z"
        },
        {
          "tag": "v0.4.7",
          "kind": "patch",
          "published_at": "2026-02-25T18:32:30Z"
        },
        {
          "tag": "v0.4.6",
          "kind": "patch",
          "published_at": "2026-02-25T18:07:50Z"
        },
        {
          "tag": "v0.4.5",
          "kind": "patch",
          "published_at": "2026-02-25T14:43:26Z"
        },
        {
          "tag": "v0.4.4",
          "kind": "patch",
          "published_at": "2026-02-25T14:11:12Z"
        },
        {
          "tag": "v0.4.2",
          "kind": "patch",
          "published_at": "2026-02-25T12:47:58Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-02-25T12:34:52Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "77dcc14485661fcf3f6643b5204a6abe1c6a82a8",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.6",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-07-17T14:00:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1856d22998ad7e420a9d576dd83316c727da8dc1",
          "body": null,
          "is_bot": false,
          "headline": "fix(terminal): make browser clipboard copy reliable",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-07-17T13:59:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b2ba414d97e71320e5a1b686ca4db2a936a680d",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.5",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-07-11T18:30:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b993ae8cc5428d51c3db653df9ece8dbf805972",
          "body": "Workflow resolution blindly fell back to the first workflow in the list when\nno session matched, so with multiple parallel workflows the guards mixed flows:\na write in one flow could be gated against another flow's verify phase, and a\ndelivery delegation could be rejected against the wrong workflow'\n[…]\n WorkflowExistenceGuard and DelegationGuard.\n- BashWriteGuard keeps the session existence check (no phase resolution → no mixing).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(guards): resolve active workflow unambiguously across parallel flows",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-07-11T18:30:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3d3a763633d54df44b4cbed46d6d66c78116608f",
          "body": "…s.json",
          "is_bot": false,
          "headline": "feat(config): add exclude_paths and verify_findings fields to .stratu…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-29T13:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b496b9f238b23f1e45e9dd289a8d7b8453f12cfb",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.4",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-29T13:36:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75968ab46dea9385d76979039a0633c84941948e",
          "body": "xterm.js does not mirror the selection to the system clipboard and Ctrl+C is\nforwarded to the shell as SIGINT, so text could not be copied out of the\ndashboard terminal — and interactive TUIs (opencode, claude code) enable mouse\nreporting, which sends a normal drag to the app instead of selecting te\n[…]\nrl+Shift+V pastes clipboard contents into the session\n- inside a mouse-reporting TUI, hold Shift while dragging to force selection\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(terminal): enable copy/paste in the dashboard terminal",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-29T13:36:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0ded8c6b2e2ee6198c0e918383d0f5ebdc94c78c",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.3",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-29T13:09:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63647879d1d4cbff94a88ec512f3bb38a6888758",
          "body": "… prefix regex\n\nThe OpenCode plugin's Task guard only recognized workflow IDs matching the\nspec-/bug-/e2e- prefix regex, then fell back to session ownership. Workflow\nIDs without those prefixes (e.g. dms-chat-modern-redesign) failed both checks\n— the session match also failed because ${CLAUDE_SESSIO\n[…]\neeping the prefix regex and\nsession lookup as fallbacks. Applied to both plugin copies (embedded template\n+ local .opencode copy).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(opencode): resolve workflow guard by active workflow ID, not just…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-29T13:09:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5be8a9907ac5e9e9563f9b080e4aee87df731bc3",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.2",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-27T09:16:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed0fdc4b4870addf41856f9bba79c0650fa805e5",
          "body": "The opencode plugin returned nested `tool: { execute: { before, after } }`,\nbut @opencode-ai/plugin 1.4.7 expects flat `tool.execute.before` /\n`tool.execute.after` keys and treats `tool` as a custom-tool map. opencode\nregistered a malformed `execute` tool (no args/description schema), which\nstalled \n[…]\nyed copy\n- after-hook reads args from input (1.4.7 moves args onto input, not output)\n- opencode.json: repoint all agent models to openai/gpt-5.5 (the zai-coding-plan\n  provider was not authenticated)",
          "is_bot": false,
          "headline": "fix(opencode): correct plugin hook shape so prompts no longer hang",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-27T09:16:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f52151b9e11cc2f94f51a50e0101740c6233a648",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.1",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-26T20:46:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5b6c53178e98c8554a7e399bac1e3799235a290",
          "body": "…tion notice, and adversarial verify\n\nAddresses the five issues in docs/bugs/code-analyst-false-positives.md:\n\n- Bug 1: prefix each source line with its 1-based number before sending to\n  the LLM, so line_start/line_end come from real numbers instead of the model\n  counting them itself.\n- Bug 2: whe\n[…]\nble, documented fail-open, idiomatic framework code).\n\nAlso wires the existing exclude_paths config so users can skip noisy paths.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(code-analyst): cut LLM false positives via line numbering, trunca…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-26T20:45:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f869de39d74d2f26875289ad1c3bb46481054355",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.14.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-26T08:34:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa0d97f27140d383df6b2439cf8a6a23d978bc4f",
          "body": "…, dead chart code\n\n- llm: add first-class `lmstudio` provider (OpenAI-compatible, default\n  http://localhost:1234/v1, no API key required). LM Studio's endpoint rejects\n  response_format:{type:json_object}, so omit it for lmstudio and rely on\n  prompt + lenient JSON parsing (gemma emits valid JSON \n[…]\nfrontend: remove duplicate/broken chart helper definitions (referenced an\n  undefined ChartData type); deduplicate getChartColors.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): add LM Studio provider + fix flow phase casing, stale tests…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-06-26T08:34:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1d810b7afcf1d06cea7850409caf2852d9de3ecc",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.13.2",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-29T18:58:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0162008be2632ffa46308eddbe29d83ce5759e31",
          "body": "…+ configurable timeout\n\nSkills referenced /api/learning/{candidates,proposals} endpoints that never\nexisted; calls 404'd into the SPA fallback so the proposal step was silently\nskipped. Updated spec/spec-complex/swarm/resume/learn skills (both .claude/\nand embedded copies) to match the auto pipelin\n[…]\nld. Added Learn.PipelineTimeoutSec config (default 180s, was 60s\nhardcoded) so slow LLM autodoc enrichers don't silently time out.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(learn): drop dead /api/learning curl, add pipeline observability …",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-29T18:57:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "627564fea12018835e6793be8c840491e8d6fce3",
          "body": "… (~, -, *, etc.)\n\npreprocessFTS5Query now double-quotes each term like buildFTS5Query.\nSearchCodeFindings also now uses buildFTS5Query before MATCH.\n\nrelease: v0.13.1",
          "is_bot": false,
          "headline": "fix(db): quote FTS5 terms to prevent syntax errors from special chars…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-27T13:56:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "259f4f20d3fd62357d582df0b8a311b89b156e17",
          "body": "feat: add learn pipeline (artifact builder + knowledge engine integration)\nfeat: add GuardianWidget, UpdatePanel, WorkflowCard, SwarmDetail, PastWorkflows frontend components\nfeat: add errors utility module for frontend\nfeat: vexor index worker with exponential backoff on consecutive errors\nfeat: in\n[…]\nct learn pipeline from coordinator into learn_pipeline.go\nrefactor: simplify spec/spec-complex skills (auto learn pipeline instead of manual curl)\ndocs: add ADR-0005 and multiple design/plan documents",
          "is_bot": false,
          "headline": "release: v0.13.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-27T13:32:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22593eba974bd15566dab354ba5bbc4dd1188a15",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.11",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T21:01:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc243109599666b15d231c5aabd2a6c8265fb4c3",
          "body": "Long-in-progress consolidation work was on disk but never committed,\nbreaking 'go install github.com/MartinNevlaha/stratus-v2/cmd/stratus@vX'\nfor external consumers. Local builds worked because the working tree\nhad the definitions.\n\nLanding it now as one coherent commit:\n\n- Delete duplicate insight/\n[…]\nAPI.\n\nPre-existing test failures in TestGetTokenUsageHistory and\nTestHandleGetLLMUsage_TotalTokensCalculation remain out of scope.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: consolidate events package + wire guardian/insight/scheduler",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T21:01:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "019da749ac539d27e5aa89b7b9f77e2b2c443443",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.10",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:57:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79cd20e51404eb61d1edb7681e6a9d29b8dd51a2",
          "body": "The wiki_engine code committed in prior releases references\ndb.IsValidWikiLinkType, db.FindWikiPageByTitleNewest,\ndb.CountOrphanWikiPages and db.DeleteWikiLinkByID, but those\ndefinitions were never committed. External consumers running\n'go install github.com/MartinNevlaha/stratus-v2/cmd/stratus@vX.Y\n[…]\nse the definitions existed on disk.\n\nCommit the four missing additions and their tests. No modifications\nto existing db behaviour.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(db): add wiki functions referenced by wiki_engine (fix go install)",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:57:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7e2640ac6971e394074fcf340184395af115cf25",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.9",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:54:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01da0c16fb1c46593a125c96276b6f09797d3be6",
          "body": "gemma4 and other local models occasionally emit JSON with unquoted\nkeys, single-quoted strings, or trailing commas despite format:\"json\".\nThe strict encoding/json parser rejects these, causing code_analyst to\nfail on many real Python files (\"invalid character 'd' looking for\nbeginning of object key \n[…]\nks\nthe candidate with string/escape awareness and rewrites the three\nmost common mistakes without touching content inside strings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): lenient JSON parsing for common LLM mistakes",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:54:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8f2822236000edf26358c9dbee158ac26ca90f76",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.8",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:51:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "402e4b70449d455c09a1bb7f96760956cc027134",
          "body": "User couldn't see what the LLM actually proposed — the description cell\nwas truncated to 280px and the whole row was inert. Click a row to\ntoggle a detail panel below it that shows description, baseline_value,\nproposed_value, decision_reason, and evidence JSON.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(frontend): expandable hypothesis row on Evolution page",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:51:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a900ef9f6fb70118b9980ef0d7cffb6df0006587",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.7",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:46:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be8014e7e0fb6c813cde3a8900343e8da605168b",
          "body": "8192 was still leaving headroom on the table for modern local models\n(gemma4:e4b — 128K context). Bump to 100000, which stays under the\n131072 config cap while giving gemma comfortable room for any\nJSON output it would reasonably produce.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): raise MaxTokens to 100000 across insight LLM callers",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:46:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "77851ab09249a24ca44803e63a302d79c1d6064c",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.6",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:44:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a44165bd8adc6a2368f1b7464f60af48a4ed949",
          "body": "Gemma4:e4b (and modern OSS models in general) have 128K context\nwindows — capping output at 512-3000 tokens was leaving them no\nroom to emit full JSON structures, causing truncation and\noccasional zero-token replies in evolution/wiki/product_intelligence.\n\nBump to 8192 across all insight LLM callers\n[…]\nrding orchestrator.\n\nConfig default MaxTokens (16384) is unchanged — per-call overrides\nno longer starve local LLM output budgets.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): raise MaxTokens to 8192 across insight LLM callers",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:44:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74d30cbba45a17ab9d1587ddfc2bb0067f95b6b5",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.5",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:42:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe39584c08dc98dc5feced30ccb13d54371537fc",
          "body": "Observed after v0.12.4: evolution evaluator failed with\n\"llm: empty message content in response\" — OllamaClient treated a\n0-token gemma reply as a hard error, hiding which prompt/budget\nproduced it.\n\n- Surface empty content to the caller; ParseJSONResponse already\n  produces a clear \"no JSON found i\n[…]\n4:e4b with\n  format:\"json\" + think:false occasionally emits 0 tokens when the\n  budget is tight; 2048 leaves comfortable headroom.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm,evolution): relax ollama empty-content + raise evaluator budget",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:42:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca8ea3cfe4f3f8499b841196e90e6efb78044c05",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.4",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e5d1be5bde371d18270d61c5612fa14a85bcb73",
          "body": "…inaries\n\nRunning code quality over a tree with training data (.jsonl, .partial,\n.log, .csv) pushed those files through the LLM analyzer. Gemma, given\n32KB of random JSONL records, replied with prose rather than the\nrequired JSON findings array — every file failed with \"no JSON found\nin response\".\n\n\n[…]\n it.\nDocumentation, configs (.md, .json, .yaml, .sql, .sh) are also\nexcluded — LLM code review is for executable source, not docs.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(code_analyst): allowlist source-code extensions; skip data/logs/b…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:36:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e9842042a61df7c9aa114205ee3881c0cc1047f0",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.3",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:33:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35a0522202b05419eda993fad46c352a7d7dbd3d",
          "body": "gemma/llama cez ollamu beží 20-30s/call a každý experiment má 3 LLM calls,\ntakže pôvodný default 120000ms rozdeľovaný medzi 10 hypotéz po 12s hladoval\nkaždý experiment. Navyše sa status='timeout' nastavoval aj keď viacero\nhypotéz reálne dobehlo — UI to prezentovalo ako totálny fail.\n\n- Default Evolu\n[…]\ns → 90s (3× ollama call).\n- Status \"partial\" keď aspoň 1 hypotéza dobehla a outer ctx expiroval;\n  \"timeout\" len pri zero-success.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(evolution): give local LLMs real budget + classify partial runs",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:33:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f4666f9da75ce3f7b01bd59e6b8c124e19d021a",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.2",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:27:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8885bb053e53c876e3d26355af7a19ad2c8ea73a",
          "body": "gemma4:e4b is a thinking model — its internal reasoning trace is\ncounted against num_predict, leaving insufficient budget for the\nactual JSON output. Observed symptom after v0.12.1: evolution\nhypothesis generator failed with \"llm: unterminated JSON\" because\ngemma spent its token budget on thinking a\n[…]\nse on native /api/chat when the caller requests\nformat:\"json\" — thinking tokens are useless when we need structured\noutput anyway.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): disable ollama thinking when ResponseFormat:\"json\"",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:27:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "afbaecf100317366a0b40db321fad0a55e951071",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.1",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:22:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0ac316e7bd547936a3e33c1c1ef1e3c69f9e5ce",
          "body": "…ONResponse\n\ngemma4:e4b via ollama's OpenAI-compat layer silently dropped\nresponse_format:json_object, producing markdown-fenced or prose-wrapped\nreplies that ParseJSONResponse couldn't recover. Evolution, code analysis\nand product_intelligence callers all failed with \"no JSON found in response\"\nor \n[…]\n the\n  caller expected a slice.\n- client.go factory splits \"openai\"/\"ollama\" so ollama provider routes\n  to the new native client.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(llm): native ollama /api/chat with format:\"json\" + harden ParseJS…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T20:22:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a08058caf3f73b6a2e84d55bfdb36b9600dab278",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.12.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-20T17:17:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8cda0ecf19dbd2385ad16c17020f6211b2233814",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.11.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-17T12:14:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9aef5400f059d28715622ba57d82604e94f1772b",
          "body": "… calls\n\nExtends the existing per-provider concurrency semaphore with an optional\nminimum time gap between consecutive requests, shared process-wide per\n(provider, baseURL). Solves z.ai Fair Usage Policy bans triggered by\ncumulative burst traffic on GLM-5.1 / GLM-4.7 (concurrency=1 models)\nwhen sequ\n[…]\nd (backward compatible). Propagated through all 7 call sites\nthat build an llm.Config; validated in [0, 60000]ms at the API layer.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(llm): add min_request_interval_ms to enforce spacing between LLM…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-17T12:14:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6977660aeed3def4d8e3a14dee854d5eacee9d32",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.10.1",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-17T11:04:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0bf2af9f1dc4aa22be10c0f32c14493566b87b3",
          "body": "…nning\n\nsttInstallModel was launched only from the new-container path, so a\ncontainer surviving from a prior stratus serve (process killed\nmid-install, model changed, HF cache wiped) left the model missing\nforever — every transcribe request returned 404. POST /v1/models/{id}\nis idempotent on speaches (409 Conflict treated as success), so it\nis safe to re-invoke on every startup.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(stt): re-trigger model install when speaches container already ru…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-17T11:04:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "09f1b740afd3b42577bfcabbb58659164759a969",
          "body": "Also untracks the repo-root .stratus.json, which was tracked with an\nempty api_key. Local working copy is preserved; only the index entry\nis removed.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: gitignore .stratus.json files (contain LLM API keys)",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-14T10:18:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c2cf00d83b97005105e33cee8480942fb406eda3",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.10.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-14T10:18:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6038f4d375315cd3fe665b9a6ad7571269938068",
          "body": "Major additions this cycle:\n\nKarpathy LLM Wiki pattern (this session)\n- internal/insight/ingest: new pipeline for PDF / URL / YouTube / .md / .txt sources\n- Obsidian inbox watcher (fsnotify) auto-ingests <vault>/00-Inbox drops\n- Bi-directional vault sync: pull YAML-frontmatter .md edits back into DB\n[…]\ned delivery-* agents, bug/spec/swarm skills refreshed\n\n.stratus.json files excluded from commit — they contain local LLM API keys.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: karpathy-style ingest + 6 wiki enhancements, plus accumulated work",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-14T10:17:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "87eaeafa7429906b371b783b2cafbb3d288d0750",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.20",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-10T06:13:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ce32c274f00aa9397c254a2001953b0be05cd8d",
          "body": null,
          "is_bot": false,
          "headline": "feat: onboarding integration, wiki improvements, staleness detection",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-10T06:13:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e272f42a478b66126e71a7d4eb376f6754c00dc8",
          "body": null,
          "is_bot": false,
          "headline": "new",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-09T13:24:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb3fd6c77e52c248b545a91e8249632625769569",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.19",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-09T13:21:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16d0c2ecd17499ab972b435f4492d0b390c3fce7",
          "body": null,
          "is_bot": false,
          "headline": "fixes",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-04-06T17:10:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1cc405f78d06bb753e1be6374df9b30d169b526",
          "body": "Ensures each release creates a proper GitHub Release (not just a git tag)\nso that the dashboard update check via GET /releases/latest works correctly.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build: add gh release create to Makefile release target",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-31T06:48:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adbbcec7967091d3332faedae41a1e99dfb603e9",
          "body": "…ch improvements\n\n- Replace hardcoded {{STRATUS_PORT}} with $(stratus port) in all skill/agent/command\n  files so each project resolves its port dynamically from .stratus.json at runtime.\n  Adds `stratus port` command. Removes bake-at-init substitution from writeAssetsTo.\n- Add swarm forge executor:\n[…]\n cleanup on mission terminal states (complete/failed/aborted)\n- Add files field to tickets for overlap detection; verifying_since to missions\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: dynamic port resolution, swarm forge, guardian timeouts, dispat…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-31T06:47:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b698f3ce42e100834e212af37ae2268a53a44238",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.18",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-31T06:47:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63cebf3894945cd6f348527482472a28e77b7874",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.17",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-31T05:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f12ee1fccc2d45b03524c48aa832505e2bd7164a",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.16",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T19:26:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9529dbe19176ed087ce7c446e2dc732405d4e488",
          "body": "MCP tools are the correct approach for delivery agents. The curl\nreplacement was unnecessary — agents naturally use MCP in their flows.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "revert: restore MCP tool calls in swarm worker instructions",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T19:26:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a71cbfae3115c69389976dde10cf9935df007af4",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.15",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T18:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "711463e8cb2fd50d82c8f70fe51a84c1c1fc8dc3",
          "body": "Delivery agents only have Read/Grep/Glob/Edit/Write/Bash tools — they\ndon't have MCP tools. Workers were silently ignoring all swarm_* calls\nso the dashboard never updated. Now uses REST API via curl instead.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: replace MCP tool calls with curl in swarm worker instructions",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T18:53:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "294d61fcfc5a824337448c4f828245637d221d52",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.14",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T18:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fdf0f22425f7ab192cd95cbaab6405c037011fb",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.13",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T17:59:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d77b6bf914b76d524d98411330fb5121d7c4046",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.12",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:39:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be07749c141bed1649d3a1d3693af07cb34db72a",
          "body": null,
          "is_bot": false,
          "headline": "fix flow type issue",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:39:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "299d99aef3f5f5b2df174fdcf4071dc8e707b112",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.11",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9de033a4063677ddb1f1ea6eac20c1fe62429e3f",
          "body": null,
          "is_bot": false,
          "headline": "hot fix migrations",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:26:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "328da314107c944a22c1c1d5cfce660c81eff79e",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.10",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:24:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fab2b924758cc8e2bd98a675b3e1a57a156b503",
          "body": null,
          "is_bot": false,
          "headline": "inmediatly fix",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:24:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e22086530004a225d168d847b98e0601fee51378",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.9",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:18:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8224fe3f61c3760b7c2e64b219c4c2172c85c784",
          "body": null,
          "is_bot": false,
          "headline": "new functions",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-30T07:17:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9715ad502dd9b2bec6eba0769bfe1b7f9681440",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.8",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T17:48:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "926e6ebf0508c7b1cb5a27216a3f2bf858957794",
          "body": null,
          "is_bot": false,
          "headline": "fix port mismatch issue",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T17:48:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98c17e8fff0fedd8310abe6123407d3d4e893a17",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.7",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T16:19:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c084e99cd344411d4846a6d6cc480a16c0696bc",
          "body": null,
          "is_bot": false,
          "headline": "add another instance",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T16:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4c610fc1f04ba9ce1d936aecade7cb89dd29a35",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.6",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T15:49:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0249b9a5d9f606f990a856455c6bf8c7fb63c33",
          "body": null,
          "is_bot": false,
          "headline": "fizx insight llm api key",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T15:48:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b92a5ae6084ed1bb9fe7e3883cefc016507c05e9",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.5",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T13:24:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e697261b30cd27ff2a5e66dc4b722b64c6a79fe4",
          "body": null,
          "is_bot": false,
          "headline": "new swarm workflow",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T13:24:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "179c10aeb4e2ba39313aed5447c0533c66a76535",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.4",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T11:13:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e935dcc5e4dc08c6bdc7ea4762ba691e385a188",
          "body": null,
          "is_bot": false,
          "headline": "fix",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T11:12:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12e910f6a257c1725e902bcf382578c96217f480",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.3",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T11:07:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6994fd676157ea2273b9f570e03e40d1350eb86",
          "body": null,
          "is_bot": false,
          "headline": "fix opencode agents loading",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T11:06:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a5515eb31579e2bb6a76341b06bf593f320725c",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.2",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T11:03:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68bb0c02f202780fa1b5ff28c69152b04a77ff2c",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.1",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T10:53:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adc53cd129d491212b714ef3936dd5809b752013",
          "body": "- Add GET/PUT /api/insight/config endpoints\n- Fix hardcoded enabled:true in /api/insight/status (now reflects actual state)\n- Add Insight section to Settings with enable toggle, interval, LLM config\n- Show clear disabled banner in Insight page when engine is not running\n- InsightConfig type + API functions in frontend\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add Insight config UI and disabled state",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T10:53:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b424eb4eee682dceae968129d133279f8bae8b53",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.9.0",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T09:08:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d36e32e47c5afc4c0c51a21dfbf37c51cb618fa",
          "body": "The phase routing functionality caused more problems than it solved.\nRemoves executor routing guard, handoff detection, Settings UI section,\nAPI endpoints, and OpenCode plugin integration for phase assignments.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: remove Phase Routing (CC/OC Collaboration) feature",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T09:06:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cf5fbe4fdfc8f6cafc6609d8714b55fed7f7258",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.8.6",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:39:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b12f01276c76cefcfc47d4b670708881fc8676cc",
          "body": null,
          "is_bot": false,
          "headline": "release: v0.8.6",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:24:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62a6e4987f5a2f9a1abbd6d051d0a479acbdfeff",
          "body": null,
          "is_bot": false,
          "headline": "feat: add create-agent skill",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:23:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b035a381c0198f1d619a8596d0206017c171ea0d",
          "body": "…, tags, pushes)",
          "is_bot": false,
          "headline": "build: add release target to Makefile (bumps version, builds frontend…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:20:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0c234e533a51ac498f82f2a2fd0dbccdcb8290f",
          "body": "Includes: phase routing UI, metrics routes fix, Insight loading fix,\nswarm inline visualization, learning lazy-load.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build: rebuild frontend static assets for v0.8.3–v0.8.5",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:19:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "445fe3da5c404748c69eba0a2c58a477ce3a8b75",
          "body": "…to v0.8.5\n\n- Embed swarm mission detail (workers, tickets, graph) directly in the [SWARM]\n  workflow card instead of a separate collapsible section; show \"Awaiting dispatch...\"\n  when in plan phase before mission is created\n- Add 5s polling for swarm mission detail so graph stays live even if WS events are missed\n- Learning: load candidates lazily on tab switch, filter to pending-only (hide stale proposed/decided)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: inline swarm visualization, lazy-load learning candidates, bump …",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T08:14:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7cd8ab347205c30a06ef45b1a80bbbedb50151eb",
          "body": "- Add /api/metrics/* handlers (summary, daily, agents, projects, workflows, aggregate)\n  to fix JSON parse error on Analytics page (SPA fallback was returning HTML)\n- Fix Insight page Run Analysis button stuck in disabled state (loading never reset to false)\n- Agents.svelte changes from previous session\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: metrics API routes, Insight loading state, bump to v0.8.4",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T07:37:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "814eb0066aad7479268267ecaa652ada0e1d346e",
          "body": "Allows individual workflow phases to be assigned to Claude Code (cc)\nor OpenCode (oc). When enabled, the wrong executor is blocked with a\nclear handoff message.\n\n- config: PhaseRoutingConfig with enabled flag + per-workflow phase maps\n- api: GET/PUT /api/config/phase-routing endpoints\n- hooks: Execu\n[…]\nools)\n- frontend: Phase Routing section in Settings with enable toggle,\n  per-phase executor selects, and handoff indicators\n- bump to v0.8.3\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: CC/OC phase-level collaboration with executor routing",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T07:23:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f916369cf8f8825fb25da42cf0da670ef3eff7d5",
          "body": "…cs build\n\n- Add agentFilter state + filteredAgentNames derived in Agents.svelte\n- Format-filter toggle bar shows between view-tabs and New Agent button\n- Fix Analytics.svelte: add missing MetricsSummary/DailyMetric/AgentMetric types,\n  add getMetricsSummary + getWorkflowMetrics to api.ts, add response types to types.ts\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: agent filter toggle (All / CC / OC) on Agents page, fix Analyti…",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T06:21:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5e1bb957b3df19ac2cef22b256ab46d78212bde8",
          "body": "- Initialize ResourceDirs as []string{} in parser.go so JSON serializes as [] not null\n- Guard skill.resource_dirs?.length in Agents.svelte to prevent TypeError\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: agents page crash when resource_dirs is null, bump to v0.8.2",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-29T06:09:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "686ee57efe04988d3c11e3864dedcf6bc5466373",
          "body": "- swarm flow: integrate SwarmGraph (SVG dependency graph) into Overview with List/Graph toggle\n- swarm: add GET /api/swarm/missions/{id}/files endpoint for file reservations\n- frontend: add SwarmFileReservation type, getMissionFiles API fn, fix @typescript-eslint/types dep\n- guardian: ambient codebase monitor (checks, LLM integration, alerts)\n- add summary route and orchestration updates\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bump version to 0.8.1",
          "author_name": "MartinNevlaha",
          "author_login": "MartinNevlaha",
          "committed_at": "2026-03-28T21:10:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 86,
      "commits_last_year": 230,
      "latest_release_at": "2026-07-17T14:00:29Z",
      "latest_release_tag": "v0.14.6",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 9.7
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/MartinNevlaha/stratus-v2",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/MartinNevlaha/stratus-v2",
          "is_deprecated": false,
          "latest_version": "v0.14.6",
          "repository_url": "https://github.com/MartinNevlaha/stratus-v2",
          "versions_count": 121,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:00:04Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "frontend/tsconfig.json"
      ],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 660867,
      "source_files_sampled": 349,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 5194
    },
    "dependencies": {
      "manifests": [
        "frontend/package.json",
        "go.mod"
      ],
      "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": [
        "go",
        "npm"
      ],
      "dependencies": [
        {
          "name": "@types/d3-force",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.10"
        },
        {
          "name": "@xterm/addon-fit",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.10.0"
        },
        {
          "name": "@xterm/xterm",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.5.0"
        },
        {
          "name": "chart.js",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.5.1"
        },
        {
          "name": "d3-force",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "dompurify",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "marked",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.0.0"
        },
        {
          "name": "svelte-chartjs",
          "manifest": "frontend/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.1"
        },
        {
          "name": "github.com/creack/pty",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.24"
        },
        {
          "name": "github.com/google/uuid",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "golang.org/x/sync",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.20.0"
        },
        {
          "name": "modernc.org/sqlite",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.46.1"
        },
        {
          "name": "nhooyr.io/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.8.17"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 1,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "MartinNevlaha",
          "commits": 230,
          "avatar_url": "https://avatars.githubusercontent.com/u/51342345?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "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": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "77dcc14485661fcf3f6643b5204a6abe1c6a82a8",
        "ran_at": "2026-07-23T04:13:58Z",
        "aggregate_score": 2.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T14:00:17Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-03-28T19:37:56Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/MartinNevlaha/stratus-v2",
    "host": "github.com",
    "name": "stratus-v2",
    "owner": "MartinNevlaha"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 46,
      "inputs": {
        "security": 22,
        "vitality": 83,
        "community": 12,
        "governance": 51,
        "engineering": 48
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 83,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "commits_last_year": 230,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "230 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 230
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 86,
              "latest_release_tag": "v0.14.6",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 9.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "86 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 86
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~9.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 9.7
                    }
                  }
                ],
                "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": 12,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "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": 51,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/1 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 1
                    }
                  }
                ],
                "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": "at_risk",
            "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": 40,
            "inputs": {
              "followers": 1,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "MartinNevlaha",
              "public_repos": 10,
              "account_age_days": 2606
            },
            "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": "1 followers of MartinNevlaha",
                "points": 2.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1,
                      "login": "MartinNevlaha"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "10 public repos, account ~7 yr old",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 10
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/MartinNevlaha/stratus-v2"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "121 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 121
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 48,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 22,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 22,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "19 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 75,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.88,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 5194
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "88 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 88,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 79,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "frontend/tsconfig.json"
              ],
              "agent_commit_share": 0.34,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "frontend/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "frontend/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "34 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 34,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 660867,
              "source_files_sampled": 349,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/349 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 349,
                      "oversized": 1
                    }
                  }
                ],
                "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-23T04:14:02.994361Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/MartinNevlaha/stratus-v2.svg",
  "full_name": "MartinNevlaha/stratus-v2",
  "license_state": "absent",
  "license_spdx": null
}

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