# Policy Studio UI (Monaco Editor, Simulation, Approvals) ## Module Web ## Status VERIFIED ## Description Full Policy Studio authoring environment with Monaco-based DSL editor (stella-dsl@1 syntax highlighting, IntelliSense), policy simulation panel with deterministic diff rendering, guided rule builder, YAML editor with schema validation, submit/review/approve workflow with two-person approval, run viewer dashboards, and explain view with evidence overlay exports. ## Implementation Details - **Feature directory**: `src/Web/StellaOps.Web/src/app/features/policy-studio/` - **Components**: - `conflict-visualizer` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/conflict-visualizer.component.ts`) - `live-rule-preview` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/live-rule-preview.component.ts`) - `test-case-panel` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/test-case-panel.component.ts`) - `version-history` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/version-history.component.ts`) - `policy-approvals` (`src/Web/StellaOps.Web/src/app/features/policy-studio/approvals/policy-approvals.component.ts`) - `policy-dashboard` (`src/Web/StellaOps.Web/src/app/features/policy-studio/dashboard/policy-dashboard.component.ts`) - `policy-editor` (`src/Web/StellaOps.Web/src/app/features/policy-studio/editor/policy-editor.component.ts`) - `policy-explain` (`src/Web/StellaOps.Web/src/app/features/policy-studio/explain/policy-explain.component.ts`) - `policy-nl-input` (`src/Web/StellaOps.Web/src/app/features/policy-studio/nl-input/policy-nl-input.component.ts`) - `policy-rule-builder` (`src/Web/StellaOps.Web/src/app/features/policy-studio/rule-builder/policy-rule-builder.component.ts`) - `policy-simulation` (`src/Web/StellaOps.Web/src/app/features/policy-studio/simulation/policy-simulation.component.ts`) - `policy-workspace` (`src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts`) - `policy-yaml-editor` (`src/Web/StellaOps.Web/src/app/features/policy-studio/yaml/policy-yaml-editor.component.ts`) - **Services**: - `monaco-loader` (`src/Web/StellaOps.Web/src/app/features/policy-studio/editor/monaco-loader.service.ts`) - `policy-api` (`src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts`) - **Models**: - `src/Web/StellaOps.Web/src/app/features/policy-studio/models/policy.models.ts` - **Source**: SPRINT_0210_0001_0002_ui_ii.md ## E2E Test Plan - **Setup**: - [ ] Log in with a user that has appropriate permissions - [ ] Navigate to `/policy-studio/packs` - [ ] Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed) - **Core verification**: - [ ] Verify the editor/studio loads with editable content or empty template - [ ] Verify changes can be saved and persisted - [ ] Verify validation errors are displayed for invalid input - **Edge cases**: - [ ] Verify graceful handling when backend API is unavailable (error state) - [ ] Verify responsive layout at different viewport sizes - [ ] Verify accessibility (keyboard navigation, screen reader labels, ARIA attributes) ## Verification - Run: `docs/qa/feature-checks/runs/web/policy-studio-ui/run-001/` - Date (UTC): 2026-02-11