MOVILBA-552 follow-ups de audit: regresion de replate, dos rutas que abren periodos app sin cerrar, y un doc que contradice el diseno
Hallazgos de audit-mba-l-ca sobre 09cbff77/29d79724 que NO estan resueltos. El bloqueante (origen='app' explicito en el predicado de cierre) si se resolvio, en v5.6.26 29d79724. 1. FALTA LA PATA DISCRIMINANTE. El ensayo de base tiene cobertura de app rancio MISMO dominio unicamente: no hay fixture de replate. Hace falta una regresion con rollback que cree un periodo APP abierto bajo el dominio VIEJO mas el estado del dominio actual, invoque applyColectivoEditWithHistory, y pruebe (a) que el APP viejo cierra, (b) que el APP nuevo queda abierto, (c) que una fila import queda byte a byte igual. Sin esa pata el fix se ve pasar pero nunca se lo vio fallar contra el comportamiento anterior. 2. EL TEST DE FORMA MAS CERCANO ESTA ROTO DE ANTES. src/repositories/vehiculos.line-transfer.test.ts falla en :31 porque todavia espera expteBaja: data.expediente || null. Es anterior a 09cbff77, pero significa que no puede guardar el parche. Ademas ese archivo es un *.test.ts bajo src/ y NINGUN script lo ejecuta (pnpm test:tools solo globea tools/tests/*.test.*js), asi que hoy es un gate ausente, no uno rojo. 3. LA PREVENCION NO ES GLOBAL. createHistorialRecord (vehiculos.ts:1167-1204) solo INSERTa. Las rutas vivas de entidad y linea lo llaman via VehiculoService :603 y :695 sin lock de vehiculo y sin cierre, asi que todavia pueden fabricar app+app abiertos. La postcondicion de la pata de escritura queda acotada a applyColectivoEditWithHistory; 552 no es una prevencion global hasta que esas dos rutas converjan en el escritor de periodos. 4. DOC QUE CONTRADICE. docs/design/movilba-299-app-history-cutover-inventory.md sigue diciendo 'no broad all-open update is permitted', que el diseno de MOVILBA-431/552 ya contradice. Hay que actualizarlo. Contrato del monitor que decide el punto (evidencia de audit): v_monitor_historial_anomalias llama MULTIPLES_ABIERTOS a dos filas abiertas del MISMO origen app+app; solo el overlay import+app es legitimo. Victimas concretas en DEV: 6765/6777/6779, todas origen=app. PROD no tiene ninguna.
Activity
-
Shipeado en 83726ebe (v5.6.28): test:source corre los 33 asserts de src/, seis aserciones nuevas fijan las dos mitades de 552 sobre el UPDATE de cierre, el ensayo suma la pata 9 de replate, y el doc de 299 deja de contradecir el diseno. Medido y entregado por audit-mba-l-ca, tomado como diff. Hallazgo posterior shipeado en 0f03e3a7 (v5.6.31, 557b): test:source estaba enganchado a pnpm pre-commit y NINGUNO de los dos scripts de deploy llama a pre-commit, asi que esos 33 asserts no corrieron en un solo deploy - la misma forma que 557 venia a arreglar. Ahora es etapa 1/5 en dev y 2/5 en prod, con fallo duro. Confirmado por audit: 5.6.28/29/30 shipearon con lint:strict AUSENTE, no verde (exit 1, 8102 errores sobre el Scalar vendorizado); eso queda dicho en CLAUDE.md y sin tapar