# The five sheets awaiting a direction — checked against the built code, 2026-09-05

`HANDOFF.md` lists five round-4 sheets as *"await a direction"*. Three of the
five screens changed on 2026-09-05, so before ruling on a sheet it is worth
knowing which ones the code has already overtaken. Each entry below says what
the sheet proposes, what is true in the code now, and what the decision actually
is. **Nothing here rules anything** — it makes each ruling a single word.

Checked by reading the sheet and the corresponding source. Where I did not
verify something, it says so.

---

## 1. `agent-overview.html` — the fork is real but it has become three-way

**The sheet's one fork, in its own words:** *"Say which surface owns the channel
and the other one loses it."* Dashboard channel cards vs. Agent Overview gate
cards, on the standing rule that interrelated data never gets two screens.

**What changed underneath it.** The five gate cards are no longer on Agent
Overview at all. They moved to Agent → Settings on 2026-09-05 (*"all
configurations move it in agent move to agent -> settings"*), together with the
three confidence knobs. Overview now holds per-channel STATUS only — turns
today, when it last answered — and one line pointing at Settings.

So the sheet's proposal ("the channel cards are gone from this screen; what
survives is a four-column table of the agent's own facts") is **most of the way
built already**, but by a different route than it imagined: the sheet moved the
whole concept to the Dashboard, whereas the code split it — *controls* to
Settings, *status* stayed on Overview.

**The live decision is now three-way, not two:**
- **(a)** Leave it. Controls in Settings, status on Overview, channel cards on
  Dashboard. This is what is built and deployed.
- **(b)** The sheet's version: Overview's per-channel status also goes, leaving a
  four-column table, and the Dashboard owns the channel entirely.
- **(c)** The opposite trade the sheet offers: Overview keeps full channel cards
  and the Dashboard thins.

**Recommendation: (a), leave it.** The "two screens" rule is about interrelated
data getting two *editing* surfaces. There is now exactly one place to change a
channel (Settings) and the two other appearances are read-only views at
different altitudes. That is the rule satisfied, not broken.

⚠ **This sheet is factually stale where it is most careful to be accurate.** Its
note reads: *"the gate states are prod's real ones, read from
`settings.channelGates` on 2026-08-05: WhatsApp canary with one test number …
Drawing a screen against invented gate states is how a mockup starts lying."*
**Canary no longer exists** — removed 2026-09-05, *"we only want on or off
ONLY"*. Re-read from the prod DB on 2026-09-05: WhatsApp **live**, web:chat
**live**, Instagram and Facebook DMs **off**, every comment gate and both
comment→DM gates **live**, and the audience restriction now lives in
`testAudience` (enabled, three ids). By its own standard the sheet is now
lying, and needs those five words fixed whichever way the fork is ruled.

---

## 2. `contacts.html` — already built; nothing to rule

Proposes segments as a **left rail of saved views** rather than a tab.
**Built and live**: `SegmentRail.tsx`, wired at `Contacts.tsx:231`, filtered
server-side by `segmentId` through the same `compileSegmentDefinition` a
campaign audience uses — so the rail and a send can never disagree about who is
in a segment.

**Recommendation: close it as implemented.** It is on the ruled list already
(DECISIONS, 2026-09-04, "IN"); only the sheet's status line is out of date.

---

## 3. `settings.html` — I read this one wrong the first time

**Correction.** My first pass here said *"Agent → Settings now owns more than the
sheet draws"*. **That was wrong** — I conflated two different screens. This sheet
is not about Agent → Settings at all. It draws the **platform** Settings screen
at `/settings` (`Settings.tsx`, eight tabs across Platform / Contacts /
Connections / Access), which nothing this session touched.

**What is actually stale, checked against prod.** The sheet's own authority note
reads *"The rows are prod's real connection set, read from the `connections`
table today: whatsapp, instagram, web, llm, leadrat, n8n, gmail, manychat — all
active."* Read from the prod `connections` table on 2026-09-05 there are
**seven** rows — `n8n`, `manychat`, `llm`, `leadrat`, `gmail`, `instagram`,
`web` — and **no `whatsapp` row exists** (operator, 2026-09-05: *"whatsapp is
not connected to any number now"*).

So it is the same fault as `agent-overview.html`: a sheet that stakes its
credibility on drawing real data, drawing something that is not there. Annotated
in the file rather than redrawn.

**The sheet's own two forks are untouched by any of this** and are still live
questions: whether a connection row should report *"Working"* (did it last
succeed) instead of *"Active"* (is it enabled), and the second fork stated
beside it.

**Recommendation: rule the two forks; no redraw needed.** The layout is not
stale, one factual line was, and that line is now corrected in place.

---

## 4. `knowledge-doc.html` — partly overtaken; the rest unchecked

Two changes landed on 2026-09-05 from the operator's reference image: the panel
went from 440px to **680px** (and the view panel to 920px `--wide`), body
padding to 24/28, and the rows given more room. Deleting a document now asks
first and names the document — ruled IN 2026-09-04 and built 2026-09-05.

**CHECKED 2026-09-05, and the disagreement is bigger than width.** The sheet's
`--panel-w: 196px` is the NAV RAIL, not the document; its content column is
`max-width: 1180px`. **The sheet draws a knowledge document as a FULL PAGE on
the app shell**, not as a side panel at all.

The code has BOTH, and that is the finding:
- `AgentKnowledgeDoc.tsx` — a full page at `/agent/behaviour/knowledge/:id`,
  which is what this sheet is a design for. **Nothing in the UI links to it.**
  The only routes that reach it are redirects kept alive for old bookmarks.
- `situations-knowledge.tsx` — `ViewPanel` (920px) and `EditPanel` (680px) side
  panels, which is what the library actually opens.

So one document has **two editing surfaces**, against the standing rule that
interrelated data never gets two screens (operator, 2026-07-17). It is not a
theoretical cost: the delete guarantee was **different on each**. The side
panels had no confirmation at all, and the orphaned full page had a native
`window.confirm` — the blocking browser popup `ConfirmDialog` exists to
replace. Both were fixed on 2026-09-05 and now share one dialog, but the
duplication that caused it is still there.

**The decision is not about this sheet's layout. It is: which surface owns a
knowledge document?**
- **(a) The side panels win.** Delete `AgentKnowledgeDoc.tsx`, point the old
  bookmark redirects at the library, and this sheet is moot.
- **(b) The full page wins** — what the sheet proposes. The library's rows link
  out to it, the panels go, and the sheet becomes the build order.

**Recommendation: (a).** The panels are what the product actually uses, the page
is unreachable, and the operator's own ruling on 2026-09-05 widened the PANEL
(440→680px, 920 for viewing) from a reference image — he was designing the
surface he uses. Keeping an unlinked second editor is how the next divergence
happens.

⚠ Either way, **do not leave both.** That is the one option with a proven cost.

---

## 5. `analytics-definition.html` — genuinely still open, and correctly sequenced last

Nothing in the code moved here this session. `plans/rethink/README.md` records
analytics as deliberately sequenced last, and two round-3 analytics forks were
dropped as overtaken by that sequencing.

**Recommendation: leave it parked** until analytics is actually picked up.
Ruling on a definition sheet for a screen nobody is about to build spends a
decision with no work behind it.

---

## Summary

| Sheet | State | Decision needed |
|---|---|---|
| `agent-overview` | Fork now three-way; note factually stale | **Yes** — pick (a)/(b)/(c); fix the canary line either way |
| `contacts` | Built and live | No — close as implemented |
| `settings` | My first read was WRONG (it is the platform screen, not Agent Settings); its layout is fine, one factual line was stale and is corrected | **Yes** — rule its two forks ("Working" vs "Active"); no redraw |
| `knowledge-doc` | CHECKED — it designs a full page the UI does not link to; two editors exist for one document | **Yes** — which surface owns a document? Rec: the panels, delete the page |
| `analytics-definition` | Untouched, sequenced last | No — leave parked |

Two of the five need no decision at all. One needs the word "leave it".
