CODE-003 · Pentoma Code
Archived project path skips repository membership check
Source-to-sink trace shows projectId moves from route params through a repository-lookup branch that bypasses org membership when archived=true. The same path is reachable from two API surfaces, creating a cross-tenant authorization bypass chain.
Move membership validation ahead of archived-state branching, harden both API surfaces against direct projectId lookups, and add regression coverage for the active and archived paths.