Files
felhom.eu/documentation/audits/pg-last-six-2026-09-30/C/README.md
T
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

64 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.