# A/B Deploy Diff Panel ## Module Web ## Status VERIFIED ## Description Deploy diff UI provides deterministic A/B SBOM comparison with policy-hit context, loading/error states, and inline release action controls. As of 2026-03-09 the panel is no longer wired to the dead `/api/v1/sbom/diff` route. The canonical comparison source is SbomService lineage compare, and the surrounding Releases workspace now degrades to an actionable `No Comparison Selected` state instead of a hard route failure when no digests are present. ## Implementation Details - **Feature directory**: `src/Web/StellaOps.Web/src/app/features/deploy-diff/` - **Route module**: `src/Web/StellaOps.Web/src/app/features/deploy-diff/deploy-diff.routes.ts` - **Core files**: - `src/Web/StellaOps.Web/src/app/features/deploy-diff/pages/deploy-diff.page.ts` - `src/Web/StellaOps.Web/src/app/features/deploy-diff/components/deploy-diff-panel/deploy-diff-panel.component.ts` - `src/Web/StellaOps.Web/src/app/features/deploy-diff/services/deploy-diff.service.ts` - **Canonical backend dependency**: - `GET /api/v1/lineage/compare?a=&b=&tenant=` - **Focused tests**: - `src/Web/StellaOps.Web/src/app/features/deploy-diff/services/deploy-diff.service.spec.ts` - `src/Web/StellaOps.Web/src/app/features/deploy-diff/components/deploy-diff-panel/deploy-diff-panel.component.spec.ts` - `src/Web/StellaOps.Web/src/app/features/deploy-diff/pages/deploy-diff.page.spec.ts` ## Follow-up Notes - Primary Releases shell mounts the canonical workspace at `/releases/investigation/deploy-diff`. - Direct shell navigation without digests is a supported workspace state, not an error path. ## Verification - Date: 2026-02-10 - Run artifacts: `docs/qa/feature-checks/runs/web/a-b-deploy-diff-panel/run-001/` - Tier results: - `tier0-source-check.json`: pass - `tier1-build-check.json`: pass - `tier2-e2e-check.json`: pass ## Recheck (run-003) - Date (UTC): 2026-02-10 - Status: VERIFIED (replayed) - Tier 1 evidence: Angular build passed and checked-web suite passed 145/145. - Tier 2 evidence: docs/qa/feature-checks/runs/web/a-b-deploy-diff-panel/run-003/tier2-e2e-check.json. ## Recheck (run-004) - Date (UTC): 2026-02-10 - Status: VERIFIED (replayed) - Tier 1 evidence: Angular build passed and checked-web suite passed 145/145 across 47 files. - Tier 2 evidence: docs/qa/feature-checks/runs/web/a-b-deploy-diff-panel/run-004/tier2-e2e-check.json. ## Recheck (run-006) - Date (UTC): 2026-02-11T07:13:55Z - Status: VERIFIED (strict Tier 2 UI replay) - Tier 1 evidence: `docs/qa/feature-checks/runs/web/a-b-deploy-diff-panel/run-006/tier1-build-check.json` - Tier 2 evidence: `docs/qa/feature-checks/runs/web/a-b-deploy-diff-panel/run-006/tier2-ui-check.json` - Notes: Playwright now covers positive deploy-diff rendering plus missing-parameter and API-error user paths; route is mounted in the primary shell map. ## Recheck (2026-03-09) - Status: VERIFIED (lineage compare contract repair) - Tier 1 evidence: - `npx ng test --watch=false --ts-config tsconfig.spec.features.json --include=src/app/features/deploy-diff/services/deploy-diff.service.spec.ts --include=src/app/features/deploy-diff/components/deploy-diff-panel/deploy-diff-panel.component.spec.ts --include=src/app/features/deploy-diff/pages/deploy-diff.page.spec.ts` - Tier 2 target: - live `https://stella-ops.local/releases/investigation/deploy-diff` - Notes: - direct route loads an actionable workspace when digests are missing - loaded comparisons are normalized from lineage compare into the deploy-diff UI model