The only warning that deselecting a retired complicacion is irreversible is a hover-only title attribute, invisible on touch - and the TERRA-167 port made the reveal region smaller than the action region
FOUND WHILE CLOSING TERRA-167, PRE-EXISTING, NOT A REGRESSION FROM THAT PORT. src/components/practica-postop-form.tsx lines 111-118: a retired complicacion that this practica still holds renders an inline "(fuera de catálogo)" span whose title attribute says "Esta complicación ya no está en el catálogo. Quedó registrada en esta práctica; si la deseleccionás no vas a poder volver a agregarla." A title attribute is HOVER-ONLY. It has no touch equivalent, it is not reliably announced by screen readers, and there is no keyboard path to it. So the ONLY statement anywhere in the product that this deselection is IRREVERSIBLE is invisible to a person on a phone or tablet, which is the device a resident actually has in a clinic. Deselect once, save, and the value cannot be re-added - the write side exempts already-recorded values but never re-offers a retired one. THE PORT DID NOT CREATE THIS AND DID CHANGE ITS GEOMETRY, which is the part worth writing down rather than waving at. Before the port the whole option was a single Button and the title sat on that Button, so the hover region and the click region were THE SAME REGION. After the port the title sits on the 15-character "(fuera de catálogo)" span while the click target is the entire Label. The region that REVEALS the warning is now strictly smaller than the region that PERFORMS the action it warns about. Same defect class, worse ratio. NOBODY HAS VERIFIED A PERSON CAN READ IT ON THE DEPLOYED PAGE. Not coder, not audit, not me. The assertion in src/lib/practica-postop-core.test.ts checks that the title STRING is present in the source. That is a source-presence check, not a visibility check, and it will keep passing at 100 percent while zero users can see the text. WHAT WOULD FIX IT, and the choice is the deliverable rather than the code: (a) render the warning as visible inline text under the option instead of a tooltip, (b) keep the marker inline and move the sentence into a confirmation on deselect, or (c) decide the irreversibility is acceptable unwarned and DELETE the title, so the product stops carrying a warning that does not warn. Option (c) is legitimate and must be chosen explicitly - the worst outcome is the current one, where the sentence exists, satisfies a test, and reaches nobody. BOUNDED. This is one component, no DB change, no migration, no shared table. It does not wait on TERRA-124 and TERRA-124 does not wait on it.
Activity
-
SHIPPED AND LIVE. coder-terra-ca pushed 147ddda at v0.30.52; deployed version is now 0.30.55, dpl_AhcETuHjWSDS5FafPuR1mj7i7reC, dbOk and mailOk true, so the change is past the front door. I confirmed the deployment myself rather than accepting the report, and I read the source rather than accepting the summary of it. WHAT IS ACTUALLY IN THE FILE, checked line by line against what was claimed. The title attribute is GONE - grep finds no title= anywhere in practica-postop-form.tsx, which is the whole point of the row: the fix is not a relocated tooltip, the tooltip no longer exists. Line 130 renders the consequence as permanent inline text, "(fuera de catálogo; si la quitás no vas a poder volver a agregarla)", visible with no hover, no pointer and no keyboard focus. Line 120 binds it to the checkbox with aria-describedby, conditional on retired, so a screen reader reads the consequence with the control instead of after it. Line 71 blocks a declined deselection with window.confirm before setValues runs, so the irreversible action now requires an affirmative act. THE COVERAGE CHANGE IS THE PART THAT MATTERS MORE THAN THE FEATURE. The old assertion checked that the warning STRING was present in source, which is exactly why a warning nobody could read passed at 100 percent for the life of the component. The new arms assert the CONTROL PATH and the early return - that a declined confirm leaves values unchanged - which is a property of behaviour rather than of text. A test that reads a string cannot tell you a human saw it. BOTH SOURCE SLICES NOW ASSERT THEIR ANCHOR OCCURS EXACTLY ONCE, test lines 301, 326 and 331. I asked for this because the TERRA-167 test I had just reviewed sliced on the FIRST role="group" and would have silently retargeted to a different region if a second one were ever added above it - every assertion still passing, measuring the wrong thing, failing nowhere. That latent hole is closed in the same commit rather than filed as a follow-up nobody picks up. A count assertion converts a silent retarget into a loud failure. Release gate PASS at 438 tests, typecheck and build, with one pre-existing unrelated lint warning in informes/page.tsx. COVERAGE LIMIT, STATED RATHER THAN IMPLIED. Every one of these checks is source text plus an HTTP version string. NOBODY HAS OPENED THE PAGE. Whether the inline sentence is legible at the rendered size, whether the confirm dialog is reachable and readable on a phone, and whether a screen reader actually announces the described-by text are three questions no lane here has answered and none can from source. This row closes on the defect being structurally fixed - the warning is no longer hover-gated - not on anyone having seen it work. Filed by coder02-terra-cc, implemented by coder-terra-ca, and the accessibility gap was found while closing TERRA-167 rather than reported by a user. Pre-existing, not a TERRA-167 regression; TERRA-167 changed only the hit-region geometry of a tooltip that is now deleted.
-
CLOSED on an independent source read by audit-terra-ca at committed 147ddda. NO title attribute remains in practica-postop-form.tsx. A retired complicacion the practica still holds now renders a PERSISTENT inline consequence tied by aria-describedby rather than a hover-only tooltip, and setComplicacion calls window.confirm before a deselection with the decline path returning before setValues. So the warning is no longer hover-gated, and the reveal region is no longer smaller than the action region - which was the specific defect the TERRA-167 port introduced on top of the pre-existing invisibility. A hover-only warning on a destructive irreversible action is invisible on touch, which is the population this app is used by. NOT EXERCISED: actual touch interaction, native confirm accessibility, screen-reader announcement of the aria-describedby text. window.confirm is a native modal - it is reliable and it is not styled or translatable, which is a deliberate tradeoff for an irreversible action rather than an oversight; if it should be an in-app dialog that is a new row, not this one.
-
completed