v0.270.0: no update for a current app (R-679); an interrupted install is reported (R-681); a restore brings back the pinned version's health check (R-669); R-674
gates / gates (push) Successful in 24s

Five red-proofs. MinAgent 0.131.0 unchanged.

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 16:49:43 +02:00
parent 7c6140d95b
commit 504eae018b
23 changed files with 1121 additions and 16 deletions
+12 -1
View File
@@ -13,6 +13,7 @@ import (
"strings"
"time"
"gitea.dooplex.hu/admin/felhom-controller/internal/stacks"
"gitea.dooplex.hu/admin/felhom-controller/internal/system"
"gopkg.in/yaml.v3"
)
@@ -115,7 +116,17 @@ func (m *Manager) CaptureRecoveryUnit(stackName string) error {
checksums := make(map[string]string)
var configFiles []string
for _, fname := range []string{"docker-compose.yml", ".felhom.yml"} {
data, err := os.ReadFile(filepath.Join(info.StackDir, fname))
src := filepath.Join(info.StackDir, fname)
// R-669 (v0.270.0): the .felhom.yml that belongs to the PINNED version — the one the compose above
// runs — is the applied record. The stack dir's own file flows from the catalog on every sync and
// can already be a NEWER (even a failing) version's; restored with the unit, it became the pinned
// version's probe and an undo judged the correct version unhealthy (measured 2026-09-24, A2).
if fname == ".felhom.yml" {
if _, err := os.Stat(stacks.AppliedMetaFile(info.StackDir)); err == nil {
src = stacks.AppliedMetaFile(info.StackDir)
}
}
data, err := os.ReadFile(src)
if err != nil {
continue // optional — capture whichever exist
}