3e58c184f6
gates / gates (push) Successful in 27s
DRILL-night-2026-09-23.md: Parts A-E. 09 §3 decisions 21 (operator word), 22 and 23 (CC unattended, operator may reverse); §6.4 parts 4 and 6 (catalog half) shipped; §6.1a residuals R-658/R-659. Register 330 -> 336: R-651..R-660 opened (R-658 and R-659 P1), R-650/R-640/R-499/R-626 closed. Capability map, nightly rotation (opengist), STATUS (one question: the floor), CONTEXT, REPORT. The floor stays 0.266.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
24 lines
1.5 KiB
Python
24 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Part E teardown on 9202 — every app removed THROUGH THE PRODUCT, then the leftovers read by name.
|
|
R-658's second half is measured here: does the remove of a RESTORED app (volumes without the compose
|
|
label) leave its volumes behind? docmost, navidrome and vikunja were restored tonight; romm, nextcloud,
|
|
adventurelog were not (the control)."""
|
|
import json, sys, time
|
|
sys.path.insert(0, ".")
|
|
import walk as w
|
|
w.login()
|
|
apps = ["docmost", "navidrome", "vikunja", "romm", "nextcloud", "adventurelog", "actualbudget"]
|
|
before = w.guest("for p in " + " ".join(apps) + "; do echo \"$p all=$(docker volume ls -q | grep -c ^${p}_) labeled=$(docker volume ls -q --filter label=com.docker.compose.project=$p | wc -l) copies=$(docker volume ls -q --filter label=felhom.undo-copy-of=$p | wc -l)\"; done")
|
|
w.say("volumes before the removes:\n" + before)
|
|
res = {}
|
|
for a in apps:
|
|
st = w.stack(a)
|
|
if not st.get("deployed"):
|
|
res[a] = "not deployed"; continue
|
|
code = w.remove(a)
|
|
res[a] = code
|
|
after = w.guest("for p in " + " ".join(apps) + "; do echo \"$p containers=$(docker ps -aq --filter label=com.docker.compose.project=$p | wc -l) volumes=$(docker volume ls -q | grep ^${p}_ | tr '\\n' ' ') copies=$(docker volume ls -q --filter label=felhom.undo-copy-of=$p | wc -l)\"; done")
|
|
w.say("after the removes (the product's own):\n" + after)
|
|
json.dump({"before": before, "remove": res, "after": after}, open("E2-teardown-removes.json", "w"), indent=2)
|
|
open("E2-teardown-removes.log", "w").write("\n".join(w.LOG) + "\n")
|