# Remaining tests — run these yourself **6 checks left: X1–X3 and R1–R3.** Everything else is done or dropped (see the tally at the bottom). Each line is a single yes/no. Report as "X1 ok, R2 needs fix". **Pre-req:** running `master` at `18e732f` or later, `pm2 restart officer` done, browser hard-refreshed (Ctrl/Cmd-Shift-R). A stale bundle looks exactly like a failure. --- ## X — Chat lazy-load × sidecars (3) This block is why the two branches had to be merged before testing: it exercises the **lazy-loaded transcript window** (navigation work) against the **sidecar-written durable event log** (sidecar work). They meet at the `prevSeq` continuity check in `useChat.ts` — the client compares each durable message's `prevSeq` against the cursor it holds, and shows a warning banner if they disagree. The risk is a **false alarm**: loading only the tail of a transcript means the client starts mid-chain, and if that's mishandled it reports missing output that isn't actually missing. - [ ] **X1** — Open a long chat (this session, or `0aebeea6`). Expect **no** banner reading "⚠️ Some output could not be recovered — part of this conversation is missing above." *A banner here is a false positive: the events are on disk, the window just started mid-chain.* - [ ] **X2** — In that same chat, send a new message. The reply streams in and appends **below** the loaded tail, in the right order. Nothing duplicated, nothing inserted mid-transcript. - [ ] **X3** — The nasty one. In a long chat: scroll up until older messages load, then send a new turn. The older messages you just loaded must **still be there** — not wiped back to the tail window. Variant worth trying: scroll up to load history, then `pm2 restart officer` to force a socket reconnect and replay. Same expectation. ## R — Quick regressions (3) - [ ] **R1** — Search/filter boxes still filter the list, on `/jobs` and `/dashboards`. *(Projects is being removed — skip it there.)* - [ ] **R2** — No new console errors on `/jobs`, `/dashboards`, `/chat`. Open devtools, visit each, click a couple of rows. Red errors are a fail; warnings are fine. - [ ] **R3** — Browser **back/forward** moves between selections sensibly now that selection is in the URL. E.g. on `/dashboards`: click A, click B, press back → you should be on A with its preview. Worth also checking back out of `/chat/` and `/jobs/`. --- ## Tally | block | result | |---|---| | **C** — chat list & routing | **6/6** ✅ (C4 was broken → fixed, `d8cf79b`) | | **L** — long-transcript lazy-load | **8/8** ✅ | | **J** — jobs | **8/8** ✅ | | **D** — dashboards | **12/13** ✅ (D7/D8 broken → fixed, `18e732f`; D12-edit on mobile not fixed, see below) | | **P** — projects | **dropped** — feature being removed | | **X** — lazy-load × sidecars | 0/3 — **yours to run** | | **R** — regressions | 0/3 — **yours to run** | **34 verified, 6 remaining, 15 dropped with Projects.** ### Known and deliberately not fixed - **D12 (mobile, edit)** — on a phone, tapping edit on a dashboard opens the form in a panel you can't see. Select and New both work. Not fixed: mobile web is being discontinued in favour of the app. If that ever changes, the cause is the same shape as the desktop bug fixed in `18e732f` — `ProjectListScreen`/`DashboardsScreen` decide the mobile panel from `selected` (and `creating`), but not from `editing`.