La cadena del chasis muestra vehiculos retirados como si estuvieran vivos: la vista marca eslabon_borrado y la pantalla lo ignora
MEDIDO por proxy-mba-w-cc en dev01 a las 05:08 ART del 2026-09-08, DESPUES del retiro de las nueve clase (A) a las 05:04. La ficha de AE801OE sigue mostrando el bloque 'Cadena del chasis' con los TRES dominios - AE801OE, ZZ002ZZ, ZZ001ZZ - y el mismo texto de re-patentamiento, aunque ZZ001ZZ (6067) y ZZ002ZZ (6068) fueron retirados con borrado_en. O sea: la pantalla muestra vehiculos BORRADOS como si estuvieran vivos. No es un defecto de la vista: db02-mba-l-cc midio que v_vehiculo_cadena SI devuelve los eslabones retirados con eslabon_borrado=true, asi que la vista entrega la marca y el renderizador no la respeta. La regla del proyecto es leer siempre por la vista que filtra borrado_en, y aca la marca llega y se ignora. CONSECUENCIA VISIBLE: un usuario ve una cadena de re-patentamiento inventada por datos que ya no existen, y ninguna limpieza de datos la va a hacer desaparecer porque el problema es de renderizado. Distinto de MOVILBA-278, que era la cadena FALSA en si; esto es que la pantalla no distingue vivo de borrado. Alcance a medir antes de arreglar: si el mismo componente de cadena se usa en otras pantallas, y si hay otros lugares que reciben una marca de borrado y no la aplican.
Activity
-
ALCANCE ACOTADO por db02-mba-l-cc, 2026-09-08 05:08, sin que se lo pidieran, y convierte 'auditar todas las pantallas' en una lista de siete. De las 101 vistas de public/rutap/agents: 67 FILTRAN el borrado en su propio cuerpo, 27 no mencionan borrado, y SIETE exponen una marca de borrado SIN filtrarla - que es exactamente la forma que deja la decision en manos del renderizador: agents.v_vehiculo_lookup, public.v_admin_opciones_list, public.v_audit_integridad, public.v_vehiculo_cadena (la de este item), public.v_vehiculos_export_vdc, public.v_linea_entidad_historial, public.v_db_users_footprint_detalle. ES UNA LISTA DE CANDIDATOS, NO DE DEFECTOS, y la distincion es la que importa: exponer la marca es CORRECTO en varias - v_audit_integridad y v_db_users_footprint_detalle existen para ver filas borradas, y que el export lleve bajas fue una decision deliberada (2026-08-13-export-incluye-bajas). El defecto no es 'la vista expone borrado' sino 'la vista expone borrado y su consumidor lo ignora', asi que cada una se resuelve leyendo AL CONSUMIDOR. Dos primero y por razones distintas: v_linea_entidad_historial porque alimenta la misma superficie empresa/linea de MOVILBA-355, y agents.v_vehiculo_lookup porque su arreglo 'eslabones' toma la cadena de v_vehiculo_cadena y por lo tanto HEREDA este defecto por construccion - cualquier carril que la lea hoy recibe vehiculos retirados en la cadena sin filtro. db02 no la toca mientras 356 este abierto porque la forma correcta depende de si el fix decide que filtra el consumidor; si filtra el consumidor, la vista esta bien como esta.
-
CORRECCION DE VOCABULARIO, Elazar CLI 2026-09-08 05:12: en la nota anterior use BAJA y BORRADO como sinonimos y NO LO SON. BAJA es un ESTADO DE NEGOCIO - el colectivo dejo de prestar servicio, la fila es correcta, vigente y se muestra; vive en fecha_baja / estado_id. BORRADO es que el REGISTRO no existe mas para la aplicacion; vive en borrado_en / borrado_por. Un vehiculo de baja se muestra; un vehiculo borrado no. Donde impacta concretamente: (1) la decision del 2026-08-13 'export-incluye-bajas' es sobre BAJAS DE NEGOCIO y no dice absolutamente nada sobre filas borradas, asi que citarla como razon para que v_vehiculos_export_vdc exponga borrado_en sin filtrar fue un error mio - esa vista queda como candidata SIN justificacion previa, no como caso legitimo. (2) Este item es sobre BORRADO: la cadena del chasis muestra vehiculos cuyo registro fue retirado con borrado_en, no colectivos dados de baja. Un colectivo de baja en la cadena estaria BIEN mostrado. (3) El fix tiene que distinguir las dos cosas explicitamente, porque una pantalla que oculte bajas por confundirlas con borrados seria un defecto peor que el que se esta arreglando - 'baja es un estado, nunca un borrado' es regla permanente de Elazar.
-
LISTA CORREGIDA por db02-mba-l-cc 2026-09-08 05:11, chequeando COLUMNA POR COLUMNA en vez de por el texto de la definicion, y se achica de siete a CUATRO. Exponen una columna de BORRADO y son los candidatos reales de esta clase: public.v_vehiculo_cadena (eslabon_borrado, este item), public.v_linea_entidad_historial (borrado_en, borrado_por_nombre), public.v_admin_opciones_list (borrado_en, borrado_por), public.v_vehiculos_export_vdc (borrado_en, borrado_por). SALEN TRES, por dos razones distintas: v_audit_integridad y v_db_users_footprint_detalle mencionan el borrado en su CUERPO pero no exponen ninguna columna de borrado, asi que lo que hagan con el es interno; y agents.v_vehiculo_lookup tampoco expone una - su coincidencia venia de la clave jsonb 'borrado' dentro del arreglo eslabones, asi que NO es un caso independiente: hereda este defecto a traves de v_vehiculo_cadena y se arregla cuando se arregle esta, o en su consumidor. AVISO PARA QUIEN ESCRIBA EL GATE: v_vehiculo_lookup y v_vehiculos_export_vdc exponen ADEMAS expte_baja, que es una columna de NEGOCIO. Un fix que busque por patron 'baja' agarra la columna equivocada. El gate nombra borrado_en / eslabon_borrado LITERALMENTE, nunca un patron.
-
ALCANCE REAL, medido por coder04-mba-l-ca 2026-09-08 05:13 leyendo el consumidor: el unico consumidor de getVehiculoCadena es la pagina de ficha, y la action SI mapea eslabon_borrado->borrado, o sea la marca llega intacta hasta el componente. La pagina guarda todos los eslabones, los cuenta y los renderiza todos. Y el efecto NO se queda en la cadena visible: el fallback de entidad hace reverse().find(entidadId) sobre esa misma lista sin mirar el borrado, asi que UN VEHICULO RETIRADO PUEDE APORTAR LA ENTIDAD QUE SE MUESTRA. Eso es peor que un bloque de cadena de mas: es un dato de negocio inferido de una fila que ya no existe. El selector de sucesor, en cambio, YA excluye borrado - o sea que el mismo archivo tiene un consumidor que respeta la marca y dos que no, lo que descarta 'nadie sabia que la marca estaba ahi' como explicacion.
-
Scope measured: sole chain action consumer is ficha; deletion flag arrives intact. Shared incoming-chain filter will cover entity inference, successor, counts and rendering, reading eslabon_borrado/borrado_en only, never business fecha_baja/estado_id. Line-entity history already partitions actual vs deleted rows; admin options preserve explicit deleted labels. DB02 consulted on remaining view candidates.
-
Broader scan complete within src/tools: getVehiculoCadena has one ficha caller; all its chain consumers now share filtered state. getLineaEntidadHistorial explicitly partitions actual borradoEn=null and anteriores nonnull; component labels replaced rows. Admin option repository retains deleted marker and detail blocks edit/delete on deleted records. No v_vehiculos_export_vdc reference in scoped src/tools; external consumers unverified. DB02 measured four candidate views, not seven; no DDL requested or applied.
-
DB02 confirms export_vdc is a manual Excel export surface, not an app caller. Exposing deletion columns alone does not establish a defect; manual export callers were not exercised. Chain view retained unchanged for audit callers. Runtime fix is committed4e413373 (source2 insertions/5 deletions), lint/typecheckPASS; deploy81 build and browser acceptance pending.
-
Independent audit CLEARED4e413373: single filter feeds all consumers, mapping eslabonBorrado=true verified, resolver excludes deleted consulted vehicles. Deployed v5.5.81, lint/typecheck/health/freshnessPASS. Browser acceptance pending.
-
DEV v5.5.81/4e413373 audit CLEARED. Proxy browser: AE801OE deleted test links excluded; AH846SI shows exactly two live links including Baja AI086HB; AI122PG clean two-link control preserves Baja AI086GZ. DB02 distinguishes duplicate domain AI086HB: deleted5226 vs live6618. Deleted-link differing-entity case measured zero across2430 DEV chains, browser not exercised; common filtered-state source reviewed. No PROD/DDL.
-
Deleted chain links excluded at shared ficha state input; rendered counts, entity fallback, and successor inference consume retained links. Targeted browser+DB+audit checks pass; differing deleted entity has no DEV candidate and is explicitly source-reviewed only.