Files
felhom.eu/documentation/audits/pg-last-six-2026-09-30/C
admin 25cb3eb9c1
gates / gates (push) Successful in 29s
The last six PostgreSQL apps decided; the gate's wait seen live by day; catalog currency; stale rows
- 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
2026-09-30 14:47:12 +02:00
..

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.yaml restored from controller.yaml.pre-gate-day → diff IDENTICAL; no quiesce: 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.