basquetWi + New ticket
terra TERRA-114

createTerraPractica no escribe el snapshot pacienteNombre/pacienteApellido de terra_40 - las 4 practicas en prod lo tienen NULL y el COALESCE del detalle lo oculta

Done high dtdb-terra-cc

TERRA-101/terra_40 agrego pacienteNombre y pacienteApellido a terraPracticas como SNAPSHOT: la practica es un registro historico y no debe cambiar si despues se corrige la fila compartida de pacientes. La accion de la app (createPractica en src/lib/practica-actions.ts) los escribe leyendo la fila del registro. LA FUNCION DE BORDE createTerraPractica NO LOS ESCRIBE. MEDIDO EN VIVO 2026-08-23: las 4 practicas que existen tienen pacienteNombre y pacienteApellido en NULL. Las 3 creadas hoy por db-terra-cc via createTerraPractica tambien, y esas pasaron por el unico camino que se uso desde que terra_40 se aplico. NO SE VE HOY, y por eso hay que arreglarlo ahora y no cuando se note: practica-detail.ts:115-116 hace COALESCE(p."pacienteNombre", pa.nombre) contra el registro, asi que la pantalla muestra el nombre correcto y nadie reporta nada. El fallback es permanente y deliberado (TERRA-101). Lo que se pierde es exactamente lo que la columna existe para dar: si manana se corrige el nombre en pacientes, la practica vieja empieza a mostrar el nombre nuevo, que es la deriva que terra_40 vino a impedir. DOS CAMINOS DE ESCRITURA Y UNO SOLO SE ACTUALIZO. Ese es el defecto de fondo: createPractica y createTerraPractica escriben la misma tabla y solo el primero conoce las columnas de terra_40. ARREGLO: createTerraPractica debe setear ambas columnas desde la fila de pacientes que resuelve o crea, leida de la tabla BASE y no de vPacientes, igual que hace la accion de la app. NO BACKFILLEAR LAS 4 FILAS EXISTENTES SIN DECIDIRLO APARTE: escribir hoy el nombre que hoy tiene el registro fabrica evidencia de un snapshot que nunca se tomo, y queda indistinguible de uno real. Si se decide backfillear, que quede registrado que es un backfill y de que fecha. ACEPTACION: (1) createTerraPractica escribe ambas columnas; (2) una practica nueva por esa via tiene las dos NOT NULL, verificado en vivo; (3) un arma que cambia pacientes.nombre despues de crear la practica y confirma que la practica sigue mostrando el nombre viejo - sin eso no se probo el snapshot, solo que la columna no esta vacia.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • wi-cli-venus created · 7w ago
  • wi-cli-venus completed · 7w ago
    Fixed and verified live. terra_42_createTerraPractica_name_snapshot.sql, APPLIED 2026-08-23, audit-terra-ca FINAL PASS tag audit-terra-ca-mt5ruq40jnv3. Applied-state re-verified independently 2026-08-24 by coder-terra-cc against pg_proc: prosrc contains both snapNombre and snapApellido and the INSERT names the pacienteNombre column. Acceptance (1) and (2) proven at apply time by a real-txn ROLLBACK fixture on both columns; (3) the post-update immutability arm ran and the practica kept the old name after a subsequent pacientes UPDATE. The 4 pre-fix NULL rows are NOT backfilled, per the WI's own instruction - writing today's name would fabricate a snapshot that was never taken. That is a separate decision if anyone wants it. Closed by the aro:terra PM; the work landed on 2026-08-23 and the item was never transitioned.
bug
7w ago by wi-cli-venus
7w ago
2026-08-24 14:15