diff --git a/tasks.md b/tasks.md index 7b59a62..d1a53f6 100644 --- a/tasks.md +++ b/tasks.md @@ -292,10 +292,8 @@ Sizes: **S** = under a day, **M** = 1–3 days, **L** = 3–7 days. --- -## Phase 4 — Update delivery, RBAC polish, OIDC +## Phase 4 — RBAC, OIDC, host tags -- [ ] **P4-01** (M) Update delivery via OS package managers — host an apt repo (Linux) and Chocolatey package (Windows) on gitea releases. `restic-manager-agent update` is a thin wrapper over `apt-get install --only-upgrade restic-manager-agent` / `choco upgrade`. Trades flexibility for a much smaller security surface than bespoke signed binaries (see spec.md §4.2) -- [ ] **P4-02** (M) Agent version reporting on dashboard: surface "agent N versions behind server"; "update all" admin action calls the package-manager wrapper on each host - [x] **P4-03** (M) RBAC enforcement at API layer (admin / operator / viewer) - [x] **P4-04** (S) User management UI (create/edit/disable, role assignment, password reset) @@ -311,14 +309,13 @@ Sizes: **S** = under a day, **M** = 1–3 days, **L** = 3–7 days. > > **Sweep verified (smoke env):** admin adds operator → setup link generated → curl-as-new-user fetches /setup (200, page shows username) → POSTs password → 303 to / + Set-Cookie → operator authenticated → 200 on /, 200 on /settings/account, **403 on /settings/users** (admin-only) → admin disables user → operator's next request is **401** + session row count drops to 0 → audit log shows `user.created` + `user.setup_completed` for the cycle. All 26 implementation tasks landed; full `go test ./...` green. - [ ] **P4-05** (L) OIDC login (generic provider config, group → role mapping) -- [ ] **P4-06** (M) Repo size trend graphs (sparkline on host card, full chart on repo page) - [ ] **P4-07** (S) Per-host tags + dashboard filtering by tag -- [ ] **P4-08** (M) Prometheus `/metrics` endpoint: per-host gauges (last backup timestamp, last backup status, repo size, snapshot count, agent online), server gauges (active alerts, build info), job duration histograms; protected by bearer token or IP allow-list -- [ ] **P4-09** (S) Document Prometheus integration + sample Grafana dashboard JSON ### Phase 4 acceptance -- Non-admin users see an appropriately limited UI. Agents upgrade via apt/choco with one admin-triggered action. OIDC login works against at least one provider (Authelia or Authentik). Prometheus can scrape `/metrics` and the sample Grafana dashboard renders with live data. +- Non-admin users see an appropriately limited UI. OIDC login works against at least one provider (Authelia or Authentik). Hosts can be tagged and the dashboard filters by tag. + +> **Deferred to Phase 6** (2026-05-05) — pulled forward of OSS readiness so a working v1 ships sooner: P4-01/02 (update delivery + agent-version tracking), P4-06 (repo size trends), P4-08/09 (Prometheus + Grafana). All operator-experience polish, none of it gates getting the system into production. --- @@ -338,6 +335,22 @@ Sizes: **S** = under a day, **M** = 1–3 days, **L** = 3–7 days. --- +## Phase 6 — Update delivery + observability + +> Deferred from Phase 4 on 2026-05-05 — operator-experience polish that doesn't gate a working v1. + +- [ ] **P6-01** (M) Update delivery via OS package managers — host an apt repo (Linux) and Chocolatey package (Windows) on gitea releases. `restic-manager-agent update` is a thin wrapper over `apt-get install --only-upgrade restic-manager-agent` / `choco upgrade`. Trades flexibility for a much smaller security surface than bespoke signed binaries (see spec.md §4.2). _(Was P4-01.)_ +- [ ] **P6-02** (M) Agent version reporting on dashboard: surface "agent N versions behind server"; "update all" admin action calls the package-manager wrapper on each host. _(Was P4-02.)_ +- [ ] **P6-03** (M) Repo size trend graphs (sparkline on host card, full chart on repo page). _(Was P4-06.)_ +- [ ] **P6-04** (M) Prometheus `/metrics` endpoint: per-host gauges (last backup timestamp, last backup status, repo size, snapshot count, agent online), server gauges (active alerts, build info), job duration histograms; protected by bearer token or IP allow-list. _(Was P4-08.)_ +- [ ] **P6-05** (S) Document Prometheus integration + sample Grafana dashboard JSON. _(Was P4-09.)_ + +### Phase 6 acceptance + +- Agents upgrade via apt/choco with one admin-triggered action. Prometheus can scrape `/metrics` and the sample Grafana dashboard renders with live data. Repo size trend visible on host detail. + +--- + ## Cross-cutting / ongoing - [ ] **X-01** Keep CHANGELOG.md updated (Keep-a-Changelog format)