Calendar: staff with no company picked are asked to pick

Board row bug-calendar-staff-with-no-pick-read-the-whole-estate-limited-to-one-month. The smoke identity is platform_admin with no home company and no pick, which is the case this fixes.

28 Sept 2026 · branch fix/calendar-staff-no-pick · captured against propflow-stage · at 15d1935dff

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 captures

1 · Before — origin/main (a9ee3985f8, this branch's base): staff with no pick try to read every company

On main, a platform admin who has picked no company sends the calendar's read across every company's buildings for the month. The dev server's log for this request warns about buildings from several companies, which shows how wide the read went. On the stage mirror that read failed, so what the user sees is Couldn't load the calendar with every kind marked couldn't check. Either way the answer is wrong: the whole estate when the read finishes, a load failure when it does not.

The generator flags this section as the current tip of origin/main. That is also this branch's merge base, so it is the true before. The after section runs cd80396eb5.

Asserted in the captured DOM — Calendar · Couldn't load the calendar

Before — origin/main (a9ee3985f8, this branch's base): staff with no pick try to read every company
/calendar on origin/main, staff smoke user, no company picked. ⚠ Provenance. Captured from commit a9ee3985f8, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/wt-cal-main) — the server could not report its own commit, so this is the weaker of the two sources. ⚠ That is the current tip of origin/main. If this section is labelled a BEFORE, it is not one — it is showing today's main, which already carries the change.

2 · After — this branch: nothing is read, and the page asks for a pick

The same user and address on the branch. The server refuses with needs_a_selection before any read, and the calendar shows the pick-a-company notice instead of a grid.

Asserted in the captured DOM — The calendar answers for one organization at a time. · Pick one in the organization switcher to continue.

After — this branch: nothing is read, and the page asks for a pick
/calendar on fix/calendar-staff-no-pick, staff smoke user, no company picked.
PropFlow Docs