Tenants, flat: the rail item is the table

No sub-rail, no occupancy hub — clicking Tenants lands on the tenant table, and a tenant close-up keeps the top-level item lit by prefix.

3 Sept 2026 · branch gera/tenants-flat · captured against propflow-stage · at dad71e4642+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 · /tenants is the tenant table, with no sub-rail beside it

Until this PR the rail item opened an overview hub — three occupancy chips over two nav cards — and the table lived one click further at /tenants/list, under a two-row sub-rail. Gera, 2026-09-03: "for tenants, no subtabs, just show the list." The table moved up to /tenants, the hub and its cards are deleted, and the section has no sub-rail, the same shape Vendors and Collections already had. /tenants/list is a query-preserving redirect into here for bookmarks and the ?filterStatus= deep links global search used to mint.

Captured scoped to one property through the top-bar picker — the same table, one operator's rows.

Asserted in the captured DOMTenants · Import Contacts · Camellia Apartments · Elijah Achebe. The page heading, the table's own action, a property cell and the first tenant row (sorted by last name) asserted in the DOM — the table, not a hub, is what rendered at the section root.

/tenants is the tenant table, with no sub-rail beside it
The rail with Tenants selected and the table at the section root, scoped to one property through the picker

2 · A tenant close-up keeps Tenants lit — by prefix now, not by a sub-rail claim

The retired sub-rail needed an alsoMatches claim because a tenant detail path is a sibling of /tenants/list, not a child, and longest-prefix matching lit up Overview on every close-up (Gera, 2026-08-25). On a flat item the top-level rail matches /tenants/<id> by prefix and needs no claim. The back chevron and the Tenants crumb both point at /tenantsENTITY_BACK.tenant is the one constant they share, and the canonical-back-href guard now checks it the live way rather than through an exemption.

Asserted in the captured DOMChase Vandermeer · Tenants · Unit 103. The tenant's name, the 'Tenants' crumb the back chevron pairs with, and the unit line asserted after the page settled.

A tenant close-up keeps Tenants lit — by prefix now, not by a sub-rail claim
Tenant detail with the rail visible: Tenants stays the active item

What this closes and what it does not

It closes the last of the three decisions from the Conversations consolidation that touched Tenants: the Conversations subtab left in #6948, and with one destination remaining the sub-rail had nothing to organise. It does not touch the tenant table itself — TenantsClient and its columns test moved up a directory with no content change — nor the detail page beyond where its back link points.

PropFlow Docs