before: pinned={'tandoor': 'ghcr.io/tandoorrecipes/recipes:2.6.15', 'tandoor-postgres': 'postgres:16-alpine'} PG_VERSION=16
drill: 19b57b1 DRILL tandoor: tandoor-postgres postgres:16-alpine -> postgres:17-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 +10.3s converting | err=None
  phase +21.6s starting | err=None
  phase +22.6s verifying | err=None
  phase +52.3s done | err=None
    tandoor: readback of the seeded account found=True
2026/09/27 09:38:09 update.go:536: [INFO] [stacks] update tandoor: accepted — guarded update started
2026/09/27 09:38:09 update.go:1365: [INFO] [stacks] update tandoor: phase checking
2026/09/27 09:38:09 update.go:786: [INFO] [stacks] update tandoor: ladder — the last step (2 of 2) — the catalog's current definition
2026/09/27 09:38:09 update.go:800: [INFO] [stacks] update tandoor: this step CONVERTS tandoor-postgres PostgreSQL 16 → 17 (the ladder entry's mark); database volume tandoor_tandoor_postgres_data
2026/09/27 09:38:09 update.go:814: [INFO] [stacks] update tandoor: precondition met — Tier 1 (own recovery unit) copy from 2026-09-27T09:36:36Z (2m0s old, limit 24h0m0s)
2026/09/27 09:38:09 update.go:1365: [INFO] [stacks] update tandoor: phase safety-dump
2026/09/27 09:38:09 update.go:846: [INFO] [stacks] update tandoor: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/tandoor/db-dumps/pre-restore-20260927T093809Z-tandoor-postgres.sql]
2026/09/27 09:38:11 undo.go:287: [INFO] [stacks] update tandoor: the undo copy will hold 3 named volume(s), 141.0 MiB
2026/09/27 09:38:11 pgconvert.go:340: [INFO] [stacks] update tandoor: conversion space — database volume tandoor_tandoor_postgres_data is 53 MB; the dump needs up to 66 MB + the 2 GB floor; 27.7 GB free beside the stack dir
2026/09/27 09:38:11 update.go:1365: [INFO] [stacks] update tandoor: phase pinning
2026/09/27 09:38:11 pin.go:373: [INFO] [stacks] update tandoor: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/tandoor/docker-compose.yml (tandoor=ghcr.io/tandoorrecipes/recipes:2.6.15, tandoor-postgres=postgres:17-alpine)
2026/09/27 09:38:11 update.go:1365: [INFO] [stacks] update tandoor: phase pulling
2026/09/27 09:38:13 update.go:1365: [INFO] [stacks] update tandoor: phase copying
2026/09/27 09:38:16 update.go:1365: [INFO] [stacks] update tandoor: phase copying
2026/09/27 09:38:16 undo.go:437: [INFO] [stacks] update tandoor: copied tandoor_tandoor_media → tandoor_tandoor_media.pre-update-20260927T093816Z in 473ms
2026/09/27 09:38:16 update.go:1365: [INFO] [stacks] update tandoor: phase copying
2026/09/27 09:38:17 undo.go:437: [INFO] [stacks] update tandoor: copied tandoor_tandoor_postgres_data → tandoor_tandoor_postgres_data.pre-update-20260927T093816Z in 741ms
2026/09/27 09:38:17 update.go:1365: [INFO] [stacks] update tandoor: phase copying
2026/09/27 09:38:18 undo.go:437: [INFO] [stacks] update tandoor: copied tandoor_tandoor_static → tandoor_tandoor_static.pre-update-20260927T093816Z in 1.445s
2026/09/27 09:38:18 update.go:1365: [INFO] [stacks] update tandoor: phase converting
2026/09/27 09:38:18 pgconvert.go:423: [INFO] [stacks] update tandoor: CONVERTING tandoor-postgres PostgreSQL 16 → 17 (volume tandoor_tandoor_postgres_data, kept copy tandoor_tandoor_postgres_data.pre-update-20260927T093816Z)
2026/09/27 09:38:22 pgconvert.go:468: [INFO] [stacks] update tandoor: pg_dumpall from 16 done in 603ms — 330 kB, completion line present; before: 2 database(s), 100 table(s), 687 row(s)
2026/09/27 09:38:22 update.go:1365: [INFO] [stacks] update tandoor: phase converting
2026/09/27 09:38:23 pgconvert.go:484: [INFO] [stacks] update tandoor: database volume tandoor_tandoor_postgres_data emptied (its copy tandoor_tandoor_postgres_data.pre-update-20260927T093816Z holds the old datadir, marker checked twice)
2026/09/27 09:38:29 pgconvert.go:513: [INFO] [stacks] update tandoor: loaded into 17 in 3.111s (dropped the entrypoint's empty database(s) [tandoor]; skipped CREATE ROLE for [tandoor])
2026/09/27 09:38:30 pgconvert.go:529: [INFO] [stacks] update tandoor: CONVERTED 16 → 17 in 11.418s — the check is equal (2 database(s), 100 table(s), 687 row(s)), PG_VERSION 17
2026/09/27 09:38:30 update.go:1365: [INFO] [stacks] update tandoor: phase starting
2026/09/27 09:38:31 update.go:1365: [INFO] [stacks] update tandoor: phase verifying
2026/09/27 09:39:01 update.go:997: [INFO] [stacks] update tandoor: healthy after 30s (the app's health check passed)
2026/09/27 09:39:01 update.go:1015: [INFO] [stacks] update tandoor: KEEPING the pre-conversion datadir copy tandoor_tandoor_postgres_data.pre-update-20260927T093816Z (PostgreSQL 16) until a backup of the converted app is proven
2026/09/27 09:39:01 update.go:1033: [INFO] [stacks] update tandoor: DONE in 52s

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