65 lines
6.3 KiB
Markdown
65 lines
6.3 KiB
Markdown
# 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` |
|