Validated through no-mistakes pipeline: re-review low risk, full test suite green (workflow hardening, transitions, auto-advance), docs synced. Note: no-mistakes cannot create the PR itself (Gitea provider unsupported) — branch pushed, opened here. Demo cleanup of old test tickets (keep ~5 cancelled) happens at deploy time per the brief.
Wahab demo prep batch (captain-approved 2026-08-02):
**Workflow hardening**
- **W1**: assigning a ticket auto-advances status to Assigned with a timeline entry (no manual state move needed)
- **W2**: status dropdown offers ONLY valid next transitions via a new transitions helper (no more 400 workflow-control errors)
- Cancelled status now reachable from ALL active states; excluded from CEO resolution averages
- Ticket detail page shows unit/category (was always em-dash)
- Phone field persisted (was silently dropped); phone updatable via PATCH
- Admin delete endpoint with photo cleanup guard; users picker replaces hardcoded technician list
- New-issue form: category required, priority validation
Validated through no-mistakes pipeline: re-review low risk, full test suite green (workflow hardening, transitions, auto-advance), docs synced. Note: no-mistakes cannot create the PR itself (Gitea provider unsupported) — branch pushed, opened here. Demo cleanup of old test tickets (keep ~5 cancelled) happens at deploy time per the brief.
- Add Cancelled as terminal status reachable from all active states; exclude
from SLA breach reporting and dashboard active counts; add to status pickers
- Persist customer phone on ticket create/update (was silently dropped);
add tickets.phone migration + legacy self-heal guard
- Add admin-only DELETE /api/tickets/{id} (removes timeline/photos/escalations)
- Add GET /api/auth/users for the assign-technician dropdown (was hardcoded)
- TicketOut now returns nested unit/category so the detail page stops showing
'—' for Unit/Property/Category
- Ticket numbering uses max+1 so deletions never re-issue a number
- New-issue form: require Category and (standard mode) Priority client-side
- Tests: 11 new cases covering cancellation, SLA exemption, phone, delete,
users endpoint, numbering
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Wahab demo prep batch (captain-approved 2026-08-02):
Workflow hardening
Validated through no-mistakes pipeline: re-review low risk, full test suite green (workflow hardening, transitions, auto-advance), docs synced. Note: no-mistakes cannot create the PR itself (Gitea provider unsupported) — branch pushed, opened here. Demo cleanup of old test tickets (keep ~5 cancelled) happens at deploy time per the brief.
- Add Cancelled as terminal status reachable from all active states; exclude from SLA breach reporting and dashboard active counts; add to status pickers - Persist customer phone on ticket create/update (was silently dropped); add tickets.phone migration + legacy self-heal guard - Add admin-only DELETE /api/tickets/{id} (removes timeline/photos/escalations) - Add GET /api/auth/users for the assign-technician dropdown (was hardcoded) - TicketOut now returns nested unit/category so the detail page stops showing '—' for Unit/Property/Category - Ticket numbering uses max+1 so deletions never re-issue a number - New-issue form: require Category and (standard mode) Priority client-side - Tests: 11 new cases covering cancellation, SLA exemption, phone, delete, users endpoint, numbering