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.
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.
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.
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.