PortfolioInvalidateByScopeRequest
Request body for `POST /api/import-sources/invalidate-by-scope` (spec §8.6). Helm AI's ScopeStore calls this after a rule write at a non-sheet scope to flip every dependent source's "ready" verdict. `reason` is bounded so a runaway client payload can't write an unbounded string into `validation_invalidated_reason` on every matched row.
scope_idrequiredstringreasonrequiredstring