Auth checked who you were, not whose data you got.
- Blast radius
- 30+ endpoints · 8+ controller surfaces · cross-tenant read, write, and delete
- Root cause
- Parent ownership existed. Child-resource services queried by bare _id with no project scope.
- Delivered fix
- ProjectOwnershipGuard + service-layer projectId scoping — shipped as a single reviewable PR.