# check-volume-persistence.py grimmory metube --evidence /root/ev3 (one run; --evidence used to show ports/exercise) - 2026-10-02T07:24:26Z, after the R-801 port fix, bench LXC 9401 on demo-hp (debian-13, swap 0, nvme-scratch), catalog-wt de0a9bd + uncommitted working tree (17 path(s), REFRESHED copy with R-788 APP_EXERCISE + R-801 routed_ports, copied with its .git), sibling felhom.eu 68c2290 (git archive) at ../felhom.eu
# sibling copy ALSO carries tar copies of DooPlex UNCOMMITTED documentation/audits/family-gate-2026-10-02/ and documentation/audits/licences-2026-10-02/; in the bench sibling B/catalog-gates-grimmory.txt = copy of catalog-gates-grimmory-run1.txt and B/catalog-gates-metube.txt = copy of catalog-gates-metube-run2.txt so the onboarding citations resolve
 M CHANGELOG.md
 M CONTEXT.md
 M FIRST-ADMIN.md
 M README.md
 M REUSE.md
 M scripts/box_walk.py
 M scripts/catalog_gates.py
 M scripts/check-volume-persistence.py
 M scripts/copy_freeze/hu.json
 M scripts/test_check_volume_persistence.py
 M scripts/test_gate_decoys.py
 M scripts/upgrade_fixtures_box.py
?? onboarding/grimmory.md
?? onboarding/metube.md
?? scripts/check-family-gate.py
?? templates/grimmory/
?? templates/metube/
self-testing the prober (both directions)…
  prober flags the R-156 signature and clears a correct template — trustworthy
grimmory             CLEAN         grimmory: this container's mounts are all empty while it created entries in ['/', '/app', '/etc'] — benign when a sibling container holds the state, w
metube               CLEAN         

2 clean · 0 broken · 0 undetermined (of 2 in scope)
volume-persistence gate OK
check-volume-persistence exit code = 0

# probe evidence: ports + exercise per app
grimmory verdict= CLEAN ports= [6060] exercise= ["172.18.0.2:6060/ -> 200", "172.21.0.3:6060/ -> 200"]
  mount /app/data files= 0 sample= []
  mount /books files= 0 sample= []
  mount /bookdrop files= 0 sample= []
  mount /var/lib/mysql files= 355 sample= ['undo001', 'tc.log', 'ddl_recovery.log', 'aria_log_control', 'ib_logfile0']
metube verdict= CLEAN ports= [8081] exercise= ["172.18.0.2:8081/ -> 200", "POST 172.18.0.2:8081/add -> 200 (the app's own write path)"]
  mount /downloads files= 1 sample= ['Big_Buck_Bunny_360_10s_1MB.mp4']
  mount /state files= 2 sample= ['completed.json', 'queue.json']
# leftover containers: 0
