From 77335625fe2f18f3757c5b15c6d33bea6bc710bc Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 23 Sep 2026 22:05:05 +0200 Subject: [PATCH] night 2026-09-23: round 11's second update is romm's engine step (changed before round 1) Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- documentation/audits/DRILL-night-2026-09-23.md | 2 +- documentation/audits/night-2026-09-23/chaos.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/documentation/audits/DRILL-night-2026-09-23.md b/documentation/audits/DRILL-night-2026-09-23.md index 149052f3..583371fa 100644 --- a/documentation/audits/DRILL-night-2026-09-23.md +++ b/documentation/audits/DRILL-night-2026-09-23.md @@ -98,7 +98,7 @@ seed 20260923, drawn in 3 attempt(s) | 4 fail_health | adventurelog v0.12.1 → v0.13.0, probe on a port it does not answer | the second PostgreSQL (PostGIS) | | 9 fail_health | vikunja 2.5.0 → 2.6.0, wrong probe | volume-only, under a controller kill | | 8 cutoff | navidrome 0.64.0 → 0.64.1, wrong probe, the undo copy's finished-marker removed during `verifying` | volume-only + a drive folder | -| 11 cutoff + two_updates | nextcloud 34.0.1 → 34.0.4 (the file-leg), and adventurelog's Update pressed at +51 s | two updates at once | +| 11 cutoff + two_updates | nextcloud 34.0.1 → 34.0.4 (the file-leg), and romm's database-engine Update (11.4 → 11.8, a tested good step) pressed at +51 s | two updates at once. *Changed before round 1:* the first draft named adventurelog, whose v0.13.0 cannot pass health (Part C) | Setup: the six at their FROM pins, each seeded through its front door (A); one whole-box backup on 9202 (the restore rounds need a copy); seed B on docmost, romm and vikunja after it. diff --git a/documentation/audits/night-2026-09-23/chaos.py b/documentation/audits/night-2026-09-23/chaos.py index ba6d8585..2250d9db 100644 --- a/documentation/audits/night-2026-09-23/chaos.py +++ b/documentation/audits/night-2026-09-23/chaos.py @@ -46,7 +46,8 @@ SEED_B = {"docmost": (docmost_seed_b, docmost_verify_b), "romm": (romm_seed_b, r # round -> the app it acts on (and, for two_updates, the second app) TARGET = {1: "actualbudget", 2: "docmost", 3: "vikunja", 4: "adventurelog", 5: "papra", 6: "romm", 7: "docmost", 8: "navidrome", 9: "vikunja", 10: "actualbudget", 11: "nextcloud", 12: "papra"} -SECOND = {11: "adventurelog"} +SECOND = {11: "romm"} # its database-engine step 11.4 -> 11.8, a tested good step (catalog 431cdec) +EXTRA_PINS = {"romm": ["mariadb:11.4"]} KILL_LOG = os.path.join(HERE, "chaos-kills.json") @@ -291,7 +292,7 @@ def setup(): for app, a in SIX.items(): comp = f"{w.DRILL}/templates/{app}/docker-compose.yml" c = open(comp).read() - for frm in a["from"].split(","): + for frm in a["from"].split(",") + EXTRA_PINS.get(app, []): c = re.sub(r"image: " + re.escape(frm.rsplit(":", 1)[0]) + r":\S+", "image: " + frm, c, count=1) open(comp, "w").write(c) # and the REAL probe, whatever an earlier drill left there @@ -349,6 +350,9 @@ def run_round(n): w.say(f"==== ROUND {n}: {sched['action']} on {app} x {sched['accident']} at +{sched['delay_s']}s ({t_iso})") note = {"round": n, **sched, "app": app, "started": t_iso} note["before"] = household(app) if w.stack(app).get("deployed") else {"state": "not deployed"} + if n in SECOND: # the second app gets its good step in the drill catalog before the round + note["second_drill_commit"] = w.drill_bump(SECOND[n], "mariadb:11.4", "mariadb:11.8") + note["second_template_rounds"] = drill_wait_ref(SECOND[n], "mariadb:11.8") t0 = time.time() timer = threading.Timer(sched["delay_s"], accident, args=(sched["accident"], n, app, note)) timer.start()