Media drive events, night 2026-10-14: 15 §10 (event x app, measured), K4-K8 evidence, rows R-1044..R-1049, narrowed R-1022/1023/1024/1026/1028/1037/1038, night report
gates / gates (push) Successful in 6m34s

- 15-media-library.md §10: what the box does on each drive event, per app, with the measured call; the guards
  that ARE needed and the ones that are NOT (K1: nothing lost while a drive is gone).
- Evidence K4 (dead-drive check: mountinfo `shutdown`, stat unreliable), K5 (restart), K6 (unclaimed Plex),
  K7 (old Sonarr/Radarr repair on the bench), K8 (hub received the drive-return events and mailed none), K9 (files identical).
- nightly-rotation.md runs scripts/https_only_check.py first every night; scripts/CHANGELOG.md entry.
- STATUS, CONTEXT (decisions 244-246), REPORT-night-2026-10-14.md.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-14 23:40:26 +02:00
parent 5aaa3312ba
commit 0e88b7eb99
19 changed files with 616 additions and 18 deletions
@@ -7,6 +7,11 @@ guarded Update if the catalog offers one, removal with "delete my data", and a c
surprise is a register row before the next step. An app with no non-browser front door is recorded,
not faked. Tick with the date; the next night takes the first unticked app.
**Every night, first: `python3 scripts/https_only_check.py`** (R-1033, P1, since 2026-10-14). It asks every public name
of the three Tier-0 boxes over plain http and convicts any that does not answer 301/308 to the same https URL; its own
negative and positive controls run first. Exit 1 is a P1 regression: file it before the app of the night. A new app
installed tonight is covered by the next run, because the names are read from the box.
**The nine standing apps of demo-hp come first.** They cannot be a throwaway on guest 9201 (same stack
name), so they are walked on the **scratch guest 9202** (R-481, built 2026-09-13: under the demo-hp
customer, hub off, tunnel off, `https://192.168.0.114` with the same Host names and password).