Wire PolicyEvaluatePanel, RemediationHint, and PolicyPackEditor into policy-decisioning gates page and policy-studio editor within the canonical /ops/policy shell. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.0 KiB
Orphan Policy Component Adoption
Sprint: SPRINT_20260308_019_FE_orphan_policy_component_adoption
Summary
Revived three dormant shared policy widgets by adopting them on mounted canonical surfaces inside the /ops/policy shell:
-
PolicyEvaluatePanelComponent + RemediationHintComponent: Adopted on the
PolicyDecisioningGatesPageComponent(/ops/policy/gates/*). The gates page now renders a structured decision banner, gate results table, and contextual remediation hints derived from its existing gate results data. TheRemediationHintComponentis imported transitively through the evaluate panel. -
PolicyPackEditorComponent: Adopted as a visual gate configuration sidebar within the
PolicyEditorComponent(/ops/policy/packs/:packId/edit). Operators can view and modify gates visually alongside the Monaco DSL editor. No second editor route tree was created.
Mounted hosts
| Widget | Host component | Route | Adoption type |
|---|---|---|---|
| PolicyEvaluatePanelComponent | PolicyDecisioningGatesPageComponent | /ops/policy/gates/* |
Inline evaluation panel |
| RemediationHintComponent | PolicyDecisioningGatesPageComponent (via evaluate panel) | /ops/policy/gates/* |
Transitive via evaluate panel |
| PolicyPackEditorComponent | PolicyEditorComponent | /ops/policy/packs/:packId/edit |
Sidebar visual config |
Exclusions
| Surface | Reason |
|---|---|
features/releases/release-flow.component |
Uses bespoke RemediationHintsComponent with domain-specific data contract (PolicyGateResult/RemediationStep from release.models) including automated step triggers, copy-to-clipboard, and exception request flow. The shared RemediationHintComponent does not support these features. |
| Policy Studio as a separate navigation branch | Explicitly excluded per sprint scope - canonical policy shell only. |
Data contracts
PolicyEvaluateResponse(frompolicy-interop.models.ts): gates page derives this from its existingGateResult[]via a computed signal.PolicyPackDocument(frompolicy-interop.models.ts): editor derives this from the loadedPolicyPackmetadata.RemediationHint(frompolicy-interop.models.ts): consumed transitively through the evaluate panel.
Test coverage
policy-decisioning-gates-page.component.spec.ts: Verifies policyEvaluateResult derivation, gate mapping, remediation hints, decision computation, and template rendering of the shared panel.policy-editor-pack-editor.component.spec.ts: Verifies packDocument derivation, template rendering of the shared pack editor, and change handler.
Files changed
src/Web/StellaOps.Web/src/app/features/policy-decisioning/policy-decisioning-gates-page.component.tssrc/Web/StellaOps.Web/src/app/features/policy-studio/editor/policy-editor.component.tssrc/Web/StellaOps.Web/src/app/features/policy-decisioning/policy-decisioning-gates-page.component.spec.ts(new)src/Web/StellaOps.Web/src/app/features/policy-studio/editor/policy-editor-pack-editor.component.spec.ts(new)