Gera, 2026-10-03: "it already knows its search box and table column labels, so show those immediately."
3 Oct 2026 · branch feat/buildings-ghost-shows-table-frame · captured against propflow-stage · at 15c783ecdb8
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 read is held open, so this is what a slow network shows. No search box, no columns: the whole table drops in later.
Asserted in the captured DOM — Buildings
The search box, the Show filter and every column label are on screen at once. Only the values wait: the rows are ghosts, and the "N of M buildings are on" line is a skeleton one line tall.
Asserted in the captured DOM — Show · BUILDING · UNITS · IN PROPFLOW · NOTES · STATUS
When the rows land, the search box and headers stay where they were: it is the same table, kept mounted.
Asserted in the captured DOM — Clara works only in the buildings that are on. · BUILDING · STATUS
Asserted in the captured DOM — Show · BUILDING · UNITS · IN PROPFLOW · NOTES · STATUS
Asserted in the captured DOM — Clara works only in the buildings that are on. · BUILDING · STATUS
On a phone the table scrolls sideways inside its card, so Notes and Status sit just past the edge, as they do once loaded.
Asserted in the captured DOM — Show · BUILDING · UNITS · IN PROPFLOW
Asserted in the captured DOM — Clara works only in the buildings that are on. · BUILDING
Asserted in the captured DOM — Show · BUILDING · UNITS · IN PROPFLOW
The route's loading.tsx and the page's own first paint render the same BuildingsView in its loading state, so nothing jumps at the hand-off.
BuildingsTable.dom.test.tsx: while loading, the search box and all five column labels render with ghost rows and no "No buildings yet."; the control (not loading, no rows) says "No buildings yet.". client-page.dom.test.tsx: an in-flight read draws the table and the count ghost; when the rows land, the same table element is still in the DOM; BuildingsGhost is that same body and reads nothing. The staff note above the table appears because the smoke account is PropFlow staff viewing a company whose customers cannot see this page.