Registro público
Informe de salud del softwareesquema 0.31.0 · métricas 2.5.0 · 2026-08-05 09:34 UTC

kairos-io / kairos-operator

GoApache-2.0★ 8 estrellas⑂ 9 forksdesde abr 2024Ver en GitHub ↗
TipoBibliotecaAplicacióncómo se determina

kairos-io/kairos-operator tiene un índice de salud de 75 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (87/100) y la más baja, Community & Adoption (35/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

75
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

75
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas 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.

El resultado global ponderado 65 se calibra a 75 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

KairosOrganización
149 seguidores57 repositorios públicosdesde ago 2022

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/kairos-io/kairos-operatorv0.1.2-24hace 8 días

Métricas por categoría

Vitalidad

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

87Excelente · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
13.8/36Cadencia de commits — 20/52 semanas con commits
18/18Volumen de commits — 109 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year109
human_commit_share0,4
days_since_last_push0
active_weeks_last_year20
Cómo se puntúa
27/27Publica versiones — 24 versiones publicadas
36/36Recencia de las versiones — última versión hace 8 días
27/27Cadencia de publicación — una versión cada ~16,1 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count24
latest_release_tagv0.1.2
releases_from_tagsno
days_since_latest_release8
mean_days_between_releases16,1
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

35Débil · 17% del índice global
Cómo se puntúa
13.7/60Estrellas — 8 estrellas
7.5/25Forks — 9 forks
0/15Observadores — 2 observadores
Datos de entrada utilizados
forks9
stars8
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges1
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_servicesgithub.com
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?

65Bueno · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
2.1/22.5Distribución de commits — el principal contribuyente firma el 90% de los commits
10.8/13.5Amplitud de contribuyentes — 8 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Datos de entrada utilizados
bus_factor1
contributors_sampled8
top_contributor_share0,905
Cómo se puntúa
26.7/42Resolución de issues — 64% de issues cerradas
27/30Aceptación de PR — 125/139 PR decididos fusionados
13/13Newcomer PR acceptance — 3/3 PR de contribuyentes primerizos fusionados en 30 d
10.5/15OpenSSF Scorecard: Code-Review — Found 5/7 approved changesets -- score normalized to 7
Datos de entrada utilizados
merged_prs125
open_issues4
closed_issues7
prs_merged_7d1
prs_decided_7d1
prs_merged_30d5
prs_decided_30d6
issue_closed_ratio0,636
closed_unmerged_prs14
first_time_authors_30d1
first_time_prs_merged_30d3
first_time_prs_decided_30d3
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
15.6/25Alcance del propietario — 149 seguidores de kairos-io
20.7/25Trayectoria — 57 repos públicos, cuenta de ~3 años
Datos de entrada utilizados
followers149
owner_typeOrganization
is_verified
owner_loginkairos-io
public_repos57
account_age_days1434
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 24 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/kairos-io/kairos-operator
ecosystemsgo
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

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

61Moderado · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 5 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml
0/9.6Hooks de pre-commit
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 26 out of 28 merged PRs checked by a CI test -- score normalized to 9
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

30En riesgo
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dirno
has_descriptionno

Seguridad

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

68Bueno · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.2/2.5CI-Tests — 26 out of 28 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
5.2/7.5Code-Review — Found 5/7 approved changesets -- score normalized to 7
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 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 — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate6
Excluidos de la puntuación (sin datos o no aplicable): packaging, pinned_dependencies, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories7
affected_packages5
assessed_packages92
unassessed_packages0
affected_by_severitycritical 1, high 1, moderate 1, unknown 2
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 92 dependencias resueltas con OSV. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

73Bueno · 4% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 35 de 40 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,875
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — devcontainer, Dockerfile, lockfile
10/10Práctica demostrada con agentes — 11 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 49 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum
has_dockerfile
typed_language
bootstrap_filesMakefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0,11
toolchain_manifestsgo.mod
dependency_bot_commit_share0,49
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)
53.7/55Tamaños de archivo manejables — 1/43 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes126.092
source_files_sampled43
oversized_source_files1
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples, samples
Datos de entrada utilizados
example_dirsexamples, samples
has_mcp_signalno
api_schema_files

Datos clave

8estrellas de GitHub
8contribuidores
109commits en los últimos 12 meses
0días desde el último push
24versiones publicadas
1factor bus
4issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Más detalle

Historial de estrellas y forks 0 ★ / 9 ⇿
0Estrellas
9Forks
13Versiones

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

0246810912025-102026-032026-07
Mayor 0Menor 1Parche 4
OpenSSF Scorecard 6.0 / 10
6.0agregado

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-08-05 09:33 UTC

