=== 0. find the live docmost 16 datadir, and PROVE it is 16 before touching anything
mounts of docmost-postgres:
volume docmost_docmost_postgres_data /var/lib/docker/volumes/docmost_docmost_postgres_data/_data /var/lib/postgresql/data
volume: docmost_docmost_postgres_data
PG_VERSION of the SOURCE: '16'

=== 1. copy it, and PROVE the copy is 16 too
copied
PG_VERSION of the COPY: '16'
size of the copy: 49.0M

=== 2. THE MEASUREMENT: postgres:17-alpine on that 16 datadir — the household's exact case
container: running=false exit=1 restarts=0
--- POSTGRESQL 17's OWN WORDS, VERBATIM:

PostgreSQL Database directory appears to contain a database; Skipping initialization

2026-09-21 22:11:32.601 CEST [1] FATAL:  database files are incompatible with server
2026-09-21 22:11:32.601 CEST [1] DETAIL:  The data directory was initialized by PostgreSQL version 16, which is not compatible with this version 17.11.
--- the copy's PG_VERSION AFTER 17 refused it (must still be 16 — nothing was migrated):
16

=== 3. POSITIVE CONTROL: the same copy under postgres:16-alpine must start AND hold the data
container: running=true exit=0
2026-09-21 22:11:43.497 CEST [33] LOG:  checkpoint starting: end-of-recovery immediate wait
2026-09-21 22:11:43.583 CEST [33] LOG:  checkpoint complete: wrote 600 buffers (3.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.014 s, sync=0.061 s, total=0.089 s; sync files=409, longest=0.025 s, average=0.001 s; distance=2838 kB, estimate=2838 kB; lsn=0/1BEB798, redo lsn=0/1BEB798
2026-09-21 22:11:43.592 CEST [1] LOG:  database system is ready to accept connections
--- the DATA, asked of the engine itself:
  tables in the public schema: 48

=== 4. teardown, BY NAME
removed: DRILL-pg17-refuse, DRILL-pg16-ok, volume DRILL-pg16-copy
