Files
git.stella-ops.org/docs/features/checked/web/findings-compare-baseline-availability-ui.md

47 lines
2.7 KiB
Markdown

# Findings Compare Baseline Availability UI
## Module
Web
## Status
VERIFIED
## Description
The embedded compare surface on `/security/findings` now treats `active-scan` as a first-class current target, shows an explicit unavailable state when no baseline exists, disables export until comparison data is real, and keeps detail mode on live findings data without the stale `Export Audit Pack` control.
## Implementation Details
- **Feature directories**:
- `src/Web/StellaOps.Web/src/app/features/findings/`
- `src/Web/StellaOps.Web/src/app/features/compare/`
- **Primary implementation files**:
- `src/Web/StellaOps.Web/src/app/features/findings/container/findings-container.component.ts`
- `src/Web/StellaOps.Web/src/app/features/compare/components/compare-view/compare-view.component.ts`
- `src/Web/StellaOps.Web/src/app/features/findings/findings-list.component.ts`
- **Focused regression files**:
- `src/Web/StellaOps.Web/src/app/core/testing/findings-container.component.spec.ts`
- `src/Web/StellaOps.Web/src/tests/findings/findings-list.audit-export.behavior.spec.ts`
- `src/Web/StellaOps.Web/tests/e2e/findings-compare-baseline-availability.spec.ts`
- **Canonical route**:
- `/security/findings`
## Verification
- Run:
- `npm test -- --watch=false --include src/tests/findings/findings-list.audit-export.behavior.spec.ts`
- `npx playwright test --config playwright.config.ts tests/e2e/findings-compare-baseline-availability.spec.ts --workers=1`
- `npm run build`
- Tier 0 (source): pass
- Tier 1 (build/tests): pass
- Tier 2 (behavior): pass
- Notes:
- Focused unit coverage passed: `1/1` tests in `findings-list.audit-export.behavior.spec.ts`.
- Deterministic Playwright passed: `2/2` scenarios for no-baseline diff behavior and detail-mode audit-export removal.
- Live authenticated replay on `https://stella-ops.local/security/findings?tenant=demo-prod&regions=us-east&environments=stage&timeWindow=7d` showed `Active scan`, rendered `No baseline recommendations available for this scan`, kept `Export` disabled, and issued no `/api/compare/delta` request without a selected baseline.
- Production build passed; existing bundle-budget warnings remain unchanged from the baseline.
- Verified on (UTC): 2026-03-08T13:04:26Z
## Verified Behavior
- `/security/findings` passes the embedded compare surface the active/current scan context instead of relying on standalone compare route params.
- When `/api/compare/baselines/active-scan` returns `selectedDigest: null`, the page shows a truthful unavailable state instead of fake zero-change content.
- Export remains disabled until both current and baseline targets exist.
- Detail mode renders live findings rows and does not expose the removed `Export Audit Pack` action.