10Binary-Artifactsno binaries found in the repo
5Branch-Protectionbranch protection is not maximal on development and all release branches
9CI-Tests26 out of 28 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
7Code-ReviewFound 5/7 approved changesets -- score normalized to 7
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesinternal error: internal error: invalid Dockerfile
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
5Vulnerabilities5 existing vulnerabilities detected
Dependencias directas 8
RegistroPaqueteRestricción de versiónManifiesto
Goal.essio.dev/pkg/shellescapev1.6.0go.mod
Gogithub.com/onsi/ginkgo/v2v2.32.0go.mod
Gogithub.com/onsi/gomegav1.42.1go.mod
Gok8s.io/apiv0.36.3go.mod
Gok8s.io/apimachineryv0.36.3go.mod
Gok8s.io/client-gov0.36.3go.mod
Gosigs.k8s.io/controller-runtimev0.24.1go.mod
Gosigs.k8s.io/yamlv1.6.0go.mod
Todas las dependencias 92

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 8 paquetes directos y 84 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
Goal.essio.dev/pkg/shellescapev1.6.0directa
Gogithub.com/onsi/ginkgo/v2v2.32.0directa
Gogithub.com/onsi/gomegav1.42.1directa
Gok8s.io/apiv0.36.3directa
Gok8s.io/apimachineryv0.36.3directa
Gok8s.io/client-gov0.36.3directa
Gosigs.k8s.io/controller-runtimev0.24.1directa
Gosigs.k8s.io/yamlv1.6.0directa
Gocel.dev/exprv0.25.1indirecta
Gogithub.com/antlr4-go/antlr/v4v4.13.0indirecta
Gogithub.com/beorn7/perksv1.0.1indirecta
Gogithub.com/blang/semver/v4v4.0.0indirecta
Gogithub.com/cenkalti/backoff/v5v5.0.3indirecta
Gogithub.com/cespare/xxhash/v2v2.3.0indirecta
Gogithub.com/davecgh/go-spewv1.1.2-0.20180830191138-d8f796af33ccindirecta
Gogithub.com/emicklei/go-restful/v3v3.13.0indirecta
Gogithub.com/evanphx/json-patch/v5v5.9.11indirecta
Gogithub.com/felixge/httpsnoopv1.0.4indirecta
Gogithub.com/fsnotify/fsnotifyv1.9.0indirecta
Gogithub.com/fxamacker/cbor/v2v2.9.0indirecta
Gogithub.com/go-logr/logrv1.4.3indirecta
Gogithub.com/go-logr/stdrv1.2.2indirecta
Gogithub.com/go-logr/zaprv1.3.0indirecta
Gogithub.com/go-openapi/jsonpointerv0.21.0indirecta
Gogithub.com/go-openapi/jsonreferencev0.20.2indirecta
Gogithub.com/go-openapi/swagv0.23.0indirecta
Gogithub.com/go-task/slim-sprig/v3v3.0.0indirecta
Gogithub.com/google/cel-gov0.26.0indirecta
Gogithub.com/google/gnostic-modelsv0.7.0indirecta
Gogithub.com/google/go-cmpv0.7.0indirecta
Gogithub.com/google/pprofv0.0.0-20260402051712-545e8a4df936indirecta
Gogithub.com/google/uuidv1.6.0indirecta
Gogithub.com/grpc-ecosystem/grpc-gateway/v2v2.27.7indirecta
Gogithub.com/inconshreveable/mousetrapv1.1.0indirecta
Gogithub.com/josharian/internv1.0.0indirecta
Gogithub.com/json-iterator/gov1.1.12indirecta
Gogithub.com/mailru/easyjsonv0.7.7indirecta
Gogithub.com/masterminds/semver/v3v3.4.0indirecta
Gogithub.com/modern-go/concurrentv0.0.0-20180306012644-bacd9c7ef1ddindirecta
Gogithub.com/modern-go/reflect2v1.0.3-0.20250322232337-35a7c28c31eeindirecta
Gogithub.com/munnerz/goautonegv0.0.0-20191010083416-a7dc8b61c822indirecta
Gogithub.com/pmezard/go-difflibv1.0.1-0.20181226105442-5d4384ee4fb2indirecta
Gogithub.com/prometheus/client_golangv1.23.2indirecta
Gogithub.com/prometheus/client_modelv0.6.2indirecta
Gogithub.com/prometheus/commonv0.67.5indirecta
Gogithub.com/prometheus/procfsv0.19.2indirecta
Gogithub.com/spf13/cobrav1.10.2indirecta
Gogithub.com/spf13/pflagv1.0.9indirecta
Gogithub.com/stoewer/go-strcasev1.3.0indirecta
Gogithub.com/x448/float16v0.8.4indirecta
Gogo.opentelemetry.io/auto/sdkv1.2.1indirecta
Gogo.opentelemetry.io/contrib/instrumentation/net/http/otelhttpv0.65.0indirecta
Gogo.opentelemetry.io/otelv1.41.0indirecta
Gogo.opentelemetry.io/otel/exporters/otlp/otlptracev1.40.0indirecta
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcv1.40.0indirecta
Gogo.opentelemetry.io/otel/metricv1.41.0indirecta
Gogo.opentelemetry.io/otel/sdkv1.40.0indirecta
Gogo.opentelemetry.io/otel/tracev1.41.0indirecta
Gogo.opentelemetry.io/proto/otlpv1.9.0indirecta
Gogo.uber.org/multierrv1.11.0indirecta
Gogo.uber.org/zapv1.27.1indirecta
Gogo.yaml.in/yaml/v2v2.4.3indirecta
Gogo.yaml.in/yaml/v3v3.0.4indirecta
Gogolang.org/x/expv0.0.0-20251219203646-944ab1f22d93indirecta
Gogolang.org/x/modv0.36.0indirecta
Gogolang.org/x/netv0.56.0indirecta
Gogolang.org/x/oauth2v0.34.0indirecta
Gogolang.org/x/syncv0.21.0indirecta
Gogolang.org/x/sysv0.46.0indirecta
Gogolang.org/x/termv0.44.0indirecta
Gogolang.org/x/textv0.38.0indirecta
Gogolang.org/x/timev0.14.0indirecta
Gogolang.org/x/toolsv0.45.0indirecta
Gogomodules.xyz/jsonpatch/v2v2.4.0indirecta
Gogoogle.golang.org/genproto/googleapis/apiv0.0.0-20260128011058-8636f8732409indirecta
Gogoogle.golang.org/genproto/googleapis/rpcv0.0.0-20260128011058-8636f8732409indirecta
Gogoogle.golang.org/grpcv1.79.3indirecta
Gogoogle.golang.org/protobufv1.36.12-0.20260120151049-f2248ac996afindirecta
Gogopkg.in/evanphx/json-patch.v4v4.13.0indirecta
Gogopkg.in/inf.v0v0.9.1indirecta
Gogopkg.in/yaml.v3v3.0.1indirecta
Gok8s.io/apiextensions-apiserverv0.36.0indirecta
Gok8s.io/apiserverv0.36.0indirecta
Gok8s.io/component-basev0.36.0indirecta
Gok8s.io/klog/v2v2.140.0indirecta
Gok8s.io/kube-openapiv0.0.0-20260317180543-43fb72c5454aindirecta
Gok8s.io/streamingv0.36.3indirecta
Gok8s.io/utilsv0.0.0-20260210185600-b8788abfbbc2indirecta
Gosigs.k8s.io/apiserver-network-proxy/konnectivity-clientv0.34.0indirecta
Gosigs.k8s.io/jsonv0.0.0-20250730193827-2d320260d730indirecta
Gosigs.k8s.io/randfillv1.0.0indirecta
Gosigs.k8s.io/structured-merge-diff/v6v6.3.3indirecta
Avisos de dependencias 5

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 92 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 5 tienen avisos conocidos, de los cuales 0 son directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
google.golang.org/grpcv1.79.3indirectacrítica21.82.1
go.opentelemetry.io/otel/sdkv1.40.0indirectaalta21.43.0
github.com/google/cel-gov0.26.0indirectamoderada10.29.0
go.opentelemetry.io/otelv1.41.0indirectadesconocida11.44.0
golang.org/x/textv0.38.0indirectadesconocida10.39.0

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "icon": {
      "bytes": 12054,
      "width": 256,
      "height": 256,
      "rejected": [],
      "collected": true,
      "media_type": "image/png",
      "source_url": "https://avatars.githubusercontent.com/u/112549704?v=4&s=256",
      "source_type": "avatar",
      "content_hash": "74187a65f3a3f7e117953d9599402ee3a73489740ed503a1e2decfad8fbaab08",
      "candidates_considered": 1
    },
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 651,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "Go": 637382,
        "Shell": 603,
        "Makefile": 12682,
        "Dockerfile": 1756
      },
      "pushed_at": "2026-08-05T05:47:19Z",
      "created_at": "2024-04-16T08:40:11Z",
      "owner_type": "Organization",
      "updated_at": "2026-08-03T17:26:54Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "https://kairos.io",
      "name": "Kairos",
      "type": "Organization",
      "login": "kairos-io",
      "company": null,
      "location": null,
      "followers": 149,
      "avatar_url": "https://avatars.githubusercontent.com/u/112549704?v=4",
      "created_at": "2022-08-31T09:42:28Z",
      "is_verified": null,
      "public_repos": 57,
      "account_age_days": 1434
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-07-28T06:23:19Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-07-22T05:36:36Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-07-02T10:05:23Z"
        },
        {
          "tag": "v0.1.0-beta8",
          "kind": "prerelease",
          "published_at": "2026-06-25T07:58:39Z"
        },
        {
          "tag": "v0.1.0-beta7",
          "kind": "prerelease",
          "published_at": "2026-06-04T06:17:28Z"
        },
        {
          "tag": "v0.1.0-beta6",
          "kind": "prerelease",
          "published_at": "2026-04-22T13:14:24Z"
        },
        {
          "tag": "v0.1.0-beta5",
          "kind": "prerelease",
          "published_at": "2026-04-09T07:29:34Z"
        },
        {
          "tag": "v0.1.0-beta4",
          "kind": "prerelease",
          "published_at": "2026-04-02T10:10:37Z"
        },
        {
          "tag": "v0.1.0-beta3",
          "kind": "prerelease",
          "published_at": "2026-03-19T08:47:03Z"
        },
        {
          "tag": "v0.1.0-beta2",
          "kind": "prerelease",
          "published_at": "2026-03-05T12:25:49Z"
        },
        {
          "tag": "v0.1.0-beta1",
          "kind": "prerelease",
          "published_at": "2026-03-03T14:43:47Z"
        },
        {
          "tag": "v0.0.7",
          "kind": "patch",
          "published_at": "2026-02-19T07:25:35Z"
        },
        {
          "tag": "v0.0.6",
          "kind": "patch",
          "published_at": "2026-02-17T10:36:11Z"
        },
        {
          "tag": "v0.0.5",
          "kind": "patch",
          "published_at": "2026-01-27T12:44:02Z"
        },
        {
          "tag": "v0.0.4",
          "kind": "patch",
          "published_at": "2026-01-21T11:21:35Z"
        },
        {
          "tag": "v0.0.3",
          "kind": "patch",
          "published_at": "2025-08-27T08:56:17Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2025-08-07T06:56:40Z"
        },
        {
          "tag": "v0.0.1",
          "kind": "patch",
          "published_at": "2025-06-10T11:58:26Z"
        },
        {
          "tag": "v0.0.1-rc6",
          "kind": "prerelease",
          "published_at": "2025-06-10T10:58:17Z"
        },
        {
          "tag": "v0.0.1-rc5",
          "kind": "prerelease",
          "published_at": "2025-06-10T10:38:04Z"
        },
        {
          "tag": "v0.0.1-rc4",
          "kind": "prerelease",
          "published_at": "2025-05-28T14:25:56Z"
        },
        {
          "tag": "v0.0.1-rc3",
          "kind": "prerelease",
          "published_at": "2025-05-28T13:54:35Z"
        },
        {
          "tag": "v0.0.1-rc2",
          "kind": "prerelease",
          "published_at": "2025-05-28T12:35:21Z"
        },
        {
          "tag": "v0.0.1-rc1",
          "kind": "prerelease",
          "published_at": "2025-05-28T07:25:18Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "8338731801be8ddccaee740f53420189dbc0ff78",
          "body": "Signed-off-by: Bohdan Leshchenko <bohdan.leshchenko1@gmail.com>",
          "is_bot": false,
          "headline": "feat: artifact name override (#154)",
          "author_name": "Bohdan Leshchenko",
          "author_login": "thebhdn",
          "committed_at": "2026-08-03T09:43:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c05c64cdfe76871f7ca2fc78c9450b7f43a339ef",
          "body": "Aligns the operator's baked-in KAIROS_INIT default with the version\npinned in kairos-io/kairos images/Dockerfile on master (was v0.7.0,\nnow v0.16.1). Also updates the two example manifests that reference\nthe same tag so users see the current version.\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "chore: bump default kairos-init to v0.16.1",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-30T14:09:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e70019d2306b7eab305fefe8c7c186c93d83e45",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.2 (#151)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-28T06:42:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ef4f75c2e89bc98691518a0e344358abcacec7d",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update quay.io/kairos/operator Docker tag to v0.1.2 (#152)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-28T06:41:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07eb9a2a7f991d11846b6787024aa4ee90971c07",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/login-action digest to abd2ef4 (#149)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-28T06:22:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c7aab71267bf600d0bf634a82665cbe673ac511",
          "body": "…ged files (#150)\n\n* feat(nodeopupgrade): expose ExcludePaths and always exclude host-managed files\n\nPasses each path in Spec.ExcludePaths as a --exclude-path arg to\n`kairos-agent upgrade` so those host paths are preserved by the upgrade\nrsync. Always prepends /etc/hostname and /etc/hosts because th\n[…]\narakasilis.me>\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(nodeopupgrade): expose ExcludePaths and always exclude host-mana…",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-28T06:20:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64f59efb98daa711703fdaad120d2cb37a196769",
          "body": "Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "`make manifests`",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-27T09:47:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e718df21b22d2ae7a0ef56fde42790ca44e5f85e",
          "body": "Signed-off-by: Bohdan Leshchenko <bohdan.leshchenko1@gmail.com>",
          "is_bot": false,
          "headline": "refactor: move defer to BeforeEach in nodeop ctrl tests (#148)",
          "author_name": "Bohdan Leshchenko",
          "author_login": "thebhdn",
          "committed_at": "2026-07-27T07:12:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a100cf84cc6c74c36a59d62490d727fc2c84d43",
          "body": "* feat(ctrl): set hostMountPath dir\n\nSigned-off-by: Bohdan Leshchenko <bohdan.leshchenko1@gmail.com>\n\n* chore: add test & move var to const\n\nSigned-off-by: Bohdan Leshchenko <bohdan.leshchenko1@gmail.com>\n\n---------\n\nSigned-off-by: Bohdan Leshchenko <bohdan.leshchenko1@gmail.com>",
          "is_bot": false,
          "headline": "feat(ctrl): set hostMountPath dir (#145)",
          "author_name": "Bohdan Leshchenko",
          "author_login": "thebhdn",
          "committed_at": "2026-07-24T06:37:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87ed8d70e553f9d20f23431858e44ac3628594bb",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update kubernetes to v0.36.3 (#146)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-24T05:52:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30f287b7001ce3bb4e25966f34519142f106a91e",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/login-action digest to 06fb636 (#147)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-24T05:51:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e7bd08607b8d32bebad48fd6b85584e56cb5dc4",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.1 (#143)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T05:59:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4530931060c16d80e8a85506502f6944f127b143",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update quay.io/kairos/operator Docker tag to v0.1.1 (#144)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-22T05:56:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "507bf98d49c46894608113b49ca09b5aa21b0293",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update gcr.io/distroless/static:nonroot Docker digest to f7f8f72 (#138)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-22T05:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58387cca5524a7298b6b9ef5ed17670f59123cd2",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/setup-go action to v7 (#140)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-22T05:26:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b8e2c3d3c9f98428e45fd2a3c5c4a14ea52c655",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker.io/golang:1.26.5 Docker digest to 3aff665 (#139)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-22T05:25:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f52e8e634b0a17b7b72f4c6b7dab40c2200dff3f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout digest to 3d3c42e (#141)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-22T05:22:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4c2b928969837ce8e6fc31295632744486bc661",
          "body": "…init ref (#142)\n\nThe default OCI build template hardcoded quay.io/kairos/kairos-init as\nthe base for the kairos-init stage. Callers that want to pin the full\nref (for example, an air-gapped mirror or a specific SHA) had to fall\nback to the OCISpec advanced mode and write their own Dockerfile.\n\nAdd \n[…]\ns-init actually runs; the\npre-built Ref path and OCISpec-only path do not use it.\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(build): add BuildOptions.KairosInitImage to override the kairos-…",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-22T05:20:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0adbacccc1386c14d97e735b3cd07f4160b214d8",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker.io/golang Docker tag to v1.26.5 (#136)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-14T08:49:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c99dfac6f34c99eefb1d3f2d87f0d9d0171ccbd9",
          "body": null,
          "is_bot": true,
          "headline": "Update docker/login-action digest to af1e73f (#135)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-08T09:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e999015df5e3390821497589f839f0e07161699f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/setup-buildx-action digest to bb05f3f (#133)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T10:27:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fb00059f02611d0449c14e9c872169bcc2b9707",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0 (#132)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-02T10:26:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "438204ad27ec6ab3a2a666175a50890db078eddb",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update quay.io/kairos/operator Docker tag to v0.1.0 (#134)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T10:25:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "450f0cea1ff3a31f26e4399c28c555e80fef3d8d",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/login-action digest to c99871d (#130)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T09:28:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b4c8ac60f577811d94a8791be3e1fb2452f389b",
          "body": "…v4 (#131)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update ghcr.io/devcontainers/features/docker-in-docker Docker tag to …",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T09:28:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f74214873d809a44f7589fd64e77c2e34e67100",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout action to v7 (#129)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T08:57:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f1a9aa43af508ce6caf8e392ac28195be055a8d",
          "body": "* Update kubernetes monorepo to v0.36.2\n\n* fix(deps): bump controller-runtime to v0.24.1 for k8s.io v0.36 compatibility\n\nk8s.io/client-go v0.36 adds a HasSyncedChecker method to the\nResourceEventHandlerRegistration interface, which controller-runtime\nv0.23.3 does not implement. Bumping to v0.24.1 re\n[…]\ned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\nCo-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": true,
          "headline": "Update kubernetes monorepo to v0.36.2 (#93)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T08:52:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "93d440e68cf0f12cd7bf22e28d5917dc41247f5c",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update azure/setup-kubectl digest to 8293235 (#91)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:42:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4308b2be7e72937bb49c9eda891a50f9c4934496",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update gcr.io/distroless/static:nonroot Docker digest to 963fa6c (#102)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:40:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cfbaaf76af2c95a351c302513b7e10dc08719859",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update module github.com/onsi/ginkgo/v2 to v2.32.0 (#98)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:32:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b78faa2d419050fbd622090a2e762f31fe9d1a3c",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update alpine Docker tag to v3.24 (#127)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:31:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35d956e900215e5c2e4ff3148809824d52c0c526",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/build-push-action digest to 53b7df9 (#89)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:29:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c87cdbd2c7c140b230c200c87526e2cfda4b5424",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/setup-qemu-action digest to 96fe6ef (#125)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:27:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "470f22feb0c5f60c029763150d532c7be7caad31",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update golangci/golangci-lint-action digest to ba0d7d2 (#126)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:26:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4da010fa6338bd9351c79f8428db5f45ddf087a5",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update alpine:3.23 Docker digest to fd791d7 (#92)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:25:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "869b6203f11776a37c5d7f6d0aea84071c1c4855",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/setup-buildx-action digest to d7f5e7f (#124)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T06:22:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6b7dd459af39af5b53285142db52d49e67bc634",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update module github.com/onsi/gomega to v1.42.1 (#100)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T05:59:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "182de06886bf50804e19b47d5f3ef4ff2cf575a5",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/setup-go digest to 924ae3a (#117)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T05:59:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89554f020a2108130cd625b7c950fca69540923f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/login-action digest to 650006c (#118)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T05:58:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f9a8a1fa9648aeaf528794b69e377ae6e4ba16e",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker.io/golang:1.26.4 Docker digest to f96cc55 (#119)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-02T05:57:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e76a6f25438974e1bc543e93bf19590d263c63d",
          "body": "…ure (#123)\n\n* feat(nodeop): add UncordonOnFailure to recover cordoned nodes on failure\n\nAdd an opt-in UncordonOnFailure field to NodeOpSpec (default false). When\ntrue and the node was cordoned by this NodeOp, the operator uncordons the\nnode after its job fails, instead of leaving it unschedulable. \n[…]\nch the helper already\ndoes.\n\nAddresses review feedback on #123.\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "feat(nodeop): add UncordonOnFailure to recover cordoned nodes on fail…",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-02T05:56:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9304a8da23f1f3e8672134e8ed7e3c7157f2b011",
          "body": "As discussed here:\n\nhttps://github.com/kairos-io/kairos/issues/4108#issuecomment-4798955031\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Add debug flag to NodeOpUpgrade (#122)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-07-01T11:01:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba141bf89073e2576c9a51af2bebe4641e3fe0a6",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0-beta8 (#120)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-25T11:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c41306af3a5d4b0f248fbeef3c3d36d63106835",
          "body": "* feat: pass --allow-insecure-registries to unpack of image.ref\n\nWhen PullInsecureRegistry is set, auroraboot unpack of a pre-built image.ref\nnow allows plain HTTP / untrusted TLS registries.\n\nPart of https://github.com/kairos-io/kairos/issues/4081\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <nore\n[…]\ned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Allow insecure registries (#116)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-06-25T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5cb96478183f488c805557c9a82c3836362653b2",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout digest to df4cb1c (#114)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-24T14:27:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5569533929cac5ccc1f10145a33d3da5d844076f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker.io/golang:1.26.4 Docker digest to 8f4cb3b (#115)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-24T14:26:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71cab7e427675172a5afa36e113327834bdc933a",
          "body": "* chore(deps): bump x/crypto, x/net and go to fix CVEs\n\n## Summary\nBumps vulnerable golang.org/x dependencies and aligns the go directive to 1.26.4.\n\n## Advisories addressed\n- golang.org/x/crypto (>=v0.52.0): GO-2026-5005, GO-2026-5006, GO-2026-5017, GO-2026-5019, GO-2026-5020, GO-2026-5021, GO-2026\n[…]\nsor <cursoragent@cursor.com>\nSigned-off-by: Mauro Morales <contact@mauromorales.com>\n\n---------\n\nSigned-off-by: Mauro Morales <contact@mauromorales.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "chore(deps): bump x/crypto, x/net and go to fix CVEs (#113)",
          "author_name": "Mauro Morales",
          "author_login": "mauromorales",
          "committed_at": "2026-06-08T08:55:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "809ed1666667b957fab9331943d952c44524aa29",
          "body": "* Implement pre-flight check and skip upgrading Node that are no-op\n\nThis is a generic mechanism that we also leverage to avoid draining and\ncordoning Nodes that are on the same image as the upgrade one. The old\nsolution skipped the upgrade itself, but still cordonded and drained the\nNodes and also \n[…]\nakasilis <dimitris@karakasilis.me>\n\n* Create preflight e2e test\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Implement pre-flight check and skip upgrading Node that are no-op (#111)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-06-04T06:15:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17d09fbb57ba0bbb705b3debe628e4ab1ac4b452",
          "body": "Fixes https://github.com/kairos-io/kairos/issues/4093\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Alway sort control plane nodes first (#108)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-06-01T11:02:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ab1138ca056b39ce8e8044e3df434968fd865ed",
          "body": "* Keep track of who cordoned a Node\n\nand don't uncordon it if it wasn't done by our operator of NodeOp\n\nFixes https://github.com/kairos-io/kairos-operator/issues/105\n\nAuthored with Claude AI\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Address copilot review suggestions\n\nSigned-\n[…]\n.com/kairos-io/kairos-operator/pull/106#issuecomment-4517810914\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Keep track of who cordoned a Node (#106)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-05-22T12:51:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "952b494c0c15973cef81a058db09e602e8fc7779",
          "body": "* Specify the golangci-lint version in only one place\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Fixing linting errors\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Fix linter (#107)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-05-22T08:49:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e83a5364b0985967f161e489b36e85b7dbe7c8d8",
          "body": "* Pass down selector,affinity and tolerations to the builder Job\n\nFixes: https://github.com/kairos-io/kairos/issues/455\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Also pass down labels and annotations\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Generate m\n[…]\ntris@karakasilis.me>\n\n* Add example for different arch building\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Pass down selector,affinity and tolerations to the builder Job (#99)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-28T14:37:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8d972fc581736ef42eb501775045b1dad81db5c",
          "body": "* Migrate from kaniko to buildah\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* fix: use docker-archive format for Buildah output and fix NodeLabelerDaemonSet cache race\n\nBuildah's oci-archive transport writes OCI Image Layout (index.json +\nblobs/) which auroraboot's ocifile: hand\n[…]\n-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Fix test\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Migrate from kaniko to buildah (#97)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-28T14:35:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e539853e0db2c2f250363778dee43ca4c33538f",
          "body": "…(#95)\n\n* Let the labeler run in a loop and create more labels and annotations\n\nusing the values in kairos-release. This is preparation work to be able\nto run it as a DaemonSet too.\n\nSee more here:\n\nhttps://github.com/kairos-io/kairos/issues/3971#issuecomment-4281056270\n\nSigned-off-by: Dimitris Kara\n[…]\n test by validating we have 1/2 nodes running the daemonset Pod\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Let the labeler run in a loop and create more labels and annotations …",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-22T13:13:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ff4adeb357f7e4f685ac9dec91e64018790eb35a",
          "body": "* Fix devcontainer DIND configuration for trixie\n\nSee https://github.com/devcontainers/features/pull/1482 for details\n\nSigned-off-by: Sébastien Masset <86793256+smasset-orange@users.noreply.github.com>\n\n* Improve Docker build cache usage\n\nSigned-off-by: Sébastien Masset <86793256+smasset-orange@user\n[…]\neler_controller setup\n\nSigned-off-by: Sébastien Masset <86793256+smasset-orange@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Sébastien Masset <86793256+smasset-orange@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix labeler jobs for nodes with readonly FS (#74)",
          "author_name": "smasset-orange",
          "author_login": "smasset-orange",
          "committed_at": "2026-04-21T14:42:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a33e98e75213ecd945de9c8cb881cd1546ed01f5",
          "body": "* Mount the whole `/etc` directory\n\nbecause `/etc/kairos-release` doesn't exist in non-Kairos nodes and it\nwill not allow the Pods to be even scheduled on read-only Nodes that\ndon't have the file (because it can't be created).\n\nSee here for more:\n\nhttps://github.com/kairos-io/kairos-operator/pull/74\n[…]\nease should also be treated as non-Kairos\n\nand not fail the Job\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Mount the whole `/etc` directory (#94)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-21T08:13:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b6aab574c81a7d16c780fdfef85b9c20b0ff6497",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0-beta4 (#84)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-09T05:56:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64870d42307f101eaa8d2dad890c3ec3407d4cc9",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Pin dependencies (#87)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:55:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "614b34ba5c4c6323a6e372fa6560a277a83a3c98",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.3 (#71)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:47:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e6a0230ff418e63150cae2dee8429f786c2d3f9",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/build-push-action action to v7 (#72)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:46:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5139bea95c683fe1b9763a8cbe3c6440552b637",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/setup-buildx-action action to v4 (#69)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:45:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c08ed31e09dfb96b0936fdc3e240044a1d788692",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/login-action action to v4 (#68)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:44:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da671e78f015761165a49b708814e977871284fd",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update docker/setup-qemu-action action to v4 (#66)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:44:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76cc1b84c806fb4b6cd2158f9260b2422e1b4c58",
          "body": "Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Don't use \"latest\"",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-09T05:43:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed97404c7b7a3986607f5ea3bf5550b43604e77f",
          "body": "because tags are mutable and as such not secure.\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Use digests when bumping with renovate",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-09T05:35:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9cf35dbb4ae39084fd8c344ea08db459c610eed9",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update kubernetes monorepo to v0.35.3 (#78)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:25:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52e5a7e024f7cf8b6dbaa46f2351a725ad176117",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update azure/setup-kubectl action to v5 (#80)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-09T05:24:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e38ab860f8237b1288b07ffcab7e1ca7b6e4d383",
          "body": "* Add ability to customize `NodeOp` (and `NodeOpUpgrade`) images for air-gapped environments\n\nSigned-off-by: rdeleulopesp <rdeleulopesp@bloomberg.net>\n\n* Fix linting\n\nSigned-off-by: rdeleulopesp <rdeleulopesp@bloomberg.net>\n\n---------\n\nSigned-off-by: rdeleulopesp <rdeleulopesp@bloomberg.net>",
          "is_bot": false,
          "headline": "Add ability to customize `NodeOp` (and `NodeOpUpgrade`) images (#86)",
          "author_name": "Rodrigo Pontes",
          "author_login": "RodrigoDLPontes",
          "committed_at": "2026-04-09T05:23:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf1c717146cf886b90000b3ea9ab437869061c12",
          "body": "* Make artifacts volume configurable by the user\n\nThis will allow the users to mount it to hostPath if they want to,\nallowing easy copying of artifacts to local directories when local\nsingle node clusters are used.\n\nWe are going to use it as part of out reusable workflow:\n\nhttps://github.com/kairos-\n[…]\nris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: jimmykarily <2794419+jimmykarily@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Make artifacts volume configurable by the user (#79)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-02T07:48:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e41718637a54014e1ed136ea2864a04c43b52f5f",
          "body": "* Revert hard-immutability\n\nbecause when we apply with SSA it happens that the patch we generate\ncould include changes in the immutable `spec` field, even if we didn't\nexplicitly change anything there:\n\nhttps://github.com/kairos-io/kairos-operator/blob/4fe99f0708129b21037a00f00bfb237db6e18b3b/intern\n[…]\nris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: jimmykarily <2794419+jimmykarily@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Revert hard-immutability (#83)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-04-02T07:18:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "621504e9094a294cbd30d81bc384aa7ca16e490a",
          "body": "Signed-off-by: Dario Tranchitella <dario@tranchitella.eu>",
          "is_bot": false,
          "headline": "feat: age additional printer column for OSArtifact API (#82)",
          "author_name": "Dario Tranchitella",
          "author_login": "prometherion",
          "committed_at": "2026-04-02T05:39:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fe99f0708129b21037a00f00bfb237db6e18b3b",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0-beta3 (#77)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-19T09:06:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "055bf726fa6efb0a026be98280e42110e7c4650f",
          "body": "* Make OSArtifact an immutable resource\n\nthe same way Kubernetes Jobs are immutable after creation. OSAartifacts\nare one-off build instructions. There is no point in updating one\nbecause there is no state to be reconciled, the whole thing is\nimperative.\n\nUsers should use \"generateName\" to re-use the\n[…]\n NodeOpUpgrade immutable\n\nbecause they are also one-off things.\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Make OSArtifact an immutable resource (#76)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-03-18T09:39:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26458c92baf2807ad7b9e7392157d8ffad98b6ff",
          "body": "* Fix --cloud-config flag ignored in ISO and UKI builds\n\nMove --cloud-config before the positional dir:/rootfs argument.\nurfave/cli ignores flags that appear after positional arguments.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n\n* test: add unit tests for --cloud-config flag order\n\n* test: stick the ginkgo/gomega conventions\n\n* chore: add the license back\n\n---------\n\nCo-authored-by: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix --cloud-config flag ignored in ISO and UKI builds (#73)",
          "author_name": "Pilou",
          "author_login": "plmercereau",
          "committed_at": "2026-03-09T12:55:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d2505559d00b7be86eed33d8fd12ce31751e6fd0",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0-beta2 (#70)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-05T13:05:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f79fdd960b2d05d16498871352985469fb5ded8",
          "body": "* Use image credentials for pulling images too\n\nWhether it is the image.ref, buildOptions.baseImage, \"FROM\" image in\nthe custom ociSpec or the tool image (auroraboot), they should all use\nthe image credentials.\n\nCredentials are still used for pushing, like before.\n\nSigned-off-by: Dimitris Karakasili\n[…]\n\n\n* Add e2e test to verify that creds are used for pulling only\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "3992 creds without pushing (#67)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-03-05T08:38:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbe012dbf1b20c95775fa8dae6f3796246be3ac1",
          "body": "* Allow the user to specify build environment variables\n\nsuch as HTTP_PROXY et al\n\nPart of https://github.com/kairos-io/kairos/issues/3993\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Allow the user to specify CA certificates as a volume\n\nThose will be used by kaniko when pullin\n[…]\ned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "3993 build env + CA certs (#65)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-03-04T14:40:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11d5b0d943d938e8c9e83c881d5b9b88e9646f19",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.1.0-beta1 (#64)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-03T15:12:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab9be79ac23cd12dfce2c4a677860291430f0732",
          "body": "* Osartifact new UX (#57)\n\n* Add ADR for new suggested OSArtifact UX with examples\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Change dockerfile building spec\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Update spec\n\nSigned-off-by: Dimitris Karakasilis <dim\n[…]\n-authored-by: GitHub Actions <github-actions@github.com>\nCo-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: jimmykarily <2794419+jimmykarily@users.noreply.github.com>",
          "is_bot": false,
          "headline": "V0.1.0 prep - New OSArtifact API",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-03-03T14:36:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f04bd143beddb5722e9f71803ce605fc1b2ba79",
          "body": "Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "go mod tidy",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-03-03T13:41:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "396cfc9f21c287d238238e4078c9a33b81c67ef7",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update kubernetes packages to v0.35.2 (#20)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T13:39:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "413f1faa9af8972b1cccdfbac53ac6ed5aa37668",
          "body": "* fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.1\n\n* go mod tidy\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Add back the toolchain directive\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Fix go.mod issues\n\nby bumping go to latest 1.25.X\n\n\n[…]\ned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\nCo-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": true,
          "headline": "fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.1 (#32)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T13:37:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab7077f959ad4aff5e607fa9e06dfcbf10168d31",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update module github.com/onsi/gomega to v1.39.1 (#21)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:44:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49fe74a93dbcf965f8623ac9e69e5eff20f9ebb7",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update docker.io/golang docker tag to v1.26 (#27)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:43:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8cdec3446788d3e165d17d43d6109edc1b94c39e",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update module github.com/onsi/ginkgo/v2 to v2.28.1 (#28)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:43:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "467c23f664c301fa569347c9044800139f3a882a",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update quay.io/kairos/operator docker tag to v0.0.7 (#31)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:42:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea01d56998b68d612e8ab4b7434e07175ccb30e4",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update actions/setup-go action to v6 (#33)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:37:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd6c4d5e9b1bd805d28b8c9191ac54ca2966a8aa",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update actions/checkout action to v6 (#36)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:36:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1922d812a9eaf4b064f96e4a498213a344898e2c",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update azure/setup-kubectl action to v4 (#38)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-03T11:36:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7e9fa74a31e74d358122f10d1d165b5fc88b8d0",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.0.7 (#56)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-02-25T06:09:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13111ea2a8370b7dde8aafd14a29010d0c6f455a",
          "body": null,
          "is_bot": false,
          "headline": "Fix more linting issues",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-19T07:24:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5160f0efef865a245e9cd13773091b9176dc8752",
          "body": null,
          "is_bot": false,
          "headline": "Fix linter issues",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-19T06:37:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a35b87cc7e21fad694407e039308ece24e2bcbce",
          "body": "* fix: use single equals for sh string comparison in upgrade command\n\n* chore: remove shebang",
          "is_bot": false,
          "headline": "Fix string comparison in upgrade command (#53)",
          "author_name": "Willem Gillis",
          "author_login": "Polygens",
          "committed_at": "2026-02-19T06:13:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67b5b34d3bac9ed06fdc08f5f8f5a32a698bd2e8",
          "body": null,
          "is_bot": false,
          "headline": "fix: update kubectl download URL to support multiple architectures (#54)",
          "author_name": "Willem Gillis",
          "author_login": "Polygens",
          "committed_at": "2026-02-19T06:12:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "556caf6767be54e941d2fc200e8b04b5f404bcbd",
          "body": "Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Cleanup duplicated docs and link to the official docs site (#52)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-18T14:40:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0dec79f7c96f0d69fb40384df3c0a0b31299fd81",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.0.6 (#51)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-02-17T10:48:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34f54e3b6f1877db6ede162a9ef5bc67f328bd4d",
          "body": "…(#50)\n\n* Add Volumes, Importers, and VolumeBindings fields to OSArtifact CRD\n\nIntroduce the CRD type changes needed for user-defined volumes and\nimporter init containers. Add a VolumeBindings struct that maps volume\nnames to build roles (buildContext, overlayISO, overlayRootfs). Add\nValidate() to e\n[…]\ned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": " Add Volumes, Importers, and VolumeBindings fields to OSArtifact CRD …",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-17T09:59:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "781eaa00d454d2cff34df6666844ca2ff1b96335",
          "body": "* Introduce methods for dockerfile templating\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Render the templated dockerfile\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Allow templating using a referenced ConfigMap\n\nSigned-off-by: Dimitris Karakasilis <dimitr\n[…]\nby: Copilot <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: jimmykarily <2794419+jimmykarily@users.noreply.github.com>",
          "is_bot": false,
          "headline": "3929 add dockerfile templating (#46)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-13T10:00:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3e73bbc19ce4de8e396581271adaf1500976eed",
          "body": "* Document the use of the nginx kustomization\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n* Fix failing multi-stage builds with kaniko\n\nKaniko tries to delete a file that is bound mounted in kubernetes or\nsomething and it fails.\n\nAlso add an example of a kaniko build\n\nSigned-off-\n[…]\nhe proper way\n\nEXTEND env variable is long gone from Auroraboot\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>\n\n---------\n\nSigned-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>",
          "is_bot": false,
          "headline": "Various fixes (#45)",
          "author_name": "Dimitris Karakasilis",
          "author_login": "jimmykarily",
          "committed_at": "2026-02-12T08:29:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f2550ef9860d11e6bf18630bf8534363d363bd7",
          "body": "Co-authored-by: GitHub Actions <github-actions@github.com>",
          "is_bot": true,
          "headline": "chore: bump version to v0.0.5 (#44)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-01-27T13:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 24,
      "commits_last_year": 109,
      "latest_release_at": "2026-07-28T06:23:19Z",
      "latest_release_tag": "v0.1.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 20,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 16.1
    },
    "artifacts": {
      "collected": true,
      "structure": [
        "tree.dockerfile",
        "tree.go_importable",
        "tree.go_main"
      ],
      "declarations": []
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "readme_badges": {
        "hosts": [
          "github.com"
        ],
        "total": 1,
        "header": 1,
        "collected": true,
        "has_inspect_badge": false
      },
      "has_description": false,
      "has_contributing": false,
      "health_percentage": 25,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/kairos-io/kairos-operator",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "categories": [],
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/kairos-io/kairos-operator",
          "declared_type": null,
          "is_deprecated": false,
          "latest_version": "v0.1.2",
          "repository_url": "https://github.com/kairos-io/kairos-operator",
          "versions_count": 24,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-28T06:22:20Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 9,
      "stars": 8,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2025-10-15",
            "count": 1
          },
          {
            "date": "2026-02-17",
            "count": 1
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-07",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 9,
        "total_forks": 9
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "samples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": true,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 126092,
      "source_files_sampled": 43,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "google.golang.org/grpc",
            "direct": false,
            "version": "v1.79.3",
            "severity": "critical",
            "ecosystem": "go",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-hrxh-6v49-42gf",
              "GO-2026-6061"
            ],
            "fixed_version": "1.82.1",
            "advisory_count": 2,
            "oldest_advisory_days": 14
          },
          {
            "name": "go.opentelemetry.io/otel/sdk",
            "direct": false,
            "version": "v1.40.0",
            "severity": "high",
            "ecosystem": "go",
            "cvss_score": 7,
            "advisory_ids": [
              "GHSA-hfvc-g4fc-pqhx",
              "GO-2026-5426"
            ],
            "fixed_version": "1.43.0",
            "advisory_count": 2,
            "oldest_advisory_days": 118
          },
          {
            "name": "github.com/google/cel-go",
            "direct": false,
            "version": "v0.26.0",
            "severity": "moderate",
            "ecosystem": "go",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-gcjh-h69q-9w9g"
            ],
            "fixed_version": "0.29.0",
            "advisory_count": 1,
            "oldest_advisory_days": 11
          },
          {
            "name": "go.opentelemetry.io/otel",
            "direct": false,
            "version": "v1.41.0",
            "severity": "unknown",
            "ecosystem": "go",
            "cvss_score": null,
            "advisory_ids": [
              "GO-2026-5158"
            ],
            "fixed_version": "1.44.0",
            "advisory_count": 1,
            "oldest_advisory_days": 11
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "severity": "unknown",
            "ecosystem": "go",
            "cvss_score": null,
            "advisory_ids": [
              "GO-2026-5970"
            ],
            "fixed_version": "0.39.0",
            "advisory_count": 1,
            "oldest_advisory_days": 21
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "unknown": 2,
          "critical": 1,
          "moderate": 1
        },
        "advisory_count": 7,
        "affected_count": 5,
        "assessed_count": 92,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "al.essio.dev/pkg/shellescape",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/onsi/ginkgo/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.32.0"
        },
        {
          "name": "github.com/onsi/gomega",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.42.1"
        },
        {
          "name": "k8s.io/api",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.3"
        },
        {
          "name": "k8s.io/apimachinery",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.3"
        },
        {
          "name": "k8s.io/client-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.3"
        },
        {
          "name": "sigs.k8s.io/controller-runtime",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.24.1"
        },
        {
          "name": "sigs.k8s.io/yaml",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "al.essio.dev/pkg/shellescape",
            "direct": true,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/onsi/ginkgo/v2",
            "direct": true,
            "version": "v2.32.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/onsi/gomega",
            "direct": true,
            "version": "v1.42.1",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/api",
            "direct": true,
            "version": "v0.36.3",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/apimachinery",
            "direct": true,
            "version": "v0.36.3",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/client-go",
            "direct": true,
            "version": "v0.36.3",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/controller-runtime",
            "direct": true,
            "version": "v0.24.1",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/yaml",
            "direct": true,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "cel.dev/expr",
            "direct": false,
            "version": "v0.25.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/antlr4-go/antlr/v4",
            "direct": false,
            "version": "v4.13.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/beorn7/perks",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/blang/semver/v4",
            "direct": false,
            "version": "v4.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cenkalti/backoff/v5",
            "direct": false,
            "version": "v5.0.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cespare/xxhash/v2",
            "direct": false,
            "version": "v2.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/davecgh/go-spew",
            "direct": false,
            "version": "v1.1.2-0.20180830191138-d8f796af33cc",
            "ecosystem": "go"
          },
          {
            "name": "github.com/emicklei/go-restful/v3",
            "direct": false,
            "version": "v3.13.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/evanphx/json-patch/v5",
            "direct": false,
            "version": "v5.9.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/felixge/httpsnoop",
            "direct": false,
            "version": "v1.0.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fsnotify/fsnotify",
            "direct": false,
            "version": "v1.9.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fxamacker/cbor/v2",
            "direct": false,
            "version": "v2.9.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-logr/logr",
            "direct": false,
            "version": "v1.4.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-logr/stdr",
            "direct": false,
            "version": "v1.2.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-logr/zapr",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/jsonpointer",
            "direct": false,
            "version": "v0.21.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/jsonreference",
            "direct": false,
            "version": "v0.20.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/swag",
            "direct": false,
            "version": "v0.23.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-task/slim-sprig/v3",
            "direct": false,
            "version": "v3.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/cel-go",
            "direct": false,
            "version": "v0.26.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/gnostic-models",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/go-cmp",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/pprof",
            "direct": false,
            "version": "v0.0.0-20260402051712-545e8a4df936",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/uuid",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/grpc-ecosystem/grpc-gateway/v2",
            "direct": false,
            "version": "v2.27.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/inconshreveable/mousetrap",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/josharian/intern",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/json-iterator/go",
            "direct": false,
            "version": "v1.1.12",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mailru/easyjson",
            "direct": false,
            "version": "v0.7.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/masterminds/semver/v3",
            "direct": false,
            "version": "v3.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/modern-go/concurrent",
            "direct": false,
            "version": "v0.0.0-20180306012644-bacd9c7ef1dd",
            "ecosystem": "go"
          },
          {
            "name": "github.com/modern-go/reflect2",
            "direct": false,
            "version": "v1.0.3-0.20250322232337-35a7c28c31ee",
            "ecosystem": "go"
          },
          {
            "name": "github.com/munnerz/goautoneg",
            "direct": false,
            "version": "v0.0.0-20191010083416-a7dc8b61c822",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pmezard/go-difflib",
            "direct": false,
            "version": "v1.0.1-0.20181226105442-5d4384ee4fb2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_golang",
            "direct": false,
            "version": "v1.23.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_model",
            "direct": false,
            "version": "v0.6.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/common",
            "direct": false,
            "version": "v0.67.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/procfs",
            "direct": false,
            "version": "v0.19.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cobra",
            "direct": false,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/pflag",
            "direct": false,
            "version": "v1.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/stoewer/go-strcase",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/x448/float16",
            "direct": false,
            "version": "v0.8.4",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/auto/sdk",
            "direct": false,
            "version": "v1.2.1",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
            "direct": false,
            "version": "v0.65.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel",
            "direct": false,
            "version": "v1.41.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
            "direct": false,
            "version": "v1.40.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
            "direct": false,
            "version": "v1.40.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel/metric",
            "direct": false,
            "version": "v1.41.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel/sdk",
            "direct": false,
            "version": "v1.40.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/otel/trace",
            "direct": false,
            "version": "v1.41.0",
            "ecosystem": "go"
          },
          {
            "name": "go.opentelemetry.io/proto/otlp",
            "direct": false,
            "version": "v1.9.0",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/multierr",
            "direct": false,
            "version": "v1.11.0",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/zap",
            "direct": false,
            "version": "v1.27.1",
            "ecosystem": "go"
          },
          {
            "name": "go.yaml.in/yaml/v2",
            "direct": false,
            "version": "v2.4.3",
            "ecosystem": "go"
          },
          {
            "name": "go.yaml.in/yaml/v3",
            "direct": false,
            "version": "v3.0.4",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/exp",
            "direct": false,
            "version": "v0.0.0-20251219203646-944ab1f22d93",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/mod",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": false,
            "version": "v0.56.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/oauth2",
            "direct": false,
            "version": "v0.34.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sync",
            "direct": false,
            "version": "v0.21.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": false,
            "version": "v0.46.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/term",
            "direct": false,
            "version": "v0.44.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/time",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/tools",
            "direct": false,
            "version": "v0.45.0",
            "ecosystem": "go"
          },
          {
            "name": "gomodules.xyz/jsonpatch/v2",
            "direct": false,
            "version": "v2.4.0",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/genproto/googleapis/api",
            "direct": false,
            "version": "v0.0.0-20260128011058-8636f8732409",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/genproto/googleapis/rpc",
            "direct": false,
            "version": "v0.0.0-20260128011058-8636f8732409",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/grpc",
            "direct": false,
            "version": "v1.79.3",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/protobuf",
            "direct": false,
            "version": "v1.36.12-0.20260120151049-f2248ac996af",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/evanphx/json-patch.v4",
            "direct": false,
            "version": "v4.13.0",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/inf.v0",
            "direct": false,
            "version": "v0.9.1",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/yaml.v3",
            "direct": false,
            "version": "v3.0.1",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/apiextensions-apiserver",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/apiserver",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/component-base",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/klog/v2",
            "direct": false,
            "version": "v2.140.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/kube-openapi",
            "direct": false,
            "version": "v0.0.0-20260317180543-43fb72c5454a",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/streaming",
            "direct": false,
            "version": "v0.36.3",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/utils",
            "direct": false,
            "version": "v0.0.0-20260210185600-b8788abfbbc2",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/apiserver-network-proxy/konnectivity-client",
            "direct": false,
            "version": "v0.34.0",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/json",
            "direct": false,
            "version": "v0.0.0-20250730193827-2d320260d730",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/randfill",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/structured-merge-diff/v6",
            "direct": false,
            "version": "v6.3.3",
            "ecosystem": "go"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 92,
        "direct_count": 8,
        "indirect_count": 84
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 4,
        "merged_prs": 125,
        "open_issues": 4,
        "closed_ratio": 0.636,
        "closed_issues": 7,
        "closed_unmerged_prs": 14
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "jimmykarily",
          "commits": 95,
          "avatar_url": "https://avatars.githubusercontent.com/u/2794419?v=4"
        },
        {
          "type": "User",
          "login": "thebhdn",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/96438564?v=4"
        },
        {
          "type": "User",
          "login": "Polygens",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/3582318?v=4"
        },
        {
          "type": "User",
          "login": "prometherion",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/9697646?v=4"
        },
        {
          "type": "User",
          "login": "mauromorales",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/433958?v=4"
        },
        {
          "type": "User",
          "login": "plmercereau",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/24897252?v=4"
        },
        {
          "type": "User",
          "login": "RodrigoDLPontes",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/11012066?v=4"
        },
        {
          "type": "User",
          "login": "smasset-orange",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/86793256?v=4"
        }
      ],
      "contributors_sampled": 8,
      "top_contributor_share": 0.905
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "lint.yml",
        "release-orchestrator.yml",
        "release.yml",
        "test-e2e.yml",
        "test.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "26 out of 28 merged PRs checked by a CI test -- score normalized to 9",
            "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": 7,
            "reason": "Found 5/7 approved changesets -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 3 contributing companies or organizations -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 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": "internal error: internal error: invalid Dockerfile",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 5,
            "reason": "5 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "8338731801be8ddccaee740f53420189dbc0ff78",
        "ran_at": "2026-08-05T09:33:41Z",
        "aggregate_score": 6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "recent_prs": {
        "merged_7d": 1,
        "decided_7d": 1,
        "merged_30d": 5,
        "authors_30d": 3,
        "decided_30d": 6,
        "sample_size": 60,
        "window_days": 30,
        "sample_exhausted": false,
        "authors_probed_30d": 3,
        "newcomer_merged_30d": 3,
        "bot_prs_excluded_30d": 13,
        "newcomer_authors_30d": 1,
        "newcomer_decided_30d": 3
      },
      "ci_last_run_at": "2026-08-03T10:18:05Z",
      "oldest_open_prs": [
        {
          "number": 137,
          "created_at": "2026-07-08T20:49:01Z",
          "last_comment_at": "2026-08-03T09:01:55Z",
          "last_comment_author": "mudler-agent"
        },
        {
          "number": 153,
          "created_at": "2026-07-28T10:50:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 155,
          "created_at": "2026-08-03T14:20:55Z",
          "last_comment_at": "2026-08-04T06:42:56Z",
          "last_comment_author": "thebhdn"
        },
        {
          "number": 156,
          "created_at": "2026-08-05T05:47:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-08-03T09:43:15Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 41,
          "created_at": "2023-08-10T21:18:55Z",
          "last_comment_at": "2026-08-03T11:15:17Z",
          "last_comment_author": "thebhdn"
        },
        {
          "number": 40,
          "created_at": "2025-01-14T22:13:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 5,
          "created_at": "2025-05-28T05:59:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 85,
          "created_at": "2026-04-02T14:51:10Z",
          "last_comment_at": "2026-07-27T12:20:29Z",
          "last_comment_author": "jimmykarily"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/kairos-io/kairos-operator",
    "host": "github.com",
    "name": "kairos-operator",
    "owner": "kairos-io"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 65 is calibrated to 75 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 65,
            "calibrated": 75,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 75,
      "inputs": {
        "security": 68,
        "vitality": 87,
        "community": 35,
        "governance": 65,
        "calibration": "2026-08-02",
        "engineering": 61,
        "ai_readiness": 73,
        "weighted_overall_raw": 65
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "commits_last_year": 109,
              "human_commit_share": 0.4,
              "days_since_last_push": 0,
              "active_weeks_last_year": 20
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "20/52 weeks with commits",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 20
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "109 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 109
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "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": 24,
              "latest_release_tag": "v0.1.2",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 16.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "24 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 24
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~16.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 16.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "weak",
        "name": "Community & Adoption",
        "value": 35,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 21,
            "inputs": {
              "forks": 9,
              "stars": 8,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8 stars",
                "points": 13.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "9 forks",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": 1,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [
                "github.com"
              ],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "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": "good",
        "name": "Sustainability & Governance",
        "value": 65,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 8,
              "top_contributor_share": 0.905
            },
            "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 90% of commits",
                "points": 2.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 90
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "8 contributors",
                "points": 10.8,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "merged_prs": 125,
              "open_issues": 4,
              "closed_issues": 7,
              "prs_merged_7d": 1,
              "prs_decided_7d": 1,
              "prs_merged_30d": 5,
              "prs_decided_30d": 6,
              "issue_closed_ratio": 0.636,
              "closed_unmerged_prs": 14,
              "first_time_authors_30d": 1,
              "first_time_prs_merged_30d": 3,
              "first_time_prs_decided_30d": 3
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "64% of issues closed",
                "points": 26.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 64
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "125/139 decided PRs merged",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 125,
                      "decided": 139
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "3/3 first-time contributors' PRs merged in 30d",
                "points": 13,
                "status": "met",
                "details": [
                  {
                    "code": "newcomer_prs_merged",
                    "params": {
                      "days": 30,
                      "merged": 3,
                      "decided": 3
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 5/7 approved changesets -- score normalized to 7",
                "points": 10.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 149,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "kairos-io",
              "public_repos": 57,
              "account_age_days": 1434
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "149 followers of kairos-io",
                "points": 15.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 149,
                      "login": "kairos-io"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "57 public repos, account ~3 yr old",
                "points": 20.7,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 57
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/kairos-io/kairos-operator"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "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 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "24 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 24
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 61,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "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": "26 out of 28 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 30,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 68,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Pinned-Dependencies, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "26 out of 28 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 5/7 approved changesets -- score normalized to 7",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "internal error: internal error: invalid Dockerfile",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "5 existing vulnerabilities detected",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 92 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 92
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 7,
              "affected_packages": 5,
              "assessed_packages": 92,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1, high 1, moderate 1, unknown 2",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 92,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 13
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.875,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "35 of 40 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 35,
                      "sampled": 40
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "exceptional",
            "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": 100,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": true,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.11,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0.49
            },
            "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": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "devcontainer, Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "devcontainer, Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "11 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 11,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "49 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 49,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "internal error: internal error: invalid Dockerfile",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 126092,
              "source_files_sampled": 43,
              "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/43 source files over 60KB",
                "points": 53.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 43,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "samples"
              ],
              "has_mcp_signal": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, samples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, samples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "library",
        "application"
      ],
      "labels": [
        "library",
        "application"
      ],
      "scores": {
        "library": 6,
        "application": 5
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "structure",
          "label": "application",
          "source": "tree.go_main",
          "weight": 5
        },
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:go",
          "weight": 3
        },
        {
          "tier": "structure",
          "label": "library",
          "source": "tree.go_importable",
          "weight": 3
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-05T09:34:01.714613Z",
  "schema_version": "0.31.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/k/kairos-io/kairos-operator.svg",
  "full_name": "kairos-io/kairos-operator",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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 v2.5.0, esquema v0.31.0 — metodología completa · wiki de métricas.

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