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
+6 -4
View File
@@ -82,10 +82,12 @@ func TestLadder_TwoPressesTwoSteps(t *testing.T) {
if got := pinOf(t, dir); got != ladderB {
t.Fatalf("press 1 pinned %s, want the tested step B %s — one press must be one step", got, ladderB)
}
if body := fileBody(t, ComposePathIn(dir)); body != ladderBDef {
t.Fatalf("press 1 rendered\n%s\nwant step B's OWN definition (with STEP_B_OWN_DEFINITION)", body)
// v0.269.0: the step's own definition, run with its TESTED digest (`09` §6.4 part 6)
wantB := string(renderDigests([]byte(ladderBDef), map[string]string{"web": "sha256:" + strings.Repeat("a", 64)}))
if body := fileBody(t, ComposePathIn(dir)); body != wantB {
t.Fatalf("press 1 rendered\n%s\nwant step B's OWN definition (with STEP_B_OWN_DEFINITION) and its digest", body)
}
if body := fileBody(t, AppliedComposePath(dir)); body != ladderBDef {
if body := fileBody(t, AppliedComposePath(dir)); body != wantB {
t.Fatal("the stored applied definition is not step B's — the sync would render the wrong file while the app sits at B")
}
if n := ladderStepsLeft(catDir, map[string]string{"web": ladderB}); n != 1 {
@@ -99,7 +101,7 @@ func TestLadder_TwoPressesTwoSteps(t *testing.T) {
if st.UpdatePhase != UpdatePhaseDone || pinOf(t, dir) != ladderC {
t.Fatalf("press 2 ended %q on %s, want done on C", st.UpdatePhase, pinOf(t, dir))
}
if body := fileBody(t, ComposePathIn(dir)); body != pinTplNew {
if body := fileBody(t, ComposePathIn(dir)); body != string(renderDigests([]byte(pinTplNew), map[string]string{"web": "sha256:" + strings.Repeat("a", 64)})) {
t.Fatalf("press 2 must render the catalog's current definition; got\n%s", body)
}
if strings.Join(*ups, ",") != ladderB+","+ladderC {