basquetWi + New ticket
mars MARS-784

edit-rejected tells the student to ask a docente who has no way to add conductos, while a self-serve delete-and-recreate path exists unmentioned

Done normal cmcoder-mars-ca

A student hit edit-rejected reason=tratamiento-tipo-to-endo-needs-conductos twice at 2026-09-28T22:14:18.400Z and 22:14:36.852Z on practica 4cdd1478-8207-4305-bfd4-aeb6353b6f2a (pieza 25, approvalState noRevisado), then stopped. First occurrence of this reason in the 4 months appEvents covers - every prior edit-rejected row back to 2026-05-31 is reason=invalid-new-image-tooth. THE GATE IS CORRECT AND MUST STAY. editar/actions.ts:715 refuses a tipo change into the endo group when the tooth has no conductos, because the edit form has no conducto add/remove UI, and the comment at 664-670 says so deliberately: failing loud beats silently dropping the value or corrupting the conductos structure. No code change is wanted there. THE DEFECT IS THE REMEDY THE MESSAGE NAMES. The text ends 'requiere cargar conductos, que todavia no se pueden agregar desde esta pantalla. Indicaselo al docente.' - it routes the student to a teacher who has no instrument to do it. Only three surfaces write practicaToothConductos: /practicas/nueva/actions.ts (creation), the editar form (which is what just refused), and mi-cursada/[id]/actions.ts line 146, which only soft-deletes them in the delete cascade. No docente, JTP or review surface can add a conducto to an existing practica. Meanwhile a remedy the student CAN self-serve does exist and is not mentioned: deleteOwnPractica gates on approvalStateValue === PRACTICA_APPROVAL_STATES.pending, which resolves to 'noRevisado' (src/lib/practica-status.ts:4), exactly this practica's state - so delete and re-create with the right tipo works today, without a teacher. Fix is the copy plus whatever routing the lane prefers, not the validator. UNVERIFIED, two things: whether an /administrar admin tool can insert conductos (my grep covered src and found no other writer, archive-context.ts and entity-changelog.ts being archival, but I did not read the admin surfaces); and whether re-creating costs the student a practica quota slot, which would make the self-serve path worse than it looks.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • support-evolutiva-cc created · 2w ago
  • coder-mars-ca assigned · 2w ago
    coder-mars-ca / coder
  • coder-mars-ca statusChanged · 2w ago
    Copy-only correction in editar/actions.ts; clinical gate unchanged. Pending state points to delete/recreate with data-loss warning; reviewed state points to Ayuda.
  • coder-mars-ca note · 2w ago
    Pushed ddf3998 (v2.85.2): both adjacent conducto-cross-class rejection messages now use state-specific guidance. noRevisado points to detail-page self-delete/recreate and warns all practice data/images are lost; reviewed state points to Ayuda. Gate and reason codes unchanged. gitpush checks: 77 test files/938 tests passed; lint 0 errors, 7 existing warnings. Production version verification and post-push audit pending.
  • coder-mars-ca completed · 2w ago
    Fixed copy in ddf3998780d61beb28da317f824d6af9430703f5, v2.85.2. Clinical gate unchanged. noRevisado message offers detail-page delete/recreate and warns data/images are lost; reviewed state routes to Ayuda instead of an unequipped docente. gitpush checks 938/938 tests, lint 0 errors (7 unrelated warnings). Remote main package.json 2.85.2 matched live /api/health version 2.85.2 at 2026-09-28 22:23:18Z, deployment dpl_AKaETWXUsuMLqHJeWqonPTzQktZE. Post-push deep audit requested from audit-general-ca, verdict pending.
  • support-evolutiva-cc verified · 2w ago
    support-evolutiva-cc 2026-09-28: independently verified, source and live. ddf3998 'Correct conducto edit rejection guidance' is the tip of origin/main and the live /api/health reports version 2.85.2, deploymentId dpl_AKaETWXUsuMLqHJeWqonPTzQktZE - so the tip that serves production IS the fix commit, verified by ancestry rather than by the commit's own build status. The copy is state-aware as claimed: conductoCorrectionGuidance at line 676 branches on row.approvalStateValue === PRACTICA_APPROVAL_STATES.pending, giving noRevisado 'Podes eliminar esta practica sin calificar desde su detalle y cargarla de nuevo; al eliminarla se pierden sus datos e imagenes' and anything reviewed 'Esta practica ya fue revisada y no se puede eliminar. Consulta desde Ayuda como corregirla.' Both cross-class rejections carry it - to-endo at 721 and from-endo at 730 - so the from-endo direction was fixed although it had never fired in production. Data loss is now stated, which the original did not say. Reason codes and the clinical gate are byte-identical, which is what this row asked for. coder-mars-ca also closed my open quota caveat: no creation quota exists in the submission action, only the per-practica edit-open quota, so delete-and-recreate does not cost the student a slot. NOT verified: no user has yet exercised the new copy - the fix is live but unexercised, and the original blocked student (actor ab8f8ee5, practica 4cdd1478) has not returned since 22:14:36.852Z. My earlier /administrar caveat stands unaddressed but is now moot for the user-facing path. A post-push independent audit was requested by coder-mars-ca and its verdict is still pending.
  • support-evolutiva-cc completed · 2w ago
    support-evolutiva-cc: fix live and verified; closing. Residual, not blocking: the new copy is unexercised in production and the /administrar conducto-insert question was never answered, only made moot.
  • support-evolutiva-cc note · 2w ago
    support-evolutiva-cc 2026-09-28: CORRECTING MY OWN IMPACT FIGURE, upward. I reported the student hit the wall 'twice ... then stopped'. The full sequence is FOUR rejections in 65 seconds - 22:14:18.400, 22:14:36.852, 22:14:56.069, 22:15:23.726 - each followed ~200ms later by its error-shown row, all four the same reason on the same pieza 25. Then practica-opened at 22:16:07.072 and editar-clicked at 22:16:27.790, and nothing since. So they went back and opened the editor a third time after four refusals, and there is still no successful edit and no delete on practica 4cdd1478. The student is still stuck as of the last event. WHY I GOT IT WRONG, because it is the more useful half: I ran the query DURING the incident, roughly 60 seconds after the first alert, and reported a snapshot in the past tense. The two later rejections had not been written yet. A query taken while an incident is live cannot support a claim about how it ended; 'then stopped' was an inference from an empty tail, not an observation. TIMING THE FIX CANNOT HELP THIS USER: ddf3998 went live at 22:23, which is 6.5 minutes after their last action, and the new guidance only reaches them if they return and reload. Nobody has exercised the new copy. Whether to contact this student directly is NOT mine to decide - real-audience outbound is held for Elazar (cf MARS-125) - so it goes to him on the CLI, not into an email from this lane.
  • coder-mars-ca note · 1w ago
    Post-close audit found non-owner fullAccess editors received owner-only delete/recreate guidance. Fixed by branching conducto correction guidance on isOwner; pushed b3f692786a9ca08659c7e5aa432066d567121df4, version 2.85.5. Gate unchanged. tsc, 17 focused tests, and push-gate 955 tests passed. Production deploy verification pending.
  • coder-mars-ca verified · 1w ago
    b3f692786a9ca08659c7e5aa432066d567121df4 is on origin/main. Post-push health at 2026-10-04T19:48:39Z reports production version 2.85.5, deploymentId dpl_4gi8uSAJxyEUs7vxjHdmFZp7neax; remote main package.json is 2.85.5. Source/tests verified; non-owner admin UI path not exercised in browser. Post-push audit requested from audit-general-ca.
  • coder-mars-ca audited · 1w ago
    audit pass: b3f692786a9ca08659c7e5aa432066d567121df4 deep source review
    payload
    {"scope":"b3f692786a9ca08659c7e5aa432066d567121df4 deep source review","outcome":"pass","evidence":"audit-general-ca PASS:b3f6927 deep. isOwner guidance matches deleteOwnPractica owner and pending checks; reviewed-state guidance unchanged. Scoped diff and git show --check clean. Auditor did not rerun tests or exercise live UI.","reportRef":null}
bug
2w ago by support-evolutiva-cc
2w ago
2026-09-28 22:23