before: pinned={'claper': 'ghcr.io/claperco/claper:2.5', 'claper-postgres': 'postgres:16-alpine'} PG_VERSION=16
drill: d14296c DRILL claper: claper-postgres postgres:16-alpine -> postgres:17-alpine with the engine_conversion mark (box proof)
  phase +0.0s backing-up | err=None
  phase +19.5s safety-dump | err=None
  phase +20.5s pulling | err=None
  phase +22.6s copying | err=None
  phase +33.8s converting | err=None
  phase +41.0s starting | err=None
  phase +42.0s verifying | err=None
  phase +47.2s done | err=None
    claper: readback — the seeded account authenticates=True
2026/09/28 08:53:43 update.go:536: [INFO] [stacks] update claper: accepted — guarded update started
2026/09/28 08:53:43 update.go:1365: [INFO] [stacks] update claper: phase checking
2026/09/28 08:53:43 update.go:786: [INFO] [stacks] update claper: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/28 08:53:43 update.go:800: [INFO] [stacks] update claper: this step CONVERTS claper-postgres PostgreSQL 16 → 17 (the ladder entry's mark); database volume claper_claper_postgres_data
2026/09/28 08:53:43 update.go:816: [INFO] [stacks] update claper: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-28T08:15:41Z) (found: none) — backing up first
2026/09/28 08:53:43 update.go:1365: [INFO] [stacks] update claper: phase backing-up
2026/09/28 08:54:01 update.go:831: [INFO] [stacks] update claper: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-28T08:53:43Z
2026/09/28 08:54:01 update.go:1365: [INFO] [stacks] update claper: phase safety-dump
2026/09/28 08:54:02 update.go:846: [INFO] [stacks] update claper: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/claper/db-dumps/pre-restore-20260928T085401Z-claper-postgres.sql]
2026/09/28 08:54:03 undo.go:287: [INFO] [stacks] update claper: the undo copy will hold 2 named volume(s), 47.8 MiB
2026/09/28 08:54:03 pgconvert.go:340: [INFO] [stacks] update claper: conversion space — database volume claper_claper_postgres_data is 48 MB; the dump needs up to 60 MB + the 2 GB floor; 27.7 GB free beside the stack dir
2026/09/28 08:54:03 update.go:1365: [INFO] [stacks] update claper: phase pinning
2026/09/28 08:54:03 pin.go:373: [INFO] [stacks] update claper: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/claper/docker-compose.yml (claper=ghcr.io/claperco/claper:2.5, claper-postgres=postgres:17-alpine)
2026/09/28 08:54:03 update.go:1365: [INFO] [stacks] update claper: phase pulling
2026/09/28 08:54:04 update.go:1365: [INFO] [stacks] update claper: phase copying
2026/09/28 08:54:15 update.go:1365: [INFO] [stacks] update claper: phase copying
2026/09/28 08:54:15 undo.go:437: [INFO] [stacks] update claper: copied claper_claper_postgres_data → claper_claper_postgres_data.pre-update-20260928T085415Z in 625ms
2026/09/28 08:54:15 update.go:1365: [INFO] [stacks] update claper: phase copying
2026/09/28 08:54:16 undo.go:437: [INFO] [stacks] update claper: copied claper_claper_uploads → claper_claper_uploads.pre-update-20260928T085415Z in 412ms
2026/09/28 08:54:16 update.go:1365: [INFO] [stacks] update claper: phase converting
2026/09/28 08:54:16 pgconvert.go:423: [INFO] [stacks] update claper: CONVERTING claper-postgres PostgreSQL 16 → 17 (volume claper_claper_postgres_data, kept copy claper_claper_postgres_data.pre-update-20260928T085415Z)
2026/09/28 08:54:17 pgconvert.go:468: [INFO] [stacks] update claper: pg_dumpall from 16 done in 544ms — 80 kB, completion line present; before: 2 database(s), 32 table(s), 52 row(s)
2026/09/28 08:54:18 update.go:1365: [INFO] [stacks] update claper: phase converting
2026/09/28 08:54:18 pgconvert.go:484: [INFO] [stacks] update claper: database volume claper_claper_postgres_data emptied (its copy claper_claper_postgres_data.pre-update-20260928T085415Z holds the old datadir, marker checked twice)
2026/09/28 08:54:23 pgconvert.go:513: [INFO] [stacks] update claper: loaded into 17 in 1.125s (dropped the entrypoint's empty database(s) [claper]; skipped CREATE ROLE for [claper])
2026/09/28 08:54:23 pgconvert.go:529: [INFO] [stacks] update claper: CONVERTED 16 → 17 in 7.244s — the check is equal (2 database(s), 32 table(s), 52 row(s)), PG_VERSION 17
2026/09/28 08:54:23 update.go:1365: [INFO] [stacks] update claper: phase starting
2026/09/28 08:54:24 update.go:1365: [INFO] [stacks] update claper: phase verifying
2026/09/28 08:54:30 update.go:997: [INFO] [stacks] update claper: healthy after 5s (the app's health check passed)
2026/09/28 08:54:30 update.go:1015: [INFO] [stacks] update claper: KEEPING the pre-conversion datadir copy claper_claper_postgres_data.pre-update-20260928T085415Z (PostgreSQL 16) until a backup of the converted app is proven
2026/09/28 08:54:30 update.go:1033: [INFO] [stacks] update claper: DONE in 47s

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