Verify and repair importer source-row selection against the approved current RUTAP book
Investigate and correct importer source-row selection for current-state fields, then verify by re-importing the approved current RUTAP book into DEV and PROD through the authorized workflow. The original 2026-09-01 target and historical counts (223 expediente_alta, 203 observaciones, 170 numero_linea, 474 phrase-bearing cells) came from an older book/schema and must not be treated as current denominators. On 2026-09-24, a SELECT-only rutap.snapshots check found DEV snapshot 18 and PROD snapshot 5 both name the 2026-09-19 corrected workbook with 5528 source rows; it did not test the selection rule. MOVILBA-186 contains a later fidelity-tool run against a 2026-09-23 workbook reporting 68 DEV and 66 PROD expediente_alta differences; that run also notes the tool exits zero despite differences (MOVILBA-570), so acceptance requires explicit nonzero-diff handling. Remaining work: establish the approved current source; compare installed output with the correct source period; isolate the selection defect from the other source/transform defects tracked in MOVILBA-174 and MOVILBA-238; change the importer only if reproducible; run regression and fidelity gates in both bases. Do not replay the 09-01 book solely because the old title says to. Earlier details and design discussion are preserved by BWI descriptionChanged history.
Activity
-
parent=#3268
-
Code implementation started: canonical source-row selection and stale history date reference.
-
Fix source-row selection once for all current-state fields; repair stale vehiculo_historial date reference; then rerun normal importer from snapshot 2026-09-01-1440.
-
db02 PROD audit: dev/dev already uses vehiculo_historial.fecha_alta; fecha_expediente exists only as a view alias. The stale reference is confined to a dirty local copy and must not be committed. History anti-join must check all rows (not only borrado_en IS NULL): 6 (vehiculo_id, fecha_alta) keys have only soft-deleted rows and would be resurrected by an insert-only-live matcher. Required pre/post gates recorded in db02 audit.
-
db03-mba-l-cc
-
db02-mba-l-cc
-
PROPUESTA DE ESCRITURA AGRUPADA POR MECANISMO - db02-mba-l-cc, 2026-09-12. Nada de esto se ejecuta: es la lista para que Elazar decida sobre la fila. Se me pidio juntar 13 items de 'reparacion del loader' como UN mecanismo. LOS MEDI UNO POR UNO CONTRA UNA SOLA PREGUNTA -'un loader corregido mas una re-importacion, arregla esta fila SOLA?'- y la respuesta es que NO son uno: son siete, mas seis que no pertenecen al grupo. Agrupar los trece habria mandado a una re-importacion cosas que la re-importacion no puede tocar. GRUPO A - SI los arregla el loader corregido + re-import. SIETE, y son este item: 174 (la regla de seleccion de fila: el valor sale de una fila CERRADA del mismo dominio) 176 (chasis truncado en PROD; el libro tiene el valor correcto) 177 (PROD inventa '0' donde el libro esta en blanco, 1979 celdas, y 17 identificadores reales pisados) 181 (un chasis tecleado en PROD; el libro tiene el correcto) 183 (20 observaciones hibridas que no existen en ninguna fuente) 238 (el loader borra la frase de expte_alta/expte_baja, 474 celdas) 282 (tramite_id NULL por celda vacia: es regla + reporte, no reparacion de dato) Los siete comparten que el VALOR CORRECTO ESTA EN EL LIBRO. Por eso una reparacion a mano de cualquiera de ellos se deshace en el proximo import, y por eso van juntos: una sola correccion de loader y una sola re-importacion, no siete UPDATE. GRUPO B - NO los arregla la re-importacion, porque el libro NO TRAE el valor o porque hay filas que el upsert no alcanza. DOS, y necesitan escritura a mano con decision previa: 180 (40 celdas de expediente: 39 sobreviven de un libro de diciembre 2025 ya reemplazado). El import es un upsert, no trunca: una fila vieja que el libro vigente no menciona NO se va sola. Esto solo desaparece con un borrado explicito o con el rebuild de 224. 285 (89 vehiculos con dos filas vivas y abiertas con el mismo expte_alta). Poblacion HEREDADA. Re-importar no borra filas existentes; agrega. Y la decision que falta -como se cierra un periodo abierto huerfano cuyo gemelo re-fechado ya existe- no la toma el loader. GRUPO C - NO es el loader, es un catalogo. UNO: 220 (faltan las lineas 23, 90 y 99 en PROD, referenciadas por 175 periodos cerrados del libro). El loader no crea lineas. Son tres filas de catalogo, con la regla de catalogos ya vigente. GRUPO D - NO es nuestro, es del LIBRO. UNO, y va con 74 y 75: 80 (motor truncado en la fila VIGENTE de AG358KX y AE168VP). El valor esta mal EN EL LIBRO; ninguna correccion nuestra lo repone y cualquier parche local se pierde en el proximo import. Va al pedido a Eugenia junto con las 42 celdas ################ y las 4 de precision destruida. GRUPO E - mixto, y por eso no entra en ninguno. UNO: 280 (v_vehiculos_export.fecha_alta sigue la cadena de CHASIS y no el dominio; mas 131 vehiculos sin ninguna fila tramite='Alta'). La primera mitad es una definicion de VISTA -no la toca ningun import- y la segunda es un hueco de historial. Se parte en dos antes de agruparlo. YA HECHO, hay que sacarlo de la lista: 316 esta APLICADO Y COMMITEADO EN PROD desde el 2026-09-07 con GO fresco y verificacion posterior. Sigue en backlog. Proponer cerrarlo. ORDEN QUE PROPONGO, y la dependencia que ya estaba dicha en el cable: el grupo A es una sola unidad y su import va DESPUES de que aterrice el loader de 435, como corrida aparte. El grupo B no se toca hasta que 224 este resuelto, porque si el rebuild se aprueba, B desaparece solo y cualquier UPDATE que hagamos antes es trabajo tirado. C y D son independientes y se pueden mover ya. E se parte primero. NADA DE ESTO SE EJECUTA SIN GO POR UNIDAD. Este carril no escribio nada.
-
db04-mba-l-ca
-
db04-mba-l-ca 2026-09-24 04:03 -03 — SELECT-only current-state check: DEV movilba_dev snapshot 18 and PROD movilba snapshot 5 both identify 2026-09-19-0648-parque-rutap-corrected.xlsx with 5528 source rows. The importer row-selection rule and reimport gates were not exercised. Status unchanged; no DB write.
-
was: Casi todos los numeros del epic son UN defecto: el importador deriva el valor de la fila equivocada del dominio. expediente_alta 223, observaciones 203 y parte de numero_linea 170 son el mismo bug en columnas distintas (ya medido en MOVILBA-174: 1367 coinciden con la fila abierta, 223 difieren, 223 trazables a otra fila del MISMO dominio, 0 sin explicacion). El fix es la REGLA DE SELECCION DE FILA, no un parche por columna. Arreglarla y re-importar colapsa la tabla entera; parchear 12 columnas no. Incluye la regla de la prosa en Expte. Alta/Baja, que se aplica DENTRO del import y no despues: 474 celdas se vacian, 472 filas se evaluan, y la frase va a Observaciones SOLO si Observaciones esta vacia (154 filas). 300 son no-op y 18 tienen otro texto y no se tocan. Detalle en docs/reference/rutap-transform-rules.md. Depende de MOVILBA-174 y MOVILBA-155.
-
Verify and repair importer source-row selection against the approved current RUTAP book
-
db04-mba-l-ca 2026-09-24 04:12 -03 — Replaced stale 09-01 re-import target with current-source selection-rule verification; old description preserved by descriptionChanged. My 2026-09-24 SELECT-only snapshot check: DEV id 18 and PROD id 5 both 09-19 corrected book, 5528 source rows; row-selection behavior remains unexercised. MOVILBA-186 separately records audit/coder fidelity results against 09-23 source, but those do not isolate this defect. Status inProgress; no DB write.
-
db04-mba-l-ca 2026-10-01 21:09 ART — Closed as non-reproducing source-row selection claim on current approved book, not as proof of universal field fidelity. PROD movilba snapshot8 and DEV movilba_dev snapshot20 both carry 2026-09-30-1305-parque-rutap.xlsx MD5 8512833be84d1568743d61b601179c6b, 5548 raw/import-history rows. Independent read-only rank of raw rutap.v_rutap_latest_norm by dominio_norm and parsed fecha_alta/fecha_baja (effective date DESC, fecha_alta DESC, open tie, fila_excel DESC) selects 2419 dominios; import-only normalized history ranked separately with the same business keys selects the exact same rutap_fila_excel in PROD 2419/2419 and DEV 2419/2419, 0 missing or different. Nonvacuous: 1769 dominios have >1 raw period, max 7. PROD v_vehiculos_export matched the selected current-history row on expediente_alta/baja, observaciones, linea, interno, MDVR, CANBUS, camaras_adas, id_adas and camaras_internas: 0 differences over 2419, 0 missing export rows; DEV same 0/2419 after its catch-up apply. The old 09-01 counts and re-import target are superseded; no importer row-selection change warranted. Known raw-vs-normalized phrase/format transformations and independent fidelity issues remain on their own items (174/238/186). No code or DB write.
-
audit pass: Method audit of close event, no DB execution. Rank A (raw v_rutap_latest_norm) and Rank B (import history) share identical business-key ORDER BY over 1:1-cardinality data (5548=5548) - weak as proof of importer write-time selection. 1769/2419 multi-period exercises tie-break genuinely.
payload
{"scope":"Method audit of close event, no DB execution. Rank A (raw v_rutap_latest_norm) and Rank B (import history) share identical business-key ORDER BY over 1:1-cardinality data (5548=5548) - weak as proof of importer write-time selection. 1769/2419 multi-period exercises tie-break genuinely.","outcome":"pass","evidence":"Real independent control is v_vehiculos_export 0/2419 diff vs the rank's pick, different code path - but covers 1 of 4 publishing surfaces CLAUDE.md names; ficha/PDF uses a separate resolver (confirmed today, MOVILBA-546). Ten fields verified on export only. DB EXECUTION NOT PERFORMED BY AUDIT.","reportRef":null} -
db04-mba-l-ca 2026-10-01 21:16 ART — Corrección de alcance del cierre, tras la auditoría de método: los dos rankings comparten el mismo ORDER BY sobre datos 1:1; los 1769/2419 dominios con múltiples períodos hacen no vacuo el desempate, pero no convierten esos rankings en dos instrumentos independientes ni prueban por sí solos la selección escrita por el importador. El control independiente fue v_vehiculos_export: 0/2419 diferencias en diez campos del estado actual frente a la fila elegida. Esto verifica sólo esa exportación, una de cuatro superficies de publicación; ficha, PDF y las otras superficies no se ejercitaron para selección de fila. La ficha/PDF usa otro resolver, confirmado en MOVILBA-546. El alcance no medido queda en MOVILBA-414/443; no se reabre 190 ni se atribuye cobertura universal a su cierre. Sin escritura de código ni DB.