Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NKSN3gSg4TKVBBqkwW2djR
2.7 KiB
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.