Tenants: the loading skeleton is the tenants table

The skeleton had no columns in front of a seven-column table.

27 Sept 2026 · branch p11-skel-tenants · captured against propflow-stage · at 5e9c337099+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 · Before (main): no columns

Click-in from Clara, page render held so the real loading.tsx stays on screen. One long bar per row under a blank header band.

Asserted in the captured DOM — Tenants. The route skeleton's title.

Before (main): no columns
Provenance. Captured from commit a79995515f plus uncommitted changes, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/propflowai/.claude-worktrees/p11-skel-probe) — the server could not report its own commit, so this is the weaker of the two sources. That commit is already merged into origin/main.

2 · After (this branch): the table's own columns

Same click-in on this branch: the real table in its loading state, with the loaded page's column headers, search box and a full page of rows.

Asserted in the captured DOM — NAME · UNIT · PROPERTY · PHONE · LEASE END · STATUS. The skeleton's column headers.

After (this branch): the table's own columns

3 · The loaded list (this branch)

The page itself, unchanged, searched to the anonymized stage residents only (the capture refuses to publish anything that looks like a reachable phone). With every company picked it adds a Company column first; that difference is horizontal only.

Asserted in the captured DOM — NAME · LEASE END · STATUS. The loaded table's headers.

The loaded list (this branch)
PropFlow Docs