# V13-FE-006 — navigation contract hardening

## Scope

- **WBS:** V13-FE-006
- **Requirement/API/UI/Test:** REQ-FE-NAV / Cross / UI-NAV-01 / T-FE-NAV-01
- **Source:** current `KsSideNavigation`, `navigationCatalog`, router meta, and existing AppShell tests.
- **Change:** nested detail routes now activate their parent navigation item and expose `aria-current="page"`.
- **Not changed:** route catalog, permissions, capability flags, menu labels, or navigation persistence.

## Evidence

- Navigation contract test: 1 file / 2 tests passed.
- Full frontend regression: 62 files / 162 tests passed.
- `pnpm typecheck`: passed.
- `pnpm build`: passed; known Vite >500 kB chunk warning remains.
- Visual/AT/browser evidence remains outstanding.
- Evidence: `evidence/V13-FE-006/navigation-contract_20260813.log`.
- Menu search hardening: results now expose stable option IDs and the input tracks the active option through `aria-activedescendant`/`aria-controls`; empty results remove the active descendant.
- Menu search contract test: 1 file / 2 tests passed.
- Evidence: `evidence/V13-FE-006/menu-search-contract_20260813.log`.
- Permission metadata hardening: navigation entries now preserve route permission metadata and expose a pure fail-closed `filterNavigationEntries` function. AppShell wiring remains deferred until a reactive approved auth source exists.
- Catalog contract evidence: 3 files / 7 tests passed; typecheck and build passed.
- Evidence: `evidence/V13-FE-006/navigation-permission-contract_20260813.log`.
- Module section hardening: side navigation sections can collapse/expand with `aria-expanded`; route and permission behavior remain unchanged.
- Targeted navigation test: 1 file / 3 tests passed; typecheck and build passed.
- Evidence: `evidence/V13-FE-006/navigation-section-collapse_20260813.log`.
- Breadcrumb hardening: `KsAppShell` now exposes `홈 → 현재 화면` through an accessible `현재 위치` navigation landmark using route metadata.
- Breadcrumb contract test: 1 file / 2 tests passed; typecheck and build passed.
- Evidence: `evidence/V13-FE-006/breadcrumb-contract_20260813.log`.
- Browser contract evidence: Playwright snapshot confirmed shell landmarks, breadcrumb, and list-only top-level navigation. Parameterized detail routes are excluded from the catalog.
- Evidence: `evidence/V13-FE-006/navigation-browser-contract_20260813.log`.
- Mobile navigation hardening: added a responsive drawer toggle, backdrop close, Escape close, and explicit open/close labels without changing desktop route or permission behavior.
- Evidence: `evidence/V13-FE-006/mobile-navigation-contract_20260813.log`.
- Mobile browser evidence: at 390x844, menu open, drawer/backdrop close, and Escape close were reproduced with Playwright.
- Evidence: `evidence/V13-FE-006/mobile-browser-contract_20260813.log`.
- Focus hardening: mobile drawer now focuses its close control on open, traps Tab/Shift+Tab within drawer controls, and returns focus to the header menu button on close/Escape/backdrop.
- Evidence: `evidence/V13-FE-006/mobile-focus-contract_20260813.log`.
