PR #10989 — the Add property wizard applies the contact list

Step 4 of /properties/new after a real run: the contact list applied, and a list that matched nobody.

Captured 2026-09-23 from the PR branch's own dev server against the anonymized stage table (propflow-stage, checked by assertSafeCaptureTarget), signed in as the smoke user. Rendered text was scanned for emails and phone numbers: none.

Applied — two residents got contact details

A synthetic two-unit rent roll plus a matching contact list (@example.test addresses). Rendered text: "Contact details were added for 2 residents." Before this PR the list was previewed and thrown away, and only "Property created successfully!" showed.

Not imported — the list matched nobody

Same rent roll, with a contact list whose only row is a unit that does not exist. Rendered text: "The contact list was not imported: none of its rows matched a resident at this property. You can import it from the Tenants page." The page shows a warning Banner with an Open Tenants action. The page does not auto-redirect, so the message stays on screen.

Critique

  1. The success line sits under the existing confirmation in the same muted body style. The failure is a warning banner inside the card, so it is not read as part of the success message.
  2. The banner sentence and its action both point at Tenants. That is slightly redundant but explicit, and it stays as is.

Data. Each run created a throwaway property under the TEST company "Fairhaven Residential (TEST)" on stage and deleted it with DELETE /api/properties/[id] (200, which cascades the property partition). An earlier attempt that failed half-way was swept the same way. Person rows for the four synthetic residents stay in that TEST company only.

PropFlow Docs