Especificación padre: #30
Ticket del desglose Project Brain Lite 0.3.1: 08/20.
Entrega
Añadir un check read-only generated-freshness que compare la proyección actual con la esperada.
Bloqueado por
Acceptance criteria
- Una diferencia observable genera
STALE_GENERATED_PROJECTION.
- El diagnóstico es warning y conserva
ok: true y exit code 0.
doctor calcula la proyección esperada sin escribir.
sync elimina el warning.
- Freshness no se deduce únicamente del fingerprint.
- Un cambio de igual tamaño sin efecto en la proyección no genera warning.
- Marcadores inválidos continúan usando los errores existentes.
Tests requeridos
- Archivo añadido y eliminado.
- Cambios de manifest, stack y scripts de validación.
- Bloque generado manipulado.
- Cambios de igual tamaño con y sin efecto semántico.
- Flujo
doctor warning -> sync -> doctor limpio.
- Repetición determinista y comprobación de no escritura.
Non-goal
no introducir nuevos archivos canónicos, comandos, dependencias,
servicios ni capacidades fuera del alcance 0.3.1.
Guardas de compatibilidad
- Node.js 20+ y cero dependencias npm.
- Comportamiento determinista, file-first y local-first.
- API pública, rutas, tres comandos y cinco archivos canónicos preservados.
doctor permanece read-only e init permanece no destructivo.
- No se ejecutan comandos detectados ni se utiliza la red.
Especificación padre: #30
Ticket del desglose Project Brain Lite 0.3.1: 08/20.
Entrega
Añadir un check read-only
generated-freshnessque compare la proyección actual con la esperada.Bloqueado por
Acceptance criteria
STALE_GENERATED_PROJECTION.ok: truey exit code0.doctorcalcula la proyección esperada sin escribir.syncelimina el warning.Tests requeridos
doctor warning -> sync -> doctor limpio.Non-goal
no introducir nuevos archivos canónicos, comandos, dependencias,
servicios ni capacidades fuera del alcance 0.3.1.
Guardas de compatibilidad
doctorpermanece read-only einitpermanece no destructivo.