Complete user-feedback logging coverage — close G1/G2/G3 (client-validation friction gaps)
VENUS-176 feedback-coverage completion. Coder's full taxonomy found 3 gap classes where the app shows the user feedback WITHOUT logging an appEvents row: G1 client-side literal validation setError (soporte-form:35, correction-request-form:96, correction-decision-actions:33, image-upload-field:33); G2 server-action error setError missing logActionError (practica-dob-sexo-form:48, correction-request-form:105, correction-decision-actions:26+39, image-upload-field:47); G3 practica-form inline per-field validation (guardrail codes logged, plain required/format not). Fix: S2 add logActionError at G2 sites; S3 shared logClientValidation(field,msg,route) friction logger wired into G1 literal-setError + practica-form per-field errors — friction-tier, field-name+generic-msg only, NO PII/values, no success. Success = zero unlogged user-feedback surfaces (sole accepted exception: crash+adblock error-reporter edge). Prior legs shipped: toast beacon 9b6649f/0fca952, native-validation 16b2cbc (VENUS-184).
Questions
Activity
-
Universal user-feedback logging COMPLETE — every surface writes appEvents, proven by enumeration + audit independent completeness sweep. Coverage: A toasts (notify chokepoint→ux-event), B guardrail toasts, C server-action errors (18 sites/12 files, logActionError), D client literal validation (logClientValidation, 8 sites), E native HTML5 constraint (capture-phase 'invalid' listener, all fields), F inline warning, + 2 audit-caught non-setError surfaces (login OAuth setAuthError, alumno-edit state.error). SHAs 89da0be/5b87016 (0.89.7), audit PASS+ALL-CLEAR, live 0.89.8. Sole accepted residual: crash+adblock error-boundary edge (VENUS-185, Elazar-ruled). ImpersonationWriteError/requireAdmin server no-log left intact (deliberate — client-surface log captures user feedback without polluting security alert rail).