==================== R-591 — red-proof ==================== Fix undone in: internal/stacks/manager.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestDeepCopyStackI18nIsNotShared -v ./internal/stacks) # FIX UNDONE rc=1 === RUN TestDeepCopyStackI18nIsNotShared r591_copy_i18n_test.go:55: R-591: mutating the copy's data path overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's initial creds overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's description overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's tagline overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's deploy label overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's option label overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's use case overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's optional group overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's optional help overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:55: R-591: mutating the copy's integration overlay changed the ORIGINAL — the overlay is shared, not copied r591_copy_i18n_test.go:59: R-591: adding a language to the copy's I18n map added it to the ORIGINAL — the map is shared --- FAIL: TestDeepCopyStackI18nIsNotShared (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.007s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestDeepCopyStackI18nIsNotShared -v ./internal/stacks) # FIX RESTORED rc=0 === RUN TestDeepCopyStackI18nIsNotShared --- PASS: TestDeepCopyStackI18nIsNotShared (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.007s ==================== R-568 — red-proof ==================== Fix undone in: internal/web/disk_health.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestDiskHealthRows_OrderIsStable -v ./internal/web) # FIX UNDONE rc=1 === RUN TestDiskHealthRows_OrderIsStable r568_disk_order_test.go:31: R-568: the same two disks render in a different order depending on the agent's order: [nvme0n1 sda] vs [sda nvme0n1] --- FAIL: TestDiskHealthRows_OrderIsStable (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.009s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestDiskHealthRows_OrderIsStable -v ./internal/web) # FIX RESTORED rc=0 === RUN TestDiskHealthRows_OrderIsStable --- PASS: TestDiskHealthRows_OrderIsStable (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.009s ==================== R-567 — red-proof ==================== Fix undone in: internal/web/templates/layout.html (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestStorageWizardPages_OpenTheStorageNavGroup -v ./internal/web) # FIX UNDONE rc=1 === RUN TestStorageWizardPages_OpenTheStorageNavGroup r567_storage_wizard_nav_test.go:21: R-567 storage_init: the storage menu group is not open r567_storage_wizard_nav_test.go:21: R-567 storage_attach: the storage menu group is not open --- FAIL: TestStorageWizardPages_OpenTheStorageNavGroup (0.06s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.072s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestStorageWizardPages_OpenTheStorageNavGroup -v ./internal/web) # FIX RESTORED rc=0 === RUN TestStorageWizardPages_OpenTheStorageNavGroup --- PASS: TestStorageWizardPages_OpenTheStorageNavGroup (0.06s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.069s ==================== R-363 + R-547 — red-proof ==================== Fix undone in: cmd/controller/main.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestFillWatchRunsOnAnInterval -v ./cmd/controller) # FIX UNDONE rc=1 === RUN TestFillWatchRunsOnAnInterval r363_fillwatch_interval_test.go:56: R-363: main.go registers fillWatcher.Check on a periodic (sched.Every, fillWatchInterval) job 0 times, want 1 — without it the fill check is daily only --- FAIL: TestFillWatchRunsOnAnInterval (0.01s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.016s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestFillWatchRunsOnAnInterval -v ./cmd/controller) # FIX RESTORED rc=0 === RUN TestFillWatchRunsOnAnInterval --- PASS: TestFillWatchRunsOnAnInterval (0.01s) PASS ok gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.017s ==================== R-10 — red-proof ==================== Fix undone in: internal/appbackup/dbdump.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestDumpOneTo_SyncsTheDumpDirectoryAfterRename -v ./internal/appbackup) # FIX UNDONE rc=1 === RUN TestDumpOneTo_SyncsTheDumpDirectoryAfterRename r10_dump_dirsync_test.go:51: R-10: the dump directory was not fsynced after the rename: synced=[], want [/tmp/TestDumpOneTo_SyncsTheDumpDirectoryAfterRename3850100245/002/unit] --- FAIL: TestDumpOneTo_SyncsTheDumpDirectoryAfterRename (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/appbackup 0.009s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestDumpOneTo_SyncsTheDumpDirectoryAfterRename -v ./internal/appbackup) # FIX RESTORED rc=0 === RUN TestDumpOneTo_SyncsTheDumpDirectoryAfterRename --- PASS: TestDumpOneTo_SyncsTheDumpDirectoryAfterRename (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/appbackup 0.008s ==================== R-552 (a: the clear itself) — red-proof ==================== Fix undone in: internal/backup/restore_record.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR552 -v ./internal/api) # FIX UNDONE rc=1 === RUN TestR552_RemoveClearsTheInterruptedRestoreNotice r552_remove_clears_notice_test.go:60: R-552: the removed app's interrupted-restore notice is still listed r552_remove_clears_notice_test.go:67: R-552: the notice comes back after a restart — the clear was not persisted --- FAIL: TestR552_RemoveClearsTheInterruptedRestoreNotice (0.02s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.023s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR552 -v ./internal/api) # FIX RESTORED rc=0 === RUN TestR552_RemoveClearsTheInterruptedRestoreNotice --- PASS: TestR552_RemoveClearsTheInterruptedRestoreNotice (0.02s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/api 0.024s ==================== R-552 (b: the wiring in removeStack) — red-proof ==================== Fix undone in: internal/api/router.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR552 -v ./internal/api) # FIX UNDONE rc=1 === RUN TestR552_RemoveClearsTheInterruptedRestoreNotice r552_remove_clears_notice_test.go:87: R-552: removeStack does not call clearInterruptedRestoreNotice --- FAIL: TestR552_RemoveClearsTheInterruptedRestoreNotice (0.02s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.023s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR552 -v ./internal/api) # FIX RESTORED rc=0 === RUN TestR552_RemoveClearsTheInterruptedRestoreNotice --- PASS: TestR552_RemoveClearsTheInterruptedRestoreNotice (0.02s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/api 0.027s ==================== R-251 — red-proof ==================== Fix undone in: internal/backup/offbox_inventory.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR251 -v ./internal/backup) # FIX UNDONE rc=1 === RUN TestR251_MarkerTagIsNotAnApp r251_marker_tag_test.go:48: R-251: the recovery listing shows [calibre-web felhom-offbox]; want only [calibre-web] — the marker tag is not an app r251_marker_tag_test.go:51: R-251: 2 size calls for one app, want 1 r251_marker_tag_test.go:59: R-251: the marker tag is reported as an app with a snapshot time --- FAIL: TestR251_MarkerTagIsNotAnApp (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.007s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR251 -v ./internal/backup) # FIX RESTORED rc=0 === RUN TestR251_MarkerTagIsNotAnApp --- PASS: TestR251_MarkerTagIsNotAnApp (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.007s ==================== R-104 — red-proof ==================== Fix undone in: internal/backup/offbox.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR104_SurvivingLockIsNamed -v ./internal/backup) # FIX UNDONE rc=1 === RUN TestR104_SurvivingLockIsNamed r104_lock_class_test.go:36: R-104: a lock that survived the self-heal is classed "unknown", want "locked" r104_lock_class_test.go:40: R-104: the Hungarian message does not name the lock: "A távoli mentés ismeretlen okból nem sikerült (1m0s): offbox backup app: exit status 1 (offsite repository is still locked after the self-heal)" r104_lock_class_test.go:44: R-104: the English message does not name the lock: "The remote backup failed for an unknown reason (1m0s): offbox backup app: exit status 1 (offsite repository is still locked after the self-heal)" r104_lock_class_test.go:49: R-104: restic's lock text is classed "unknown", want "locked" --- FAIL: TestR104_SurvivingLockIsNamed (0.01s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.017s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR104_SurvivingLockIsNamed -v ./internal/backup) # FIX RESTORED rc=0 === RUN TestR104_SurvivingLockIsNamed --- PASS: TestR104_SurvivingLockIsNamed (0.01s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.017s ==================== R-619 — red-proof ==================== Fix undone in: internal/api/router.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR619 -v ./internal/api) # FIX UNDONE rc=1 === RUN TestR619_PasswordFieldIsServedAsRequired r619_password_required_test.go:81: R-619: the password field reaches the wire as required:false, but the deploy refuses without it --- FAIL: TestR619_PasswordFieldIsServedAsRequired (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.009s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR619 -v ./internal/api) # FIX RESTORED rc=0 === RUN TestR619_PasswordFieldIsServedAsRequired --- PASS: TestR619_PasswordFieldIsServedAsRequired (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/api 0.011s ==================== R-362 — red-proof ==================== Fix undone in: internal/backup/restore_dir_err.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR362 -v ./internal/backup) # FIX UNDONE rc=1 === RUN TestR362_DetachedDriveIsNamed r362_restore_drive_gone_test.go:41: R-362: the Hungarian refusal does not name the missing drive: "restore dir: mkdir /mnt/felhom-drives/hdd_1/backups: permission denied" r362_restore_drive_gone_test.go:44: R-362: the English refusal does not name the missing drive: "restore dir: mkdir /mnt/felhom-drives/hdd_1/backups: permission denied" r362_restore_drive_gone_test.go:49: R-362: a drive the registry marks disconnected is not named: "restore dir: mkdir /mnt/hdd_legacy: permission denied" --- FAIL: TestR362_DetachedDriveIsNamed (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.009s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR362 -v ./internal/backup) # FIX RESTORED rc=0 === RUN TestR362_DetachedDriveIsNamed [WARN] [backup] restore dir /mnt/felhom-drives/hdd_1/backups/offsite-restore/app: mkdir /mnt/felhom-drives/hdd_1/backups: permission denied — the drive /mnt/felhom-drives/hdd_1 (Kulso HDD) is not connected; reported as a missing drive (R-362) [WARN] [backup] restore dir /mnt/hdd_legacy/x: mkdir /mnt/hdd_legacy: permission denied — the drive /mnt/hdd_legacy (Regi HDD) is not connected; reported as a missing drive (R-362) --- PASS: TestR362_DetachedDriveIsNamed (0.01s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.017s ==================== R-675 — red-proof ==================== Fix undone in: internal/web/handlers.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR675 -v ./internal/web) # FIX UNDONE rc=1 === RUN TestR675_RefusalNamesTheWholeCopy r675_refusal_whole_copy_test.go:33: R-675 whole copy on the second drive: the Hungarian refusal reads "Ez a mentés nem tartalmazza az alkalmazás fájljait, ezért nem állítjuk vissza az adatbázist föléjük — a fájlok így a helyükön maradnak. A fájlok a második meghajtó másolatából állíthatók vissza: „Fájlok visszaállítása”."; want it to name "Teljes visszaállítás a másolatból" and not "Fájlok visszaállítása" r675_refusal_whole_copy_test.go:36: R-675 whole copy on the second drive: the English refusal reads "This backup does not hold the files of the app, so we do not restore the database over them — the files stay where they are. The files can be restored from the copy on the second drive: “Restore files”."; want it to name "Full restore from the copy" --- FAIL: TestR675_RefusalNamesTheWholeCopy (0.06s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.073s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR675 -v ./internal/web) # FIX RESTORED rc=0 === RUN TestR675_RefusalNamesTheWholeCopy --- PASS: TestR675_RefusalNamesTheWholeCopy (0.07s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.081s ==================== R-240 — red-proof ==================== Fix undone in: internal/backup/offbox.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR240 -v ./internal/backup) # FIX UNDONE rc=1 === RUN TestR240_ZeroSelectionRunDoesNotSaySuccess [ERROR] [backup] Database discovery failed: docker ps failed: R-650: refused to run the real "docker ps --format {{.ID}}\t{{.Names}}\t{{.Label \"com.docker.compose.project\"}}\t{{.Image}} --filter status=running" under go test (this host may be production Docker); use a seam or a stub on PATH, or set FELHOM_TEST_REAL_DOCKER=1 deliberately [WARN] [offbox] pre-push dump leg failed (docker ps failed: R-650: refused to run the real "docker ps --format {{.ID}}\t{{.Names}}\t{{.Label \"com.docker.compose.project\"}}\t{{.Image}} --filter status=running" under go test (this host may be production Docker); use a seam or a stub on PATH, or set FELHOM_TEST_REAL_DOCKER=1 deliberately) — continuing with the existing dumps; the snapshot's DB half may be older than its files r240_zero_selection_test.go:30: R-240: the note for a run that saved nothing still calls itself successful: "Sikeres — nincs mentésre jelölt alkalmazás" r240_zero_selection_test.go:33: R-240: the note does not say the run saved nothing: "Sikeres — nincs mentésre jelölt alkalmazás" --- FAIL: TestR240_ZeroSelectionRunDoesNotSaySuccess (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.008s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR240 -v ./internal/backup) # FIX RESTORED rc=0 === RUN TestR240_ZeroSelectionRunDoesNotSaySuccess [ERROR] [backup] Database discovery failed: docker ps failed: R-650: refused to run the real "docker ps --format {{.ID}}\t{{.Names}}\t{{.Label \"com.docker.compose.project\"}}\t{{.Image}} --filter status=running" under go test (this host may be production Docker); use a seam or a stub on PATH, or set FELHOM_TEST_REAL_DOCKER=1 deliberately [WARN] [offbox] pre-push dump leg failed (docker ps failed: R-650: refused to run the real "docker ps --format {{.ID}}\t{{.Names}}\t{{.Label \"com.docker.compose.project\"}}\t{{.Image}} --filter status=running" under go test (this host may be production Docker); use a seam or a stub on PATH, or set FELHOM_TEST_REAL_DOCKER=1 deliberately) — continuing with the existing dumps; the snapshot's DB half may be older than its files --- PASS: TestR240_ZeroSelectionRunDoesNotSaySuccess (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.009s ==================== R-256 (hu copy restored to the old sentence) — red-proof ==================== Fix undone in: internal/i18n/locales/hu.json (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR256 -v ./internal/web) # FIX UNDONE rc=1 === RUN TestR256_R257_OffboxRefusalsNameARoute r256_r257_offbox_refusals_test.go:37: R-256: the Hungarian refusal names no route or still names the component: "A mentéskezelő nem elérhető." r256_r257_offbox_refusals_test.go:45: R-256: the restore page's twin refusal differs: "A mentések kezelése most nem érhető el. Próbáld újra néhány perc múlva; ha akkor sem megy, keresd a Felhom ügyfélszolgálatát." vs "A mentéskezelő nem elérhető." --- FAIL: TestR256_R257_OffboxRefusalsNameARoute (0.06s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.070s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR256 -v ./internal/web) # FIX RESTORED rc=0 === RUN TestR256_R257_OffboxRefusalsNameARoute --- PASS: TestR256_R257_OffboxRefusalsNameARoute (0.06s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.075s ==================== R-257 (hu copy restored to the old sentence) — red-proof ==================== Fix undone in: internal/i18n/locales/hu.json (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR256 -v ./internal/web) # FIX UNDONE rc=1 === RUN TestR256_R257_OffboxRefusalsNameARoute r256_r257_offbox_refusals_test.go:67: R-257: the Hungarian refusal still says "offsite": "Az offsite tároló nincs elárvult állapotban." r256_r257_offbox_refusals_test.go:67: R-257: the Hungarian refusal still says "elárvult": "Az offsite tároló nincs elárvult állapotban." r256_r257_offbox_refusals_test.go:71: R-257: the Hungarian refusal does not say why or where to go: "Az offsite tároló nincs elárvult állapotban." --- FAIL: TestR256_R257_OffboxRefusalsNameARoute (0.06s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.071s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR256 -v ./internal/web) # FIX RESTORED rc=0 === RUN TestR256_R257_OffboxRefusalsNameARoute --- PASS: TestR256_R257_OffboxRefusalsNameARoute (0.07s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.078s ==================== R-365 — red-proof ==================== Fix undone in: internal/web/handlers.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR365 -v ./internal/web) # FIX UNDONE rc=1 === RUN TestR365_OverdueCountdownIsNotFutureTense r365_abandon_overdue_test.go:41: R-365: an overdue countdown does not say the deletion is due since 2026-10-04 r365_abandon_overdue_test.go:44: R-365: an overdue countdown still renders a past date in the future tense --- FAIL: TestR365_OverdueCountdownIsNotFutureTense (0.14s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.149s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR365 -v ./internal/web) # FIX RESTORED rc=0 === RUN TestR365_OverdueCountdownIsNotFutureTense --- PASS: TestR365_OverdueCountdownIsNotFutureTense (0.15s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.159s ==================== R-564 — red-proof (gate; Python, so no go test -run) ==================== Fix undone: SPLIT_PATTERNS emptied in scripts/retrieval_promise_gate.py; decoy harness run. $ (cd controller && python3 scripts/test_gate_decoys.py | grep split) # FIX UNDONE ok retrieval-promise/split-verb decoy rejected FAIL: retrieval-promise/en-ok: rc=1, expected accept FAIL: retrieval-promise/split-ok: rc=1, expected accept rc=1 --- fix restored --- $ (cd controller && python3 scripts/test_gate_decoys.py | grep split) # FIX RESTORED ok retrieval-promise/split-verb decoy rejected ok retrieval-promise/split-ok genuine accepted all 25 controller decoys behaved — labels do not satisfy these gates $ python3 scripts/retrieval_promise_gate.py | head -1 retrieval-promise gate OK — 42 surface(s) incl. 1 Go handler file(s), 18 registered claim(s) + 16 English, none unregistered NOTE: the record above is NOT a valid red-proof — with SPLIT_PATTERNS emptied the seven new registrations go stale, so the gate fails for that reason, not because it caught the decoy. The valid red-proof follows. ==================== R-564 — red-proof (valid) ==================== Decoy planted in hu.json: launcher.link_masolasa = 'A régi mentéseid a kóddal bármikor állíthatók vissza.' (a split-verb retrieval PROMISE) $ python3 scripts/ # FIX UNDONE retrieval-promise gate OK — 42 surface(s) incl. 1 Go handler file(s), 11 registered claim(s) + 16 English, none unregistered rc=0 <- the pre-fix gate PASSES the planted promise (blind) $ python3 scripts/retrieval_promise_gate.py # FIX IN PLACE launcher.html:61 unregistered retrieval claim (állíthatók vissza): RETRIEVAL-PROMISE GATE FAILED: 1 unregistered, 0 stale, across 42 template(s). rc=1 <- convicted --- decoy removed --- $ python3 scripts/retrieval_promise_gate.py retrieval-promise gate OK — 42 surface(s) incl. 1 Go handler file(s), 18 registered claim(s) + 16 English, none unregistered ==================== R-425 — red-proof (gate) ==================== Decoy: a NEW template internal/web/templates/backups_offbox_extra.html containing 'NAS-mentés'. $ python3 scripts/ # FIX UNDONE offbox rename gate OK — Tier-3 is 'Tavoli mentes' everywhere customer-facing rc=0 <- the fixed FILES list never looks at the new file $ python3 scripts/offbox_rename_gate.py # FIX IN PLACE internal/web/templates/backups_offbox_extra.html:1 [NAS-mentés]

