EVO-66: preventive friction-flash on nueva-práctica static required gates + reduced-motion a11y retrofit
Fleet EVO-66 mars child. Consensus ADOPT-PARTIAL (coder+db+audit+venus): port pluto's PREVENTIVE friction-flash (PLUTO-541 series / venus VENUS-279 d08fce6) to mars's STATIC required gates ONLY, not a mechanical full port. Scope: (1) preventive flash on sexo/dni(numeroHistoriaClinica)/reportedPracticeDate via useFlashOnEnterView(invalid,ref): IntersectionObserver(threshold .4) replays 3x box-shadow pulse on each empty->visible transition (transition-driven not per-render; re-fires on rescroll-return per Elazar) + persistent ring while empty; invalid=emptiness. (2) dynamic per-tooth gates (tratamiento/conducto)+teeth/RX stay REACTIVE, no change beyond a11y. (3) FlashField wrapper: stable OUTER node holds observer ref, keyed INNER carries flash class (else key remount detaches observer, re-fire dies) -- use venus's FlashField verbatim. (4) observer callback if(!entry)return guard. (5) a11y: @media(prefers-reduced-motion:reduce){animation:none} covering BOTH new flash AND mars's existing .rx-card-flash/.teeth-section-flash (unguarded today, globals.scss:506-511 only covers .practica-self-glow+.sidebar-badge.badge-urgent). (6) keyframe: reuse rx-card-flash-pulse or align to pluto 3x, standardize at impl. Class-S, client UI only, db cleared. No push until PM go.
Questions
Activity
-
Consensus locked, coder-mars-cc cleared to implement (Class-S, no push until self-PTD). Static-gates-only preventive flash + reduced-motion retrofit.
-
SCOPE CORRECTION (coder caught + PM approved): preventive set = sexo + dni(numeroHistoriaClinica) ONLY. Dates EXCLUDED — on mars both date fields are optional (reportedPracticeDate non-required per MARS-509 + pre-filled; fechaNacimientoPaciente has no required guard), so a preventive empty-flash on them would reintroduce the exact friction MARS-509 removed. Pluto flashed its dates only because they're required in pluto; mars's aren't. Per-tooth gates stay reactive as agreed. reduced-motion retrofit unchanged.
-
9c9defd/v2.39.0, live-confirmed, Class-S self-PTD PASS + audit PASS:9c9defd (no findings). Preventive friction-flash on sexo+dni static gates (IntersectionObserver empty->visible pulse + persistent .friction-empty ring); per-tooth reactive; dates excluded (optional). New <FlashField> = venus remount-safe observer/keyed-inner. a11y prefers-reduced-motion guard added covering new flash + retrofitting previously-unguarded rx-card-flash/teeth-section-flash. Server contracts unchanged.