# A5 live — Part A on 9202 (controller 0.275.0-rc1, drill catalog = live `main` + one reverted deploy commit) Method: endpoint level (`POST /api/stacks/docmost/update`, the backups page's `POST /backup/restore` form, `GET /api/backup/restore-status` for the page's sentence), the unit read off the disk, the seed read back through docmost's own front door (a user + login, `fixtures.py`). Times UTC unless marked. ## Shape 2 — the engine step, in the box's OWN night (not pressed by me) `L2-night-leg-log.txt`, `L2-window-after-night-leg.txt`. 00:30 the nightly data run stamped docmost's dump and tars (PostgreSQL 16). **02:15 the automatic leg converted docmost 16 → 18 by itself** (precondition: "Tier 2 copy from 00:30:00Z" — the data's time). **02:16:35 the refresh re-captured the unit and KEPT the 16 definition:** „the app now runs [… postgres:18 …]; the unit keeps the definition of its data ([… postgres:16 …], written 00:30:00Z)". Manifest: `image_pins` = 18 (current), `data.image_pins` = 16, `compose/` = 16; restore point offered **00:30:00Z** (v0.274.0 offered the refresh's time). The kept pre-conversion copy stayed kept for 7 h (hourly release: no copy after the conversion — pre-fix it went at the first tick after the refresh, R-696). `L3-restore-own-unit-in-window.txt` — restore (own unit, `helyi`) at 09:20: „Restore docmost: the data belongs to [… 16 …]"; 3 volumes + 1 database; **back whole at PostgreSQL 16** (`PG_VERSION` 16, pin `postgres:16-alpine`), the seed logs in. The page's first sentence: „A(z) docmost visszaállt a(z) 2026-09-27 02:30-i mentésből, a(z) docmost:0.96.0, postgres:16-alpine, redis:7-alpine verzióra. Elérhető frissítés: a doboz lépésenként hozza naprakészre." (02:30 CEST = 00:30Z.) Before the fix the same restore left the app down (`A1/S4`). `L4-climb-again.*` — the guarded Update: backing-up → safety-dump → copying → converting (7 s) → starting → verifying → done in 55.4 s; `PG_VERSION` 18; the seed logs in. ## Shape 1 — the app step (docmost 0.95.0 → 0.96.0), pressed by me `L1-deployed.txt` (reinstalled at 0.95.0 via one drill commit, reverted), `L5-step-app.*` (done 46.2 s), `L6-after-refresh-app-step.txt`: the capture 7 s after the update KEPT `compose/` at 0.95.0; `image_pins` 0.96.0, `data.image_pins` 0.95.0, restore point 09:25:42Z = the data. `L7-restore-app-step.txt`: back at 0.95.0 whole, the seed logs in, **docmost logged "No pending database migrations"** (pre-fix it ran four migrations unguarded, `A1/S2`), sentence as above with 0.95.0. `L8-climb-app.*`: the guarded Update climbed to 0.96.0 in 46.2 s; the seed logs in. ## Not observed live - The conversion-copy RELEASE on a real 18 dump (needs a nightly data run after a conversion, then an hourly tick): unit-tested (`TestA5_TheReleaseRefusesAPreConversionDump`), the kept half seen live above. - Off-site restore (9202 has no off-site target; the boxes that do are fenced): unit-tested (`TestA3_TheOffsiteRestoreBringsTheSnapshotsVersionBack`). - The English sentence live (the box is Hungarian): unit-tested both languages. State left: docmost on 9202 at 0.96.0 / PostgreSQL 16 (the automatic leg may convert it again tonight).