Especificación padre: #30
Ticket del desglose Project Brain Lite 0.3.1: 03/20.
Entrega
Impedir que una edición concurrente sea sobrescrita durante el commit de sync.
Bloqueado por
Acceptance criteria
- Si cambian los bytes esperados después de la segunda lectura y antes del commit, la operación aborta.
- La edición competidora se conserva completa.
- No existe escritura parcial del bloque generado.
- Los temporales se limpian.
- El checkpoint de pruebas permanece privado y la API pública no cambia.
Tests requeridos
- Interleaving determinista mediante un checkpoint interno privado.
- Mutación del contenido exactamente después de la segunda lectura.
- Verificación byte por byte de la edición competidora.
- Sin sleeps, polling ni condiciones probabilísticas.
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: 03/20.
Entrega
Impedir que una edición concurrente sea sobrescrita durante el commit de
sync.Bloqueado por
Acceptance criteria
Tests requeridos
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.