kedgeway

Documentación / Referencia / Arquitectura

Arquitectura

kedgeway es hexagonal: las reglas son puras y todo lo que toca el mundo exterior está detrás de un puerto.

CapaArchivosFunción
coresrc/core/diagnose.ts, src/core/repo-facts.tsFunciones puras. repo-facts analiza manifiestos y versiones; diagnose convierte los datos del repo y un snapshot en hallazgos. Sin E/S.
portssrc/ports/ecosystem.tsEcosystemPort: un solo método, fetchSnapshot(), que devuelve un snapshot del ecosistema.
adapterssrc/adapters/fs-repo-scanner recorre el repo. raven-ecosystem, raven-auth y raven-parse son el cliente MCP de Raven, el OAuth y el parser de resultados. fake-ecosystem carga fixtures.
clisrc/cli.ts, src/cli/commands.tsComandos, flags, formato del reporte y códigos de salida. Conecta los adaptadores con el núcleo.

Flujo de una ejecución

  1. El escáner produce los datos del repo: dependencias de Rust y JavaScript, más los errores de manifiesto.
  2. Un EcosystemPort (Raven, o el falso a partir de un fixture) produce un snapshot.
  3. diagnose(facts, snapshot) devuelve los hallazgos y un resumen.
  4. La CLI los imprime y calcula el código de salida.

Tests

Los tests están junto al código como *.test.ts y se ejecutan con Vitest (npm test). El desarrollo es test-first: primero escribe el test que falla y luego la regla.

Agregar una regla

  1. Escribe un test que falle en src/core/diagnose.test.ts con los datos y el snapshot que deberían activarla.
  2. Agrega la lógica en src/core/diagnose.ts y devuelve un hallazgo con severidad, código, mensaje, archivo y evidencia que cite la fuente del snapshot.
  3. Si la regla necesita un dato nuevo, primero extiende el parser en src/core/repo-facts.ts, con tests.
  4. Documenta el código en la página Hallazgos.