Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-29 19:06 UTC

TheZacillac / seer

A multi-interface domain name utility tool for querying domain registration information, DNS records, and network data.

RustMIT★ 4 estrellas⑂ 0 forksdesde ene 2026Ver en GitHub ↗

TheZacillac/seer tiene un índice de salud de 60 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (83/100) y la más baja, Community & Adoption (33/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

60
global / 100
Moderado

Índice de salud del software

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

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

Perfil de puntuación

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

Titularidad

Zac RoachCuenta personal
6 seguidores13 repositorios públicosdesde ene 2013

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
crates.ioseer-cli0.44.234789hace 6 díasclidnsdomainrdapwhoiscommand-line-utilitiesnetwork-programming
crates.ioseer-core0.44.243490hace 6 díasdnsdomainnetworkingrdapwhoiscommand-line-utilitiesnetwork-programming

Métricas por categoría

Vitalidad

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

83Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
15.2/36Cadencia de commits — 22/52 semanas con commits
18/18Volumen de commits — 525 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year525
human_commit_share0,88
days_since_last_push0
active_weeks_last_year22
Cómo se puntúa
27/27Publica versiones — 91 versiones publicadas
36/36Recencia de las versiones — última versión hace 6 días
27/27Cadencia de publicación — una versión cada ~2,2 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count91
latest_release_tagv0.44.2
releases_from_tagsno
days_since_latest_release6
mean_days_between_releases2,2

Comunidad y Adopción

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

33En riesgo · 18% del índice global
Cómo se puntúa
7.7/60Estrellas — 4 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars4
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
38.6/80Descargas mensuales — 781 descargas/mes en crates
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesseer-cli, seer-core
dependents
ecosystemscrates
total_downloads3688
monthly_downloads781
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

56Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.8/22.5Distribución de commits — el principal contribuyente firma el 96% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,963
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
30.9/38.3Aceptación de PR — 88/109 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/22 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs88
open_issues0
closed_issues19
issue_closed_ratio1
closed_unmerged_prs21
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
6.1/25Alcance del propietario — 6 seguidores de TheZacillac
20.3/25Trayectoria — 13 repos públicos, cuenta de ~13 años
Datos de entrada utilizados
followers6
owner_typeUser
is_verified
owner_loginTheZacillac
public_repos13
account_age_days4939
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en crates
35/35Recencia de publicación — última publicación hace 6 días
20/20Historial de versiones — 90 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesseer-cli, seer-core
ecosystemscrates
any_deprecatedno
min_days_since_publish6

Calidad de Ingeniería

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

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

Documentación

85Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
10/10Topics — 5 topics
10/10Wiki
Datos de entrada utilizados
topicsdig, dns, domains, rdap, whois
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

48En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 22 out of 22 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/22 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate4,8

Preparación para IA

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

73Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 86 de 88 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,977
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes46.054
Cómo se puntúa
12.6/18Arranque con un solo comando — Cargo.toml, seer-cli/Cargo.toml, seer-core/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Rust (tipado estático)
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 69 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 12 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock, uv.lock
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,69
toolchain_manifestsCargo.toml, seer-cli/Cargo.toml, seer-core/Cargo.toml, seer-py/Cargo.toml
dependency_bot_commit_share0,12
Cómo se puntúa
45/45Código verificable por tipos — Rust (tipado estático)
52.8/55Tamaños de archivo manejables — 8/202 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageRust
largest_source_bytes91.375
source_files_sampled202
oversized_source_files8
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

4estrellas de GitHub
2contribuidores
525commits en los últimos 12 meses
0días desde el último push
91versiones publicadas
1factor bus
0issues abiertas
crates.io, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'seer-py' from its registry
  • Could not fetch pypi package 'domain-seer' from its registry
  • Could not fetch pypi package 'seer-api' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 4.8 / 10
4.8agregado

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests22 out of 22 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/22 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 65
RegistroPaqueteRestricción de versiónManifiesto
PyPIfastapi>=0.109,!=0.136.3seer-api/pyproject.toml
PyPIuvicorn>=0.27seer-api/pyproject.toml
PyPIpydantic>=2.0seer-api/pyproject.toml
PyPImcp>=1.0seer-api/pyproject.toml
PyPIdomain-seer>=0.32seer-api/pyproject.toml
PyPIslowapi>=0.1.9seer-api/pyproject.toml
PyPIorjson>=3.9seer-api/pyproject.toml
crates.ioseer-core0.44.0seer-cli/Cargo.toml
crates.iotokioseer-cli/Cargo.toml
crates.iorustylineseer-cli/Cargo.toml
crates.ioshlexseer-cli/Cargo.toml
crates.iocoloredseer-cli/Cargo.toml
crates.ioindicatifseer-cli/Cargo.toml
crates.iocomfy-tableseer-cli/Cargo.toml
crates.ioclapseer-cli/Cargo.toml
crates.ioclap_completeseer-cli/Cargo.toml
crates.ioclap_mangenseer-cli/Cargo.toml
crates.iotracingseer-cli/Cargo.toml
crates.iotracing-subscriberseer-cli/Cargo.toml
crates.ioanyhowseer-cli/Cargo.toml
crates.ioserdeseer-cli/Cargo.toml
crates.ioserde_jsonseer-cli/Cargo.toml
crates.iocrosstermseer-cli/Cargo.toml
crates.ioratatui0.30seer-cli/Cargo.toml
crates.iofuturesseer-cli/Cargo.toml
crates.iobase64seer-cli/Cargo.toml
crates.iodirsseer-cli/Cargo.toml
crates.iogetrandomseer-cli/Cargo.toml
crates.iotokioseer-core/Cargo.toml
crates.ioreqwestseer-core/Cargo.toml
crates.iohickory-resolverseer-core/Cargo.toml
crates.ioserdeseer-core/Cargo.toml
crates.ioserde_jsonseer-core/Cargo.toml
crates.iothiserrorseer-core/Cargo.toml
crates.ioanyhowseer-core/Cargo.toml
crates.iochronoseer-core/Cargo.toml
crates.iotracingseer-core/Cargo.toml
crates.iotracing-subscriberseer-core/Cargo.toml
crates.iotracing-appenderseer-core/Cargo.toml
crates.iotracing-opentelemetryseer-core/Cargo.toml
crates.ioopentelemetryseer-core/Cargo.toml
crates.ioopentelemetry_sdkseer-core/Cargo.toml
crates.ioopentelemetry-otlpseer-core/Cargo.toml
crates.iofuturesseer-core/Cargo.toml
crates.ioasync-traitseer-core/Cargo.toml
crates.ioonce_cellseer-core/Cargo.toml
crates.ioregexseer-core/Cargo.toml
crates.iourlseer-core/Cargo.toml
crates.iocoloredseer-core/Cargo.toml
crates.iobase64seer-core/Cargo.toml
crates.ionative-tlsseer-core/Cargo.toml
crates.iotokio-native-tlsseer-core/Cargo.toml
crates.iox509-parserseer-core/Cargo.toml
crates.iorandseer-core/Cargo.toml
crates.iotomlseer-core/Cargo.toml
crates.ioidnaseer-core/Cargo.toml
crates.iodirsseer-core/Cargo.toml
crates.ioseer-core0.44.0seer-py/Cargo.toml
crates.iopyo3seer-py/Cargo.toml
crates.iotokioseer-py/Cargo.toml
crates.ioserdeseer-py/Cargo.toml
crates.ioserde_jsonseer-py/Cargo.toml
crates.iotracingseer-py/Cargo.toml
crates.iolog0.4seer-py/Cargo.toml
crates.iopyo3-log0.13seer-py/Cargo.toml
Todas las dependencias no recopilado

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "dig",
        "dns",
        "domains",
        "rdap",
        "whois"
      ],
      "is_fork": false,
      "size_kb": 2140,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Rust": 2312668,
        "Python": 249423
      },
      "pushed_at": "2026-07-29T08:26:12Z",
      "created_at": "2026-01-15T17:43:54Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T18:47:49Z",
      "description": "A multi-interface domain name utility tool for querying domain registration information, DNS records, and network data.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "Zac.app",
      "name": "Zac Roach",
      "type": "User",
      "login": "TheZacillac",
      "company": null,
      "location": "Seattle",
      "followers": 6,
      "avatar_url": "https://avatars.githubusercontent.com/u/3311679?v=4",
      "created_at": "2013-01-19T02:52:07Z",
      "is_verified": null,
      "public_repos": 13,
      "account_age_days": 4939
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.44.2",
          "kind": "patch",
          "published_at": "2026-07-23T19:03:02Z"
        },
        {
          "tag": "v0.44.1",
          "kind": "patch",
          "published_at": "2026-07-22T03:35:03Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-07-17T14:36:52Z"
        },
        {
          "tag": "v0.43.1",
          "kind": "patch",
          "published_at": "2026-07-13T04:15:09Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-07-13T02:54:42Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-07-12T07:18:37Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-07-05T02:06:54Z"
        },
        {
          "tag": "v0.40.1",
          "kind": "patch",
          "published_at": "2026-07-05T00:09:04Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-07-04T17:47:56Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-07-03T21:24:38Z"
        },
        {
          "tag": "v0.38.0",
          "kind": "minor",
          "published_at": "2026-07-01T18:34:40Z"
        },
        {
          "tag": "v0.37.1",
          "kind": "patch",
          "published_at": "2026-07-01T02:45:45Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-07-01T00:28:53Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-06-27T23:55:10Z"
        },
        {
          "tag": "v0.35.6",
          "kind": "patch",
          "published_at": "2026-06-26T01:50:59Z"
        },
        {
          "tag": "v0.35.5",
          "kind": "patch",
          "published_at": "2026-06-24T23:46:09Z"
        },
        {
          "tag": "v0.35.4",
          "kind": "patch",
          "published_at": "2026-06-24T22:34:06Z"
        },
        {
          "tag": "v0.35.3",
          "kind": "patch",
          "published_at": "2026-06-24T21:02:35Z"
        },
        {
          "tag": "v0.35.2",
          "kind": "patch",
          "published_at": "2026-06-24T04:33:42Z"
        },
        {
          "tag": "v0.35.1",
          "kind": "patch",
          "published_at": "2026-06-22T20:16:22Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-06-18T18:36:44Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-06-18T03:46:23Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-06-12T19:39:45Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-06-04T23:19:32Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-06-04T20:46:11Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-06-04T02:11:25Z"
        },
        {
          "tag": "v0.29.2",
          "kind": "patch",
          "published_at": "2026-06-02T23:56:51Z"
        },
        {
          "tag": "v0.29.1",
          "kind": "patch",
          "published_at": "2026-05-28T22:41:33Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-05-28T17:26:05Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-05-27T16:11:14Z"
        },
        {
          "tag": "v0.26.12",
          "kind": "patch",
          "published_at": "2026-05-27T15:07:07Z"
        },
        {
          "tag": "v0.26.11",
          "kind": "patch",
          "published_at": "2026-05-27T04:56:44Z"
        },
        {
          "tag": "v0.26.10",
          "kind": "patch",
          "published_at": "2026-05-27T02:56:09Z"
        },
        {
          "tag": "v0.26.9",
          "kind": "patch",
          "published_at": "2026-05-27T02:47:49Z"
        },
        {
          "tag": "v0.26.8",
          "kind": "patch",
          "published_at": "2026-05-26T20:07:54Z"
        },
        {
          "tag": "v0.26.7",
          "kind": "patch",
          "published_at": "2026-05-26T19:29:31Z"
        },
        {
          "tag": "v0.26.6",
          "kind": "patch",
          "published_at": "2026-05-26T18:12:36Z"
        },
        {
          "tag": "v0.26.5",
          "kind": "patch",
          "published_at": "2026-05-26T17:12:19Z"
        },
        {
          "tag": "v0.26.4",
          "kind": "patch",
          "published_at": "2026-05-18T06:57:28Z"
        },
        {
          "tag": "v0.26.3",
          "kind": "patch",
          "published_at": "2026-05-18T06:37:12Z"
        },
        {
          "tag": "v0.26.2",
          "kind": "patch",
          "published_at": "2026-05-18T05:33:58Z"
        },
        {
          "tag": "v0.26.1",
          "kind": "patch",
          "published_at": "2026-05-14T07:21:21Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-05-14T07:07:07Z"
        },
        {
          "tag": "v0.25.2",
          "kind": "patch",
          "published_at": "2026-05-14T05:30:03Z"
        },
        {
          "tag": "v0.25.1",
          "kind": "patch",
          "published_at": "2026-05-14T05:04:54Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-05-14T04:42:55Z"
        },
        {
          "tag": "v0.24.1",
          "kind": "patch",
          "published_at": "2026-05-13T20:01:22Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-04-21T16:29:52Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-04-20T23:19:30Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2026-04-17T19:39:05Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-04-17T18:48:52Z"
        },
        {
          "tag": "v0.20.1",
          "kind": "patch",
          "published_at": "2026-04-17T15:11:49Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-04-16T23:59:32Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-04-08T23:07:44Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-04-02T20:44:34Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-03-31T21:57:20Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-03-24T17:40:15Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-03-24T05:52:03Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-03-24T02:19:26Z"
        },
        {
          "tag": "v0.13.4",
          "kind": "patch",
          "published_at": "2026-03-24T01:46:12Z"
        },
        {
          "tag": "v0.13.3",
          "kind": "patch",
          "published_at": "2026-03-22T16:56:31Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2026-03-21T00:53:11Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-03-21T00:45:55Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-03-21T00:23:11Z"
        },
        {
          "tag": "v0.12.2",
          "kind": "patch",
          "published_at": "2026-03-20T22:49:48Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2026-03-20T22:39:00Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-03-20T22:28:01Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-03-20T17:27:48Z"
        },
        {
          "tag": "v0.10.4",
          "kind": "patch",
          "published_at": "2026-03-20T15:14:42Z"
        },
        {
          "tag": "v0.10.3",
          "kind": "patch",
          "published_at": "2026-03-20T03:56:02Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2026-02-07T00:36:34Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-02-05T17:24:03Z"
        },
        {
          "tag": "v0.1.94",
          "kind": "patch",
          "published_at": "2026-01-27T20:12:28Z"
        },
        {
          "tag": "v0.1.93",
          "kind": "patch",
          "published_at": "2026-01-27T17:45:24Z"
        },
        {
          "tag": "v0.1.92",
          "kind": "patch",
          "published_at": "2026-01-25T22:03:49Z"
        },
        {
          "tag": "v0.1.91",
          "kind": "patch",
          "published_at": "2026-01-25T22:01:27Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-01-25T19:15:09Z"
        },
        {
          "tag": "v0.1.86",
          "kind": "patch",
          "published_at": "2026-01-24T19:50:14Z"
        },
        {
          "tag": "v0.1.85",
          "kind": "patch",
          "published_at": "2026-01-24T01:12:46Z"
        },
        {
          "tag": "v0.1.84",
          "kind": "patch",
          "published_at": "2026-01-23T17:58:27Z"
        },
        {
          "tag": "v0.1.83",
          "kind": "patch",
          "published_at": "2026-01-23T03:21:44Z"
        },
        {
          "tag": "v0.1.82",
          "kind": "patch",
          "published_at": "2026-01-23T00:16:20Z"
        },
        {
          "tag": "v0.1.81",
          "kind": "patch",
          "published_at": "2026-01-22T23:57:42Z"
        },
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2026-01-22T23:25:50Z"
        },
        {
          "tag": "v0.1.71",
          "kind": "patch",
          "published_at": "2026-01-21T22:52:38Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2026-01-21T19:17:15Z"
        },
        {
          "tag": "v0.1.6",
          "kind": "patch",
          "published_at": "2026-01-21T19:08:34Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-01-20T06:06:57Z"
        },
        {
          "tag": "v0.1.4-mini",
          "kind": "prerelease",
          "published_at": "2026-01-16T22:23:41Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-01-16T22:11:36Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-01-16T18:58:19Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "adc2f65482b3502e7231199b885dc6ec2f980c97",
          "body": "…128)\n\n* fix: preserve partial DNS propagation results instead of failing on aggregate timeout\n\nThe propagation checker wrapped the entire 30-server fan-out in one 15s\naggregate deadline. A single slow or unreachable resolver (the default list\nincludes regional ISP recursors that don't answer extern\n[…]\nnance\nbumps.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01GAwKmPTYzjG7xyXPEGjDqd\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.44.2 (incl. DNS propagation partial-results fix) (#…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-23T18:47:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f23ca85d45d444fcf148926b547ddd4545e97ef2",
          "body": "Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.2 to 9.1.1.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.2...9.1.1)\n\n---\nupdated-\n[…]\nsemver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "fix(deps): bump pytest from 8.4.2 to 9.1.1 in /seer-py (#125)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T16:48:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ee658604f2c337246f3f307b812b9cc19b5ad77b",
          "body": "* ci(deps): bump the github-actions group with 2 updates\n\nBumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-python](https://github.com/actions/setup-python).\n\n\nUpdates `actions/checkout` from 6 to 7\n- [Release notes](https://git\n[…]\nGjDqd\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "ci(deps): bump the github-actions group with 2 updates (#123)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T16:40:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74e748d6c049e84a4b0f4aaaa4f6c46e3b870b9f",
          "body": "Bumps [clap_mangen](https://github.com/clap-rs/clap) from 0.2.33 to 0.3.0.\n- [Release notes](https://github.com/clap-rs/clap/releases)\n- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/clap-rs/clap/compare/clap_mangen-v0.2.33...clap_mangen-v0.3.0)\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump clap_mangen from 0.2.33 to 0.3.0 (#127)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T16:40:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92d58b58e1b1e16540e15134b6702b7f0110b63b",
          "body": "Bumps the cargo-minor-patch group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [tokio](https://github.com/tokio-rs/tokio) | `1.52.3` | `1.53.1` |\n| [serde_json](https://github.com/serde-rs/json) | `1.0.150` | `1.0.151` |\n| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.18\n[…]\nn-update:semver-patch\n  dependency-group: cargo-minor-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump the cargo-minor-patch group with 6 updates (#126)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T16:40:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6451961ebd4f3f3ee47cfafc452dc2dec669f6f",
          "body": "Bumps the seer-py-minor-patch group in /seer-py with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).\n\n\nUpdates `pytest-asyncio` from 1.2.0 to 1.4.0\n- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)\n- [Commits](https://github.com/pytest-dev/pytest-asyn\n[…]\nupdate:semver-minor\n  dependency-group: seer-py-minor-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump pytest-asyncio (#124)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T16:39:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fab2b3343cb46543201033a584b3e63de5a92bf1",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.44.1",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-22T03:26:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "90191e04e2c32003dc49f87f5e708ffda2a66846",
          "body": "…-route, TUI Latte rendering, shared atomic saves, doc corrections (#122)\n\nFive defects from the 2026-07-21 verified sweep at v0.44.0, plus the\ndocumentation corrections it surfaced:\n\n- doctor: the WHOIS probe now resolves its target through\n  net::resolve_public_host — the same vetted path (OS reso\n[…]\n config.rs module\ndoc no longer claims env-var overrides; CLAUDE.md propagation concurrency\ncorrected to 30 and doctor timeout phrasing updated.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: verified-sweep pass — doctor resolver parity, delegation IPv6 no…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-22T03:17:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92711718315057eaf3b81e110fe310222922edbe",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to 0.44.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-17T14:28:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a301c07f6d8e9ea88f59c87d4ceb231de0f64f4",
          "body": "…D/MCP parity, man pages, cargo-deny, Latte theme (#121)\n\n* feat: 7-feature suite — doctor, delegation health, watch webhooks, TLD/MCP parity, man pages, cargo-deny, Latte theme\n\n- seer doctor: config/DNS/WHOIS/RDAP-bootstrap self-diagnosis; four\n  concurrent failure-isolated probes with per-probe l\n[…]\ns a\ndetail naming the probed address; assert that instead of the reason text.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: 7-feature suite — doctor, delegation health, watch webhooks, TL…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-17T14:25:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0c5eb3055fbe39cd6dfd806fbccb87fae55f04f5",
          "body": "… publish dispatch (#120)\n\nCI previously linted only lib targets (315 warnings invisible in test\ncode) and never ran ruff despite both packages configuring it (102\naccumulated findings).\n\n- clippy job: --all-targets, with clippy.toml allow-unwrap-in-tests so\n  test code stays idiomatic; fixed the ~5\n[…]\nn the Cargo.toml\n  version has no matching tag or HEAD isn't the tagged commit, so\n  crates.io can't silently diverge from the released binaries\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: gate clippy --all-targets and ruff; cancel superseded runs; guard…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-17T00:30:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1f9e879a1ef2203caa84b4d309dc6b156755077c",
          "body": "… medium fixes (#119)\n\nFixes every confirmed finding from the 2026-07-16 adversarial sweep:\n\n- TUI overview: branch on availability verdict(), not is_available() —\n  dns_present/inconclusive results no longer render as green AVAILABLE\n  (the #45 inversion class at the display layer)\n- lookup: race_w\n[…]\n 6→26\nrows; /ssl/127.0.0.1 SSRF case. Docs: CLAUDE.md drift (25 tools, module\ntree, 6 env vars), README exit-code contract + --resolve flag fix.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: verified-sweep defect pass — availability display inversion + 13…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-17T00:09:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c08fd251aa73a0bc511d1e9110eeda7da9e16667",
          "body": "Bumps the cargo-minor-patch group with 1 update: [toml](https://github.com/toml-rs/toml).\n\n\nUpdates `toml` from 1.1.2+spec-1.1.0 to 1.1.3+spec-1.1.0\n- [Commits](https://github.com/toml-rs/toml/compare/toml-v1.1.2...toml-v1.1.3)\n\n---\nupdated-dependencies:\n- dependency-name: toml\n  dependency-version:\n[…]\nn-update:semver-patch\n  dependency-group: cargo-minor-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump toml in the cargo-minor-patch group (#117)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-16T22:59:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97278ad9b3b9967052b636f4128a6ad84ef284a1",
          "body": "…resent verdict for double transport failure (#118)\n\nThree related fixes for lookups on RDAP-less TLDs (e.g. .ru), found while\ndiagnosing Russian-TLD failures:\n\n- The RDAP/WHOIS race now grace-truncates the losing leg only when the\n  winner actually returned usable data. A winner that failed (like t\n[…]\nmerely failed first.\n\nThe race is extracted into race_with_grace() with paused-clock tests;\ntokio test-util added as a dev-dependency for those.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(lookup): don't grace-truncate the only viable protocol; add dns_p…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-15T19:41:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4638cab249b4f10fac78a081bb5b8ea6908e9e14",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.43.1",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-13T04:03:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e5b836d3d39d8b0ea5ab9d016017bbd2d1467b32",
          "body": "… v7 in ci/publish workflows (#115)\n\nTakes dependabot PR #109's action bumps for ci.yml and publish.yml but\ndeliberately excludes release.yml — that file is generated by cargo-dist\n(`dist generate`) and hand/bot edits fail the `plan` job's consistency\ncheck, which is exactly why #109 went red. Per the documented caveat in\n.github/dependabot.yml, release.yml's actions refresh only via a cargo-dist\nupdate.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(deps): bump checkout to v7, setup-python to v6, upload-artifact to…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-13T03:52:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4368e3eee8b353c8d3ddf5f70b24302ad7237b51",
          "body": "Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.3.4 to 0.4.3.\n- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.4...v0.4.3)\n\n---\nupdated-dependencies:\n- dependency-name: getrandom\n  de\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump getrandom from 0.3.4 to 0.4.3 (#88)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T03:52:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ebfcadee0f8742d6fd73f53a594ed876c4e16a29",
          "body": "… updates (#114)\n\nBumps the cargo-minor-patch group with 2 updates in the / directory: [regex](https://github.com/rust-lang/regex) and [rand](https://github.com/rust-random/rand).\n\n\nUpdates `regex` from 1.12.4 to 1.13.0\n- [Release notes](https://github.com/rust-lang/regex/releases)\n- [Changelog](htt\n[…]\nn-update:semver-patch\n  dependency-group: cargo-minor-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump the cargo-minor-patch group across 1 directory with 2…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T03:44:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd086f7fc7e4ffaf1bc4e02029fde1c4bef06be5",
          "body": "rustyline 18.0.1 uses std::fs::File::lock (stabilized in 1.89), which broke\nthe MSRV (1.88) CI job on dependabot's bump PR. Verified: workspace fails on\n1.88 with the exact CI error, compiles clean on 1.89 with --locked, and the\nfull test/clippy/fmt gate passes on stable with no rustyline API changes\nneeded. Supersedes dependabot PR bump of rustyline.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): rustyline 17→18 + raise MSRV to Rust 1.89 (#113)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-13T03:15:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "601aaf01b568d154333a5e24ac56c0320f91ee64",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.43.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-13T02:44:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a50c604a3b57b44fbce1ab226f785f4375c27e1e",
          "body": "* refactor: move OSC52 clipboard module from tui to shared seer-cli level\n\n* refactor: extract shared Payload enum + serialize from TUI, add 5 formatter-backed variants\n\n* refactor: narrow dead_code allow to the 5 unconstructed Payload variants\n\nReplace the enum-level #[allow(dead_code)] with target\n[…]\nommand\n\n* fix: accept case-insensitive and yml/md format aliases in REPL copy\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: REPL copy command — copy last result as markdown (OSC52) (#112)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-13T02:43:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4a38e18293f3ad88b48f41b7e71a6811d80e9b24",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.42.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-12T07:10:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "466a3c398a27df377e9a877eb6edce6d2ba2855a",
          "body": "… and API (#111)\n\n* fix: deep-review defect sweep — 15 fixes across core, CLI, REPL, TUI, and API\n\nFixes every finding from the 2026-07-11 full-codebase multi-agent review:\n\nseer-core:\n- render the 0.38.0 registrar-detail + lifecycle fields in human/markdown\n  output and the bulk info CSV (previousl\n[…]\n transitive dep's fmt::Pointer impl;\npatched in 0.9.20. Lockfile-only change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: deep-review defect sweep — 15 fixes across core, CLI, REPL, TUI,…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-12T07:09:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4281a9233d7e1f10339437a4cc6b538513d39427",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.41.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-05T01:58:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "575fa9b3c491b2ffb85186130dc9e8efe24dca6c",
          "body": "…eanup (#108)\n\n* feat: second-level registry zone WHOIS support + ccTLD dead-server cleanup\n\nFollow-up ccTLD audit answering \"are there other ccTLDs we can find\nwhois servers for?\":\n\n- get_whois_server_for_domain(): resolve the most specific mapping\n  first — a second-level registry zone (new SLD_WH\n[…]\ng else that resolved was wildcard DNS (.ph/.gr) answering\nnothing on port 43.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: second-level registry zone WHOIS support + ccTLD dead-server cl…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-05T01:56:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2ebce7eb760786dc1d7b16b89308ba742d71b86",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.40.1",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-05T00:00:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5cfb2859b94d2efde4065535c7fbdfb6cdfd9063",
          "body": "… (#107)\n\nA live sweep of all 1,246 mapped TLDs (one registered + one unregistered\nprobe per TLD, throttle-aware) surfaced these fixes:\n\n- is_available(): strip %/# comment markers instead of skipping the line\n  — ~16 ccTLD registries print the verdict itself on comment lines\n  (AFNIC \"%% NOT FOUND\"\n[…]\nd in\n  the module's intentional-omissions header with a regression test.\n\nAll fixture wordings captured from live registry responses 2026-07-04.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: availability detection + dead-server cleanup from full-TLD sweep…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T23:59:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "27327d8afae0b914c5125cd27472da6e852b8885",
          "body": "* fix: refresh WHOIS handling for current registry formats\n\nLive verification against real registries (2026-07) surfaced four gaps:\n\n- DENIC (.de): port 43 returns only `Status: connect` for a bare query;\n  send `-T dn,ace <domain>` so nameservers, DNSKEY, and change date come\n  back. New format_que\n[…]\ny@anthropic.com>\n\n* docs: add changelog entry for WHOIS format refresh (#106)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: refresh WHOIS handling for current registry formats (#106)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T22:24:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c356470cf7f201d44280948931ac38cdbdec9e33",
          "body": "Dynamic shields.io badge that regex-extracts the version from\nFormula/seer.rb in the tap repo, so it tracks releases automatically\n(the standard homebrew/v badge only supports homebrew-core formulae).\nLinks to the tap.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add Homebrew version badge (#105)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T18:37:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2a929f343b287872409c48dc7f5ca443a8c3d525",
          "body": null,
          "is_bot": false,
          "headline": "Update interface count in README",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T18:31:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a643715089f33e0ad79352756a9b813e136c8d77",
          "body": "* docs: sync README with current feature set\n\nThe README lagged several releases behind the code. Updates against\nverified current state (CLI subcommands, MCP tool registry, REST routers,\nseer-py exports, seer-core modules):\n\n- Features table: add CAA policy, email posture (SPF/DMARC/MTA-STS),\n  loo\n[…]\nropic.com>\n\n* docs: mention Homebrew in the seer-cli vs seer-core install row\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: sync README with current feature set (#104)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T18:29:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df393a41b8549b0d4fde9235cd1dd9c86e7ffc68",
          "body": "Homebrew distribution (#103): the CLI is now installable via\n`brew install TheZacillac/tap/seer`.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.40.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T17:39:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1b62d66f347bf77d188fbd6d92f511628bfad119",
          "body": "Re-enable cargo-dist's Homebrew publisher so the CLI is installable via\n`brew install TheZacillac/tap/seer` (prebuilt binary, no Rust toolchain),\nauto-updated on every tagged release.\n\n- dist-workspace.toml: add \"homebrew\" to installers, set\n  tap = \"TheZacillac/homebrew-tap\" and publish-jobs = [\"ho\n[…]\nTOKEN repo secret (a fine-grained cross-repo-write PAT) must be\nset before the next tagged release for the publish job to succeed.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dist): add Homebrew as a distribution method (#103)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-04T17:38:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a5866112415e12e60b6e1ccd5266ef9f68383a4",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump version to 0.39.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-03T21:13:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d6b541580c5d3653ba7b757a95018d60b9df974",
          "body": "…oH + subdomain baseline diff (#102)\n\n* feat(core): phase 1 hardening — SSRF unification, RDAP reuse, resolver collapse, error decoupling\n\n- route status-redirect and RDAP host pre-checks through net::resolve_public_host\n  (5s bounded resolve + hickory fallback; closes the RDAP internal-DNS-oracle l\n[…]\non behavior is unchanged —\nthis is a test-portability fix only.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: backlog sweep — core hardening, shared CLI/REPL pipeline, DoT/D…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-03T21:09:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae2584a41a5217fed48bee0036d318095595467c",
          "body": "… updates (#100)\n\nBumps the cargo-minor-patch group with 3 updates in the / directory: [anyhow](https://github.com/dtolnay/anyhow), [indicatif](https://github.com/console-rs/indicatif) and [clap_complete](https://github.com/clap-rs/clap).\n\n\nUpdates `anyhow` from 1.0.102 to 1.0.103\n- [Release notes](\n[…]\nn-update:semver-patch\n  dependency-group: cargo-minor-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump the cargo-minor-patch group across 1 directory with 3…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-02T22:50:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a56cae8c70ab83615f5ea159afd23dddcb87493f",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.38.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T18:26:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0b54c6d4f242156ca189765c490deb7756a8f73c",
          "body": "…likes + reachability (#101)\n\n* feat(core): derived lifecycle, registrar detail, SSL warnings, DNSSEC tier\n\nBatch 1 of the enhancement suite — additive post-processing over data\nseer-core already fetches:\n\n- DomainInfo now computes days_until_expiration, domain_age_days, an\n  ExpiryStatus band, and \n[…]\nich cargo clippy --workspace -- -D warnings (exactly what CI runs) rejects.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: enhancement suite — domain intelligence, posture, drift, look-a…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T18:23:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a1bc6a09fb3ccee2824e693d22c3c2c0745c687",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.37.1",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T02:35:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f6143988809bc61826f3409e77f950e435db2bab",
          "body": "A multi-agent review (29 subsystems, each finding adversarially verified)\nsurfaced 13 confirmed defects across seer-core and the TUI.\n\nSecurity / info-disclosure:\n- lookup: sanitize the RDAP error string in the WHOIS-primary branch so an\n  SSRF-guard rejection can't leak an internal/reserved IP -- t\n[…]\ned iterations as failures instead of green\n  healthy checks.\n\nAdds 6 regression tests. cargo fmt/clippy clean; all Rust and Python suites\npass.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve 13 verified defects from full-codebase audit (#98)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T02:32:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b35f3c3676ad4d36816543ad4fddebd30116a0d9",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.37.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T00:17:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "118ab0b0ebb32b5d459f2fb5bb39a42c7ae06272",
          "body": "* fix: resolve 11 verified code-review findings across core + CLI\n\nFixes from a multi-agent code review, each landed test-first (RED→GREEN where\nunit-testable) and adversarially re-verified. Full suite green; production code\nclippy-clean.\n\nHigh:\n- whois(educause): only stamp registrar=\"EDUCAUSE\" whe\n[…]\nms. The REPL's `compare` (separate @-prefixed\nmanual parser) is unaffected.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve 11 verified code-review findings across core + CLI (#97)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-07-01T00:13:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c32b9120dc87f26474620b437ed53fb9a57c767",
          "body": "Re-sync seer-core/src/whois/servers.rs against upstream\n(last_updated 2026-06-27), which auto-tracks the IANA Root Zone DB.\n\n32 registry server-hostname migrations (no TLD add/remove):\n- 13 Tucows TLDs (click, country, diy, food, gift, hiv, lifestyle,\n  link, living, property, sexy, trust, vana): wh\n[…]\nhostnames verified to resolve. The 49 whois.nic.google\nRDAP-only TLDs remain intentionally omitted (dead hostname; see the\nmodule header note).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(whois): sync server map with upstream (WooMai/whois-servers) (#96)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-28T19:00:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc12a9db1c0d6b9c4a6c6b15ea3f03a4e860a32f",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01CE3QFtu1KrhrtJaKcWdxEK",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.36.0",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-27T22:54:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "11f1bad4f801f74768cd5f19fc9b25c00146b3d2",
          "body": "Bulk lens: live streaming results, row selection + detail view, cancel a\nrun, ok/failed summary, and whois/rdap/ssl/prop op presets.\n\nTLD lens: full-catalog, live-filterable browser (seer_core::all_tlds)\nreplacing the hardcoded 7-TLD switcher.",
          "is_bot": false,
          "headline": "feat(tui): improve Bulk lens + TLD browser usability (#95)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-27T22:51:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31a2283e02eba8ddcba6c5164384ed50919d1b60",
          "body": "Patch release: TUI list-scrolling fix plus raw-mode pane rendering and the\nRDAP IP-tab idle-hint fallback (#94).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.6",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-26T01:41:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "921a78c4302b12c5b3d5ced63d55aae31a2b2b82",
          "body": "…de (#94)\n\nThe list lenses (propagation, subdomains, history, watchlist, DNS records)\nrendered plain non-stateful `Table`s, so the selection could move past the\nviewport edge and become invisible with no way to scroll it back — worst on\nPropagation (~30 resolvers) and Subdomains (often hundreds of r\n[…]\n\" dev comment.\n\nVerified live (tmux): Subdomains on github.com (42 rows) now scrolls to the\nlast entry on `G`; Bulk renders fully in JSON mode.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tui): scroll selectable list lenses; render pane lenses in raw mo…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-26T01:39:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ff28f47e0299b20d2e289e6dc7d0e48e1f8ce0b",
          "body": "Two seer-core bugs found by live-driving the TUI against real domains:\n\n- diff: tokio::join! of four heavyweight futures inlined to a ~105 KB\n  future that overflowed a 2 MB tokio worker stack in debug builds, hard-\n  aborting the TUI on `:diff a b`. Box::pin each joined branch.\n- history: WhoisResp\n[…]\n— seer history + the TUI History lens were always\n  empty. Add `default` (security property unchanged: still never serialized).\n\nBoth covered by new regression tests. 795 tests pass; clippy/fmt clean.",
          "is_bot": false,
          "headline": "fix(tui): repair Diff crash and broken history persistence (#93)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-25T22:53:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3783315b93cc81bc7a5223e8049e40733875f25b",
          "body": "Dependency + MSRV release: pins the real MSRV (Rust 1.88) with CI enforcement\nand lands the full Dependabot batch (ratatui 0.30, rustyline 17, rand 0.10,\ncolored 3, toml 1.1, crossterm 0.29, dirs 6, x509-parser 0.18, OpenTelemetry\n0.32/0.33). No public API changes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.5",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:38:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "04f5a8fad6bfa52a5bc33468c8166ed7532af356",
          "body": "…e.yml (#86)\n\nThe github-actions ecosystem conflicts with this repo in two ways (both seen\nin the now-closed broken PR #77):\n\n- It \"bumped\" `dtolnay/rust-toolchain@1.88.0` -> `@1.100.0`, misreading the MSRV\n  toolchain pin as an action version — which would silently change what the\n  `msrv` CI job v\n[…]\ncoped to a single workflow file, so documented the\n  caveat inline: close such PRs and refresh release.yml's actions via a\n  cargo-dist update.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(dependabot): stop mangling the MSRV toolchain pin; document releas…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:33:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5ab8991149b8822a9ccc39cc757d1aea5d5bab5b",
          "body": "Dependabot #81's Security Audit \"failure\" was a transient network flake\n(curl HTTP/2 framing error while *installing* cargo-audit), not an advisory.\nConfirmed locally: `cargo audit` scans the tree clean, the SSL cert-parsing\ntests pass, and the MSRV 1.88 floor is unchanged.\n\nSupersedes #81.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): bump x509-parser 0.16 -> 0.18 (#85)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:30:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "696ab428c1520397a74da9dc592569013d1f2e3b",
          "body": "- crossterm 0.29 unifies cleanly across seer-cli (direct), ratatui 0.30\n  (via ratatui-crossterm), and comfy-table — single version, no split.\n- dirs 6: seer only calls `dirs::home_dir()`, whose signature is unchanged.\n\nVerified: workspace compiles, all tests pass (158 seer-cli + 619 seer-core),\nclippy + fmt clean, MSRV 1.88 unchanged.\n\nSupersedes Dependabot #80 and #82.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): bump crossterm 0.28->0.29 and dirs 5->6 (#84)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:30:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1a2dc8bb7c185045491a0fe44ea02a03ee4a8002",
          "body": "Two CLI-layer bumps, bundled and re-verified against current main.\n\n- ratatui 0.30 restructured into sub-crates (ratatui-core/-crossterm/...).\n  seer's rendering compiles unchanged and still interops with seer's direct\n  crossterm 0.28 event handling.\n- rustyline 17: the REPL stdin path still works \n[…]\nndering\ncan't be driven headlessly (no TTY in CI), so that rests on compilation + the\npure App-state tests.\n\nSupersedes Dependabot #75 and #68.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): bump ratatui 0.29->0.30 and rustyline 14->17 (#83)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:18:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4847608baef423dc5c971548cc283180debae183",
          "body": "rand 0.9/0.10 reorganized the RNG API:\n- `thread_rng()`/`gen_range()` -> `rng()`/`random_range()` (the latter moved\n  to the `RngExt` trait). Migrated the retry-jitter call in seer-core.\n- `OsRng` became feature-gated and fallible. The `generate-key` path needs a\n  CSPRNG, so it now calls `getrandom\n[…]\nerified: generate-key emits distinct 43-char keys, retry tests pass, clippy\nand fmt are clean, MSRV 1.88 unchanged.\n\nSupersedes Dependabot #69.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): migrate rand 0.8 -> 0.10 (#79)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:15:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "77b998c2d7b517f538f14987170f848c29ff1bf7",
          "body": "Bumps opentelemetry, opentelemetry_sdk, opentelemetry-otlp to 0.32 and\ntracing-opentelemetry to 0.33 as one coherent set — they pin compatible\nversions of each other. seer-core's logging.rs OTel path compiles unchanged\nagainst them (verified with `cargo check -p seer-core --features otel`).\n\nSuperse\n[…]\nthe\n  optional integration (and future bumps) can't silently break.\n- Group the opentelemetry crates in Dependabot so they bump as a single PR.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): bump OpenTelemetry stack (0.32/0.33) and test it in CI (#78)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T23:10:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e8a26d344f5ac33e397e3a4adb09cb91ae0c85c",
          "body": "Bumps [toml](https://github.com/toml-rs/toml) from 0.8.23 to 1.1.2+spec-1.1.0.\n- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.23...toml-v1.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: toml\n  dependency-version: 1.1.2+spec-1.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump toml from 0.8.23 to 1.1.2+spec-1.1.0 (#70)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-24T22:55:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d6a6f6ecd38950344a6b562e58302b747573fe9",
          "body": "The advertised \"1.70+\" was untested and wrong by 18 versions: the default\nbuild path `x509-parser -> time -> time-macros` already requires Rust 1.88.\nVerified `cargo check --workspace --locked` builds on 1.88.0.\n\n- Pin `rust-version = \"1.88\"` in [workspace.package].\n- Add an `msrv` CI job (pinned 1.\n[…]\n::File::lock` (1.89) is only one version above the real floor,\nso the earlier avoidance to \"keep 1.70\" was based on a floor that never existed.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: pin real MSRV (1.88) and enforce it in CI (#76)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T22:55:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "326bd6b46c561a6de170d90b53fcd0602a6a1da6",
          "body": "Updates the requirements on [maturin](https://github.com/pyo3/maturin) to permit the latest version.\n- [Release notes](https://github.com/pyo3/maturin/releases)\n- [Changelog](https://github.com/PyO3/maturin/blob/main/Changelog.md)\n- [Commits](https://github.com/pyo3/maturin/compare/v1.4.0...v1.14.1)\n[…]\ndency-version: 1.14.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): update maturin requirement in /seer-py (#66)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-24T22:54:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "84a879a5189385a1d734450b5ea32b5e214b6cd4",
          "body": "Bumps [colored](https://github.com/mackwic/colored) from 2.2.0 to 3.1.1.\n- [Release notes](https://github.com/mackwic/colored/releases)\n- [Changelog](https://github.com/colored-rs/colored/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/mackwic/colored/compare/v2.2.0...v3.1.1)\n\n---\nupdated-d\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(deps): bump colored from 2.2.0 to 3.1.1 (#73)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-24T22:54:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d170e6c8a8071baf1d83e14956acdffdc0ef23a3",
          "body": "Tooling/docs release: CHANGELOG, Dependabot, and an informational CI\ncoverage job (#64). No code or behavior changes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.4",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T22:21:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e40e959e21bde15c05ba490afa34ad5dbd0bb327",
          "body": "* docs: add CHANGELOG.md and wire it into the release process\n\nBackfills a Keep a Changelog-formatted history. Recent releases (0.29.0\n–0.35.3) are documented in detail from the actual commit history; the\n0.1.0–0.28.0 foundational period is summarized with pointers to git tags,\nplus the two document\n[…]\nport artifact. It is\ninformational and does not gate merges on a threshold.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: add CHANGELOG, Dependabot, and CI coverage job (#64)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T22:19:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f957bc80798430d18867c92f0e4951857277ca41",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.3",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T20:54:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6c59718c6e91fcc6b83d5f202acbb5b59d4bccb0",
          "body": "…20 Low) (#63)\n\n* fix(api): log auth/limit rejections, sanitize errors, parallelize SSRF guards\n\n- Move RequestLoggingMiddleware outermost so the 401 (auth), 413 (body-size),\n  and /mcp 403/429 short-circuits are logged and counted in /metrics instead of\n  bypassing the logging middleware entirely.\n\n[…]\ny — its non-atomic counters would race if ever called from a worker thread.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve whole-codebase code-review findings (1 High, 5 Medium, ~…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T20:52:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c5a50f1495fb4076055afbd7105899b9b422872",
          "body": "Bug-fix / hardening release: resolves adversarial-review issues #45–#61\n(merged in #62). No breaking API changes or new features.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.2",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T04:25:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4c8e13fa8b5b10d7b12ba67ef2659c67507dcc7c",
          "body": "Squash-merge of the adversarial-review fix batch. Closes #45–#60; addresses #61. See PR #62 for the full per-issue breakdown and the two documented deferrals (#59 file-lock, #61 consider-items).",
          "is_bot": false,
          "headline": "fix: resolve all 17 open adversarial-review issues (#45–#61) (#62)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T04:23:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b71388af00361157fd7abbdefc22fe5e62ce3bd0",
          "body": "pyo3-log 0.13.4 lifted its pyo3 <0.29 cap (now >=0.26, <0.30), unblocking\nthe upgrade tracked in #32. Bump pyo3 0.24 -> 0.29 and pyo3-log 0.12 -> 0.13.\n\nThis resolves RUSTSEC-2026-0176 and RUSTSEC-2026-0177 at the source, so the\nignores in .cargo/audit.toml are no longer needed — the file is removed\n[…]\nargo fmt/clippy (-D warnings)/test workspace green; cargo audit\nclean of the two advisories; seer-py + seer-api pytest suites pass.\n\nCloses #32\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): upgrade pyo3 to 0.29, remove RUSTSEC audit ignores (#44)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-24T00:39:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b2283a76911f73189a00e9813ad9c1a022e4794",
          "body": "…#43)\n\nSubdomain enumeration relied solely on crt.sh, which is operationally\nflaky — under load it returns 404/429/5xx and even 200-with-HTML error\npages. The previous retry layer only treated 5xx as transient, so a\ncrt.sh 404 (the reported zac.app failure) or 429 aborted immediately\nwith a bare err\n[…]\nhen crt.sh 502s;\nexample.com still served by crt.sh primary. Adds a hermetic wiremock\nfallback regression test plus classify/parser unit tests.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(subdomains): add certspotter fallback and harden crt.sh retries (…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-23T05:27:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "52a779814e20ea223f9e314b979dd72f95ab863a",
          "body": "Maintenance release: defers Homebrew + PyPI publishing (first fully-green\nRelease workflow since the publish-homebrew-formula job was removed) and\nrefreshes dependencies. No seer-core/seer-cli code changes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.1",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-22T20:08:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "af589ae3235ed006e0de38ff34a494a49a629b5f",
          "body": "…lease\n\nci: defer Homebrew + PyPI publishing; update dependencies",
          "is_bot": false,
          "headline": "Merge pull request #42 from TheZacillac/claude/defer-homebrew-pypi-re…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-22T20:04:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0f6c9421c6ae9a73df023dfd62ebd7c7d355fa4",
          "body": "The cargo-dist `publish-homebrew-formula` job failed on every tagged release\n(v0.34.0, v0.35.0) with `actions/checkout` -> \"Input required and not supplied:\ntoken\": the `TheZacillac/homebrew-tap` repo and `HOMEBREW_TAP_TOKEN` secret were\nnever created. PyPI publishing was likewise incomplete -- the \n[…]\ndomain-seer` is not published yet.\n- `cargo update`: refresh Cargo.lock to latest semver-compatible deps\n  (fmt/clippy/test all green locally).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: defer Homebrew + PyPI publishing; update dependencies",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-22T19:17:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22d566ac155b7f1a3e99d7f7f3deb4f44c2dba11",
          "body": "Ships the MCP cosmetic fixes from #41: de-duplicated 'Invalid input:'\nprefix on SSRF refusals, and dropped the unfulfilled 'TLS version' claim\nfrom the seer_bulk_ssl / REST bulk-ssl descriptions.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.35.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T18:27:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6db7f20840ed5b1038b8f79da639c5cd94e09369",
          "body": "fix(mcp): dedupe 'Invalid input:' prefix and correct bulk_ssl TLS-version claim",
          "is_bot": false,
          "headline": "Merge pull request #41 from TheZacillac/claude/fix-mcp-cosmetic",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T18:26:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87be70b6b872957543a554d62a79e04d4b1a705b",
          "body": "…sion claim\n\nTwo cosmetic issues found while verifying the MCP endpoints end-to-end:\n\n1. SSRF refusals (and any seer-core InvalidInput surfaced via MCP) showed a\n   doubled \"Invalid input: Invalid input:\" prefix. seer-core's InvalidInput\n   Display already prepends \"Invalid input:\", PyO3 surfaces th\n[…]\novered by new unit + end-to-end tests in test_mcp_validation.py (the\nintegration test was watched failing against the old doubled-prefix code).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcp): dedupe 'Invalid input:' prefix and correct bulk_ssl TLS-ver…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T17:48:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92ea2cb7bcb8ba29fa49c4f5e4533f75bfd239f3",
          "body": "Cuts a release of the dig-bug fixes (#39) and the oppositional code-review\nfixes (#40). The removal of the public `validate_domain_safe` is a breaking\nchange to the seer-core API, hence the minor bump under 0.x.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.34.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T03:36:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1013e0eec7179bfc7d66ef28759cbdb1492e1e1",
          "body": "fix: resolve issues found in oppositional code review",
          "is_bot": false,
          "headline": "Merge pull request #40 from TheZacillac/claude/review-fixes",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T03:33:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31056d925deff17bf9ac5bc7e72df2fda8d4eee1",
          "body": "fix(dns): repair five dig bugs found in edge-case testing",
          "is_bot": false,
          "headline": "Merge pull request #39 from TheZacillac/claude/fix-dig-bugs",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T03:32:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ead18458941c9b1e5c6eed4e04a6ebf06e3e98e9",
          "body": "Project-wide adversarial review follow-up. Every behavioral change is\ncovered by a test (RED -> GREEN); pure doc/deletion changes are not.\n\nCorrectness (wrong results):\n- whois: recover unambiguous US MM/DD/YYYY dates instead of dropping them;\n  document day-first precedence for ambiguous all-numeri\n[…]\nent the DNSKEY key-tag correlation limit\n\nVerified: cargo fmt + clippy (-D warnings) + test workspace green;\nseer-api and seer-py pytest green.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve issues found in oppositional code review",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-18T03:22:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f71611cef05d7e3eb179a363f3b515aba233faf2",
          "body": "Live edge-case testing of the dig path surfaced five issues across\nseer-core and the MCP error boundary:\n\n1. IPv6 reverse DNS (PTR) was completely broken: normalize_domain ran\n   before resolve_ptr's IP detection, and its `:port`-strip heuristic\n   truncated IPv6 literals (`::1111` -> dropped), so t\n[…]\nn end-to-end seer-py test that a bare\nSRV query raises ValueError; live (#[ignore]) SRV + NAPTR resolution\ntests. ANY-header snapshots updated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(dns): repair five dig bugs found in edge-case testing",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-17T17:47:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9962d37b6623929782d9b0eacbc27248d5291c4d",
          "body": null,
          "is_bot": false,
          "headline": "Fix formatting in README.md table",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T20:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3167a282ad710e17f2aeed2c859e3f2f864b380",
          "body": "docs(claude-md): correct release flow — publish.yml needs manual dispatch",
          "is_bot": false,
          "headline": "Merge pull request #38 from TheZacillac/claude/docs-release-flow",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:48:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06a70e2cd4fcf002de4b561e417ec925b6dd054b",
          "body": "…atch\n\ndist creates the GitHub release with GITHUB_TOKEN, and GitHub\nsuppresses events from token-authored actions (anti-recursion), so the\nrelease:published trigger never fires. Discovered on the v0.33.0\nrelease; crates were published via workflow_dispatch. Long-term fix\nnoted: fold crates/wheels publishing into dist publish-jobs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(claude-md): correct release flow — publish.yml needs manual disp…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:44:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a9dd4999753bd4c7137df85a9b038fecaebc78ed",
          "body": "fix(release): disable LTO in dist profile (Windows Defender false positive)",
          "is_bot": false,
          "headline": "Merge pull request #37 from TheZacillac/claude/fix-windows-dist-build",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:30:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af723ebb0aca7547c0ee8735866aeae58bbb8c0d",
          "body": "…er false positive\n\nThin-LTO intermediate objects deterministically trip Defender's\nrealtime scan on windows-latest runners (identical 'could not write\noutput ... permission denied' on two consecutive v0.33.0 build\nattempts), while non-LTO dev/test builds never do. Different codegen,\ndifferent bytes, no false positive. Only prebuilt artifacts pay the\n~10% size cost; cargo install still gets the thin-LTO release profile.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(release): disable LTO in the dist profile to avoid Windows Defend…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:26:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "04e2837d6a552b4cb5506639271096b5dbca2629",
          "body": "chore(release): v0.33.0",
          "is_bot": false,
          "headline": "Merge pull request #36 from TheZacillac/claude/release-v0.33.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:09:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1d33cb44d6a7d464252717033c6bf03930e4206",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): v0.33.0",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T19:05:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c01b246173f00dffae7950607192e17365f73b60",
          "body": "ci(release): publish Homebrew formula to TheZacillac/homebrew-tap",
          "is_bot": false,
          "headline": "Merge pull request #35 from TheZacillac/claude/homebrew-tap",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T16:46:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b618d52e6dc48bb778dd15869bf9233b9efca69",
          "body": "feat(py): publish to PyPI as domain-seer (import name unchanged)",
          "is_bot": false,
          "headline": "Merge pull request #34 from TheZacillac/claude/pypi-domain-seer",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T16:43:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54f105d3067b1233eb54a4670c63e054a0db57e2",
          "body": "Adds the homebrew installer to dist config; on each release the\ngenerated publish-homebrew-formula job pushes seer-cli.rb to the tap\n(install: brew install TheZacillac/tap/seer-cli). Requires the\nHOMEBREW_TAP_TOKEN repo secret (PAT with write access to the tap) —\nGITHUB_TOKEN cannot push cross-repo. Also adds the workspace homepage\nfield dist was warning about (feeds formula/crates.io metadata).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): publish Homebrew formula to TheZacillac/homebrew-tap",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T16:42:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "56fa6ab1183309cbe9de67112f567d29574b3d21",
          "body": "The bare name 'seer' is taken on PyPI by an unrelated project. The\ndistribution becomes domain-seer; 'import seer' is unchanged\n(python-source/module-name already control the package name).\n\n- seer-api now depends on domain-seer>=0.32 — this also fixes a real\n  footgun: 'pip install -e ./seer-api' p\n[…]\n updated\n- publish.yml: wheels also upload as artifacts; new sdist job; new\n  publish-pypi job via Trusted Publishing (OIDC, environment 'pypi')\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(py): publish to PyPI as domain-seer (import name unchanged)",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T16:39:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e5a4c90a4af23b199475e3a10650342f34f0c75",
          "body": "ci(audit): ignore unreachable pyo3 advisories pending pyo3-log 0.29 support",
          "is_bot": false,
          "headline": "Merge pull request #33 from TheZacillac/claude/pyo3-bump",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T16:01:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ae5755f1dfcbd26f4d4b3ccf7246095e9539dbc",
          "body": "…upport\n\nRUSTSEC-2026-0176/0177 (published 2026-06-11) turned main's audit job\nred overnight. Both live in pyo3 0.24.x code paths seer-py never calls\n(no .nth(/.nth_back(/new_closure usages in seer-py/src). The real fix\nis pyo3 >=0.29, blocked because pyo3-log caps at pyo3 <0.29 and the\nlinks=python constraint forbids coexisting versions.\n\nDocumented ignores in .cargo/audit.toml; removal tracked in #32.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(audit): ignore unreachable pyo3 advisories pending pyo3-log 0.29 s…",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:58:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4abf6a03f0be7a8ebae54ecbe29d9b2a5044da1",
          "body": "docs(claude-md): sync with v0.32 codebase (modules, config, release flow, test conventions)",
          "is_bot": false,
          "headline": "Merge pull request #31 from TheZacillac/claude/docs-refresh",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:51:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61110c0e55f195e4abf585a274e991d3f15e2c19",
          "body": "ci(release): prebuilt CLI binaries (cargo-dist) + seer-py wheels on releases",
          "is_bot": false,
          "headline": "Merge pull request #30 from TheZacillac/claude/release-artifacts",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:48:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42eddc544ccd7db850a2eb622bbade2f9a2fa1e4",
          "body": "The structure tree was missing 15 of ~24 seer-core modules (config,\nretry, cache, net, ssl, validation, subdomains, caa, diff, watchlist,\nhistory, tld, availability, domain_info, logging); RDAP timeout said\n30s (code: 15s); output formats said 2 (there are 4); and the doc\npredated ~/.seer/config.tom\n[…]\n, the MCP Streamable\nHTTP transport, generate-key, the deterministic mock-test conventions,\nand the tag-driven release flow. All now documented.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(claude-md): sync with v0.32 codebase",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:47:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e9563edbcd6cb69ce7d12ac8c0859dbd710b7a06",
          "body": "dist init (v0.32.0) with five targets (x86_64/aarch64 Linux + macOS,\nx86_64 Windows) and shell/powershell installers. Only seer-cli produces\nartifacts ('dist plan' verified — lib/cdylib crates excluded).\n\nRelease flow is now: push a vX.Y.Z tag -> release.yml (dist) builds\nbinaries and creates the Gi\n[…]\nres on\n'release: published' for crates.io and seer-py wheels. The PR trigger\nin release.yml is dist's own plan dry-run, validating config drift.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): prebuilt CLI binaries + installers via cargo-dist",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:44:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b310d818909ab1e607028b7fd911e10a5eb4172",
          "body": "abi3-py39 gives one wheel per platform (x86_64/aarch64 Linux, macOS,\nWindows) covering Python 3.9+. Uploaded as release assets rather than\npublished to PyPI: the name 'seer' is taken there, and seer-api's\n'seer>=0.10.2' dependency would resolve to the wrong project — the\nrename decision is tracked separately.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): build seer-py wheels and attach to GitHub releases",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:43:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6814faa04d6f37e7b347e19a2aab09f5550fed35",
          "body": "docs(core): document deliberate retry boundaries; unwrap audit results",
          "is_bot": false,
          "headline": "Merge pull request #29 from TheZacillac/claude/code-hygiene",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:42:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed3aab78d5b4ab2d79bc9d922ff597a9d686724a",
          "body": "test: deterministic protocol mocks (WHOIS TCP, RDAP wiremock) + formatter snapshots",
          "is_bot": false,
          "headline": "Merge pull request #28 from TheZacillac/claude/protocol-mock-tests",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0329784d493f0c6095afc862e0e1630b7975ec9",
          "body": "dns/resolver.rs, status/client.rs, and ssl.rs intentionally do not use\nthe RetryPolicy wrapper that WHOIS/RDAP use — hickory retransmits\ninternally, and health/SSL probes are point-in-time observations where\nretries would mask the flakiness they exist to surface. Make that\nchoice explicit at the mod\n[…]\nntional module-level allow on a cfg(test) tests\nmodule. Production paths are unwrap-clean under the workspace\nunwrap_used lint with -D warnings.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(core): document deliberate retry boundaries; verify unwrap audit",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:39:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f976d2be5a8772a89077eef3c5d90db735038fea",
          "body": "Pins rendered output for the four main response types (whois, rdap,\ndns records, status) in both formats — the formatter modules previously\nhad no test coverage. ANSI is force-enabled (colored::control) so the\nhuman snapshots capture real styled output deterministically, and an\ninsta filter redacts the now()-relative day counts with far-future\nfixture expiries keeping color thresholds stable.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(output): insta snapshots for human and markdown formatters",
          "author_name": "Zac Roach",
          "author_login": "TheZacillac",
          "committed_at": "2026-06-12T15:37:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 91,
      "commits_last_year": 525,
      "latest_release_at": "2026-07-23T19:03:02Z",
      "latest_release_tag": "v0.44.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 22,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 2.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "seer-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "cli",
            "dns",
            "domain",
            "rdap",
            "whois",
            "command-line-utilities",
            "network-programming"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/seer-cli",
          "is_deprecated": false,
          "latest_version": "0.44.2",
          "repository_url": "https://github.com/TheZacillac/seer",
          "versions_count": 89,
          "total_downloads": 1615,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 347,
          "first_published_at": "2026-01-16T19:02:48.003464Z",
          "latest_published_at": "2026-07-23T18:57:56.169291Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 6
        },
        {
          "name": "seer-core",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "dns",
            "domain",
            "networking",
            "rdap",
            "whois",
            "command-line-utilities",
            "network-programming"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/seer-core",
          "is_deprecated": false,
          "latest_version": "0.44.2",
          "repository_url": "https://github.com/TheZacillac/seer",
          "versions_count": 90,
          "total_downloads": 2073,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 434,
          "first_published_at": "2026-01-16T19:01:23.459379Z",
          "latest_published_at": "2026-07-23T18:57:11.787975Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 4,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "seer-cli/Cargo.toml",
        "seer-core/Cargo.toml",
        "seer-py/Cargo.toml"
      ],
      "largest_source_bytes": 91375,
      "source_files_sampled": 202,
      "oversized_source_files": 8,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 46054
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "seer-api/pyproject.toml",
        "seer-cli/Cargo.toml",
        "seer-core/Cargo.toml",
        "seer-py/Cargo.toml",
        "seer-py/pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "fastapi",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.109,!=0.136.3"
        },
        {
          "name": "uvicorn",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.27"
        },
        {
          "name": "pydantic",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0"
        },
        {
          "name": "mcp",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0"
        },
        {
          "name": "domain-seer",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.32"
        },
        {
          "name": "slowapi",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.9"
        },
        {
          "name": "orjson",
          "manifest": "seer-api/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.9"
        },
        {
          "name": "seer-core",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.44.0"
        },
        {
          "name": "tokio",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "rustyline",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "shlex",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "colored",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "indicatif",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "comfy-table",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "clap",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "clap_complete",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "clap_mangen",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-subscriber",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crossterm",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ratatui",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.30"
        },
        {
          "name": "futures",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "base64",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "dirs",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "getrandom",
          "manifest": "seer-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "reqwest",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "hickory-resolver",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "chrono",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-subscriber",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-appender",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-opentelemetry",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "opentelemetry",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "opentelemetry_sdk",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "opentelemetry-otlp",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "futures",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "async-trait",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "once_cell",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "regex",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "url",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "colored",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "base64",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "native-tls",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio-native-tls",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "x509-parser",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "rand",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "toml",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "idna",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "dirs",
          "manifest": "seer-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "seer-core",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.44.0"
        },
        {
          "name": "pyo3",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tokio",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "log",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "pyo3-log",
          "manifest": "seer-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 88,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 19,
        "closed_unmerged_prs": 21
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "TheZacillac",
          "commits": 494,
          "avatar_url": "https://avatars.githubusercontent.com/u/3311679?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.963
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "publish.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "22 out of 22 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/22 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 18 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 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": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "adc2f65482b3502e7231199b885dc6ec2f980c97",
        "ran_at": "2026-07-29T19:06:13Z",
        "aggregate_score": 4.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-29T08:24:33Z",
      "oldest_open_prs": [
        {
          "number": 129,
          "created_at": "2026-07-29T08:24:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 130,
          "created_at": "2026-07-29T08:26:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 131,
          "created_at": "2026-07-29T08:26:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T18:47:45Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/TheZacillac/seer",
    "host": "github.com",
    "name": "seer",
    "owner": "TheZacillac"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 48,
        "vitality": 83,
        "community": 33,
        "governance": 56,
        "engineering": 75
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 83,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "commits_last_year": 525,
              "human_commit_share": 0.88,
              "days_since_last_push": 0,
              "active_weeks_last_year": 22
            },
            "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": "22/52 weeks with commits",
                "points": 15.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 22
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "525 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 525
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 91,
              "latest_release_tag": "v0.44.2",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 2.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "91 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "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": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 8,
            "inputs": {
              "forks": 0,
              "stars": 4,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "4 stars",
                "points": 7.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "at_risk",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "packages": [
                "seer-cli",
                "seer-core"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 3688,
              "monthly_downloads": 781
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "781 downloads/month across crates",
                "points": 38.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 781,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 56,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.963
            },
            "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 96% of commits",
                "points": 0.8,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "merged_prs": 88,
              "open_issues": 0,
              "closed_issues": 19,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 21
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "88/109 decided PRs merged",
                "points": 30.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 88,
                      "decided": 109
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 46,
            "inputs": {
              "followers": 6,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "TheZacillac",
              "public_repos": 13,
              "account_age_days": 4939
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "6 followers of TheZacillac",
                "points": 6.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 6,
                      "login": "TheZacillac"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "13 public repos, account ~13 yr old",
                "points": 20.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 13
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "seer-cli",
                "seer-core"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "90 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 90
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 75,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "22 out of 22 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "dig",
                "dns",
                "domains",
                "rdap",
                "whois"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 48,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 4.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "22 out of 22 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 18 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.977,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 46054
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "86 of 88 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 86,
                      "sampled": 88
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.69,
              "toolchain_manifests": [
                "Cargo.toml",
                "seer-cli/Cargo.toml",
                "seer-core/Cargo.toml",
                "seer-py/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0.12
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, seer-cli/Cargo.toml, seer-core/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, seer-cli/Cargo.toml, seer-core/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "69 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 69,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "12 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 12,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 91375,
              "source_files_sampled": 202,
              "oversized_source_files": 8
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "8/202 source files over 60KB",
                "points": 52.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 202,
                      "oversized": 8
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'seer-py' from its registry",
    "Could not fetch pypi package 'domain-seer' from its registry",
    "Could not fetch pypi package 'seer-api' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T19:06:28.680511Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TheZacillac/seer.svg",
  "full_name": "TheZacillac/seer",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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