v0.311.0: after a power cut, an app repairs the files the cut left empty; the household sees lost photos (R-1007)
gates / gates (push) Successful in 52s

New template block after_unclean_boot (decision 236): once per controller start that followed an
UNCLEAN host boot (crashboot's own verdict, after the 15-minute crash grace; a normal or unknown boot
never runs it), each app with the block rebuilds ONLY its zero-byte files (scan: regular files, no
symlinks, its own filesystem; ids appended to the app's own command in batches; one retry, then
reported) and its own lost-file check is read. The household sees lost files (name, date taken) on
the app page until dismissed; the operator gets app_repaired_after_crash with counts only. Skips,
with the reason, an unproven image, an unknown key, an app not running. MinAgent 0.155.0 unchanged.
Tests red-proofed (14 guards). One new parity fixture (the new card only).

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
This commit is contained in:
2026-10-14 16:47:13 +02:00
parent acbbf4b305
commit 8d862e4e69
24 changed files with 1865 additions and 3 deletions
+9 -1
View File
@@ -2685,5 +2685,13 @@
"poweroff.refused.update": "An update is running. Wait until it ends, then try again.",
"poweroff.refused.drive": "The machine is working on a drive. Wait until it ends, then try again.",
"poweroff.refused.other_guests": "Another system runs on this machine, so it cannot be turned off from here.",
"poweroff.refused.generic": "The machine cannot turn itself off safely right now. Try again in a few minutes."
"poweroff.refused.generic": "The machine cannot turn itself off safely right now. Try again in a few minutes.",
"event.app_repaired_after_crash": "%s: after the unexpected stop, %d damaged preview file(s), %d repaired, %d still broken; lost originals: %d",
"event.app_repair_after_crash_skipped": "%s: the repair after the unexpected stop was skipped: %s",
"app_info.lost_files_title": "Photos lost in an unexpected stop",
"app_info.lost_files_text": "The machine stopped unexpectedly (for example in a power cut), and these files were lost. The machine started again at:",
"app_info.lost_files_taken": "taken:",
"app_info.lost_files_hint": "If your phone still has them, upload them again. Check now, before your phone frees their space.",
"app_info.lost_files_dismiss_btn": "OK, I have read this",
"err.lost_files.nothing_to_dismiss": "There is no note about lost files for this app."
}
+9 -1
View File
@@ -2673,5 +2673,13 @@
"poweroff.refused.update": "Most frissítés fut. Várd meg, amíg befejeződik, és próbáld újra.",
"poweroff.refused.drive": "A gép most egy meghajtón dolgozik. Várd meg, amíg befejeződik, és próbáld újra.",
"poweroff.refused.other_guests": "Ezen a gépen más rendszer is fut, ezért innen nem lehet kikapcsolni.",
"poweroff.refused.generic": "A gép most nem tudja biztonságosan kikapcsolni magát. Próbáld újra néhány perc múlva."
"poweroff.refused.generic": "A gép most nem tudja biztonságosan kikapcsolni magát. Próbáld újra néhány perc múlva.",
"event.app_repaired_after_crash": "%s: a váratlan leállás után %d sérült előnézeti fájl, ebből %d javítva, %d maradt hibás; elveszett eredeti fájl: %d",
"event.app_repair_after_crash_skipped": "%s: a váratlan leállás utáni javítás elmaradt: %s",
"app_info.lost_files_title": "Elveszett fotók egy váratlan leállás miatt",
"app_info.lost_files_text": "A gép váratlanul leállt (például áramszünet miatt), és ezek a fájlok elvesztek. A gép újraindulásának ideje:",
"app_info.lost_files_taken": "készült:",
"app_info.lost_files_hint": "Ha a telefonodon még megvannak, töltsd fel őket újra. Nézd meg most, mielőtt a telefon felszabadítja a helyüket.",
"app_info.lost_files_dismiss_btn": "Rendben, elolvastam",
"err.lost_files.nothing_to_dismiss": "Ehhez az alkalmazáshoz nincs elveszett fájlokról szóló értesítés."
}