Files
felhom-controller/REPORT.md
T

45 lines
2.7 KiB
Markdown

# REPORT — R-70 controller leg: the hub-managed offsite empty state tells the truth (v0.161.0, 2026-07-23)
**Spec:** R-70 + R-71(c) prompt §4d (controller banner, XS; the detector/event/self-heal live in
felhom-hub v0.72.0 — see `felhom.eu/REPORT.md`). Origin:
`felhom.eu/documentation/audits/DIAG-f10-demo-hp-offsite-2026-07-23.md`.
## What shipped
One data key + one template gate. `backupsOffboxData` now exposes `OffsiteHubEnabled`
(= `s.cfg.Offsite.Enabled`, the hub descriptor already loaded from controller.yaml —
`internal/web/handlers.go`, no new wiring; `Server.cfg` was always there). On Távoli mentés, when
hub-managed offsite is enabled but no `offbox` target exists (the pre-apply window, or a burned
credential — the F10 shape), both empty surfaces switch to the truth:
> „Felhom offsite tárhely kiépítve — a beállítás automatikus, folyamatban. Ha egy napon belül nem
> áll be, jelezd az üzemeltetőnek."
- the v0.124.0 status card no longer offers „igényelhető szolgáltatás" for a service that is
already ordered (it contradicted the new banner — coherence extension of the spec's letter,
gate `{{if and (not .OffboxConfigured) .OffsiteHubEnabled}}`);
- the `{{if .Offbox}}` else-branch replaces the bare „Még nincs beállítva távoli mentési cél.";
- NOT hub-enabled → today's copy byte-identical; configured target → status block as before;
the own-NAS setup form untouched.
## Tests & gates
Render tests per branch of the gate (`internal/web/backups_remote_hubenabled_test.go`, the
v0.70.1 template-gate lesson): banner branch (+ old copy asserted GONE + own-NAS button asserted
present), legacy branch (old copy intact, banner absent), configured branch (no banner). Green
gate: `go build && go vet && go test ./...` — 25 packages ok. Design-v2 gates: emoji, mojibake,
template_id, native_confirm, offbox_rename, app_row_dedup all OK; `docker_run_volume_path_gate`
remains red on the pre-existing R-29 allowlist item (`appexport/estimate.go:179`, named volume,
benign, filed 2026-07-18) — untouched by this change, not fixed inline per R-29's own row.
No red-proof leg: no defect was fixed here (new truthful copy behind a new gate); the per-branch
render tests are the non-hollow coverage.
## Live state
Deployed to both boxes (demo-felhom 9201 + demo-hp 9201). Both live boxes have offbox CONFIGURED,
so the new banner is **unit-proven, live-pending** — it renders only in the enabled+no-offbox
window, which no healthy box occupies (and we do not break one to see it — F9 rule). The natural
live leg is the next fresh onboarding's pre-apply window. Live verification on both boxes:
configured view unchanged (no banner), version 0.161.0 healthy.