Files
git.stella-ops.org/docs/features/checked/web/policy-governance-controls-ui.md

64 lines
4.0 KiB
Markdown

# Policy Governance Controls UI
## Module
Web
## Status
VERIFIED
## Description
Policy governance controls with risk budget dashboard, trust weighting with impact preview, risk profiles CRUD, sealed mode toggle, and policy conflict dashboard with resolution wizard.
Conflict source previews in the resolution wizard now render source metadata only. The current governance conflicts contract does not expose full rule or policy bodies, so the wizard explicitly reports preview content as unavailable instead of generating synthetic JSON.
## Implementation Details
- **Feature directory**: `src/Web/StellaOps.Web/src/app/features/policy-governance/`
- **Routes**: `policy-governance.routes.ts`
- **Components**:
- `conflict-resolution-wizard` (`src/Web/StellaOps.Web/src/app/features/policy-governance/conflict-resolution-wizard.component.ts`)
- `governance-audit` (`src/Web/StellaOps.Web/src/app/features/policy-governance/governance-audit.component.ts`)
- `impact-preview` (`src/Web/StellaOps.Web/src/app/features/policy-governance/impact-preview.component.ts`)
- `policy-conflict-dashboard` (`src/Web/StellaOps.Web/src/app/features/policy-governance/policy-conflict-dashboard.component.ts`)
- `policy-governance` (`src/Web/StellaOps.Web/src/app/features/policy-governance/policy-governance.component.ts`)
- `policy-validator` (`src/Web/StellaOps.Web/src/app/features/policy-governance/policy-validator.component.ts`)
- `risk-budget-config` (`src/Web/StellaOps.Web/src/app/features/policy-governance/risk-budget-config.component.ts`)
- `risk-budget-dashboard` (`src/Web/StellaOps.Web/src/app/features/policy-governance/risk-budget-dashboard.component.ts`)
- `risk-profile-editor` (`src/Web/StellaOps.Web/src/app/features/policy-governance/risk-profile-editor.component.ts`)
- `risk-profile-list` (`src/Web/StellaOps.Web/src/app/features/policy-governance/risk-profile-list.component.ts`)
- `schema-docs` (`src/Web/StellaOps.Web/src/app/features/policy-governance/schema-docs.component.ts`)
- `schema-playground` (`src/Web/StellaOps.Web/src/app/features/policy-governance/schema-playground.component.ts`)
- `sealed-mode-control` (`src/Web/StellaOps.Web/src/app/features/policy-governance/sealed-mode-control.component.ts`)
- `sealed-mode-overrides` (`src/Web/StellaOps.Web/src/app/features/policy-governance/sealed-mode-overrides.component.ts`)
- `staleness-config` (`src/Web/StellaOps.Web/src/app/features/policy-governance/staleness-config.component.ts`)
- ... and 1 more components
- **Source**: SPRINT_20251229_047_FE_policy_governance_controls
## E2E Test Plan
- **Setup**:
- [ ] Log in with a user that has appropriate permissions
- [ ] Navigate to `/admin/policy/governance`
- [ ] Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed)
- **Core verification**:
- [ ] Verify the component renders correctly with sample data
- [ ] Verify interactive elements respond to user input
- [ ] Verify data is fetched and displayed from the correct API endpoints
- **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-governance-controls-ui/run-001/`
- Date (UTC): 2026-02-11
- Recheck note: the prior verification predates the truthful metadata-only preview cutover in `conflict-resolution-wizard.component.ts`.
## Recheck (run-002)
- Date (UTC): 2026-04-15T17:03:18Z
- Status: VERIFIED (strict Tier 2 UI replay)
- Tier 2 evidence: `docs/qa/feature-checks/runs/web/policy-governance-controls-ui/run-002/tier2-ui-check.json`
- Replay scope:
- Open `/ops/policy/governance/conflicts` and verify the mounted governance surface renders.
- Open a live conflict resolution flow, advance into the compare step, and verify the wizard reports metadata-only previews instead of fabricated rule bodies.
- Verify the mounted compare step does not render generated `"condition"` or `"action"` JSON fields.