movilba
MOVILBA-46
Unificar edicion de vehiculo/colectivo bajo un solo camino que siempre exija expediente
Done high
cmcoder04-mba-l-ca
db-mba-l-cc, hallazgo 2026-08-18 leyendo codigo. Dos mecanismos de edicion divergentes: /vehiculos/[id]/editar/colectivo escribe directo sobre vehiculos_datos_colectivos sin expediente y sin fila de vehiculo_historial. El componente 'Registrar Expediente' es el unico camino que crea historial y solo cubre 3 tipos de cambio (Entidad/Linea/Estado/Otro). Pedido explicito de Eugenia via Elazar: TODO cambio debe pedir expediente sin excepcion; el rango fecha-desde/fecha-hasta NO debe ser obligatorio. Es rediseño de la superficie de edicion, unifica los dos caminos en uno solo.
Activity
-
MATERIAL FOUND 2026-08-20 (db02-mba-l-cc, from MOVILBA-70's discovery): Hoja2 of the RUTAP xlsx carries 47 expediente-per-dominio rows that NOTHING in our pipeline has ever read, and 8 of them are LIVE vehicles in prod whose expediente exists in the SSOT but not in anything we ingest. Before this ticket - or MOVILBA-12/33/39/40 - concludes that an expediente is missing, check Hoja2: it supplies expedientes the Base sheet does not have. Breakdown of the 9 non-matching rows: (1) SEVEN plates (AC225GD, AC435DV, AD323MX, AD493FF, AE776NR, AE887YO, AF252QS) assert expediente 30092573 dated 2025-07-18, which exists in Base but on only 3 dominios - so the two sheets disagree about the BATCH MEMBERSHIP of the same expediente, 10 plates vs 3, not about its existence; (2) AH588XN expediente 31492430 is absent from Base entirely; (3) OIS896 expediente 29962951 is absent from Base and the plate is not in prod - old-format plate, out of scope. Open question for Eugenia: does expediente 30092573 cover 3 plates or 10? Hoja2 is NOT ingested and must not be treated as authoritative until she answers.
-
coder02-mba-l-cc / coder
-
PREMISA DEL TICKET CORREGIDA (coder02, midiendo el codigo). (1) NO HAY NINGUN CAMINO QUE EXIJA EXPEDIENTE, ni siquiera el que se llama 'Registrar Expediente': src/actions/vehiculos.ts:315 dice textual '// Validate required fields (expediente is optional)' y valida solo vehiculoId y observaciones. O sea 46 NO es unificar un camino estricto con uno laxo - los dos son laxos. Agranda el ticket y a la vez lo simplifica: no hay comportamiento estricto que preservar. (2) TAMANO DE LA SUPERFICIE LAXA: updateColectivo (src/services/vehiculos.ts:801) escribe ~30 campos en DOS tablas - vehiculos base (dominio, chasis, motor, carroceria, anio, asientos) y vehiculos_datos_colectivos (interno, consumo, ADAS, MDVR, wifi, pantallas, emisiones, estado, validadoras) - sin expediente y sin fila de historial. Hay un TODO(MOBAAPI-480 follow-up) en la linea 906 que dice exactamente eso, sin hacer. La UNICA excepcion es entidadId, que se desvia a assignToEntidad y si crea historial: DE ~30 CAMPOS EDITABLES, 1 DEJA RASTRO. Eso explica de raiz el asunto 10 del tracker (AA914MV cambio de interno sin traza) y explica por que 71 no puede ser verdadero hoy - el desplegable no puede mostrar TODOS los cambios si el 97 por ciento no se registra. PARTIDO EN DOS: PARTE 1 independiente de 76 (unificar la superficie: un solo formulario que siempre pide expediente, fecha de vigencia OPCIONAL por pedido de Eugenia, updateColectivo rechaza sin expediente); PARTE 2 despues del paso 3 de 76 (cada cambio de atributo escribe su fila con before/after en cambios, contra los nombres nuevos).
-
MEDIDO CONTRA EL LIBRO (db03, xlsx del 20/08 leido de disco, 5086 filas): LA RESPUESTA ES NO, el libro de Eugenia NO respalda todo cambio con un instrumento. Expte. Alta vacio: 727/5086 (14.3%) - Alta 674, Modif 53. Fecha Baja presente con Expte. Baja vacio: 272/3487 filas cerradas (7.8%). MODIF ESPECIFICAMENTE: 2612 filas, 53 vacias + 271 con la frase de columna equivocada = 324/2612 (12.4%) SIN instrumento real; 2288/2612 (87.6%) si lo llevan. CORRECCION DE UN NUMERO QUE VENIAMOS REPITIENDO MAL: las 474 de la frase son LAS DOS COLUMNAS (271 en Alta + 203 en Baja), no 474 en Expte. Alta. Ademas 9 valores usan guion EN-DASH en 'EX-' y son variantes de formato, no un instrumento distinto; y las resoluciones legitimas en Expte. Alta son 244, no 515 (ese numero tambien era de las dos columnas). CONSECUENCIA DIRECTA SOBRE LA PARTE 1 YA COMMITEADA (5f680af6, sin deployar): exigir expediente en TODA edicion rechazaria al menos el 12.4% de los Modif del libro. La regla dura prohibiria algo que el negocio hace de rutina. DEPLOY EN ESPERA hasta decision de Elazar: regla dura, o advertencia con motivo obligatorio cuando no hay instrumento.
-
CORRECCION DE MI PROPIA CORRECCION (coder-mba-l-cc). Dije que las 515 resoluciones eran un total de dos columnas: ES FALSO, 515 ERA UNA SOLA COLUMNA. Verificado por db02 por columna: expte_alta 4359 con valor, 515 que no empiezan con EX = 271 de la frase + 244 resoluciones. expte_baja 3215 con valor, 487 que no empiezan con EX = 203 de la frase + 284 resoluciones. 515 y 244 son CANTIDADES DISTINTAS, no la misma a dos escalas: 515 = valores de expte_alta que no son un expediente EX-; 244 = valores de expte_alta que son una resolucion legitima = 515 menos las 271 contaminadas. Las dos exactas, definiciones distintas, y descomponen sin resto - lo que ademas confirma el 474 (271+203) desde una tercera direccion. LO QUE SI ES riesgo de par-de-columnas: 474, que es inequivocamente las dos columnas y nunca debe citarse como cifra de expte_alta. Nadie midio mal y no hay nada que retractar salvo mi correccion.
-
PARTE 1 REGLA B IMPLEMENTADA Y DEPLOYADA A DEV (coder-mba-l-cc, 2026-08-20 07:05). Reemplaza a 5f680af6, que implementaba la regla dura rechazada. QUE HACE AHORA: el servicio rechaza SOLO si faltan expediente Y motivo - cualquiera de los dos alcanza. La validacion sigue en VehiculoService.updateColectivo y no en la action, porque el servicio es el unico punto por el que pasan todos los llamadores, y sigue rechazando ANTES de assignToEntidad para no dejar historial escrito por una operacion que el usuario vio fallar. UN CAMPO NUEVO, Y NO SE LLAMA observaciones: motivoTramite. En vehiculo_historial el motivo SI vive en observaciones y ahi el nombre es correcto - es el que usa registrarExpediente y por eso ese camino ya cumplia la regla B sin tocar nada. Pero en UpdateColectivoInput el nombre observaciones YA ESTA TOMADO y viaja a vehiculos_datos_colectivos.observaciones, que es el campo permanente DEL VEHICULO: el mismo que en la descarga aparecia lleno de prosa de prueba (asunto 4 del tracker). Reusar ese nombre habria hecho que el motivo de cada edicion pise el campo del vehiculo. Dos columnas distintas en dos tablas distintas que se llaman igual. UI: en ExpedienteForm el expediente vuelve a ser opcional y observaciones queda rotulado 'Observaciones (motivo del cambio)' y obligatorio. En la pantalla de edicion de colectivo el bloque pasa a llamarse 'Constancia de este cambio' con expediente, fecha opcional y motivo, mas un espejo de la regla del lado del cliente - ninguno de los dos campos puede llevar required porque cualquiera de los dos alcanza. GAP DECLARADO: por el camino de edicion de colectivo el expediente y el motivo se EXIGEN pero todavia NO se persisten - no hay fila de historial por cambio de atributo hasta la parte 2, que espera el paso 3 de MOVILBA-76. Hoy quedan en el log de la operacion y nada mas. Esta escrito como comentario en el codigo, en el lugar exacto donde estaba el TODO(MOBAAPI-480 follow-up), que absorbe. Nadie debe leer la validacion como prueba de que el dato quedo guardado.
-
REGLA B LEVANTADA EN CODIGO, orden de Elazar 2026-08-20 11:05. El ticket queda ABIERTO esperando a Eugenia; no se cierra. QUE SE SACO: el rechazo. `updateColectivo` ya no tira BUSINESS_RULE_VIOLATION cuando no hay ni expediente ni motivo, y el espejo del formulario tampoco frena el submit. QUE NO SE SACO: los campos. `expediente`, `fechaExpediente` y `motivoTramite` se siguen recibiendo, siguen viajando y siguen quedando en el log de la operacion. La parte 2 (persistirlos como fila de historial) sigue pendiente igual que antes. POR QUE, palabras de Elazar: **el objetivo numero uno es meter TODO el dato de los excel de Eugenia en MovilBA.** Un gate de escritura puede rechazar registros del SSOT, y perder dato del libro es peor que perder la trazabilidad de quien lo edito. La regla se puso para que ningun cambio quedara sin constancia; el riesgo es que esa misma regla bloquee una importacion. Se elige el dato. QUE DECIDE ESTO Y QUIEN: no lo decidimos nosotros. Va como asunto 38 del tracker de Eugenia (/resource/movilba/import-reports/todo-rutap-importacion-prestaciones.xlsx): que le tiene que exigir el formulario a quien edita un vehiculo. Cuando conteste, la regla vuelve a vivir en el SERVICIO y no en la action, por la misma razon de siempre - el servicio es el unico punto por el que pasan todos los llamadores. MEDICION QUE SIGUE VALIENDO Y NO HAY QUE RE-DERIVAR: la regla A (exigir expediente siempre) habria rechazado 324 de 2612 Modif reales del libro, 12,4%. Esa cifra es la que hizo elegir la B sobre la A, y es tambien la que ahora explica el riesgo: si un 12,4% de los Modif del libro no tienen instrumento, un gate que lo exige choca de frente con importar el libro entero. EFECTO LATERAL, y es el que destraba el deploy: el unico cambio visible para el usuario que arrastraba el despliegue de los 47 commits a prod era este. Sin la regla, el paquete pasa a ser docs, tooling y arreglos.
-
regla levantada en codigo; espera respuesta de Eugenia sobre que debe exigir el formulario (asunto 38 del tracker)
-
audit-mba-l-ca review 2026-08-20 confirms the persistence gap remains: src/services/vehiculos.ts receives the edit evidence fields but the colectivo attribute edit path does not create a vehiculo_historial row. The UI validation change does not prove persistence. Keep this item open/blocked pending the owning decision and implementation.
-
Espera respuesta de Eugenia (asunto 38 del tracker): que debe exigir el formulario al editar un vehiculo. Regla B levantada en codigo por orden de Elazar 2026-08-20 - hoy no se exige nada. Medicion que decide: la regla A (expediente siempre) rechazaria 324/2612 Modif del libro = 12,4%. Documento de preguntas para Eugenia: /resource-lezama/docs/2026-08-28-movilba-46-preguntas-edicion-vehiculo.docx (4 preguntas, 4 opciones A/B/C/D). Gap adicional declarado: por el camino de edicion de colectivo expediente y motivo NO se persisten como fila de historial, solo quedan en el log - parte 2, depende de MOVILBA-76 paso 3.
-
Documento de preguntas para Eugenia escrito: /resource-lezama/docs/2026-08-28-movilba-46-preguntas-edicion-vehiculo.{md,docx}. 4 opciones (A exigir siempre expediente / B expediente-o-motivo / C solo advertir / D depende del campo) + 4 preguntas. blockedReason backfilleado desde el log de eventos (estaba vacio pese a status=blocked desde 2026-08-20).
-
SUPERSESION PARCIAL POR MOVILBA-206 (creado por Elazar, shipeado en 18711cf3 / v5.4.97 el 2026-09-03). 206 elimina el bloque Registrar Expediente entero (numero/fecha/tipo/observaciones) de /vehiculos/[id]/editar/colectivo: la edicion misma pasa a ser el evento tipado. Verificado por coder02 antes de aceptar la supersesion: NO rompe ninguna invariante viva, porque la regla B ya habia sido levantada en codigo por orden de Elazar el 2026-08-20 - desde entonces ningun camino exige expediente. La medicion que sigue mandando es la misma: la regla A habria rechazado 324/2612 Modif del libro (12,4%). LO QUE SIGUE ABIERTO EN ESTE ITEM: el asunto 38 del tracker de Eugenia - que debe exigir el formulario al editar un vehiculo - cambia de forma pero no desaparece. Cuando conteste, la respuesta ya no se aplica a un bloque de constancia separado sino al formulario unico de 206, y la regla debe vivir en el SERVICIO (unico punto por el que pasan todos los llamadores), no en la action. La PARTE 2 (persistir cada cambio de atributo como fila de historial) tampoco muere: la absorbe el writer de 203/206.
-
coder03-mba-l-cc / coder
-
coder04-mba-l-ca | 2026-09-24 03:56 ART. Still waiting on Eugenia answer to tracker item 38: required expediente versus motivo for collective edit. Current DEV dev action accepts either field, and form requires expediente for Baja, but these mechanics do not establish the stakeholder rule. No answer verified in current tracker.
-
db03-mba-l-cc
-
db04-mba-l-ca
-
2026-10-01 21:00 ART, coder03-mba-l-cc. The 42-day blocker was an artifact problem, not a waiting-on-Eugenia problem. The blockedReason cited 'asunto 38 del tracker' and a questions document at /resource-lezama/docs/2026-08-28-movilba-46-preguntas-edicion-vehiculo.docx. Measured today: the 'Para Eugenia' sheet of todo-rutap-importacion-prestaciones.xlsx has 20 non-empty rows counted with iter_rows and NO row numbered 38, so for 42 days this item waited on an answer to a question that was never in the channel she answers. /resource-lezama/ does not exist at all on lezama; find located both the .docx and its .md twin in /data-lezama/.Trash-1000/files/. Recovered the four questions and the four options from the trashed .md and wrote them as row 21, question 38, bwi column MOVILBA-46, estado PENDIENTE. Options as written: A expediente always, B expediente or written motivo, C warn only, D expediente only for certain kinds of change. The deciding figure is stated to her in the row: 324 of 2612 Modif in the book carry no expediente, 12.4 percent, which is what option A would reject. The row also asks, if a modification truly has no expediente, what should stand in its place. Protocol followed per docs/reference/rutap-tracker-protocol.md: timestamped backup to archived/2026-10-01-2100-pre-38-..., header asserted against the 7 expected column names, '38' asserted absent before writing, column D Tu respuesta snapshotted across every row and asserted unchanged after save, the whole Para Elazar sheet asserted unchanged, and the file re-opened to verify. WRITTEN IS NOT ASKED: the online copy is a separate step and she has not answered. Still blocked, but now blocked on the question rather than on a missing artifact.
-
Espera la respuesta de Eugenia a la pregunta 38, que desde el 2026-10-01 SI esta escrita en la hoja Para Eugenia del tracker (fila 21, estado PENDIENTE, columna bwi MOVILBA-46). Hasta ese dia no estaba: la hoja tenia 20 filas y ninguna numerada 38, asi que el item espero 42 dias por una respuesta a una pregunta que no estaba en el canal que ella contesta. El documento que citaba este campo, /resource-lezama/docs/2026-08-28-movilba-46-preguntas-edicion-vehiculo.docx, no existe - /resource-lezama/ no existe en lezama y el .docx y su gemelo .md estan en /data-lezama/.Trash-1000/files/. Las cuatro opciones salieron de ahi: A expediente siempre, B expediente o motivo escrito, C solo avisar, D expediente segun el tipo de cambio. Medicion que decide: la regla A rechazaria 324/2612 Modif del libro = 12,4%. ESCRITO NO ES PREGUNTADO: la copia online del tracker es un paso aparte y ella todavia no contesto. Gap adicional, parte 2, sin cambios: por el camino de edicion de colectivo expediente y motivo NO se persisten como fila de historial, solo quedan en el log - depende de MOVILBA-76 paso 3.
-
Stakeholder feedback, tracker online 2026-10-05 13:24 (Eugenia/Fabri), relayed by coder03: Respuesta: 'Todos los tramites siempre tienen Numero de expediente sean Alta, Baja, Modificaciones.' (288 Verificado: fecha de expediente obligatoria en alta-baja-modif).
-
cleared: Espera la respuesta de Eugenia a la pregunta 38, que desde el 2026-10-01 SI esta escrita en la hoja Para Eugenia del tracker (fila 21, estado PENDIENTE, columna bwi MOVILBA-46). Hasta ese dia no estaba: la hoja tenia 20 filas y ninguna numerada 38, asi que el item espero 42 dias por una respuesta a una pregunta que no estaba en el canal que ella contesta. El documento que citaba este campo, /resource-lezama/docs/2026-08-28-movilba-46-preguntas-edicion-vehiculo.docx, no existe - /resource-lezama/ no existe en lezama y el .docx y su gemelo .md estan en /data-lezama/.Trash-1000/files/. Las cuatro opciones salieron de ahi: A expediente siempre, B expediente o motivo escrito, C solo avisar, D expediente segun el tipo de cambio. Medicion que decide: la regla A rechazaria 324/2612 Modif del libro = 12,4%. ESCRITO NO ES PREGUNTADO: la copia online del tracker es un paso aparte y ella todavia no contesto. Gap adicional, parte 2, sin cambios: por el camino de edicion de colectivo expediente y motivo NO se persisten como fila de historial, solo quedan en el log - depende de MOVILBA-76 paso 3.
-
coder04-mba-l-ca / coder
-
coder04-mba-l-ca | 2026-10-05 13:53 ART. Stakeholder answer (Eugenia, tracker 13:24): 'Todos los tramites siempre tienen Numero de expediente sean Alta, Baja, Modificaciones.' Current source measurement: Alta createColectivo already rejects missing expediente/date in src/services/vehiculos.ts; edit updateColectivo rejects both for every save, while src/actions/vehiculos.ts passes absence through to that service gate. This patch adds native required attributes to both expediente/date controls on the single edit form and corrects the stale action/form comments that said expediente-or-motivo/date-optional. Separate historial persistence gap remains under MOVILBA-76 and is outside this validation hunk. No gates run by this lane.
-
audit pass: test:source (49/49), tsc --noEmit, eslint on the 3 scoped files; diff review of required attrs + comment fixes + stale-comment claim
payload
{"scope":"test:source (49/49), tsc --noEmit, eslint on the 3 scoped files; diff review of required attrs + comment fixes + stale-comment claim","outcome":"pass","evidence":"service gate unconditional (no expediente-or-motivo branch, old comment was stale); native required added to both edit-form inputs; error wording broadened to trámite; stakeholder answer (Eugenia 13:24) matches scope exactly; all gates green","reportRef":null} -
Eugenia's 2026-10-05 rule is implemented: edit form requires expediente number and date, and the updateColectivo service gate rejects missing values. Audit PASS (test:source 49/49, tsc, eslint) recorded 2026-10-05; commit 1780c042 is an ancestor of origin/main and origin/dev. Later fleet report confirms PROD/DEV/pod at v5.6.167, after v5.6.157 shipping this commit. Scope is the expediente-required editing path; history-row persistence is tracked separately by MOVILBA-76.
feature
2026-08-18 by wi-cli-venus
1w ago
2026-10-06 16:53