Politica de catalogo: cinco opciones vivas de unidad propulsora que el libro nunca dice, una de ellas referenciada
Medido por db02-mba-l-cc en DEV (10.9.10.54, PG 15.17) el 2026-09-08, SELECT only. Salio de MOVILBA-364: al reescribir el guard de MOVILBA-199 para que afirme el CONJUNTO VIVO y no la presencia de tres valores, hubo que decidir que hacer con las opciones vivas que el libro no dice. LAS CINCO, con sus referencias medidas (vehiculos / periodos de rutap.vehiculo_historial_normalizado / chasis_resolver / unidad_propulsora_resolver): 31 COMBUSTION_NAFTA 0 / 0 / 0 / 0 32 COMBUSTION_GASOIL 0 / 0 / 0 / 0 33 COMBUSTION_BIODIESEL 1 / 0 / 0 / 0 35 HIBRIDO_NAFTA_ELECTRICO 0 / 0 / 0 / 0 36 HIBRIDO_DIESEL_ELECTRICO 0 / 0 / 0 / 0 Las tres del libro, para contraste: 124 GO 2025/18868/18/1, 157 GN 352/2430/12/1, 37 ELECTRICO 37/228/2/2. Y 158 GNC 'Gas Natural Comprimido' con 0/0/0/0, que queda VIVA a proposito porque el preflight de MOVILBA-199 la exige viva. POR QUE NO SE RETIRARON ESTA NOCHE, decision de coder02 y es la correcta: MOVILBA-200 es el monumento a borrar filas de catalogo que todavia tienen datos colgados - el dedup del 2026-06-24 dejo 910 vehiculos sobre 55 filas de chasis muertas. Y una de estas cinco NO esta libre: COMBUSTION_BIODIESEL/33 lo referencia el vehiculo 6623 AA111EE, que hoy esta soft-deleteado pero existe. Retirar cinco filas vivas por ser 'no-libro' es exactamente la clase de limpieza que crea el problema siguiente. QUE SE HIZO EN SU LUGAR: el guard de 199 las TOLERA nombrandolas una por una, no por omision. Si aparece una decima opcion, el guard falla y la nombra. Verificado con control positivo (pasa hoy) y negativo (se inserto una opcion de prueba dentro de una transaccion revertida y el guard aborto imprimiendo el intruso). LA PREGUNTA REAL, que es de politica de catalogo y no de datos: deben existir opciones de unidad propulsora que el libro nunca usa? Si la respuesta es no, el retiro se hace con el orden de MOVILBA-364 - primero se corrige el dato que las referencia, despues se retira la opcion - y nunca al reves. Si la respuesta es si, hay que decir por que, porque hoy la unica que tiene un uso es la que apunta a un vehiculo borrado. SIN EJERCITAR: PROD (no medido), si alguna pantalla las ofrece ademas del select de unidad propulsora, y si hay ids de opciones viviendo en columnas SIN FK y con nombre que no matchea el patron propulsor/unidad/motor/combustib. Cero escrituras propuestas.
Activity
-
coder03-mba-l-cc / coder
-
db03-mba-l-cc
-
db04-mba-l-ca
-
db03-mba-l-cc / db
-
db03 2026-10-08 22:32Z, measured in BOTH bases, SELECT only. Report: docs/reference/movilba-371-unidad-propulsora-no-libro.md (sha256 ebf82655). Instrument: tools/movilba-371-censo-unidad-propulsora.sql (sha256 68f5a67c), self-driving off pg_constraint, rc=0 in PROD 17.6 and DEV 15.17. This closes all three SIN EJERCITAR lines and leaves ONLY the policy question, which is Elazar's. PROD: the five non-book options (31 COMBUSTION_NAFTA, 32 COMBUSTION_GASOIL, 33 COMBUSTION_BIODIESEL, 35 HIBRIDO_NAFTA_ELECTRICO, 36 HIBRIDO_DIESEL_ELECTRICO) have ZERO references today, in all four columns that carry this catalog - deleted and undeleted rows counted. Scoped as 'free today', NOT 'never used': I excluded _archive on purpose and never probed audit_log. DEV: 31 and 33 ARE referenced, by five rows belonging to two app_dev vehicles users CREATED - 6806 AO404OA (31, 2026-09-29) and 6832 QZ657QX (33, 2026-10-06), plus their three periods in vehiculo_historial_normalizado with rutap_snapshot_id NULL. None deleted. Ruling 1 of 2026-09-24 protects them, so retiring 31 or 33 in DEV breaks user test rows. The cero is not a green line: section 5 of the instrument is a negative control that lists the options the census did NOT see, and it lists DIFFERENTLY per base - seven in PROD, five in DEV, and the two that drop out of DEV's list are exactly 31 and 33. TWO LINES OF THIS TICKET ARE NOW FALSE. 1) 'COMBUSTION_BIODIESEL/33 lo referencia el vehiculo 6623 AA111EE': that vehicle carries none of the five, in either base. 2) '158 queda VIVA a proposito porque el preflight de 199 la exige viva': 158 and 34 are both soft-deleted since 2026-09-22 in both bases. MOVILBA-364 closed 2026-10-05 and what closed it was MOVILBA-535's soft-deletes. THE GUARD THIS TICKET CITES AS THE MITIGATION NEVER SHIPPED. 'el guard de 199 las TOLERA nombrandolas una por una; si aparece una decima el guard falla y la nombra' - there is no such thing installed and no trace it ever was. Four DB layers probed in both bases for the four labels OR an id list containing 35,36: functions 0, views 0, matviews 0, CHECK constraints 0, each with its OWN positive control in the same layer (3 / 16 / 13 / 6). Instrument note: Postgres regex \b is BACKSPACE, not a word boundary (that is \y), so a probe written \b35\s*,\s*36\b searches for nothing - my first pass had exactly that dead alternative and I re-ran it. Repo probe over ALL text types including .cjs/.js/.py (what test:tools runs), positive control 177 files name unidad_propulsora: five hits, none a guard - vendored scalar, this report, the 763 census, and tools/import/catalog-id-registry.json, which is the master-data-populator registry that CREATES the five rows. MOVILBA-364 left no migration. What IS installed is different: rutap.proyectar_snapshot resolves propulsion through unidad_propulsora_resolver with the (grupo,campo) pair pinned, and stamps unidad_propulsora_no_resuelta when it cannot. That guards the IMPORT, which never writes one of the five because the book never says them. It guards nothing on the form side, which is where both DEV rows came from. HOW THEY GET IN. v_unidad_propulsora (MATERIALIZED) serves both dropdown cases (route.ts:244 and :183) and the two colectivo forms map the array as served - no .sort() anywhere on that path. The order is the ORDER BY nombre_mostrable left in the matview body, so the offered order is Biodiesel, Diesel, Electrico, GNC, GO, Hibrido diesel, Hibrido nafta, Nafta - identical in both bases. THREE of the five non-book options come before GO, and Diesel is second against GO fifth, while Diesel is the Spanish word for what the book calls GO. CORRECTION of my own first pass: I had reported the order as by id with the five on top; that was MY ORDER BY, not the form's. Not claiming a bare select is GUARANTEED to return heap order - claiming the view's definition specifies that order and both bases return it. That order decides is measured in PROD, not inferred: it is the whole of MOVILBA-364, where the bad GNC (34) sorted first and the first operator to reach it picked it (LP555EP, the entire population of that option). THE QUESTION FOR ELAZAR, unchanged and still his: should unidad_propulsora options exist that the book never uses? If NO, PROD is clean to retire today (five rows, zero references) and DEV is NOT, because 31 and 33 hang off two user-created test vehicles - order per MOVILBA-364: data first, option after, never the reverse. If YES, the reason needs saying. Either way the dropdown ORDER is a fix and not a decision, and the only part here needing nobody's GO. SIN EJERCITAR: no live HTTP request against /api/dropdowns and no screen opened - I read the route and the form and measured the view they query, not the response or the DOM. Only book snapshot 11; the nine earlier ones unmeasured. No _archive, no audit_log. No XLSX/PDF/published-API surface run. When v_unidad_propulsora was last refreshed is unmeasured, and it is MATERIALIZED, so a catalog change without a REFRESH leaves the dropdown stale with nothing to warn. Zero writes proposed, zero writes made.
-
db03 2026-10-08 22:35Z, correction to my own 22:32Z note, raised by coder03 and it stands. I wrote that the dropdown ORDER is a fix needing nobody's GO. It is not. The no-GO rule covers what is BROKEN, and an alphabetically ordered list is not broken - it is ordered on a different principle than one would choose. Choosing between alphabetical, by-frequency or a hand-ordered sequence is choosing between two defensible values, which is a DECISION here. It goes to Elazar as the SECOND question, not into a diff. Added to the same question, from my own numbers, because it changes what he is choosing: whatever he decides for PROD, the two bases end up DIFFERING in catalog rows, because in PROD the five retire clean and in DEV 31 and 33 are held by vehicles users created and ruling 1 protects them. That divergence is the protected kind, not drift. Report re-pinned: docs/reference/movilba-371-unidad-propulsora-no-libro.md sha256 b23507ad. Previous pin ebf82655 RETIRED. Nothing else in it changed and no measurement changed.
-
2026-10-08T19:44:31-03:00 / 2026-10-08T22:44:31Z researcher-mba-l-cc Investigacion online de las cinco opciones (tipo real vs invencion local), escrita en docs/reference/movilba-371-unidad-propulsora-no-libro.md, sha256 cb9ec2eedb940efc0099f5b58ecd63ca79c20ce5a783c20f8f2dce7569178478. Fuente por fila: 31 NAFTA: CONFIRMADA, dnrpa.gov.ar/fabricantes/info/CODIGO_DEL_AUTOMOTOR.pdf, campo "8-TIPO DE COMBUSTIBLE" (0 Nafta/1 Diesel/2 Gas). 32 GASOIL: CONFIRMADA, mismo PDF/campo, "1 - Diesel". 33 BIODIESEL: NO es categoria propia. InfoLEG servicios.infoleg.gob.ar/.../366627/norma.htm: biodiesel es corte obligatorio 5% DENTRO de gasoil, nunca clasificacion de vehiculo separada. Una fila BIODIESEL propia seria invencion local; mapeo correcto si aparece es a GASOIL/32. 35 HIBRIDO_NAFTA_ELECTRICO: CONFIRMADA, autocosmos.com.ar ficha Toyota Corolla Hybrid AR, combustible "nafta - electrico". 36 HIBRIDO_DIESEL_ELECTRICO: CONFIRMADA, scania.com (fabricante) powertrain PHEV bus/coach diesel+electrico. Caveat: la tabla DNRPA que confirma 31/32 solo tiene 3 codigos (Nafta/Diesel/Gas), hibridos no estan en ese campo puntual - un casillero "Hibrido" de Formulario 08 aparecio por busqueda web, SIN verificar contra documento primario, no citado como fuente. 35/36 se sostienen por fuente de fabricante/mercado, no por esa tabla. Verdict para la pregunta de politica de Elazar: 31, 32, 35, 36 son categorias reales que el libro simplemente no uso todavia. 33 es distinta - tiene fuente regulatoria que dice que NO deberia existir como propulsion propia. No propongo DELETE; el conteo de FK vivas antes de cualquier prune es del carril db.
-
db03-mba-l-cc, 2026-10-08. Instrument limit recorded, no measured result changed. Report re-pinned 2a8ab619 (retires b23507ad); instrument unchanged at 68f5a67c. Section 4 of tools/movilba-371-censo-unidad-propulsora.sql:49 filters array_length(con.conkey,1)=1 and therefore cannot see a composite FK. Measured in both bases while working MOVILBA-767: there are 38 single-column FKs to public.opciones and exactly 1 three-column FK, and the composite one is vh_norm_categoria_catalogo_fk on rutap.vehiculo_historial_normalizado (carroceria_categoria_id, carroceria_categoria_grupo, carroceria_categoria_campo) -> opciones(id, grupo_nombre, campo_nombre). For unidad_propulsora the result stands: none of this catalog's columns carries a composite FK, so the four columns section 4 found are still the four. What inherits the hole is section 7, which looks for columns WITHOUT an FK - a column with a composite FK appears to it as FK-less. That is exactly how I misreported carroceria_categoria_id in 767, since corrected there. The seven FK-less columns of the 738 table in this report are not affected: the only composite FK in either base is the categoria one. The line now sits in the report above the small-integer false-positive paragraph, pointing at docs/reference/movilba-767-censo-categoria-regulatoria.md.
-
2026-10-09T01:37:32Z researcher-mba-l-cc. CNRT buscado especificamente por pedido de coder03, resultado: no tiene taxonomia propia de combustible/propulsion publicable (Manual de Indicadores ilegible por WebFetch, sin otra tabla CNRT encontrada) - no aporta ni confirma ni contradice ninguna de las 5. Veredicto sin cambios: 31/32/35/36 confirmadas (DNRPA, autocosmos, scania), 33 BIODIESEL con fuente InfoLEG en contra de existir como propulsion propia (mapea a GASOIL/32 si hiciera falta). Archivo re-pinned sha256 35c8f109cec043aad376c4a7d3250fde100d8f1324bb97d1f28c6a073b9ae830.
-
2026-10-09T01:39:57Z researcher-mba-l-cc. Closure reason for id 33 COMBUSTION_BIODIESEL, per coder03: 0 PROD rows, 2 DEV rows on test vehicles 6806/6832 - nothing for Eugenia to resolve, no tracker question raised. InfoLEG: biodiesel is a mandatory 5% blend inside gasoil, never its own propulsion class - if ever forced to map, target is GASOIL/32, but nobody should force it. The two DEV test rows (6806 AO404OA opcion 31, 6832 QZ657QX opcion 33) are NOT to be edited - Ruling 1 of 2026-09-24 protects user-created DEV data.
-
db03 2026-10-08 ART. RE-PIN of my section of docs/reference/movilba-371-unidad-propulsora-no-libro.md against the bytes on disk, replacing a pin that cites bytes nobody can produce any more. WITHDRAWN: my note on MOVILBA-738 of 22:33 pins this file at sha256 ebf82655. The file is now 35c8f109cec043aad376c4a7d3250fde100d8f1324bb97d1f28c6a073b9ae830, taken with sha256sum against the shared checkout as the last step before writing this. The file is untracked, so there is no git object for ebf82655 and the old bytes are gone from this host - that pin is unresolvable and withdrawn rather than corrected. THE LIMIT, stated because it cannot be closed: I cannot diff ebf82655 against 35c8f109, so I cannot show that my section is byte-identical to what I pinned. "It looks the same when I read it" is not a control. What I CAN do is re-measure every figure the section asserts and see whether the current bytes still describe the bases, which is the claim that actually matters for a verdict. RE-MEASURED, both bases, SELECT-only, server clock 2026-10-08 22:58:12-03 PROD and 22:58:13-03 DEV. Every number in the section reproduces exactly. The seven columns, resolved rows over non-null rows: carrocerias.carroceria_piso_id 16/16 and 16/16, entidades.tipo_entidad_id 25/25 and 46/46, numeros_telefonicos.tipo_telefono_id 9/9 and 17/17, personas.tipo_persona_id 36/36 and 79/82, ramales.sentido_id 36/36 and 41/41, ramales.temporada_id 36/36 and 41/41, ramales.tipo_dia_id 36/36 and 41/41. The three orphan rows the section names are still exactly personas 172, 173 and 174 with tipo_persona_id = 1 in DEV and zero orphans in PROD - the same ids, not merely the same count. The FK count the section cites also holds in both bases: 38 FKs to public.opciones with one column and exactly 1 with three. WHAT THAT ESTABLISHES AND WHAT IT DOES NOT. It establishes that the section as it stands on 35c8f109 is true of both bases right now, so a verdict on these bytes is a verdict on a correct section. It does NOT establish that the section is unchanged, and if someone edited its prose without changing its figures this measurement cannot see it. Anyone who needs that distinction has to get it from the author of the intervening edit, not from me. ONE COLLISION WORTH NAMING, because it is the same trap twice in one evening. The TABLE is called ramales and its three catalog columns resolve to the grupo transporte; the grupo ramales does not exist in opciones at all, in either base (measured at 01:43:55.332Z on MOVILBA-738, zero rows of any kind). So "ramales" names a table and not a catalog group, which is exactly why src/services/opciones.ts:50-52 reading ramales/sentido, ramales/temporada and ramales/tipo_dia looked plausible and resolved to nothing. The table name is not evidence of the group name. NOT EXERCISED: no diff of the two revisions, because it is not possible here; no screen, export or API surface; and nothing in the rest of the document outside the Hallazgo lateral section, which is not mine and which I did not re-measure.
-
# MOVILBA-371 - audit finding. Author db03-mba-l-cc. audit-mba-l-cc, 2026-10-08 Doc docs/reference/movilba-371-unidad-propulsora-no-libro.md (pin 35c8f109, confirmed exact), instrument tools/movilba-371-censo-unidad-propulsora.sql (pin 68f5a67c, confirmed exact). Ran the instrument myself against both bases, SELECT only. ## Every figure reproduced exactly, both bases Catalog table (10 rows, ids 31-158, 34 and 158 borrada, rest viva) - exact. Book snapshot 11 column (GO 4875, GNC 626, ELECTRICO-CABA 53, ELECTRICO 4) - exact. 4-layer guard-absence probe: 0 hits all 4 layers both bases, positive controls func 3 / view 16 / matview 13 / check 6 - identical in DEV and PROD, matches. References table ids 31-36,158: PROD all 0, DEV 31=3 (vehiculo 1 + 2 periodos) and 33=2 (vehiculo 1 + 1 periodo), rest 0 - exact, and the two named DEV vehicles (6806 AO404OA prop 31, 6832 QZ657QX prop 33, both origen_ingreso=app_dev, both not borrado) match the doc's row-for-row. Section-5 negative-control split (7 PROD vs 5 DEV, 31/33 the two that drop out in DEV) - exact. MOVILBA-738 lateral 7-column table: all 7 PROD/DEV pairs match exactly, including personas.tipo_persona_id 79/82 DEV and 36/36 PROD. DEV orphan rows personas ids 172/173/174 tipo_persona_id=1 - exact, PROD orphan query 0 rows. ## One figure does not reproduce: the dropdown-order count Doc states twice (:95 and :130) "tres de las cinco [no-book options] salen antes que GO". Measured order, both bases, identical: Biodiésel(33) Diésel(32) Eléctrico(37) GNC(157) GO(124) Híbrido diésel(36) Híbrido nafta(35) Nafta(31). Of the five non-book ids (31,32,33,35,36), only two - Biodiésel and Diésel - sit before GO; Eléctrico(37) sits before GO too but is book-confirmed ("SI" in the doc's own :17 row), so it isn't one of the five. Count is 2, not 3. The order string itself, the named examples (Biodiésel second, Diésel against GO fifth), and the MOVILBA-364 precedent are all correct - only the headline count is off by one. Doesn't change the policy question's substance (still "non-book options rank before GO, order is an unchosen default"), so this is a correction to report, not grounds to withhold the rest. ## NOT EXERCISED (matches doc's own list, independently confirmed) No live request against /api/dropdowns or open screen. Snapshot 11 only, not the other nine. _archive and audit_log excluded from the reference census by the instrument's own design. No XLSX/PDF/API surface checked. The 7 no-FK columns are measured, not fixed (MOVILBA-738, DDL). v_unidad_propulsora's last REFRESH time not checked. No DNRPA Formulario 08 primary-source confirmation for the "Hibrido" checkbox claim.
-
audit pass: Instrument rerun fresh, both bases: catalog table, book snapshot-11 column, 4-layer guard-absence probe w/positive controls, FK reference census ids 31-36/158, section-5 negative control, named DEV test vehicles, MOVILBA-738 7-col lateral table, DEV orphan rows.
payload
{"scope":"Instrument rerun fresh, both bases: catalog table, book snapshot-11 column, 4-layer guard-absence probe w/positive controls, FK reference census ids 31-36/158, section-5 negative control, named DEV test vehicles, MOVILBA-738 7-col lateral table, DEV orphan rows.","outcome":"pass","evidence":"All cited figures reproduced exact both bases except dropdown-order count: doc says 3 of 5 non-book options rank before GO, measured order gives 2 (Eletrico is book-confirmed, wrongly counted as non-book); order string and named examples otherwise correct, flagged as correction not blocker.","reportRef":null} -
Shipeado. dev d08f7376 patch 226, prod patch 226, health verde al primer intento en las dos patas. Los cinco pines re-hasheados por mi contra el arbol como ultimo paso antes del commit: 371 md 35c8f109 y sql 68f5a67c, 763 md ceb920eb y sql e9441ed4, 738 sql 6ad786d2 - este ultimo SIN VEREDICTO y nombrado PENDIENTE en el mensaje de commit, porque 738 esta cerrado como item pero su artefacto nunca se audito y el item instrumento MOVILBA-774 sigue en backlog. Entra igual porque sin commit no hay pre-imagen: ninguna enmienda a un archivo untracked se puede verificar despues como solo-prosa, el commit ES el control. El arbol de los otros carriles se parkeo para la pata de prod y volvio verificado POR ARCHIVO: diff de trackeados contra el stash vacio y los 21 blobs untracked restantes identicos. POD en 223 y pedido a proxy-mba-w-cc, asi que la paridad de flota sigue abierta. SIN EJERCITAR: son censos y SQL de solo lectura, ninguna consulta corrio desde estos bytes en este commit, ninguna pantalla ni ruta cambia, y el .sql de 738 no tiene camino de ship que lo ejecute.
-
completed
-
coder03 2026-10-09 00:03 ART. db03's amendment (dos de las cinco, no tres) applied and shipped. dev 8c8b293f (patch 227), prod 185d07d0 (patch 227). Pin after ship: 4d9cd4d6e2c65a60a2f7c678f88f811b584f9dcbffc896986529fec5684849b4, confirmed byte-identical against db03's report before park/deploy. Prod leg parked the whole tree to a stash (21 untracked from other lanes, 15 tracked), verified byte-identical on restore, dropped. Pod still behind (31462/223), delegated to proxy-mba-w-cc.