Every Portfolio settings topic on origin/main (f63b97f2f0d), Company tab and Property tab, plus the click-Property moment. TEST company only. Evidence for the SettingsTopicPage design, not a PR.
1 Oct 2026 · branch origin · captured against propflow-stage · at f63b97f2f0d
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.
The grid page: the scope tabs are the grid's header row, inside the table, under a header row that holds only the info glyph. The page is narrow (896px). Note where the tabs sit relative to the info "i" — two rows, not one.
Asserted in the captured DOM — Company · Tour length
Clicking the Property tab with no building picked: the grid loses its row (the table collapses to its header), the company card below is replaced by a "Pick a property" empty state, and the page re-renders through a different frame (PageBody + EmptyState instead of OrganizationSettings). This is the movement Gera described.
Asserted in the captured DOM — Pick a property
One TEST building picked. The page is now PropertySettings: a different component tree, a different set of cards under the grid, and every grid column re-read from the network (nothing is kept from the Company tab).
Asserted in the captured DOM — Tour length
Adding a building from the trailing "Property ▾" tab on the Company scope. The body widens from narrow to formWide (896 → 1280px) at the moment the column lands: the whole page, cards included, re-flows.
Asserted in the captured DOM — Tour length · Company
Maintenance on the Company tab: the grid (every company box reads "Set per property") inside CompanyTopicPage, the rating card below.
Asserted in the captured DOM — Company
The same topic at a building: a different frame (PropertySettings), different cards, re-read.
Asserted in the captured DOM — Company
Renewals as origin/main has it: CompanyTopicPage with the link-mode bar (SettingsScopeLinkBar) above a card. This is the header Gera calls "simpler and cleaner": one quiet row with the info glyph, the tabs on their own line under it, no table chrome around them.
Asserted in the captured DOM — Company
Collections on the Company tab: three late-fee rows reading "Set per property", the follow-ups link card below, and its own ComparedColumnsSaveBar (the third save-bar variant).
Asserted in the captured DOM — Company · Set per property
The building's three late-fee boxes; the same page frame as the Company tab (Collections is the one topic that already renders both scopes through CompanyTopicPage).
Asserted in the captured DOM — Late fee (percent of rent)
Calls & messages on the Company tab: the grid inside OrganizationSettings, the company's routing cards below.
Asserted in the captured DOM — Company
The same topic at a building, through PropertySettings.
Asserted in the captured DOM — Company
General on origin/main: OrganizationSettings with the link-mode bar. The tabs stand alone under the quiet header row, no table around them. (#15187, merging, keeps this shape and makes the bar switch the card in place.)
Asserted in the captured DOM — Company
Team: the standalone bar over the roster card, with the Invite button in the header row beside the info glyph.
Asserted in the captured DOM — Company
Go-live: the standalone bar over the checklist card.
Asserted in the captured DOM — Company
How the split reads on a phone today: the grid stacks each column's cell under a caption.
Asserted in the captured DOM — Tour length
Five different page frames render the same topic family (OrganizationSettings, PropertySettings, CompanyTopicPage, the bare PageBody + EmptyState for "Pick a property", and the module-off notices), three save bars, and a body that changes width when a column is added. The scope tabs live inside the grid's header row on grid pages and on their own line on the others, so the info glyph and the tabs are never on the same row. Switching Company ↔ Property unmounts one frame and mounts another, and every column read starts over.