Files
felhom.eu/REPORT.md
T

4.1 KiB
Raw Blame History

REPORT — F10 diagnostic: demo-hp offsite "enabled at the hub, absent on the box" (2026-07-23)

Task: F10 diagnostic spec (project Claude, 2026-07-23) — diagnose first, repair only via the designed path, prove the tier. No code changed in any repo. Full evidence record: documentation/audits/DIAG-f10-demo-hp-offsite-2026-07-23.md.

Phase-0 verdict

Neither of the spec's two candidate shapes. The evidence (hub DB + box state + live logs, every claim cited in the DIAG) proves a third: the day-0 managed floor-update (0.153.0→0.156.0, 07-21 16:28:17Z) killed the offsite apply-bridge ~35 s after it consumed the one-time password (16:27:42Z), before key-install/persist. Consume-then-persist + retry-only-on-restart (offsiteapply.go:106187) ⇒ the credential was burned, no key was ever installed (so the key-auth-first recovery path could never engage), and every later start logged the consume-404 WARN and gave up. 153 reports over 2 days never carried an offbox object; the hub's "Provisioned…" line is static copy that reads neither consumed_at nor the reports.

  • Shape B ruled out from source: managed offsite is fully automatic; the box's „Távoli mentési cél beállítása" button is the BYO NAS/SFTP form only (offbox_handlers.go:44126).
  • Strictly this was the spec's "consumed but persist failed → STOP" class; since the mechanism provably held its fail-safe and the source itself designates the recovery ("the password is spent; reset it on the hub to retry" = the offsite Re-issue), the operator ruled in-session: proceed on the Re-issue path.

Repair (designed path only)

  • Operator clicked Re-issue offsite credentials ONCE (R-31 click-once discipline; pre-verified side-effect-free: no escrow blob existed, the box never held the old password, sub3 was empty). Click 09:53:37Z → box consumed 09:53:41 → offsite configured … (pending key escrow) 09:53:45. 8 seconds click-to-converged.
  • Escrow ceremony run by the operator through the real /backup/escrow wizard (one-shot R on the operator's screen only): blob stored 10:01:17 (zero_knowledge, pw-hash recorded), hub-verified auto-confirm 10:01:24 → escrowed; offsite runs enabled.

Tier proof (F10 closure bar)

paperless-ngx toggled into offsite scope via the real endpoint (per-app default is OFF). Then, all via real endpoints from inside guest 9201 (endpoint-level method; no browser on DooPlex): probe (md5 9120e65d6a9f071072d827fc404dc840) in the mandatory appdata/paperless/mediafirst offsite run: repo initialized fresh on sub3, 79.8 MB / 49 files, 1m19s, ok → probe deleted → mode=full restore (size gate 79.8 MB → confirm): snapshot 2bf7f2e1 to staging, staging md5-identical → place: 1 file(s) merged (missing-only), live md5-identical. Cleanup: probe removed, second run (2m17s ok) leaves the latest snapshot probe-free (retention pruned the probe-bearing one); zero residue on box/repo; break-glass + DB copies shredded. Hub now reports demo-hp offsite: enabled/escrowed/quota 50; nightly run scheduled (04:15 UTC).

Product findings + docs

  • R-70 (P2-HIGH) minted: the offsite last mile is invisible on both surfaces (hub can't tell staged/consumed/applied; box shows the generic empty state). Coupled to R-31's status-card idiom and the R-39 consumed_at honesty-gauge precedent.
  • R-71 (P1) minted: the race itself — recurs structurally on every fresh onboarding whose ISO floor lags the managed floor. Spec-first directions listed in the row (ordering / two-phase consume / hub-side auto-restage with the R-39(a) mint-race guard).
  • Audit F10 row annotated: offsite leg resolved; PBS-DR half explicitly stays open (F13 + DR ceremony R-moment). CONTEXT.md updated.

Observed, not acted on

  • demo-felhom's 07-21 staged offsite secret is still unconsumed (residue of the mistaken R-39-day offsite Re-issue; box recovered via key-auth-first, which never consumes). Harmless; supports R-70.
  • The 3 dead unclaimed-appliance records from the ISO train remain for operator discard.
  • Hub pod log only reaches back to 07-22 20:58Z (restart); the 07-21 correlation came from the DB.