@eduardbar/drift es un CLI de auditoría estática para repos TypeScript/JavaScript orientado a deuda estructural y confianza de merge en PRs asistidas por AI.
- Publicado en npm como
@eduardbar/drift - Licencia MIT
- Versión del paquete:
1.5.0(package.json)
| Dep | Rol |
|---|---|
ts-morph ^27 |
análisis AST |
commander ^14 |
CLI y flags |
kleur ^4 |
salida con color |
typescript ^5.9 |
compilación |
vitest ^4 |
testing |
Runtime: Node.js 20.x and 22.x (LTS), ES Modules ("type": "module").
Comandos top-level definidos en src/cli.ts:
scan [path]initdiff [ref]guard [path]benchmarkreviewtrust [path]trust-gate <trustJsonFile>doctorkpi <path>map [path]report [path]badge [path]ci [path]trend [period]blame [target]fix [path]snapshot [path]cloud(con subcomandos:ingest,summary,plan-set,plan-changes,usage,dashboard)
- La fuente de verdad de reglas/pesos/severidad es
RULE_WEIGHTSensrc/analyzer.ts. - Estado actual: 35 rule IDs (incluye reglas de detección, reglas configurables, meta-reglas y diagnósticos de plugins/guardrails de análisis).
- Score por archivo: suma de pesos cap a 100.
- Score de proyecto: promedio de scores por archivo.
Catálogo completo actualizado en docs/rules-catalog.md.
DriftConfig actual (ver src/types/app.ts):
layers: capas paralayer-violationmodules: boundaries paracross-boundary-importmoduleBoundaries/boundaries: alias legacy normalizados amodulesplugins: plugins driftperformance:lowMemory,chunkSize,maxFiles,maxFileSizeKb,includeSemanticDuplicationarchitectureRules:controllerNoDb,serviceNoHttp,maxFunctionLinessaas: límites/política local multi-tenant (strictActorEnforcementincluido)trustGate: políticas de gating paratrust/trust-gate
Notas:
- Sin config, reglas puramente configurables/arquitectónicas se omiten.
excludey overrides tiporules: { ... }no forman parte del contrato tipado actual deDriftConfig.
scan, diff, guard, trust, report, badge, ci, snapshot comparten:
--low-memory--chunk-size <n>--max-files <n>--max-file-size-kb <n>--with-semantic-duplication
init: scaffolding dedrift.config.ts, workflow CI y baseline (drift-baseline.json)doctor: diagnóstico de entorno/proyecto (--jsonopcional)guard: evaluación de regresión por diff (--base) o baseline (--baseline) con--budgety--by-severity
- Evitar drift real en el propio repo (drift se corre sobre sí mismo).
- Mantener README + AGENTS + catálogo de reglas sincronizados cuando cambian reglas/CLI.
- Usar Conventional Commits.
src/cli.ts— contrato de comandos y flagssrc/analyzer.ts— orquestación de análisis +RULE_WEIGHTSsrc/rules/*.ts— detecciones por fasesrc/config.tsysrc/types/*.ts— contrato de configuraciónREADME.md— documentación de uso públicadocs/rules-catalog.md— inventario completo de reglas