# Archive Report — Services as hub IA

**Change:** `services-as-hub-ia`
**Archived:** 2026-07-09 (paperwork-only archive; code merged to `main` on 2026-06-26)
**Phase:** archive

## Archive readiness

This change was **implemented and verified on 2026-06-26** (see `verify-report.md`: all 10 ACs PASS, backend 271 tests + frontend 92 tests green). 11 slices shipped; ~8600 insertions / ~3900 deletions across 103 files. The code was merged to `main` via commit `01527ae` ("Rebase services-as-hub-ia onto mobile-responsive-parity"), with subsequent fix passes (`691d78f` dedup `_resolve_service_record`, `d8c0a37`, `a63467e`, etc.).

Only the SDD artifacts (this folder) remained untracked. This archive is **paperwork-only** — no code changes, no canonical-spec sync (the change is flat-spec; no delta was ever authored). Archiving closes the paperwork gap.

## Signature code (confirmed present + tracked on `main`)

- `frontend/src/pages/service-tabs/` (UsersTab, MetricsTab, MediaTab, RequestsTab, FilesTab, ActionsTab, JobsTab, AlertsTab, MessagingTab, LinksTab, index.ts, stubs.tsx) + tests
- `frontend/src/pages/NamedDashboardPage.tsx` (`/d/:slug` route)
- Data-driven `useNavItems` in `App.tsx` (Main Dashboard + named dashboards + configured service-type entries + Services + Settings)
- Backend: 8-type registry (added `backups`, `authentik`), `_migrate_jellyseerr_into_jellyfin` in `ensure_defaults()`, dashboard CRUD + slug resolution, authentik directory/message endpoints

## Historical footnote (important for future readers)

This verify-report describes a state that included a **Grafana `LinksTab`** (slice 8). On **2026-07-08**, the `prometheus-direct-charting` change (archived at `openspec/changes/archive/2026-07-08-prometheus-direct-charting/`) **removed Grafana entirely** — including `LinksTab.tsx` and the `grafana` case in `service-tabs/index.ts`. The Grafana references in this folder are **historically accurate for 2026-06-26** (the change's point-in-time) and are not a regression. Archived change folders are point-in-time records by design.

## Carry-over notes

1. **App-level legacy-404 test** (slice 4 C1) was the one open test gap — all six legacy routes (`/media`, `/files`, `/actions`, `/users`, `/observability`, `/backups`) + two aliases were removed and the catch-all routes to `NotFoundPage`, but no test asserts the 404 behavior end-to-end. Low risk; remains a follow-up.
2. **Hooks query globally, not per-instance** (observability + backup hooks don't accept a `serviceId`). Documented follow-up once the hooks gain the parameter.
3. **MessagingTab is minimal** (no rich-text/attachments); **RequestsTab is a placeholder** ("coming soon"). Both are intentional deferrals.
4. **Canonical spec not synced.** If a durable canonical `service-hub-ia` spec is ever wanted, author a delta from `spec.md` and run `sdd-sync`. Out of scope for this paperwork archive.
