# Offline Kit UI Integration ## Module Web ## Status VERIFIED ## Description Offline Kit UI with OfflineModeService, ManifestValidator, BundleFreshness widget, ReadOnlyGuard, and offline verification workflow for air-gapped environments, including deterministic bundle activation behavior in bundle management. ## Implementation Details - **Feature directory**: `src/Web/StellaOps.Web/src/app/features/offline-kit/` - **Routes**: `offline-kit.routes.ts` - **Components**: - `bundle-management` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/bundle-management.component.ts`) - `jwks-management` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/jwks-management.component.ts`) - `offline-dashboard` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/offline-dashboard.component.ts`) - `verification-center` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/verification-center.component.ts`) - `offline-kit` (`src/Web/StellaOps.Web/src/app/features/offline-kit/offline-kit.component.ts`) - **Source**: SPRINT_20251229_026_PLATFORM_offline_kit_integration ## E2E Test Plan - **Setup**: - [ ] Log in with a user that has appropriate permissions - [ ] Navigate to `/ops/offline-kit` - [ ] 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/offline-kit-ui-integration/run-001/` - Tier 0 (source): pass (`tier0-source-check.json`) - Tier 1 (build/tests): pass (`tier1-build-check.json`) - Tier 2 (behavior): pass (`tier2-e2e-check.json`) - Verified on (UTC): `2026-02-11T09:23:15.9520926Z`