Settings › Team — each row says which buildings the teammate holds

p7-admin-flip part 3 C2. Under each teammate's email the row says Every property, the named buildings, or Just the company. Captured as a customer company admin on stage.

29 Sept 2026 · branch fix/p7-admin-flip-p3c2-every-property-row · captured against propflow-stage · at ef07e07a47+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 · /settings/team — the roster, each row with its buildings line

Under each teammate's email, a third line says what they hold: Every property, the building names, or Just the company.

What to look at, and why it is right

The signed-in admin's own row reads Every property with no marker on the row — a company's admin sees the whole company (ruling b90054565). The property manager with no buildings reads Just the company, the invite form's own word, not a blank and not a zero. Names come from the roster the invite picker offers; a building that roster does not carry is counted (and 1 more), never invented. The invite form is closed, so every “Every property” on this screen is a row's line.

Asserted in the captured DOM — Team · + Invite teammate · Every property. The page header and at least one row line reading “Every property” (the admin's own row reads it by ruling b90054565) are on screen with the invite form closed.

/settings/team — the roster, each row with its buildings line

2 · The row menu offers “Every property” on a teammate the admin may widen

The ⋯ menu on the manager's row offers Every property above Remove from team.

Where it is offered, and where not

The signed-in admin holds every building (the server said so on /api/auth/me), so the widen is offered on a teammate they may manage whose row does not already read Every property. It is absent from the admin's own row (no menu there) and would be absent from any row already reading Every property; a narrowed admin sees it on no row. Choosing it sends the invite's own word to the per-user route; the route still decides.

Asserted in the captured DOM — Every property · Remove from team. Both menu items are in the DOM after the property manager's row menu is opened — the widen action beside the existing remove action.

The row menu offers “Every property” on a teammate the admin may widen

Two critique rounds

What the two rounds checked

Round 1 (roster): the third line sits one shade fainter than the email, so name › email › buildings is one hierarchy and nothing competes with the role and status on the right. Round 2 (menu): the widen sits above the destructive item, not beside the role picker where it could read as a role, and only on the row the fence allows.

PropFlow Docs