Skip to main content

RoundTrip Status & Roadmap — August 11, 2026

Status: Snapshot, supersedes roundtrip-status-2026-08-10.md for anything it touches. That document is still accurate for everything it covers that isn't mentioned again here — scheduling, billing completion, Twilio, the old R-series backlog, AI cluster, docs/infra someday items. This document exists because two full audit passes (TRA-388, TRA-402) happened since Sunday's snapshot and materially changed the picture.


Part 1 — What's actually Done since Sunday

TicketWhat
TRA-397Dead 08-dispatch-board.spec.ts config fixed, 5 tests recovered
TRA-390Offline mutation queue unit tests — 22 tests
TRA-391Photo capture unit tests
TRA-393authStore branching tests — surfaced TRA-414 (see below)
TRA-369Full remediation — real technician offline-mutation hook built, useTechMutations.ts deleted, classifier bug fixed at the root
TRA-402Full codebase ghost-code audit — the source of everything in Part 2

TRA-392's specs exist but have never been run against a live environmentnpm run test:e2e still needs to happen before trusting the photo-capture E2E coverage as passing, not just present. Same for TRA-397's recovered suite.


Part 2 — The new critical thread: domain-integrity bypass pattern

TRA-402's single biggest finding: the same failure shape happened three independent times — a live endpoint bypasses a sensitive aggregate's guarded domain methods entirely, via hand-written raw SQL. Not three unrelated bugs; one recurring pattern, most likely from early rapid-building speed tradeoffs where raw SQL was faster to ship than wiring a full command chain, with the "proper" version built in parallel and never actually connected.

  1. TRA-408 (data audit) first, or in parallel with everything else. Read-only queries checking whether the guard-bypassing has already produced actual bad data (empty-required-field Technician rows, inconsistent Tenant states). Doesn't block anything else, and the answer changes how urgently 2-4 need to move.
  2. TRA-359 (Tenant/Stripe), TRA-403 (Technician), TRA-404 (TenantUser) — the three actual fixes. TRA-359 is the most severe (real billing/subscription lifecycle) and already has a fully detailed scope from when it was originally filed; 403/404 are newly scoped from tonight's audit.
  3. TRA-409 (architecture test) lands alongside 1-3's fixes, not before. A red test with no fix in progress yet is just noise — this is specifically designed to prove it fails against the current, pre-fix code before anything's considered done.

Everything else TRA-402 found, lower urgency

TicketWhat
TRA-405Client.PreferredTechnicianId permanently null — real API field, no write path
TRA-406Three small dead methods (ReturnPartUsage, UpdateNoteText, MarkRead)
TRA-407ClientNote — full test coverage, not even in the EF model. Worth the broader gut-check this ticket proposes: are there other tests like this?
TRA-410useTech.ts — third dead technician hook implementation, 4-month-old leftover confirmed via the case-study archive. Not yet done — flagged as a quick TRA-369 addendum but wasn't touched in that pass
TRA-411NotificationBell's SignalR wiring — built, connected to nothing, silently degraded to 60s polling
TRA-412Dead useLowStock hook + unused PageHeader.tsx component

Two findings turned out to already be known, not new — noted on the existing tickets rather than duplicated: TechnicianRoute (TRA-139/222's real foundation, already schema-complete) and Quote/QuoteLineItem (TRA-144's own described scope, domain layer already done).


Part 3 — Technician offline work, still open

TicketWhat
TRA-413RecordPartsPage.tsx has zero offline handling — same risk category as TRA-369, different page
TRA-414The interaction_required force-logout fix — decided Sunday, never implemented
TRA-374Photo offline queueing (AC08) — now has real, substantive technical scope (FormData isn't structured-cloneable, mobile storage-quota implications) rather than a vague "someday"

Part 4 — Remaining from the original TRA-388 test-coverage batch

Not touched by tonight's CC session, still real and waiting: TRA-394 (useSyncStatus), TRA-395 (assign/reassign branch), TRA-396 (dead useInvoiceLineItems.ts), TRA-398 (registration E2E — still zero), TRA-399 (broader admin-CRUD E2E gap), plus the older TRA-364 (Tenant subscription-lifecycle tests) and TRA-365 (Playwright ROPC auth).


Part 5 — The identity/auth thread, paused mid-flow

This is where Sunday night's plan actually was before the audit cascaded into everything above:

  • TRA-377 — the cleanup console tool is built and proven on list in both environments, but cleanup has never been run against a real candidate. Needs a fresh test email whenever that fatigue wears off.
  • TRA-384 + TRA-389 — the real remaining risk from the whole Entra saga, still queued, still real.

Suggested order, holding all of this together

  1. TRA-410 — quick, finishes what TRA-369 already started
  2. TRA-408 — cheap, informs how urgently the rest of Part 2 needs to move
  3. TRA-359 → TRA-403 → TRA-404 → TRA-409 — the real domain-integrity fix, in that order
  4. TRA-413, TRA-414 — small, real, quick technician-side fixes
  5. Part 4's remaining test batch, whenever there's a good block of time for it
  6. Part 5 — whenever a fresh test email stops feeling like a chore

Nothing here is a mandate — this is the map, not a commitment to walk it in exactly this order tonight.