diff --git a/chat-rearchitecture.md b/chat-rearchitecture.md
index 882beb2..ffb64aa 100644
--- a/chat-rearchitecture.md
+++ b/chat-rearchitecture.md
@@ -402,6 +402,142 @@ then log results in Section 10 before moving on.
- _Next:_ `styles` + `message` template + `GET /message/:id` (single-message
primitive).
+- **2026-08-06 — Phases 1–7 built & backend verified on brb.city.**
+ - **All 16 templates + 10 routes written** (ids in the maps above). Structure
+ `aim` #44 is live at `https://brb.city/aim/`.
+ - **Design pivot (recorded so §4–6 match reality): identity is fully
+ client-side.** localStorage holds `aim:handle` + `aim:client_id` (a stable
+ per-browser UUID). The socket carries them on an `identify` event (presence)
+ and each `send` (authorship + push exclusion). The server *trusts* the
+ client's declared identity — correct for a fun playground, and it kills the
+ "forgets who you are" + session-churn class of bugs outright. No server-side
+ alias/session juggling remains.
+ - **The four reported bugs, resolved:**
+ - *Forgets you* → localStorage handle + one stable alias per handle
+ (`getOrCreateAlias`), auto-seeded from the logged-in Bliss user.
+ - *Self-notify push* → subscriptions keyed by `endpoint`, owned by stable
+ `client_id`; fan-out is `subsExcludingClient(senderClientId)`. Your own
+ device is structurally excluded regardless of name/session changes.
+ - *Noisy presence* → counts kept **per person, not per socket**, with a 4s
+ debounce on sign-off, so tabs/reconnects don't spam. (`arrive`/`depart` in
+ the WS handler.)
+ - *Broken single-message* → `getMessageById` rewritten with the correct join;
+ it's now the backbone of the socket-as-pointer-bus design.
+ - **Socket-as-bus confirmed live** via a Node `ws` client: `identify` →
+ presence-line broadcast; `send` → persisted (`message #4`) + a `msg-pointer`
+ broadcast of exactly
+ `
`
+ — no message markup crosses the socket. `GET /aim/message/1` renders the AIM
+ line (red bold name, gray timestamp) with **unescaped** ``/`