# Policy Decisioning Studio UI ## Module Web ## Status VERIFIED ## Description Shipped the canonical `Policy Decisioning Studio` shell at `/ops/policy` and made it the mutable owner for policy packs, governance, simulation, VEX, exceptions, release gates, and policy/VEX audit. Legacy `policy-studio`, `policy/*`, `admin/policy/*`, `admin/vex-hub/*`, and security VEX aliases now resolve into the same routed shell instead of leaving writable sibling products active. ## Implementation Details - **Feature directory**: `src/Web/StellaOps.Web/src/app/features/policy-decisioning/` - **Primary components**: - `policy-decisioning-shell.component.ts` - `policy-decisioning-overview-page.component.ts` - `policy-pack-shell.component.ts` - `policy-decisioning-vex-shell.component.ts` - `policy-decisioning-gates-page.component.ts` - `policy-decisioning-audit-shell.component.ts` - **Canonical routes**: - `/ops/policy/overview` - `/ops/policy/packs/*` - `/ops/policy/governance/*` - `/ops/policy/simulation/*` - `/ops/policy/vex/*` - `/ops/policy/gates/*` - `/ops/policy/audit/*` - **Legacy aliases**: - `/policy-studio/*` - `/policy/*` - `/admin/policy/*` - `/admin/vex-hub/*` - `/security/vex*` - `/security/exceptions*` - **Release-context entry points**: - approvals detail - promotion request - release detail - workflow editor - evidence detail ## E2E Test Plan - **Setup**: - [x] Log in with a user that has policy, VEX, exception, and release read scopes. - [x] Seed pack dashboard data or route fixtures for `/api/policy/packs` and `/api/policy/packs/:packId/dashboard`. - [x] Start the local UI harness on `https://127.0.0.1:4400`. - **Core verification**: - [x] Verify `/ops/policy/overview` renders the canonical shell and primary tabs. - [x] Verify a legacy pack bookmark lands inside pack-mode decisioning. - [x] Verify a release-context gate URL renders context chips and return-to-source affordance. - [x] Verify `/security/vex` redirects into the canonical VEX shell. - **Regression verification**: - [x] Verify targeted Angular route and redirect specs cover the alias contract. - [x] Verify workflow-editor and evidence-detail deep links open the shared shell. - [x] Verify global search VEX normalization lands in the canonical shell. ## Verification - Run: - `npm test -- --watch=false --include src/tests/policy_decisioning/policy-decisioning-shell.component.spec.ts --include src/tests/policy_decisioning/policy-decisioning-routes.spec.ts --include src/tests/release_orchestrator/evidence-detail.behavior.spec.ts --include src/tests/release_orchestrator/visual-workflow-editor.behavior.spec.ts --include src/tests/security/security-overview-dashboard.behavior.spec.ts --include src/tests/global_search/search-route-matrix.spec.ts --include src/tests/navigation/legacy-redirects.spec.ts --include src/tests/routes/legacy-route-migration-framework.component.spec.ts --include src/tests/administration/administration-routes.spec.ts --include src/tests/security-risk/security-risk-routes.spec.ts` - `npx playwright test tests/e2e/policy-decisioning-studio.spec.ts` - `npm run build` - Tier 0 (source): pass - Tier 1 (build/tests): pass - Tier 2 (behavior): pass - Note: the production build still emits existing bundle-budget warnings outside this feature scope; the build itself completes successfully. - Verified on (UTC): 2026-03-07T23:22:53Z