- R-463 CLOSED: rallly, outline, sparkyfitness -> PostgreSQL 18 (catalog 25ffd89 / aeb0cd6 / 1666572), each proven on the bench and on 9202 through the guarded Update with one undo case; zipline, adventurelog, immich stay on 16 by 09 decision 42's rule (upstream runs 16 / 16 / 14). - Part F: bookstack, kimai, audiobookshelf, n8n, navidrome, grafana, komga moved on both venues; immich not (R-732: its first start OOM-killed its database on the bench). - R-687 item 4 PROVEN LIVE on demo-hp: two deferrals while the leg stepped two apps, the whole-guest backup on the first poll after, success; config + window put back and read back. - Catalog currency audit (Part D): 25/53 behind inside a major, 19 across; night-updatable 28 -> 31 (+1). - R-446 and R-440 narrowed (measured on demo-hp); R-624 corrected (outline, rallly, zipline have routes); R-548 note (demo-hp's local tier refused for space since 09-27). - New rows: R-730 (the ISO 1.29.0 build commit cannot be proven -> no tag; installer-v* is the script's line), R-731 (tag-shape switches), R-732. Register 361 -> 364. - 09 §3: the 2026-09-30 operator notes (by day; Tester-2 pre-checks done; decision 52 not needed, not recorded); §6.4 dated currency note. STATUS, CONTEXT, REPORT-pg-last-six-2026-09-30.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
Part C — the full-system backup waits for the update leg, seen live by day (R-687 item 4)
demo-hp guest 9201, controller 0.283.1, agent 0.138.0. 2026-09-30. Tool: tools/partC.py (setup / run / restore).
Feasibility, measured first (read only)
| condition | measured | source |
|---|---|---|
| whole-guest tier DUE | local tier: newest archive vzdump-lxc-9201-2026_09_29-04_42_11 (≈ 31 h), cadence 24 h → due. PBS tier: last 2026-09-24T20:06Z, weekly → not due (so ep0 is not written) |
pvesm list local/felhom-pbs, agent journal backup tier armed … cadence=24h0m0s |
| why it had not run | the space preflight (R-685) refused it 10 times since 2026-09-27: „local has 12.1 GiB free; … a new one needs about 12.1 GiB" | agent journal 04:44–06:44 CEST; → R-548 note |
| room now | local 14.2 GiB free ≥ the 12.1 GiB it needs | pvesm status |
| the window | no backup_window_start in settings.json → controller.yaml db_dump_schedule: "02:30"; gate [04:30, 08:30) |
settings.json, controller.yaml |
| a leg step pending | none at first (every app at the catalog head); Part F's bookstack and kimai moves gave two — the page read „Frissítés elérhető — ma · Hátralévő frissítési lépések: 1" for both | C1-sync-and-offer.txt |
| the leg's retry wait | RetryWait default 2 min (unattended.go SetUpdateLeg) — not needed |
source |
The order is the whole trick. The tier was already due, so moving the window before the leg ran would have let the
next 1-minute poll start the backup during the chain's own dump and off-site legs. The window moved only once
[update-leg] started (manual-chain) was in the log (2 s later, by the product's own form).
What happened (controller log, C-run-log.txt; times UTC)
11:18:08 [quiesce] loop started (poll 1m0s, max-quiesce 30m0s) ← setup: quiesce.poll_interval 1m
11:28:26 [night-chain] manual run of tonight's chain: dump → second drive → off-site → update leg
11:30:26 [night-chain] db-dump: done in 2m0s
11:34:19 [update-leg] started (manual-chain): window 02:30, no step starts at or after 16:49
11:34:19 [update-leg] bookstack: step pressed … 26.05.5 → 26.09.1
(11:34:21 POST /backups/window window_start=11:29 → 303 flash.backup.window_updated — now = W+2h05m)
11:35:11 [quiesce] full-system backup due and inside its window, but the automatic update leg is running (it starts no step after 16:29) — deferring to the next poll (`09` decision 20)
11:35:14 [update-leg] bookstack: step ended done after 55.1 s
11:35:14 [update-leg] kimai: step pressed … apache-2.57.0 → 2.67.0
11:36:11 [quiesce] full-system backup due and inside its window, but the automatic update leg is running … — deferring
11:36:29 [update-leg] kimai: step ended done after 75.1 s
11:36:29 [update-leg] update leg (manual-chain): done=2 undone=0 held=0 failed=0 skipped=0 in 2m10s
11:37:11 [quiesce] backup due on 1 tier(s) — quiescing 10 stack(s) ← the first poll AFTER the leg ended
11:37:38 [quiesce] tier local: backup job backup-9201-1790768258239656621 started — polling
11:37:48 [quiesce] tier local: job … snapshotted — resuming app early (8B.2)
11:47:19 [quiesce] tier local: backup job … done
Agent (host journal, CEST): 13:37:38 backup: space preflight passed need_bytes=12969135576 avail_bytes=14509867008 ·
13:47:12 backup: completed archive=local:backup/vzdump-lxc-9201-2026_09_30-13_37_38.tar.zst size_bytes=9978959837.
The old archive was pruned (retention 1); demo-hp has a fresh whole-guest local backup again.
Verdict: R-687 item 4 PROVEN LIVE — two deferrals while the leg ran, the backup started on the first poll after the leg's end line, and it succeeded.
One cosmetic mismatch found (manual chain only): the deferral says „it starts no step after 16:29" (W+5h of the
moved window) while this manual leg's own deadline was 16:49 (its start + the leg length, RunUpdateLegNow). A night
leg has both at W+5h. Filed in R-687.
Put back (C-restore.txt, C9-after.txt)
controller.yamlrestored fromcontroller.yaml.pre-gate-day→diffIDENTICAL; noquiesce:section; restart →[quiesce] loop started (poll 5m0s …).backup_window_start(11:29) removed from settings.json with the controller STOPPED (it had never been set) → the page reads „Adatbázis-mentés: 02:30 · Helyi másolat: 03:30 · Távoli mentés: 04:15 · Teljes rendszermentés: kb. 04:30–08:30".- Scheduler after restart:
db-dump 2026-10-01 02:30 CEST,tier2-backup 03:30,offbox-backup 04:15— as before. - Consequence, stated: the whole-guest local tier ran at 13:37 today, so on 2026-10-01 at 04:30 it is 15 h old and not due; it becomes due at 13:37 (outside the window) and runs at the next window, 2026-10-02 04:30. One night without a new local whole-guest archive — the box had had none since 2026-09-29 before today anyway.
- bookstack and kimai: running, healthy, „Naprakész" (the Part B read for demo-hp).
- Saved copies left on the guest for reference:
controller.yaml.pre-gate-day,data/settings.json.pre-gate-day.