The selection lives in the cookie — the address carries it only when shared

One browser tab, four stops: a pasted link is honoured, a bare page remembers it, a pick in the switcher moves the label AND the page, and the next bare page remembers the pick.

22 Sept 2026 · branch selection-lives-in-cookie · captured against propflow-stage · at 0f83eb068d+local

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · 1 · A pasted link is honoured

Arriving on a link that names Fairhaven Residential (TEST). The middleware writes the selection cookie on this request, and the provider then strips org/prop off the address with a native history.replaceState. There is no router navigation and no second render. The address bar is outside the page, so this capture cannot show it; the clean itself is pinned by selection-provider.test.tsx ("a PASTED link is honoured, then cleaned off the address").

Asserted in the captured DOM — Fairhaven Residential (TEST). The switcher names the company the pasted link asked for.

1 · A pasted link is honoured
/vendors, arrived at with ?org=&prop=*@.

2 · 2 · A bare page remembers it — nothing in the address

The same tab loads /vendors with no query at all. The server mints from the cookie that stop 1 wrote, so the page is still Fairhaven's. This is the whole model: the cookie is the memory, and it is re-validated against the viewer's grants on every read.

Asserted in the captured DOM — Fairhaven Residential (TEST). A bare address resolves to the remembered company.

2 · A bare page remembers it — nothing in the address
/vendors, bare.

3 · 3 · A pick in the switcher moves the label with the page

Open the switcher, tick JPCO, untick Fairhaven, close. Closing commits. The commit makes the address speak for one navigation so the middleware (the cookie's only writer) records it. The provider then cleans the address and calls router.refresh(), which re-runs the workspace layout against the new cookie.

That refresh is also why the corner label follows the pick. The ui-s-d capture (PR #9058, section 3) recorded the label staying on the old company after a soft switch, because the reused layout never re-minted. Here the layout does re-mint.

Asserted in the captured DOM — JPCO. After an in-app pick and no document load, the switcher names the new company.

3 · A pick in the switcher moves the label with the page
/vendors after picking JPCO in the switcher.

4 · 4 · The next bare page remembers the pick

A fresh load of bare /vendors in the same tab now resolves to JPCO. The commit reached the cookie without the selection ever living in the address.

Asserted in the captured DOM — JPCO. The commit persisted through the cookie.

4 · The next bare page remembers the pick
/vendors, bare, after the pick.

What this capture cannot show

The browser's address bar is not part of the page, so no section here can photograph /vendors without a query. That claim is pinned in the unit suite instead: bare arrival writes nothing, a pasted link is cleaned without a router navigation, and a commit is a replace whose params are cleaned once the page has rendered. The two-tab convergence (a storage ping → router.refresh()) is pinned there as well.

PropFlow Docs