Files
felhom.eu/documentation/audits/night-2026-10-28/redproofs

Red-proofs — night 2026-10-28

Every new test was seen failing before the fix landed, or by breaking the fix on purpose (a string swap, run, swapped back — tools/mutate.py, tools/mutaten.py). The failure line is quoted as the test printed it.

R-1256 — controller 342a394

Test How it was red Failure line
TestR1256_H4_AFailedDefinitionWriteStartsTheAppAtItsLiveDefinition before the fix definition writes [[example/app:0.96.0 postgres:16-alpine]] — want the snapshot's, then the LIVE one written back
TestR1256_H4_AFailedWriteBackHoldsTheApp before the fix the app was STARTED although its live definition could not be written back — calls [stop recreate start]
TestR1256_H5_APutBackWhoseStopFailsDoesNotPourAndKeepsTheCopy before the fix the copy was poured (map[immich_pgdata:LIVE bytes of immich_pgdata]) / volumes removed ([immich_newvol]) after a FAILED stop
TestR1256_H5_AFailedDefinitionWriteBackKeepsTheCopy before the fix the copy must be KEPT after a failed put-back (D20)
TestR1256_H5_ACrashPutBackWhoseStopFailsRefuses before the fix a put-back whose stop failed must return an error
TestR1256_H5_AVolumeThatCannotBeRemovedIsNotMergedInto before the fix restored 2, err <nil> — want 1 and an error naming app_busy
TestR1256_H6_ARestoreCannotBeginBesideAMirrorThatStartedAfterTheCheck mutation: TryBeginRestoreOp records without asking the restore began beside a running mirror: busy="" app=""
TestR1256_H6_TheBeginRefusesWithTheCopySentence same mutation the begin must refuse with the copy named; ok=true ""
TestR1256_H6_NoHandlerBeginsARestoreUnchecked mutation: one direct BeginRestoreOp in handlers.go handlers.go:2242:2: a direct BeginRestoreOp — begin through s.beginRestoreOp (R-1256 H6)
TestR1256_H6_AKeptLoadAtInstallIsRefusedWhileASecondDriveCopyRuns mutation: the old RestoreStatus/IsRunning check + plain begin in both loads a load during a second-drive copy: code 202, want 409
TestR1256_H8_OnlyAnUnusedOldCopyIsRemoved mutations: no hold check / no marker check / no age check removed [.../held/... .../unused/... .../waiting/...]; removed [.../named/... .../unused/...]; removed [.../unused/... .../young/...]
TestR1256_H8_NothingIsRemovedDuringARestoreOrWithAnUnreadableMarker mutations: no busy check / an unreadable marker read as empty removed [.../app/...] during a restore; removed [.../app/...] with an unreadable marker
TestR1256_H8_TheSweepIsWiredAtStartup mutation: the job's call removed SweepUnusedRestoreCopies is never called

R-1255 — hub (felhom.eu 1ee6d5a5)

Test How it was red Failure line
TestR1255_TheCarryTakesTheNewestPackageThatHasAHash before the fix carry = {Outcome:1 FromHost:T-old ToHost:T-new ResticPwSHA256: …} — want the package with the household's hash (SHA_REAL)
TestR1255_APurgeNeverDeletesAPackageAReusedPathStillNeeds before the fix purge removed 2 err=<nil> — want exactly the deleted copy's package (key 1)
TestR1255_TwoSetAsidesOnOneDayGetTwoNames before the fix two set-asides on one day share the name "/home/felhom-repo.orphaned-20261028"
TestR1255_WithNoHashedPackageTheNewestIdentityIsStillCarried a guard of today's behaviour (green before and after, on purpose) —

R-1254 — agent 5ddd124, controller e33cffa

Test How it was red Failure line
TestR1254_ALostAnswerAtTheClaimIsASuccessWhenTheHubHoldsTheNewPackage (agent) before the fix claim after a lost answer, the hub holding the new package: 502 {"ok":false,"error":"… — the previous code still works; try again"}
TestR1254_AnUnknownOutcomeAtTheClaimPromisesNothing (agent) before the fix claim with an unknown outcome: 502 …
TestR1254_ALostAnswerAtTheConfirmIsASuccessWhenTheHubHoldsTheNewPackage (agent) before the fix confirm after a lost answer: 502 (opens: true) — want 200
TestR1254_HubHoldsComparesTheIdentityBlob (agent) mutation: „held" whenever the hub has any package the hub holds another package: held=true err=<nil>
TestR1254_AnUnknownConfirmOutcomePromisesNothing (controller) before the fix hu: an unknown outcome promised the previous code: {"error":"Az új kódot nem sikerült elmenteni — a régi kódod továbbra is érvényes. …"}
TestR1254_ClaimAndConfirmOutwaitTheAgentsUpload (controller) before the fix; and mutation: the claim through the 15 s client escrowCallTimeout 15s must outlast …; a slow claim was abandoned: … Client.Timeout exceeded while awaiting headers

R-528 — agent 6f933d6, controller eed23e7

Test How it was red Failure line
TestR528_GuestOOMKillsServesThisGuestsCountersOnly / …TheRouteAnswersTheTokensGuest (agent) mutations: a glob over every guest; parsing oom for oom_kill …cccc…:7 … want … (another guest's container); aaaa…:9
TestR528_AHostCounterAboveZeroIsAnOOMKillWhateverDockerSays (controller) before the fix the inspect must ask for the container id …; the host-counted kill was not seen: []
TestR528_WithoutAHostCounterTheScanIsAsBefore (controller) before the fix no host source: [{… Source:}]
TestR528_HostOOMSourceBacksOffAnOldAgent (controller) mutation: no 404 back-off an old agent was asked 3 times in 90 s, want 1
TestR528_HostOOMSourceIsWiredAtStartup (controller) mutation: the wiring line removed the host OOM counter is never wired …

Found walking the capability map — controller 20c5877

Test How it was red Failure line
TestAnActionOnANameThatIsNoAppIsA404 before the fix stop of a name that is no app: 500 "A művelet nem hajtható végre: az alkalmazás beállításai nem menthetők." — want 404

R-1338 — catalog working tree (NOT pushed; the morning list)

Test How it was red Failure line
test_memory_live.py AnonLive / SoakSummary / TightMark mutations: return anon; the soak's peaks from anon_peak_pct; the mark reads anon_peak_pct first; no max(a, b); no cap at anon FAIL: test_the_measured_spike, FAIL: test_the_mark_reads_the_live_figure, FAIL: test_the_bench_mark_prefers_the_live_figure, FAIL: test_it_errs_high_never_above_anon