before: pinned={'outline': 'outlinewiki/outline:1.9.1', 'outline-postgres': 'postgres:16-alpine', 'outline-redis': 'redis:7-alpine'} PG_VERSION=16
drill: SKIPPED — the drill commit was made by an earlier attempt
  phase +0.0s safety-dump | err=None
  phase +3.1s pulling | err=None
  phase +4.1s copying | err=None
  phase +11.3s converting | err=None
  phase +19.5s starting | err=None
  phase +24.7s verifying | err=None
  phase +41.1s done | err=None
    outline: readback of the seeded document http=200 found=True
2026/09/30 10:51:46 update.go:536: [INFO] [stacks] update outline: accepted — guarded update started
2026/09/30 10:51:46 update.go:1365: [INFO] [stacks] update outline: phase checking
2026/09/30 10:51:46 update.go:786: [INFO] [stacks] update outline: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/30 10:51:46 update.go:800: [INFO] [stacks] update outline: this step CONVERTS outline-postgres PostgreSQL 16 → 18 (the ladder entry's mark); database volume outline_outline_postgres_data
2026/09/30 10:51:46 update.go:814: [INFO] [stacks] update outline: precondition met — Tier 2 (second drive) copy from 2026-09-30T10:50:18Z (1m0s old, limit 24h0m0s)
2026/09/30 10:51:46 update.go:1365: [INFO] [stacks] update outline: phase safety-dump
2026/09/30 10:51:46 update.go:846: [INFO] [stacks] update outline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/outline/db-dumps/pre-restore-20260930T105146Z-outline-postgres.sql]
2026/09/30 10:51:48 undo.go:287: [INFO] [stacks] update outline: the undo copy will hold 3 named volume(s), 65.3 MiB
2026/09/30 10:51:48 pgconvert.go:340: [INFO] [stacks] update outline: conversion space — database volume outline_outline_postgres_data is 65 MB; the dump needs up to 82 MB + the 2 GB floor; 27.7 GB free beside the stack dir
2026/09/30 10:51:48 update.go:1365: [INFO] [stacks] update outline: phase pinning
2026/09/30 10:51:48 pin.go:373: [INFO] [stacks] update outline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/outline/docker-compose.yml (outline=outlinewiki/outline:1.9.1, outline-postgres=postgres:18-alpine, outline-redis=redis:7-alpine)
2026/09/30 10:51:48 update.go:1365: [INFO] [stacks] update outline: phase pulling
2026/09/30 10:51:49 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 10:51:55 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 10:51:55 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_data → outline_outline_data.pre-update-20260930T105155Z in 494ms
2026/09/30 10:51:55 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 10:51:56 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_postgres_data → outline_outline_postgres_data.pre-update-20260930T105155Z in 724ms
2026/09/30 10:51:56 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 10:51:56 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_redis_data → outline_outline_redis_data.pre-update-20260930T105155Z in 443ms
2026/09/30 10:51:56 update.go:1365: [INFO] [stacks] update outline: phase converting
2026/09/30 10:51:56 pgconvert.go:423: [INFO] [stacks] update outline: CONVERTING outline-postgres PostgreSQL 16 → 18 (volume outline_outline_postgres_data, kept copy outline_outline_postgres_data.pre-update-20260930T105155Z)
2026/09/30 10:51:58 pgconvert.go:468: [INFO] [stacks] update outline: pg_dumpall from 16 done in 522ms — 124 kB, completion line present; before: 2 database(s), 42 table(s), 312 row(s)
2026/09/30 10:51:59 update.go:1365: [INFO] [stacks] update outline: phase converting
2026/09/30 10:51:59 pgconvert.go:484: [INFO] [stacks] update outline: database volume outline_outline_postgres_data emptied (its copy outline_outline_postgres_data.pre-update-20260930T105155Z holds the old datadir, marker checked twice)
2026/09/30 10:52:04 pgconvert.go:513: [INFO] [stacks] update outline: loaded into 18 in 1.674s (dropped the entrypoint's empty database(s) [outline]; skipped CREATE ROLE for [outline])
2026/09/30 10:52:04 pgconvert.go:529: [INFO] [stacks] update outline: CONVERTED 16 → 18 in 7.925s — the check is equal (2 database(s), 42 table(s), 312 row(s)), PG_VERSION 18
2026/09/30 10:52:04 update.go:1365: [INFO] [stacks] update outline: phase starting
2026/09/30 10:52:10 update.go:1365: [INFO] [stacks] update outline: phase verifying
2026/09/30 10:52:26 update.go:997: [INFO] [stacks] update outline: healthy after 15s (the app's health check passed)
2026/09/30 10:52:26 update.go:1015: [INFO] [stacks] update outline: KEEPING the pre-conversion datadir copy outline_outline_postgres_data.pre-update-20260930T105155Z (PostgreSQL 16) until a backup of the converted app is proven
2026/09/30 10:52:26 update.go:1033: [INFO] [stacks] update outline: DONE in 40s

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