controller v0.269.0: whole restore from the second drive; crash loops stopped; exact image digests; steps judged by their own .felhom.yml (decisions 26-28, R-661 R-666 R-667 R-668 R-664 R-665 R-662, 09 6.4 part 6)
gates / gates (push) Successful in 27s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-24 12:18:39 +02:00
parent 7c3b3a9694
commit 3c6b49b31c
141 changed files with 3401 additions and 237 deletions
@@ -346,6 +346,12 @@ func (m *Manager) RestoreHoldForLang(stack, lang string) (bool, string) {
}
// Slice 4: one storage, two reasons. An update hold names the copy it can be restored from; a
// restore hold names nothing, because the restore it refers to already consumed the copy.
if h.Reason == settings.HoldReasonUnhealthyStop { // v0.269.0, decision 28
if h.Trip >= 2 {
return true, util.Text(lang, "hold.unhealthy_stop.repeat")
}
return true, util.Text(lang, "hold.unhealthy_stop")
}
if h.Reason == settings.HoldReasonUpdateFailed {
if h.NoWholeCopy { // R-659: the sentence carries the undo's failure itself and names no copy
return true, util.Text(lang, "hold.update.no_whole_copy", stack)