record the second sweep: opaque clicks a state grep cannot see

This commit is contained in:
2026-08-07 13:21:26 +00:00
parent ea1dae5280
commit f4fdc000b2
+15 -3
View File
@@ -2,9 +2,11 @@
> **Status, 2026-08-07. Phases 14 and the cross-cutting section are closed except the two chat items.**
> Every finding H1H5 and M1M10 is done, void, or decided-and-recorded, and so is every Phase 4 line and
> every cross-cutting line. Two selections that the audit never listed were found afterwards by sweeping
> for `useGlobal<` / `useState` rather than by reading the table — the email folder and the Soulseek
> room/peer rails — and are done too. What remains, and only this:
> every cross-cutting line. **More sites were found by sweeping than by reading the table**, all after the
> listed rows were closed: the email folder and the Soulseek room/peer rails (`grep useGlobal<` /
> `useState`), and six navigations on the Invoices dashboard (`grep "onClick={() => navigate("`). All done.
> The two greps are written into the cross-cutting section as the standing re-check. What remains, and
> only this:
> **H4** (chat detail reading `sessionId` from `useParams` instead of the `chat:selected-session` channel)
> and the **"New Chat"** button that depends on it. Both are inside the chat nucleus, which has its own
> owner — they are not stalled here, they are somebody else's to land.
@@ -280,6 +282,16 @@ publishers means changing the chat panel, which is another agent's, so it is wri
Sweep to re-check this later: `grep -rn "usePanelChannel\|useGlobal<" src/workspaces/officerdev/src src/apps/officer-web`.
Everything it returns today is a registry, a refresh bus, a form draft, a connection state or a
preference — no selections.
**A second sweep is needed, because the first one cannot see the commonest opaque click.** A
selection held in a channel shows up in that grep; a selection that is *only* an `onClick` closure
does not, because there is no state to grep for. The one that finds those is
`grep -rn "onClick={() => navigate(" src/apps/officer-web src/workspaces/officerdev/src`. It
returned four sites after everything above was closed — all four in
`apps/Invoices/DashboardView.tsx`, plus two more row handlers in the same file that the grep misses
because they route through an `onOpen` prop. Every one was pure navigation to an already-addressable
URL that the destination genuinely reads (`useInvoicesSection` parses both `status` and `selected`),
so they were anchors written as buttons and nothing more. Fixed in `ea1dae5`; the grep is clean now.
- [x] Adopt `<NavLink>` (real react-router) for all nav chrome so active state stops being JS-derived.
Done — `39125b5`. Note `end={item.to === '/'}`: without it NavLink treats `/` as an ancestor of
every route, and with it on the rest a detail route would lose its tile.