basquetWi + New ticket
movilba MOVILBA-496

Borrar los fabricantes VIVOS que nadie usa y que el libro no nombra (segunda mitad de 489)

Done normal unassigned

ORDEN DE ELAZAR, CLI 2026-09-18, verbatim: 'we dont need fabricantes we dont use'. APLICADO en DEV y PROD el mismo dia por db02. POR QUE NO ENTRO EN 489. El criterio de 489 exigia la marca (borrado_en IS NOT NULL) porque en esta tabla 'sin referencias' NO significa 'sin uso': el proyector resuelve fabricantes POR VALOR (upper(mf.fabricante) = ...), asi que una fila viva con cero FKs sigue siendo destino de resolucion si el libro trae ese nombre manana. Borrarla no rompe nada visible -es un LEFT JOIN, da NULL, sin error- y esa es la forma peligrosa. QUE HACE SEGURA LA ORDEN: el tercer predicado. El criterio es la conjuncion de TRES: viva, cero referencias entrantes (FKs enumeradas de pg_constraint, sin predicado de estado del lado hija), y EL LIBRO NO LA NOMBRA (match contra rutap.rutap_rows). El tercero es el que 489 no podia usar y el que hace segura la eliminacion de filas vivas. Medido: ninguna de las candidatas esta nombrada por el libro, o sea la orden de Elazar y el criterio tecnico coinciden y no hubo que elegir entre los dos. BTRIM DE LOS DOS LADOS, a proposito y APARTANDOSE del resolver. El resolver compara el lado catalogo SIN btrim y esa asimetria fue un defecto medido (MOVILBA-493); un control que la copia hereda su ceguera. La pregunta aca es sobre el TEXTO ('el libro nombra esto?'), no sobre lo que el resolver logra hoy. RESULTADO APLICADO. DEV borro 7: HONDA, PUMA, TAT, TODOBUS, SALDIVIA A 325 U, CUMMINS 6 CIL, IGUAZU. Quedan 30, cero marcadas. PROD borro 6: HONDA, PUMA, TAT, TODOBUS, ITALBUS S.A., CUMMINS 6 CIL. Quedan 31, cero marcadas. Control positivo del match contra el libro: 11 fabricantes nombrados en toda la tabla en las dos bases, o sea el 'no las nombra' es un cero medido. Interseccion entre los dos conjuntos 0. Triggers de soft-delete apagados por nombre y reencendidos verificados. POST: ninguna quedo soft-deleteada, ninguna FK quedo apuntando al vacio. DEBILIDAD DECLARADA, no tapada: el conjunto 'sin refs PERO el libro SI la nombra' dio 0 en las dos bases, asi que la postcondicion que dice protegerlo pasa por AUSENCIA DE FILAS. No es una asercion viva hoy. Lo que si mide es el control positivo global (11 > 0): el match funciona, aunque la poblacion que protege este vacia. Ver [[reference_un_gate_que_pasa_por_ausencia_de_filas_no_es_una_asercion]]. SALDIVIA A 325 U y CUMMINS 6 CIL son MODELOS cargados como fabricante, suciedad de dato que 489 dejo anotada; cayeron por el mismo criterio sin regla especial. Archivo: docs/migrations/2026-09-18-movilba-<este>-borrar-fabricantes-sin-uso-DEV-Y-PROD.sql (db02 lo escribio, coder03 lo commitea).

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • wi-cli-venus created · 4w ago
  • wi-cli-venus note · 4w ago
    Archivo definitivo: docs/migrations/2026-09-18-movilba-496-borrar-fabricantes-sin-uso-DEV-Y-PROD.sql (se renombro de 495 a 496 porque bwi asigno el 495 al hallazgo de carrocerias). Ya APLICADO en las dos bases antes del renombre; el contenido es identico salvo el numero.
  • wi-cli-venus completed · 4w ago
    Fabricantes vivos sin referencias que el libro no nombra, borrados en las dos bases (DEV 7 / PROD 6). Criterio de tres predicados: vivo, cero refs entrantes, y el libro no trae el nombre. Cerrado por coder03, que lo reporto aplicado en chat.
  • wi-cli-venus completed · 4w ago
    APLICADO en DEV y PROD 2026-09-18. Re-medido ahora en PROD: 31 fabricantes vivos, 0 marcados. DEV borro 7 (HONDA, PUMA, TAT, TODOBUS, SALDIVIA A 325 U, CUMMINS 6 CIL, IGUAZU) y quedan 30; PROD borro 6 (HONDA, PUMA, TAT, TODOBUS, ITALBUS S.A., CUMMINS 6 CIL). Criterio = conjuncion de TRES predicados: viva, cero FKs entrantes, y el libro no la nombra - el tercero es el que hace segura la eliminacion de filas VIVAS, porque el resolver matchea por VALOR y una fila viva sin FKs sigue siendo destino de resolucion. btrim de los dos lados a proposito, apartandose del resolver, que normaliza uno solo (ese fue el defecto medido en 493). DEBILIDAD QUE QUEDA DECLARADA, no tapada: la postcondicion que protege 'sin refs pero el libro SI la nombra' pasa por ausencia de filas (0 en las dos bases); lo que si mide es el control positivo global, 11 fabricantes nombrados por el libro > 0.
task
4w ago by wi-cli-venus
4w ago
2026-09-18 15:00