From 46affe00d48d4a634f52c3139071e58607ec14cb Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 27 Sep 2026 12:08:57 +0200 Subject: [PATCH] paperless-ngx: PostgreSQL 16 -> 18, converted by the box (09 decision 42) Written by upgrade-test.py --write-ladder: bench (LXC 9401, harness v4) converted in 35.4 s, check equal over 72 tables, seed read back, 10-min memory watch (anon peak 40.0 %, 0 kills); box 9202 converted through the product's guarded Update (controller 0.275.0-rc1) in 64.6 s, seed read back. Mount -> /var/lib/postgresql (18). Evidence felhom.eu/documentation/audits/version-travel-2026-09-26/B/. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- templates/paperless-ngx/.felhom.yml | 8 +++++++- templates/paperless-ngx/docker-compose.yml | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/templates/paperless-ngx/.felhom.yml b/templates/paperless-ngx/.felhom.yml index a8e13d5..d66a2c8 100644 --- a/templates/paperless-ngx/.felhom.yml +++ b/templates/paperless-ngx/.felhom.yml @@ -26,7 +26,7 @@ subdomain: "paperless" # -> paperless. slug: "paperless-ngx" # catalog_since: the date THIS repo last changed this app's pinned images. Any commit that # changes an image: line must set this to the same day (see CLAUDE.md). -catalog_since: "2026-07-18" +catalog_since: "2026-09-27" # --- Resource hints (displayed on deploy screen) --- resources: @@ -241,3 +241,9 @@ i18n: prerequisites: - 'An external hard drive is recommended to keep the documents on' - 'At least 1 GB of free RAM (for the OCR work)' + +# update_ladder — the test record: one tested step per line, oldest first (JSON flow mappings, +# `09-update-architecture.md` §6.4 part 4). WRITTEN BY scripts/upgrade-test.py, never by hand; +# gated by scripts/check-test-record.py. An image: move without a proven entry here is refused. +update_ladder: + - {"from": {"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15", "paperless-postgres": "postgres:16-alpine", "paperless-redis": "redis:7-alpine"}, "to": {"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15", "paperless-postgres": "postgres:18-alpine", "paperless-redis": "redis:7-alpine"}, "digest": {"paperless-postgres": "sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873", "paperless-redis": "sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499", "paperless-webserver": "sha256:6c86cad803970ea782683a8e80e7403444c5bf3cf70de63b4d3c8e87500db92f"}, "verdict": "proven", "tested_at": "2026-09-27T09:50:50Z", "harness_version": 4, "evidence": "felhom.eu/documentation/audits/version-travel-2026-09-26/B/apps/paperless-ngx/bench/evidence/MV-paperless-ngx/verdict.json", "box_evidence": "felhom.eu/documentation/audits/version-travel-2026-09-26/B/apps/paperless-ngx/box/box-verdict-paperless-ngx.json", "memory_peak_pct": 40.0, "marks": {"files_may_change": false, "needs_person": null, "memory_tight": false}, "memory_basis": "anon", "memory_cgroup_peak_pct": 72.0, "engine_conversion": {"service": "paperless-postgres", "engine": "postgres", "from": 16, "to": 18}} diff --git a/templates/paperless-ngx/docker-compose.yml b/templates/paperless-ngx/docker-compose.yml index 546eec4..9f3dd3a 100644 --- a/templates/paperless-ngx/docker-compose.yml +++ b/templates/paperless-ngx/docker-compose.yml @@ -94,7 +94,7 @@ services: - "traefik.http.services.paperless.loadbalancer.server.port=8000" paperless-postgres: - image: postgres:16-alpine + image: postgres:18-alpine container_name: paperless-postgres restart: unless-stopped environment: @@ -103,7 +103,7 @@ services: - POSTGRES_DB=paperless - TZ=Europe/Budapest volumes: - - paperless_postgres_data:/var/lib/postgresql/data + - paperless_postgres_data:/var/lib/postgresql networks: - paperless-internal deploy: