Especificación padre: #30
Ticket del desglose Project Brain Lite 0.3.1: 01/20.
Entrega
Hacer que sync sustituya exclusivamente GeneratedProjection sin alterar los bytes exteriores a sus marcadores.
Bloqueado por
Acceptance criteria
- El prefijo y el sufijo de
AI_CONTEXT/CONTEXT.md permanecen byte-idénticos.
- Se preservan CRLF, BOM, Unicode NFC/NFD, emoji, tabs, trailing spaces y ausencia de newline final.
- Se mantienen los permisos del archivo.
- Un segundo
sync deja el archivo completo byte-idéntico.
Tests requeridos
- Fixtures comparados como
Buffer, no como strings normalizados.
- Casos individuales y un caso combinado para todas las representaciones requeridas.
- Cobertura de
syncRepository y del binario brain sync.
- Prueba de idempotencia sobre el archivo completo.
Non-goal
no introducir nuevos archivos canónicos, comandos, dependencias,
servicios ni capacidades fuera del alcance 0.3.1.
Regression-first
el fallo debe estar cubierto por una prueba que falle antes
del cambio de producción.
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: 01/20.
Entrega
Hacer que
syncsustituya exclusivamenteGeneratedProjectionsin alterar los bytes exteriores a sus marcadores.Bloqueado por
Acceptance criteria
AI_CONTEXT/CONTEXT.mdpermanecen byte-idénticos.syncdeja el archivo completo byte-idéntico.Tests requeridos
Buffer, no como strings normalizados.syncRepositoryy del binariobrain sync.Non-goal
no introducir nuevos archivos canónicos, comandos, dependencias,
servicios ni capacidades fuera del alcance 0.3.1.
Regression-first
el fallo debe estar cubierto por una prueba que falle antes
del cambio de producción.
Guardas de compatibilidad
doctorpermanece read-only einitpermanece no destructivo.