before: pinned={'paperless-postgres': 'postgres:16-alpine', 'paperless-redis': 'redis:7-alpine', 'paperless-webserver': 'ghcr.io/paperless-ngx/paperless-ngx:2.20.15'} PG_VERSION=16
drill: 48f45df DRILL paperless-ngx: paperless-postgres postgres:16-alpine -> postgres:18-alpine with the engine_conversion mark (box proof)
  phase +0.0s safety-dump | err=None
  phase +3.1s pulling | err=None
  phase +4.1s copying | err=None
  phase +12.3s converting | err=None
  phase +22.6s starting | err=None
  phase +33.9s verifying | err=None
  phase +64.6s done | err=None
    paperless-webserver: readback of the seeded account found=True
2026/09/27 09:44:11 update.go:536: [INFO] [stacks] update paperless-ngx: accepted — guarded update started
2026/09/27 09:44:11 update.go:1365: [INFO] [stacks] update paperless-ngx: phase checking
2026/09/27 09:44:11 update.go:786: [INFO] [stacks] update paperless-ngx: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/27 09:44:11 update.go:800: [INFO] [stacks] update paperless-ngx: this step CONVERTS paperless-postgres PostgreSQL 16 → 18 (the ladder entry's mark); database volume paperless-ngx_paperless_postgres_data
2026/09/27 09:44:11 update.go:814: [INFO] [stacks] update paperless-ngx: precondition met — Tier 2 (second drive) copy from 2026-09-27T00:30:00Z (9h14m0s old, limit 24h0m0s)
2026/09/27 09:44:11 update.go:1365: [INFO] [stacks] update paperless-ngx: phase safety-dump
2026/09/27 09:44:12 update.go:846: [INFO] [stacks] update paperless-ngx: safety dump done (1 file(s)) [/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/backups/primary/paperless-ngx/db-dumps/pre-restore-20260927T094411Z-paperless-ngx-postgres.sql]
2026/09/27 09:44:13 undo.go:287: [INFO] [stacks] update paperless-ngx: the undo copy will hold 3 named volume(s), 72.2 MiB
2026/09/27 09:44:13 pgconvert.go:340: [INFO] [stacks] update paperless-ngx: conversion space — database volume paperless-ngx_paperless_postgres_data is 67 MB; the dump needs up to 84 MB + the 2 GB floor; 27.7 GB free beside the stack dir
2026/09/27 09:44:13 update.go:1365: [INFO] [stacks] update paperless-ngx: phase pinning
2026/09/27 09:44:13 pin.go:373: [INFO] [stacks] update paperless-ngx: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/paperless-ngx/docker-compose.yml (paperless-postgres=postgres:18-alpine, paperless-redis=redis:7-alpine, paperless-webserver=ghcr.io/paperless-ngx/paperless-ngx:2.20.15)
2026/09/27 09:44:13 update.go:1365: [INFO] [stacks] update paperless-ngx: phase pulling
2026/09/27 09:44:15 update.go:1365: [INFO] [stacks] update paperless-ngx: phase copying
2026/09/27 09:44:21 update.go:1365: [INFO] [stacks] update paperless-ngx: phase copying
2026/09/27 09:44:22 undo.go:437: [INFO] [stacks] update paperless-ngx: copied paperless-ngx_paperless_data → paperless-ngx_paperless_data.pre-update-20260927T094421Z in 477ms
2026/09/27 09:44:22 update.go:1365: [INFO] [stacks] update paperless-ngx: phase copying
2026/09/27 09:44:23 undo.go:437: [INFO] [stacks] update paperless-ngx: copied paperless-ngx_paperless_postgres_data → paperless-ngx_paperless_postgres_data.pre-update-20260927T094421Z in 954ms
2026/09/27 09:44:23 update.go:1365: [INFO] [stacks] update paperless-ngx: phase copying
2026/09/27 09:44:23 undo.go:437: [INFO] [stacks] update paperless-ngx: copied paperless-ngx_paperless_redis_data → paperless-ngx_paperless_redis_data.pre-update-20260927T094421Z in 454ms
2026/09/27 09:44:23 update.go:1365: [INFO] [stacks] update paperless-ngx: phase converting
2026/09/27 09:44:23 pgconvert.go:423: [INFO] [stacks] update paperless-ngx: CONVERTING paperless-postgres PostgreSQL 16 → 18 (volume paperless-ngx_paperless_postgres_data, kept copy paperless-ngx_paperless_postgres_data.pre-update-20260927T094421Z)
2026/09/27 09:44:27 pgconvert.go:468: [INFO] [stacks] update paperless-ngx: pg_dumpall from 16 done in 609ms — 335 kB, completion line present; before: 2 database(s), 72 table(s), 812 row(s)
2026/09/27 09:44:28 update.go:1365: [INFO] [stacks] update paperless-ngx: phase converting
2026/09/27 09:44:28 pgconvert.go:484: [INFO] [stacks] update paperless-ngx: database volume paperless-ngx_paperless_postgres_data emptied (its copy paperless-ngx_paperless_postgres_data.pre-update-20260927T094421Z holds the old datadir, marker checked twice)
2026/09/27 09:44:33 pgconvert.go:513: [INFO] [stacks] update paperless-ngx: loaded into 18 in 2.318s (dropped the entrypoint's empty database(s) [paperless]; skipped CREATE ROLE for [paperless])
2026/09/27 09:44:34 pgconvert.go:529: [INFO] [stacks] update paperless-ngx: CONVERTED 16 → 18 in 10.607s — the check is equal (2 database(s), 72 table(s), 812 row(s)), PG_VERSION 18
2026/09/27 09:44:34 update.go:1365: [INFO] [stacks] update paperless-ngx: phase starting
2026/09/27 09:44:45 update.go:1365: [INFO] [stacks] update paperless-ngx: phase verifying
2026/09/27 09:45:15 update.go:997: [INFO] [stacks] update paperless-ngx: healthy after 30s (the app's health check passed)
2026/09/27 09:45:15 update.go:1015: [INFO] [stacks] update paperless-ngx: KEEPING the pre-conversion datadir copy paperless-ngx_paperless_postgres_data.pre-update-20260927T094421Z (PostgreSQL 16) until a backup of the converted app is proven
2026/09/27 09:45:15 update.go:1033: [INFO] [stacks] update paperless-ngx: DONE in 1m4s

RESULT final_phase=done PG_VERSION=18 seed_after=True verdict=proven
