portal-branch-scope
Notes
- Ruling 2026-09-17 (Dustin, triggered by MAN-9221 / 12906 Dauphin Ct, Fort Washington — Zoe could not find the project to upload plans because it is a Manassas post-production desk review parked on the Unlikely Professionals account): every branch user sees and works EVERY project that originated in their branch, wherever it is parked (JES Triage or Unlikely Pro). Implemented in entirely-api 447c985 + 783f5f4: services/portal_auth.ORIGIN_PARKED_ACCOUNTS, project_in_scope(), scope_filter_accounts(); applied across routes/portal_projects (lists, search, detail, PATCH, send-cert-email, add_site_visit) and routes/portal_messages. Replaces the 2026-07-16 JES-Triage-only / read-only exception. UP’s own direct-client projects (no originating branch) stay hidden from branches. Parked rows are labelled with their originating branch. Verified live as Zoe; Baltimore scope still denied. Tests: tests/test_triage_origin_read_access.py (24).