# V13-FE-024 — Permission route metadata slice note

- **Requirement:** REQ-FE-AUTHZ
- **API/UI/Test:** UI-AUTH-01 / T-FE-AUTH-01
- **Source:** v60 fail-closed permission boundary; current `frontend/src/features/{models,shadow-run}/registry.ts` declarations.
- **Assumption:** `model.read` is the only permission identifier currently evidenced by the active feature registries.
- **Unknown:** Authenticated permission hydration and the complete route-to-permission catalog are not yet connected to the active router.
- **Decision Required:** Security/FE owners must approve the auth permission source and route visibility behavior before enabling a global navigation guard.

## Applied boundary

- Added `permissions: ['model.read']` to the four active ModelOps routes whose feature registries already declare that permission.
- Added a pure `canAccessRoute` policy that fails closed for declared permissions and does not perform authentication or network access.
- Kept API authorization as the final authority; this Slice does not claim server security or hide routes globally.
- Did not invent permissions for financial, operations, internal, or portfolio routes.

## Evidence

```text
pnpm test -- src/shared/auth/tests/routeAccess.spec.ts
PASS: 1 file / 3 tests (2026-08-12)

The third test verifies all four active ModelOps route permissions match their feature registries.

pnpm typecheck
PASS (2026-08-12)
```

Status remains IN_PROGRESS until the permission source and global route policy are approved.