A NAS-ment\xe9s be\xe1ll\xedt\xe1sa

OFFBOX RENAME GATE FAILED: 1 customer-facing NAS-branding string(s) remain rc=1 <- convicted --- decoy removed --- offbox rename gate OK — Tier-3 is 'Tavoli mentes' everywhere customer-facing (25 file(s) + 121 bundle value(s) named by them) ==================== R-565 (the ' mp' unit the new detector found, put back) — red-proof ==================== Fix undone in: internal/web/templates/backups_remote.html (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestI18nEnglishPages$ -v ./internal/web) # FIX UNDONE rc=1 === RUN TestI18nEnglishPages i18n_parity_test.go:709: backups_remote_full: ASCII-only Hungarian word "mp" on the English page (R-565), line 434: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_incomplete: ASCII-only Hungarian word "mp" on the English page (R-565), line 348: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_error: ASCII-only Hungarian word "mp" on the English page (R-565), line 333: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_running: ASCII-only Hungarian word "mp" on the English page (R-565), line 353: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_pending_agent: ASCII-only Hungarian word "mp" on the English page (R-565), line 339: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_pending_old: ASCII-only Hungarian word "mp" on the English page (R-565), line 339: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_stale: ASCII-only Hungarian word "mp" on the English page (R-565), line 337: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_stale_old: ASCII-only Hungarian word "mp" on the English page (R-565), line 337: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_escrowed: ASCII-only Hungarian word "mp" on the English page (R-565), line 336: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_notconf_hub: ASCII-only Hungarian word "mp" on the English page (R-565), line 285: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_notconf: ASCII-only Hungarian word "mp" on the English page (R-565), line 284: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_empty: ASCII-only Hungarian word "mp" on the English page (R-565), line 258: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" i18n_parity_test.go:709: backups_remote_offsite_offer_fit: ASCII-only Hungarian word "mp" on the English page (R-565), line 349: "if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }" --- FAIL: TestI18nEnglishPages (4.23s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 4.243s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestI18nEnglishPages$ -v ./internal/web) # FIX RESTORED rc=0 === RUN TestI18nEnglishPages --- PASS: TestI18nEnglishPages (4.27s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 4.285s ==================== R-603 (an apostrophe planted in a Go-named English value) — red-proof ==================== Fix undone in: internal/i18n/locales/en.json (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR603 -v ./internal/i18n) # FIX UNDONE rc=1 === RUN TestR603_GoNamedValuesDoNotHideBehindHTMLEscaping r603_escape_test.go:126: control: a planted apostrophe in err.backup.a_pillanatkep_egy_utvonala_ervenytelen was not caught (got [err.backup.a_pillanatkep_egy_utvonala_ervenytelen note.offsite.fail_locked]) --- FAIL: TestR603_GoNamedValuesDoNotHideBehindHTMLEscaping (0.29s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/i18n 0.296s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR603 -v ./internal/i18n) # FIX RESTORED rc=0 === RUN TestR603_GoNamedValuesDoNotHideBehindHTMLEscaping --- PASS: TestR603_GoNamedValuesDoNotHideBehindHTMLEscaping (0.34s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/i18n 0.343s ==================== R-454 — the gate seen RED on the unformatted tree, before the formatting pass ==================== $ (cd controller && python3 scripts/gofmt_gate.py) not gofmt-clean: cmd/controller/main.go not gofmt-clean: internal/agentapi/diskverdict.go not gofmt-clean: internal/api/update_reason_test.go not gofmt-clean: internal/appbackup/namespace_root_test.go not gofmt-clean: internal/appbackup/r381_undo_naming_test.go not gofmt-clean: internal/backup/r669_applied_meta_test.go not gofmt-clean: internal/family/family.go not gofmt-clean: internal/infra/infra.go not gofmt-clean: internal/notify/r636_oom_storm_test.go not gofmt-clean: internal/quiesce/tiers_test.go not gofmt-clean: internal/stacks/delete.go not gofmt-clean: internal/stacks/life_records.go GOFMT GATE FAILED: 12 file(s) — run `gofmt -w ` (formatting only, no behaviour change) rc=1 ==================== R-208 (controller half: ARGs moved back above go mod download) — red-proof ==================== Fix undone in: Dockerfile (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR208 -v ./cmd/controller) # FIX UNDONE rc=0 === RUN TestR208_DockerfileVersionArgsSitBelowModuleDownload --- PASS: TestR208_DockerfileVersionArgsSitBelowModuleDownload (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.009s --- fix restored --- $ (cd controller && go test -count=1 -run TestR208 -v ./cmd/controller) # FIX RESTORED rc=0 === RUN TestR208_DockerfileVersionArgsSitBelowModuleDownload --- PASS: TestR208_DockerfileVersionArgsSitBelowModuleDownload (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.006s NOTE: NOT CONVICTED above — the test kept the LAST declaration of each ARG, so a duplicate declaration above the download hid behind the one below. Test fixed to keep the FIRST declaration; red-proof re-run below. ==================== R-208 (re-run after the test fix) — red-proof ==================== Fix undone in: Dockerfile (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR208 -v ./cmd/controller) # FIX UNDONE rc=1 === RUN TestR208_DockerfileVersionArgsSitBelowModuleDownload r208_dockerfile_args_test.go:50: R-208: ARG VERSION (line 12) is declared above `go mod download` (line 19), so every build with a new value re-downloads the modules r208_dockerfile_args_test.go:50: R-208: ARG GIT_COMMIT (line 13) is declared above `go mod download` (line 19), so every build with a new value re-downloads the modules --- FAIL: TestR208_DockerfileVersionArgsSitBelowModuleDownload (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.009s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR208 -v ./cmd/controller) # FIX RESTORED rc=0 === RUN TestR208_DockerfileVersionArgsSitBelowModuleDownload --- PASS: TestR208_DockerfileVersionArgsSitBelowModuleDownload (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.008s ==================== R-591 follow-up (DataPaths + AfterLoad copies removed) — red-proof ==================== Fix undone in: internal/stacks/manager.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestDeepCopyStackMetaSharesNoReference -v ./internal/stacks) # FIX UNDONE rc=1 === RUN TestDeepCopyStackMetaSharesNoReference r591_copy_meta_alias_test.go:21: R-591: deepCopyStack leaves Meta.AfterLoad shared with the original — a write through the copy changes the stack r591_copy_meta_alias_test.go:21: R-591: deepCopyStack leaves Meta.DataPaths shared with the original — a write through the copy changes the stack --- FAIL: TestDeepCopyStackMetaSharesNoReference (0.00s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.007s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestDeepCopyStackMetaSharesNoReference -v ./internal/stacks) # FIX RESTORED rc=0 === RUN TestDeepCopyStackMetaSharesNoReference --- PASS: TestDeepCopyStackMetaSharesNoReference (0.00s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.007s ==================== R-365 follow-up (layout banner at 0 days; overdue flag removed) — red-proof ==================== Fix undone in: internal/web/recovery_handlers.go (the fix text replaced by the pre-fix shape) $ (cd controller && go test -count=1 -run TestR365_Banner -v ./internal/web) # FIX UNDONE rc=1 === RUN TestR365_BannerSaysDueAtZeroDays r365_banner_overdue_test.go:47: R-365: at 0 days the bar does not say the deletion is due: r365_banner_overdue_test.go:50: R-365: at 0 days the bar offers to stop reminders over a due deletion --- FAIL: TestR365_BannerSaysDueAtZeroDays (0.14s) FAIL FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.154s FAIL --- fix restored --- $ (cd controller && go test -count=1 -run TestR365_Banner -v ./internal/web) # FIX RESTORED rc=0 === RUN TestR365_BannerSaysDueAtZeroDays --- PASS: TestR365_BannerSaysDueAtZeroDays (0.12s) PASS ok gitea.dooplex.hu/admin/felhom-controller/internal/web 0.132s ### CI fix (lead, 2026-10-05 ~18:20Z): the new gofmt gate was INCONCLUSIVE on the CI runner (no Go) — CI run 1371 FAILED Fix: in CI (GITEA_ACTIONS/GITHUB_ACTIONS=true) with no gofmt reachable the gate prints "NOT CHECKED in CI" and exits 0; elsewhere a missing gofmt stays INCONCLUSIVE. Decoys gofmt/ci-without-go and gofmt/dev-without-go (empty PATH). Simulated CI (env -i, empty PATH, GITEA_ACTIONS=true): "gofmt gate NOT CHECKED in CI …" rc=0. Red-proof (CI branch disabled): FAIL: gofmt/ci-without-go: want rc=0 and 'NOT CHECKED in CI', got rc=2.