## R-543 red-proofs — controller v0.245.0, 2026-09-16, DooPlex ## Each fix was BROKEN first and the test was watched convicting it. A test never seen failing has ## not been shown to test anything. ### RED-PROOF 1 — the reminder bar Break: delete `s.addEscrowBanner(data, r)` from executeTemplate (internal/web/server.go). That is the whole wiring: the bar hangs off the single render choke point, so removing one line returns the product to the measured 2026-09-16 state (a paused off-site tier, and silence). --- FAIL: TestR543_A_PausedBoxAsksOnEveryPage (0.20s) r543_escrow_banner_test.go:72: R-543: /dashboard does not tell the household the off-site copy is PAUSED. The tier is on, nothing is running, and the page is silent about it r543_escrow_banner_test.go:76: R-543: /dashboard states the pause but names no route to end it — a reminder without its door is the shape that left a fresh box waiting indefinitely r543_escrow_banner_test.go:72: R-543: /launcher does not tell the household the off-site copy is PAUSED. The tier is on, nothing is running, and the page is silent about it r543_escrow_banner_test.go:76: R-543: /launcher states the pause but names no route to end it — a reminder without its door is the shape that left a fresh box waiting indefinitely FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.208s Note BOTH pages fail. That is the point of the hook placement: a per-handler helper would have covered the three pages someone remembered, which is the seam-built-but-never-wired shape. ### RED-PROOF 2 — the tier-1 sentence Break: return the v0.244.0 wording from driveFilesNoteFor before the state switch, i.e. compute the sentence from the app's shape alone, exactly as v0.244.0 shipped it. --- FAIL: TestR543_Tier1Sentence_PausedStateDoesNotPromise (0.00s) r543_tier1_sentence_test.go:38: R-543: the sentence claims the files ARE protected while the copy is paused for the recovery code. This is the exact promise a fresh box read for its whole first day: "Az alkalmazás fájljait a távoli másolat (és a második meghajtó) védi — ez a helyi mentés a beállításokat és az adatbázist tartalmazza." r543_tier1_sentence_test.go:42: R-543: the paused sentence must say the copy WOULD protect them and that it is waiting; got "Az alkalmazás fájljait a távoli másolat (és a második meghajtó) védi — ez a helyi mentés a beállításokat és az adatbázist tartalmazza." r543_tier1_sentence_test.go:46: R-543: the paused sentence names no route out (link="" text="") FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.007s ### RESTORED go test ./internal/web/ -run 'R543' ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.895s ### The filter was proven to match (the `-run` trap: a pattern matching nothing prints `ok`, exit 0) === RUN TestR543_A_PausedBoxAsksOnEveryPage --- PASS (0.29s) === RUN TestR543_B_EscrowedBoxIsNotNagged --- PASS (0.19s) === RUN TestR543_C_UnconfiguredBoxIsNotNagged --- PASS (0.20s) === RUN TestR543_D_DismissIsForThisVisitOnly --- PASS (0.28s) === RUN TestR543_Tier1Sentence_ActiveStateKeepsThePromise --- PASS === RUN TestR543_Tier1Sentence_PausedStateDoesNotPromise --- PASS === RUN TestR543_Tier1Sentence_NoCopyAtAllSaysSo --- PASS === RUN TestR543_Tier1Sentence_SecondDriveCounts --- PASS === RUN TestR543_Tier1Sentence_NoFileLegsNoSentence --- PASS ### Fixture validity (an instrument that can lose its precondition measures nothing) escrowServer asserts backupMgr.OffboxConfigured() itself before any assertion runs: the target is enabled and valid AND the ssh_key + repo_password files exist on disk. A fixture that silently fell back to "not configured" would make every one of these tests pass for the wrong reason.