From 42bf40bd2c095c47d4618fa0b9b6771561d41ae0 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 30 Sep 2026 20:27:28 +0200 Subject: [PATCH] More apps update themselves at night (30+2 -> 35+3); the same-name security-fix gap measured (R-740, decision for the operator) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Twelve steps published on both venues (catalog): first ladders for calibre-web, gitea, wger, crafty-controller, uptime-kuma, zipline (two steps); within-major emby, ghost, home-assistant, outline, rallly. immich's step v3.0.3 -> v3.2.2 re-proven at 768M (Part D). - Part C: the night leg skips a digest-only change AND the catalog never records a same-tag re-test, so a same-name upstream fix reaches no box. Row R-740; the decision in STATUS; `09` decision 30 carries a dated note (the decision itself unchanged). - Rows: 369 -> 377. Opened R-735..R-742; closed R-735, R-738, R-742; narrowed R-462, R-624, R-446, R-440, R-734, R-732. The currency audit gains §1b (and corrects its 31+1 to 30+2). Evidence: documentation/audits/more-night-apps-2026-09-30/. Report: REPORT-more-night-apps-2026-09-30.md. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- CONTEXT.md | 14 + REPORT-more-night-apps-2026-09-30.md | 56 + STATUS.md | 76 +- .../architecture/09-update-architecture.md | 6 + .../audits/catalog-currency-2026-09-30.md | 11 + .../00-upstream-recheck.txt | 16 + .../A/A3-calibre-default-login-window.txt | 15 + .../A/R735-green.txt | 83 + .../more-night-apps-2026-09-30/A/R735-red.txt | 17 + .../A/calibre-names-run.txt | 1 + .../A/calibre-names/MV-calibre-names.log | 1 + .../A/calibre-names/N-calibre.log | 61 + .../evidence/N-calibre-web/abort-states.json | 8 + .../evidence/N-calibre-web/compose-final.log | 198 ++ .../evidence/N-calibre-web/engine-state.json | 1 + .../N-calibre-web/files-after-detail.json | 11 + .../evidence/N-calibre-web/files-after.json | 4 + .../N-calibre-web/files-before-detail.json | 11 + .../evidence/N-calibre-web/files-before.json | 4 + .../N-calibre-web/migration-lines.txt | 6 + .../evidence/N-calibre-web/run.log | 21 + .../evidence/N-calibre-web/to-full.log | 189 ++ .../evidence/N-calibre-web/to-states.json | 8 + .../evidence/N-calibre-web/verdict.json | 40 + .../B/wanderer-probe-teardown.txt | 2 + .../B/wanderer-probe.txt | 8 + .../B/wger-probe.txt | 15 + .../C/C1-digests-demo-hp-9201.txt | 31 + .../C/C2-unit-walk-run.txt | 20 + .../C/C2-unit-walk_test.go.txt | 78 + .../C/C3-floating-repush.txt | 60 + .../C/C4-same-tag-retest.txt | 5 + .../more-night-apps-2026-09-30/D/D-immich.log | 169 ++ .../D/D1-hub-immich.txt | 162 ++ .../D/D2-geodata-per-image.txt | 36 + .../D/D3-bench-run.txt | 6 + .../D-immich-0b82-768/abort-refusal.txt | 110 + .../D-immich-0b82-768/abort-states.json | 26 + .../D-immich-0b82-768/compose-final.log | 487 ++++ .../D-immich-0b82-768/engine-state.json | 8 + .../D-immich-0b82-768/files-after-detail.json | 11 + .../D-immich-0b82-768/files-after.json | 4 + .../files-before-detail.json | 11 + .../D-immich-0b82-768/files-before.json | 4 + .../D-immich-0b82-768/memory-samples.json | 2002 +++++++++++++++++ .../D-immich-0b82-768/migration-lines.txt | 6 + .../D/evidence/D-immich-0b82-768/run.log | 60 + .../D/evidence/D-immich-0b82-768/to-full.log | 566 +++++ .../evidence/D-immich-0b82-768/to-states.json | 26 + .../D/evidence/D-immich-0b82-768/verdict.json | 109 + .../D/template-immich@0b82-768/.felhom.yml | 144 ++ .../docker-compose.yml | 146 ++ .../more-night-apps-2026-09-30/README.md | 72 + .../bench/B1-bench-create.txt | 35 + .../bench/B8-bench-images-removed-by-name.txt | 31 + .../bench/B9-bench-destroy.txt | 10 + .../MV-calibre-web-attempt1-fixture-fault.log | 36 + .../bench/MV-calibre-web-attempt2-R735.log | 37 + .../apps/calibre-web/bench/MV-calibre-web.log | 119 + .../compose-final.log | 194 ++ .../run.log | 7 + .../verdict.json | 29 + .../compose-final.log | 194 ++ .../MV-calibre-web-attempt2-R735/run.log | 7 + .../MV-calibre-web-attempt2-R735/verdict.json | 30 + .../evidence/MV-calibre-web/abort-states.json | 8 + .../evidence/MV-calibre-web/compose-final.log | 198 ++ .../evidence/MV-calibre-web/engine-state.json | 1 + .../evidence/MV-calibre-web/files-after.json | 4 + .../evidence/MV-calibre-web/files-before.json | 4 + .../MV-calibre-web/memory-samples.json | 682 ++++++ .../MV-calibre-web/migration-lines.txt | 6 + .../bench/evidence/MV-calibre-web/run.log | 62 + .../bench/evidence/MV-calibre-web/to-full.log | 189 ++ .../evidence/MV-calibre-web/to-states.json | 8 + .../evidence/MV-calibre-web/verdict.json | 57 + .../bench/MV-crafty-controller.log | 109 + .../MV-crafty-controller/abort-states.json | 8 + .../MV-crafty-controller/compose-final.log | 40 + .../MV-crafty-controller/engine-state.json | 1 + .../MV-crafty-controller/files-after.json | 1 + .../MV-crafty-controller/files-before.json | 1 + .../MV-crafty-controller/memory-samples.json | 682 ++++++ .../MV-crafty-controller/migration-lines.txt | 1 + .../evidence/MV-crafty-controller/run.log | 58 + .../evidence/MV-crafty-controller/to-full.log | 32 + .../MV-crafty-controller/to-states.json | 8 + .../MV-crafty-controller/verdict.json | 51 + .../bench/apps/emby/bench/MV-emby.log | 111 + .../bench/evidence/MV-emby/abort-states.json | 8 + .../bench/evidence/MV-emby/compose-final.log | 259 +++ .../bench/evidence/MV-emby/engine-state.json | 1 + .../bench/evidence/MV-emby/files-after.json | 3 + .../bench/evidence/MV-emby/files-before.json | 3 + .../evidence/MV-emby/memory-samples.json | 682 ++++++ .../evidence/MV-emby/migration-lines.txt | 3 + .../apps/emby/bench/evidence/MV-emby/run.log | 58 + .../emby/bench/evidence/MV-emby/to-full.log | 285 +++ .../bench/evidence/MV-emby/to-states.json | 8 + .../emby/bench/evidence/MV-emby/verdict.json | 53 + .../bench/apps/ghost/bench/MV-ghost.log | 109 + .../bench/evidence/MV-ghost/abort-states.json | 8 + .../bench/evidence/MV-ghost/compose-final.log | 26 + .../bench/evidence/MV-ghost/engine-state.json | 1 + .../bench/evidence/MV-ghost/files-after.json | 1 + .../bench/evidence/MV-ghost/files-before.json | 1 + .../evidence/MV-ghost/memory-samples.json | 682 ++++++ .../evidence/MV-ghost/migration-lines.txt | 3 + .../ghost/bench/evidence/MV-ghost/run.log | 58 + .../ghost/bench/evidence/MV-ghost/to-full.log | 35 + .../bench/evidence/MV-ghost/to-states.json | 8 + .../bench/evidence/MV-ghost/verdict.json | 51 + .../bench/apps/gitea/bench/MV-gitea.log | 110 + .../bench/evidence/MV-gitea/abort-refusal.txt | 40 + .../bench/evidence/MV-gitea/abort-states.json | 8 + .../bench/evidence/MV-gitea/compose-final.log | 466 ++++ .../bench/evidence/MV-gitea/engine-state.json | 1 + .../bench/evidence/MV-gitea/files-after.json | 1 + .../bench/evidence/MV-gitea/files-before.json | 1 + .../evidence/MV-gitea/memory-samples.json | 682 ++++++ .../evidence/MV-gitea/migration-lines.txt | 0 .../gitea/bench/evidence/MV-gitea/run.log | 59 + .../gitea/bench/evidence/MV-gitea/to-full.log | 43 + .../bench/evidence/MV-gitea/to-states.json | 8 + .../bench/evidence/MV-gitea/verdict.json | 51 + .../bench/MV-home-assistant.log | 110 + .../MV-home-assistant/abort-states.json | 8 + .../MV-home-assistant/compose-final.log | 13 + .../MV-home-assistant/engine-state.json | 1 + .../MV-home-assistant/files-after.json | 1 + .../MV-home-assistant/files-before.json | 1 + .../MV-home-assistant/memory-samples.json | 682 ++++++ .../MV-home-assistant/migration-lines.txt | 0 .../bench/evidence/MV-home-assistant/run.log | 58 + .../evidence/MV-home-assistant/to-full.log | 12 + .../evidence/MV-home-assistant/to-states.json | 8 + .../evidence/MV-home-assistant/verdict.json | 52 + .../bench/apps/outline/bench/MV-outline.log | 146 ++ .../evidence/MV-outline/abort-states.json | 20 + .../evidence/MV-outline/compose-final.log | 90 + .../evidence/MV-outline/engine-state.json | 8 + .../MV-outline/files-after-detail.json | 1 + .../evidence/MV-outline/files-after.json | 1 + .../MV-outline/files-before-detail.json | 1 + .../evidence/MV-outline/files-before.json | 1 + .../evidence/MV-outline/memory-samples.json | 1562 +++++++++++++ .../evidence/MV-outline/migration-lines.txt | 6 + .../outline/bench/evidence/MV-outline/run.log | 60 + .../bench/evidence/MV-outline/to-full.log | 99 + .../bench/evidence/MV-outline/to-states.json | 20 + .../bench/evidence/MV-outline/verdict.json | 86 + .../bench/apps/rallly/bench/MV-rallly.log | 133 ++ .../evidence/MV-rallly/abort-states.json | 14 + .../evidence/MV-rallly/compose-final.log | 82 + .../evidence/MV-rallly/engine-state.json | 8 + .../MV-rallly/files-after-detail.json | 1 + .../bench/evidence/MV-rallly/files-after.json | 1 + .../MV-rallly/files-before-detail.json | 1 + .../evidence/MV-rallly/files-before.json | 1 + .../evidence/MV-rallly/memory-samples.json | 1122 +++++++++ .../evidence/MV-rallly/migration-lines.txt | 6 + .../rallly/bench/evidence/MV-rallly/run.log | 61 + .../bench/evidence/MV-rallly/to-full.log | 154 ++ .../bench/evidence/MV-rallly/to-states.json | 14 + .../bench/evidence/MV-rallly/verdict.json | 72 + .../apps/uptime-kuma/bench/MV-uptime-kuma.log | 110 + .../evidence/MV-uptime-kuma/abort-states.json | 8 + .../evidence/MV-uptime-kuma/compose-final.log | 18 + .../evidence/MV-uptime-kuma/engine-state.json | 1 + .../evidence/MV-uptime-kuma/files-after.json | 1 + .../evidence/MV-uptime-kuma/files-before.json | 1 + .../MV-uptime-kuma/memory-samples.json | 682 ++++++ .../MV-uptime-kuma/migration-lines.txt | 0 .../bench/evidence/MV-uptime-kuma/run.log | 59 + .../bench/evidence/MV-uptime-kuma/to-full.log | 16 + .../evidence/MV-uptime-kuma/to-states.json | 8 + .../evidence/MV-uptime-kuma/verdict.json | 51 + .../bench/apps/wger/bench/MV-wger.log | 111 + .../bench/evidence/MV-wger/abort-states.json | 8 + .../bench/evidence/MV-wger/compose-final.log | 362 +++ .../bench/evidence/MV-wger/engine-state.json | 1 + .../bench/evidence/MV-wger/files-after.json | 1 + .../bench/evidence/MV-wger/files-before.json | 1 + .../evidence/MV-wger/memory-samples.json | 682 ++++++ .../evidence/MV-wger/migration-lines.txt | 6 + .../apps/wger/bench/evidence/MV-wger/run.log | 60 + .../wger/bench/evidence/MV-wger/to-full.log | 133 ++ .../bench/evidence/MV-wger/to-states.json | 8 + .../wger/bench/evidence/MV-wger/verdict.json | 51 + .../zipline/bench/MV-zipline-attempt1-429.log | 37 + .../MV-zipline-attempt2-4.8.0-FAILED.log | 55 + .../zipline/bench/MV-zipline-step1-4.7.0.log | 131 ++ .../MV-zipline-step2-attempt1-pullfault.log | 32 + ...V-zipline-step2-attempt2-benchdiskfull.log | 32 + .../bench/apps/zipline/bench/MV-zipline.log | 131 ++ .../MV-zipline-attempt1-429/compose-final.log | 89 + .../evidence/MV-zipline-attempt1-429/run.log | 8 + .../MV-zipline-attempt1-429/verdict.json | 29 + .../abort-states.json | 14 + .../compose-final.log | 66 + .../engine-state.json | 8 + .../files-after-detail.json | 1 + .../files-after.json | 1 + .../files-before-detail.json | 1 + .../files-before.json | 1 + .../migration-lines.txt | 6 + .../MV-zipline-attempt2-4.8.0-FAILED/run.log | 17 + .../to-full.log | 360 +++ .../to-states.json | 14 + .../verdict.json | 38 + .../MV-zipline-step1-4.7.0/abort-states.json | 14 + .../MV-zipline-step1-4.7.0/compose-final.log | 95 + .../MV-zipline-step1-4.7.0/engine-state.json | 8 + .../files-after-detail.json | 1 + .../MV-zipline-step1-4.7.0/files-after.json | 1 + .../files-before-detail.json | 1 + .../MV-zipline-step1-4.7.0/files-before.json | 1 + .../memory-samples.json | 1122 +++++++++ .../migration-lines.txt | 0 .../evidence/MV-zipline-step1-4.7.0/run.log | 59 + .../MV-zipline-step1-4.7.0/to-full.log | 89 + .../MV-zipline-step1-4.7.0/to-states.json | 14 + .../MV-zipline-step1-4.7.0/verdict.json | 72 + .../compose-final.log | 0 .../run.log | 3 + .../verdict.json | 29 + .../compose-final.log | 0 .../run.log | 3 + .../verdict.json | 29 + .../evidence/MV-zipline/abort-states.json | 14 + .../evidence/MV-zipline/compose-final.log | 66 + .../evidence/MV-zipline/engine-state.json | 8 + .../MV-zipline/files-after-detail.json | 1 + .../evidence/MV-zipline/files-after.json | 1 + .../MV-zipline/files-before-detail.json | 1 + .../evidence/MV-zipline/files-before.json | 1 + .../evidence/MV-zipline/memory-samples.json | 1122 +++++++++ .../evidence/MV-zipline/migration-lines.txt | 0 .../zipline/bench/evidence/MV-zipline/run.log | 59 + .../bench/evidence/MV-zipline/to-full.log | 62 + .../bench/evidence/MV-zipline/to-states.json | 14 + .../bench/evidence/MV-zipline/verdict.json | 72 + .../bench/benchq-q1.txt | 5 + .../bench/benchq-q2.txt | 9 + .../bench/benchq-q3.txt | 9 + .../bench/benchq-q4.txt | 16 + .../bench/benchq-q5.txt | 9 + .../bench/benchq-q6.txt | 3 + .../bench/benchq-q7.txt | 9 + .../box/B0-drill-reset.txt | 5 + .../box/B1-repoint-drill.txt | 10 + .../box/T1-remove-first-batch.txt | 11 + .../box/T2-images-removed-by-name.txt | 51 + .../box/T3-remove-second-batch.txt | 7 + .../box/T4-remove-third-batch.txt | 5 + .../box/T5-teardown-9202.txt | 36 + .../box/T6-repoint-live.txt | 9 + .../box/T7-drill-reset.txt | 27 + .../box/calibre-web-files-after.txt | 7 + .../box/calibre-web-files-before.txt | 12 + .../box/calibre-web-files-diff.txt | 2 + .../calibre-web/box-verdict-calibre-web.json | 18 + .../box/calibre-web/prep.txt | 7 + .../box/calibre-web/step.txt | 29 + .../box-verdict-crafty-controller.json | 18 + .../box/crafty-controller/prep.txt | 4 + .../box/crafty-controller/step.txt | 39 + .../box/emby/box-verdict-emby.json | 18 + .../box/emby/prep.txt | 4 + .../box/emby/step.txt | 30 + .../box/ghost/box-verdict-ghost.json | 18 + .../box/ghost/prep.txt | 4 + .../box/ghost/step.txt | 29 + .../box/gitea/box-verdict-gitea.json | 18 + .../box/gitea/prep.txt | 6 + .../box/gitea/remove.txt | 3 + .../box/gitea/step.txt | 30 + .../box-verdict-home-assistant.json | 18 + .../box/home-assistant/prep.txt | 4 + .../box/home-assistant/step.txt | 29 + .../box/outline/box-verdict-outline.json | 22 + .../box/outline/prep.txt | 5 + .../box/outline/step.txt | 35 + .../box/rallly/box-verdict-rallly.json | 20 + .../box/rallly/prep.txt | 6 + .../box/rallly/step.txt | 31 + .../uptime-kuma/box-verdict-uptime-kuma.json | 18 + .../box/uptime-kuma/prep.txt | 5 + .../box/uptime-kuma/step.txt | 29 + .../box/wger/after-500-log.txt | 11 + .../box/wger/after-500-recheck.txt | 11 + ...box-verdict-wger-attempt1-FAILED-R738.json | 18 + .../box-verdict-wger-attempt3-invalid.json | 18 + .../box/wger/box-verdict-wger.json | 18 + .../box/wger/entrypoint-read.txt | 25 + .../box/wger/migrations-ran.txt | 6 + .../box/wger/prep-attempt1-disk-refused.txt | 1 + .../box/wger/prep-attempt2-before-fix.txt | 4 + .../prep-attempt3-deployed-2.7-stale-sync.txt | 4 + .../box/wger/prep.txt | 4 + .../box/wger/step-attempt1-FAILED-R738.txt | 33 + .../box/wger/step-attempt3-invalid.txt | 6 + .../box/wger/step.txt | 32 + .../attempt1-4.8.0-box-verdict-zipline.json | 20 + .../box/zipline/attempt1-4.8.0-prep.txt | 3 + .../box/zipline/attempt1-4.8.0-step.txt | 40 + .../box/zipline/box-verdict-zipline.json | 20 + .../box/zipline/prep.txt | 4 + .../box/zipline/step.txt | 32 + .../step1-4.7.0-box-verdict-zipline.json | 20 + .../box/zipline/step1-4.7.0-step.txt | 35 + .../count/04-analyse-4c552cf.txt | 26 + .../count/04-analyse-fb87030.txt | 26 + .../count/05-summary-4c552cf.json | 239 ++ .../count/05-summary-fb87030.json | 251 +++ .../tools/benchq.py | 48 + .../tools/benchsync.sh | 10 + .../tools/boxmove.py | 58 + .../tools/boxstep.py | 76 + .../tools/digestread.py | 24 + .../tools/floatpush.py | 50 + .../more-night-apps-2026-09-30/tools/names.py | 10 + .../more-night-apps-2026-09-30/tools/partd.py | 15 + .../tools/probe_up.sh | 16 + .../more-night-apps-2026-09-30/tools/q4.sh | 48 + .../more-night-apps-2026-09-30/tools/q5.sh | 18 + .../tools/recheck.py | 19 + .../tools/repoint.py | 60 + .../tools/undocase.py | 62 + .../more-night-apps-2026-09-30/tools/walk.py | 560 +++++ documentation/backlog/OPEN-ITEMS.md | 20 +- 331 files changed, 25953 insertions(+), 25 deletions(-) create mode 100644 REPORT-more-night-apps-2026-09-30.md create mode 100644 documentation/audits/more-night-apps-2026-09-30/00-upstream-recheck.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/A3-calibre-default-login-window.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/R735-green.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/R735-red.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names-run.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/MV-calibre-names.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/N-calibre.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe-teardown.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/B/wger-probe.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/C/C1-digests-demo-hp-9201.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk-run.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk_test.go.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/C/C3-floating-repush.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/C/C4-same-tag-retest.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/D-immich.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/D1-hub-immich.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/D2-geodata-per-image.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/D3-bench-run.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-refusal.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/.felhom.yml create mode 100644 documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/docker-compose.yml create mode 100644 documentation/audits/more-night-apps-2026-09-30/README.md create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/B1-bench-create.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/B8-bench-images-removed-by-name.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/B9-bench-destroy.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt1-fixture-fault.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt2-R735.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/MV-crafty-controller.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/MV-emby.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/MV-ghost.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/MV-gitea.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-refusal.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/MV-home-assistant.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/MV-outline.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/MV-rallly.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/MV-uptime-kuma.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/MV-wger.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt1-429.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt2-4.8.0-FAILED.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step1-4.7.0.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt1-pullfault.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt2-benchdiskfull.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/abort-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/compose-final.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/engine-state.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before-detail.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/memory-samples.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/migration-lines.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/run.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-full.log create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-states.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/verdict.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q1.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q2.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q3.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q4.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q5.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q6.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/bench/benchq-q7.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/B0-drill-reset.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/B1-repoint-drill.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T1-remove-first-batch.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T2-images-removed-by-name.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T3-remove-second-batch.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T4-remove-third-batch.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T5-teardown-9202.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T6-repoint-live.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/T7-drill-reset.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-after.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-before.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-diff.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web/box-verdict-calibre-web.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/calibre-web/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/box-verdict-crafty-controller.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/emby/box-verdict-emby.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/emby/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/emby/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/ghost/box-verdict-ghost.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/ghost/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/ghost/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/gitea/box-verdict-gitea.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/gitea/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/gitea/remove.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/gitea/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/home-assistant/box-verdict-home-assistant.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/home-assistant/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/home-assistant/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/outline/box-verdict-outline.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/outline/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/outline/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/rallly/box-verdict-rallly.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/rallly/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/rallly/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/box-verdict-uptime-kuma.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-log.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-recheck.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt1-FAILED-R738.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt3-invalid.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/entrypoint-read.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/migrations-ran.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt1-disk-refused.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt2-before-fix.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt3-deployed-2.7-stale-sync.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt1-FAILED-R738.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt3-invalid.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-box-verdict-zipline.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/box-verdict-zipline.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/prep.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-box-verdict-zipline.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-step.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/count/04-analyse-4c552cf.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/count/04-analyse-fb87030.txt create mode 100644 documentation/audits/more-night-apps-2026-09-30/count/05-summary-4c552cf.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/count/05-summary-fb87030.json create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/benchq.py create mode 100755 documentation/audits/more-night-apps-2026-09-30/tools/benchsync.sh create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/boxmove.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/boxstep.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/digestread.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/floatpush.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/names.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/partd.py create mode 100755 documentation/audits/more-night-apps-2026-09-30/tools/probe_up.sh create mode 100755 documentation/audits/more-night-apps-2026-09-30/tools/q4.sh create mode 100755 documentation/audits/more-night-apps-2026-09-30/tools/q5.sh create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/recheck.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/repoint.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/undocase.py create mode 100644 documentation/audits/more-night-apps-2026-09-30/tools/walk.py diff --git a/CONTEXT.md b/CONTEXT.md index 333de3c6..cfd8b793 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -16,6 +16,20 @@ > and holds nothing of its own; this file does hold its own content, namely the standing rulings below. +> **2026-09-30 (evening) — more night-updatable apps; the same-name fix gap measured (R-740, operator decision).** +> Catalog: first ladders for calibre-web, gitea (its installer form, R-624), wger, crafty-controller, uptime-kuma, zipline +> (4.6.1 → 4.7.0 → 4.8.0 — 4.8.0 refuses a database that skipped 4.7.x, R-742; the box UNDID the direct jump by itself); +> within-major steps emby, ghost, home-assistant, outline, rallly. Night (a) 30 + 2 → 34 + 3 (calibre-web conditional: +> its library `metadata.db` changes). wger ran no migrations on update → login 500 behind a `done` Update; fixed in the +> template (`DJANGO_PERFORM_MIGRATIONS=True`, R-738 closed). immich's step 0b82… re-proven at 768M and rewritten by the +> new `upgrade-test.py --restep` (Part D). Harness: 5 fixtures, HTTPS backends on the bench, per-file names behind +> `files_may_change`, bench `password:N:special` (R-735 closed). **Part C (R-740):** the night leg skips a digest-only +> change (`unattended.go:433–435`), AND the catalog never records a same-tag re-test (writer refuses "nothing moves"), so a +> same-name upstream fix reaches no box; a unit walk shows the leg WOULD take a same-tag re-test entry with no controller +> change. `09` decision 30 carries a dated note. New rows R-736 (images never deleted → disk fills), R-737 (wger app-login +> 500, no JWT key), R-739 (bench cannot run wanderer), R-741 (after_install's default-login window, measured 1–18 s). +> Evidence: `documentation/audits/more-night-apps-2026-09-30/`. Report: `REPORT-more-night-apps-2026-09-30.md`. + > **2026-09-30 (late afternoon) — immich's first start (R-732 CLOSED).** Cause measured: the first-start geodata import > runs up to 9 concurrent 5000-row INSERTs; the database needs ~400 MB anon + ~170 MB touched shared_buffers (the image's > fixed 512MB) — over a 512M limit without swap (bench: 61–104 kills), survivable only by swapping (9202). An update that diff --git a/REPORT-more-night-apps-2026-09-30.md b/REPORT-more-night-apps-2026-09-30.md new file mode 100644 index 00000000..d7e8ed74 --- /dev/null +++ b/REPORT-more-night-apps-2026-09-30.md @@ -0,0 +1,56 @@ +# REPORT — more apps that update themselves (2026-09-30, evening, by day) + +Evidence: `documentation/audits/more-night-apps-2026-09-30/` (README there has the per-app table). Architecture read: +`architecture/09-update-architecture.md` §3 decisions 6, 13, 14, 17, 22, 30, §6.4 parts 4–7, §6.5. + +## The Part table + +| Part | done / not done / changed | why | +|---|---|---| +| **A1 calibre-web** | **done** — v4.0.6 → v4.0.8, first ladder `53a4a1d` | front door = the Upload button (HTTP form), read back through OPDS + the served EPUB. The ingest folder was NOT used (it would be a file planted in a mount). `files_may_change`: the library DB `metadata.db` (+`-shm`, `-wal`) in the books folder; the book file did not change | +| **A2 gitea** | **done** — 1.27.0 → 1.27.3, first ladder `d7ba60c` | the installer-form POST (no CSRF on that form), through the setup gate on the box. 28.0.0 not touched | +| **B1 emby, ghost, home-assistant** | **done** — `3e4aa77`, `9a78e3b`, `15f4d59` | each had a newer tag inside its line (re-checked) | +| **B2 uptime-kuma, wger, crafty-controller** | **done** — `35dd5cf`, `4ad32aa` (+ fix `7a4ff48`), `e1f0179` | new fixtures; wger needed a template fix first (R-738) | +| **B2 wanderer** | **not done** | the bench cannot run it at all: its web server calls the DB at a public https name (R-739). The meilisearch question is NOT measured | +| **B3 time left** | **done** — outline `b0b2514`, rallly `8d3a35a`, zipline 4.6.1 → 4.7.0 `a9700e2` → 4.8.0 `fb87030` | zipline 4.8.0 refuses a database that skipped 4.7.x (R-742); the box undid the direct jump itself | +| **C the same-name fix gap** | **done** — row R-740, STATUS decision, `09` decision 30 dated note | measured from source, a unit walk, the registry and demo-hp; **nothing built** | +| **D immich's older step** | **done (changed)** — re-proven at 768M, step files rewritten `48440ce` | the brief's route needed a writer mode that did not exist → `upgrade-test.py --restep` `63a96b0`, with tests | + +**Night-updatable apps (the audit's method (a)): 30 + 2 conditional at the start → 35 + 3 conditional** (38 carry a proven step; 15 have no ladder). + +## Claims in the brief that turned out wrong + +1. **"Night-updatable: 31 (+ nextcloud conditional)"** — at the session's start it was **30 + 2 conditional**: the + afternoon's immich step carries `files_may_change` (R-734), so immich counts as conditional. +2. **"Register 366 rows"** — **369**: the afternoon session added R-732..R-734 after STATUS said 366. +3. **"calibre-web and gitea have no ladder"** — true. +4. **"gitea's fixture fails at the installer"** — true (`MustInstalled`); the installer form works headless. +5. **"The leg never presses a digest-only change"** — true (`unattended.go:433–435`). But the larger fact is that the + catalog never records a same-tag re-test at all, so the Update button does not deliver it either (R-740). +6. **"Decision 30's text says the leg would"** — true: „until someone (or the automatic leg) presses Update". +7. **"immich's 0b82… step pins 512M"** — true. **"The writer rewrites the step file"** — it could not (it writes a + step file only once, when a step is superseded); `--restep` was added. +8. **"No real box runs immich v3.0.3"** — true and stronger: no box reporting to the hub runs immich at all + (hub `/apps`, positive control bookstack = 2 deployments). +9. **"wger: behind inside the major"** and **"crafty/uptime-kuma/wanderer need a new fixture"** — true; wanderer + cannot be run on the bench at all. + +## Rows + +Before **369**, after **377**. Opened: R-735 (bench password shape — closed), R-736 (old images never deleted), +R-737 (wger app-login 500), R-738 (wger migrations — closed), R-739 (bench cannot run wanderer), R-740 (same-name fix — +decision), R-741 (after_install default-login window), R-742 (zipline needs 4.7.x first — closed). Narrowed: R-462, R-624, R-446, +R-440, R-734, R-732 (note). Closed: R-735, R-738, R-742. + +## Teardown + +Three layers: +- **Machine.** Scratch guest 9202: every app this session installed removed through the product (calibre-web twice, + gitea, emby, ghost, home-assistant, wger ×3, crafty-controller, uptime-kuma, outline, rallly, zipline ×3); their images + and older drill leftovers removed **by name** (53 GB freed at 17:43 when the disk refused an install — R-736); pointed + back at the live catalog and its `update:` override removed (`box/T6`, `repo_url` read back); the same six containers + run as at the start. Bench LXC 9401: evidence copied off after every run, its images removed by name once (disk full), + then destroyed with its template (`bench/B9`). Drill catalog: force-reset to live `main` `fb87030` (operator-allowed), + image lines identical (`box/T7`). +- **Host.** demo-hp: `pct list` shows 9201 and 9202 only, as at the start. +- **Hub.** Read only (`/hosts`, `/apps`); nothing provisioned. diff --git a/STATUS.md b/STATUS.md index 7f3770a3..bd7c7182 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,27 +2,65 @@ **Ready for the first real tester (Tester-2): yes. You confirmed the tunnel route and the connect mails (2026-09-30).** -**Updated 2026-09-30 (late afternoon). Both demo boxes run controller 0.283.1 and host agent 0.138.0. Hub 0.126.0. New installs get golden 0.283.1 with agent 0.138.0. No new release today.** +**Updated 2026-09-30 (evening). Both demo boxes run controller 0.283.1 and host agent 0.138.0. Hub 0.126.0. New installs get golden 0.283.1 with agent 0.138.0. No controller, agent or hub release today.** -**Tester-2 — read only, from the hub.** -- The customer record exists and its settings are ready. -- **Tester-2's box has not registered yet.** So there are no apps and no update switch to read. -- When Tester-2 installs an app, the box updates it at night by itself, like the demo boxes. +**Tester-2 — read only, from the hub.** The customer record exists. Tester-2's box has not registered yet, so there are no apps to read. -**Decisions today:** none taken by me. The "seed test data through the database" choice was **not needed**, so it is not recorded. +## One decision for you -**What I did, and it worked.** -- **The last six database apps are decided.** Three moved to the newer database version (rallly, outline, sparkyfitness). Each was tested on the test bench and on the scratch box, and each one's automatic undo was tested too. Three stay where they are (zipline, adventurelog, immich), because their makers use the same or an older version. **All eleven database apps are now done.** -- **More apps can update themselves at night:** 31 apps (plus nextcloud when a full copy exists), up from 28 this morning. Seven more apps got a newer version today, each tested on the bench and on the scratch box: bookstack, kimai, audiobookshelf, n8n, navidrome, grafana, komga. -- **immich is fixed and updated (afternoon).** On its first start, immich loads a big list of places into its database, 9 parts at once. That needs about 575 MB. Its database had only 512 MB. A box without swap space killed it again and again; the scratch box survived only because it has swap. Now the database gets 768 MB. Tested with swap off: a fresh install on the bench (two times) and on the scratch box, 0 kills. The held immich update is published with it, because that update loads the list again. **Cost: each immich box reserves 256 MB more** (immich already reserves about 4 GB). -- **The full-system backup now waits for app updates — seen live.** On the HP demo box it waited twice while two apps updated, then started, and it worked. The box's settings are back as before. -- **The HP demo box had no full-system backup since 29 Sept** (its disk was just too full to fit one). Today's test made a fresh one. The problem is the old known one: the box's system disk is small. -- **How current the catalog is:** 25 of 53 apps are a little behind their makers, 19 are a big version behind. The plan for which apps to test next is written. -- **Old register rows fixed.** The "up to date" badge is honest now for every app with a test record. +**Question: should a box also take, at night, a security fix that the app's maker ships under the same name?** +Database images like `postgres:18-alpine` or `redis:7-alpine` get fixes without a new name. Seven of the eight such names +we use on Docker Hub got a new push in the last 30 days. -**Rows.** Today in total: 3 closed, 3 narrowed, 5 opened. The list went from 361 to 366 rows. +Today **no box gets these fixes at all** — not at night, and not by the Update button either. The reason: the catalog +only records a test when the name changes, so the box never learns that a newer, tested image exists. The page says +"up to date". -**What needs you.** -1. **Nothing to decide.** The immich memory rise follows your earlier rule for raising a limit. Tell me if you want it undone. -2. **No golden bake is due.** The golden built today matches the newest controller. The 4 October date matters only if a new controller comes out before then. The weekly bake stays around 7 October. *(Corrected 2026-09-30: the earlier line said a bake was due before 4 October. That was wrong.)* -3. **D4, the image copies:** unchanged. If you do nothing, nothing changes. +- **Option A — the night takes a tested fix.** The catalog re-tests the same name at the new image (bench and scratch + box, as today), and records it. The box then takes it at night by itself, with its backup and undo. Measured: the box + already does this with no change; only the catalog side is new work (about one evening to build). Cost after that: + about 20 app re-tests a month, machine time only, run by day. +- **Option B — keep it manual, say so honestly.** No new work. The fixes arrive only when we move an app to a new name. + Database engines rarely change name, so their fixes may wait for months. I would correct the text of the earlier + decision, which says the night would take them. + +**If nothing is decided:** nothing breaks. Database images stay at the build of the day we tested them. +**Who is blocked:** nobody today. **My recommendation: A**, database and redis names first — that is where security +fixes land, and the box side already works. + +## What I did, and it worked + +- **More apps update themselves at night: 35 now (plus 3 when a full copy exists), up from 30 (+2) at the start of the + evening.** New: gitea, wger, crafty-controller, uptime-kuma, zipline. calibre-web counts as "with a full copy", because its + update rewrites the book library's own database file. +- **Twelve updates tested and published**, each on the test bench and on the scratch box: calibre-web, gitea, wger, + crafty-controller, uptime-kuma, zipline (their first tested updates; zipline in two steps), and emby, ghost, home-assistant, outline, rallly. + Each of these apps is now on its maker's newest version in its line. +- **calibre-web (books) and gitea now have tests.** calibre-web: a book goes in through its Upload button and is read + back. gitea: its first-run form is filled in the way a household does it. +- **immich's older in-between update is fixed.** It still gave the database 512 MB and it does reload the big list of + places. Tested again with 768 MB and no swap: 0 kills. No box runs immich today. + +## What broke, and what I did + +- **wger: an update would have broken it.** After the update the app looked fine, but nobody could log in. Its database + was never upgraded, because the catalog forgot one setting. **Fixed** in the catalog, and tested again: it works. No + box runs wger. +- **zipline: its newest version cannot be reached in one jump.** The scratch box saw it fail and **put the old version + back by itself in 20 seconds** — the undo worked on a real failure. Going through the version in between works; that + is now the path. +- **The scratch box's disk filled with old app images.** Removing an app or updating it never deletes the old image. + On a household box this would slowly fill the disk until updates are refused. Written down; not fixed today. +- **For a few seconds after a fresh install, calibre-web's well-known default login works.** The box changes it right + after, but the app is already reachable. Written down; not fixed today. +- **wanderer cannot run on the test bench**, so it was not tested. Written down. + +**Rows.** Tonight: 3 closed (all three found and fixed tonight), 6 narrowed, 8 opened. The list went from 369 to 377 rows. *(The brief said 366; the +afternoon session had already added three.)* + +## What needs you + +1. **The decision above** (same-name security fixes). If you do nothing, nothing changes. +2. **The image clean-up on a box** will need your word on what the box keeps (the running image and the one before it, + for the undo). If you do nothing, disks fill slowly; nothing breaks tonight. +3. **No golden bake is due.** The weekly bake stays around 7 October. diff --git a/documentation/architecture/09-update-architecture.md b/documentation/architecture/09-update-architecture.md index 23ba2749..a88a587e 100644 --- a/documentation/architecture/09-update-architecture.md +++ b/documentation/architecture/09-update-architecture.md @@ -369,6 +369,12 @@ R-636's louder repeated alarm. wants the TESTED image pulled, and slice 3's ruling freezes the version until a deliberate Update; (a) broke the second. Shipped as controller **v0.269.1** — a second release in the session, instead of shipping (a) to the fleet with the floor. + *Note 2026-09-30 (R-740) — the cost line above is not what the code does.* „(or the automatic leg)": the + automatic leg never presses a digest-only change (`unattended.go:433–435`, skip `no_test_record`). And the + catalog never writes a re-test of a floating tag at a new digest (the writer refuses a step that moves no + image), so a same-name upstream fix reaches no box by either route today. Measured, with the options, in + R-740; the decision is the operator's (STATUS 2026-09-30). This decision's ruling — the sync never moves + an installed app's digest — is unchanged. ### 2026-09-25 (night) — three decisions taken by CC unattended, building §6.4 part 7 diff --git a/documentation/audits/catalog-currency-2026-09-30.md b/documentation/audits/catalog-currency-2026-09-30.md index 53caed68..160b9dd1 100644 --- a/documentation/audits/catalog-currency-2026-09-30.md +++ b/documentation/audits/catalog-currency-2026-09-30.md @@ -47,6 +47,17 @@ afternoon catalog with the same registry data: **night (a) 31 + nextcloud condit have no ladder.** The "behind upstream" counts are not re-measured; bookstack and kimai are now at their newest release inside the major. +### 1b. After the evening's moves (added 2026-09-30 evening, `more-night-apps-2026-09-30/`) + +**Correction first:** the numbers above were counted before the immich step of the late afternoon; that step carries +`files_may_change` (R-734), so at `4c552cf` — the evening session's start — `04-analyse.py` reads **night (a) 30 + 2 +conditional (nextcloud, immich); (b) 32**, not 31 + 1. The evening published first ladders for calibre-web, gitea, wger, +crafty-controller, uptime-kuma and zipline, and within-major steps for emby, ghost, home-assistant, outline, rallly +(and zipline's second). Re-run of `04-analyse.py` on the evening catalog, same registry data (`more-night-apps-2026-09-30/count/`): +**night (a) 35 + 3 conditional (nextcloud, immich, calibre-web); (b) 38 carry a proven step; 15 have no ladder.** +The "behind upstream" counts are not re-measured; each of the eleven moved apps is now at the newest release inside its +major (re-checked the same evening, `more-night-apps-2026-09-30/00-upstream-recheck.txt`). + ## 2. What could not be measured — stated, not guessed 1. **plant-it** (`msdeluise/plant-it:0.10.0`): Docker Hub gives 401 on the tag list, and its catalog diff --git a/documentation/audits/more-night-apps-2026-09-30/00-upstream-recheck.txt b/documentation/audits/more-night-apps-2026-09-30/00-upstream-recheck.txt new file mode 100644 index 00000000..0cafb668 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/00-upstream-recheck.txt @@ -0,0 +1,16 @@ +# upstream re-check 2026-09-30T14:54:08+00:00 +crocodilestick/calibre-web-automated:v4.0.6: newest same major = v4.0.8; newest at all = v4.0.8; newer in major: ['v4.0.7', 'v4.0.8'] +gitea/gitea:1.27.0: newest same major = 1.27.3; newest at all = 28.0.0; newer in major: ['1.27.1', '1.27.2', '1.27.3'] +emby/embyserver:4.11.0.3: newest same major = 4.11.0.4; newest at all = 4.11.0.4; newer in major: ['4.11.0.4'] +ghost:6.65.0-alpine: newest same major = 6.67.0-alpine; newest at all = 6.67.0-alpine; newer in major: ['6.67.0-alpine'] +ghcr.io/home-assistant/home-assistant:2026.9.3: newest same major = 2026.9.4; newest at all = 2026.9.4; newer in major: ['2026.9.4'] +louislam/uptime-kuma:2.4.0: newest same major = 2.5.5; newest at all = 2.5.5; newer in major: ['2.5.0', '2.5.1', '2.5.2', '2.5.3', '2.5.4', '2.5.5'] +wger/server:2.6: newest same major = 2.7; newest at all = 2.7; newer in major: ['2.7'] +registry.gitlab.com/crafty-controller/crafty-4:4.10.7: newest same major = 4.11.0; newest at all = 4.11.0; newer in major: ['4.10.8', '4.11.0'] +flomp/wanderer-web:v0.20.0: newest same major = v0.21.0; newest at all = v0.21.0; newer in major: ['v0.21.0'] +flomp/wanderer-db:v0.20.0: newest same major = v0.21.0; newest at all = v0.21.0; newer in major: ['v0.21.0'] +getmeili/meilisearch:v1.36.0: newest same major = v1.54.2; newest at all = v1.54.2; newer in major: ['v1.37.0', 'v1.38.0', 'v1.38.1', 'v1.38.2', 'v1.39.0', 'v1.40.0', 'v1.41.0', 'v1.42.0', 'v1.42.1', 'v1.43.0', 'v1.43.1', 'v1.44.0', 'v1.45.0', 'v1.45.1', 'v1.45.2', 'v1.46.0', 'v1.46.1', 'v1.47.0', 'v1.47.1', 'v1.48.0', 'v1.48.1', 'v1.48.2', 'v1.48.3', 'v1.49.0', 'v1.50.0', 'v1.51.0', 'v1.52.0', 'v1.52.1', 'v1.52.2', 'v1.52.3', 'v1.53.0', 'v1.53.1', 'v1.53.2', 'v1.54.0', 'v1.54.1', 'v1.54.2'] +# upstream re-check 2026-09-30T16:10:47+00:00 +outlinewiki/outline:1.9.1: newest same major = 1.10.1; newest at all = 1.10.1; newer in major: ['1.9.2', '1.10.0', '1.10.1'] +lukevella/rallly:4.11.1: newest same major = 4.15.3; newest at all = 4.15.3; newer in major: ['4.12.0', '4.12.1', '4.12.2', '4.12.3', '4.13.0', '4.13.1', '4.14.0', '4.15.0', '4.15.1', '4.15.2', '4.15.3'] +ghcr.io/diced/zipline:4.6.1: newest same major = 4.8.0; newest at all = 4.8.0; newer in major: ['4.6.2', '4.6.3', '4.6.4', '4.6.5', '4.7.0', '4.8.0'] diff --git a/documentation/audits/more-night-apps-2026-09-30/A/A3-calibre-default-login-window.txt b/documentation/audits/more-night-apps-2026-09-30/A/A3-calibre-default-login-window.txt new file mode 100644 index 00000000..293272f6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/A3-calibre-default-login-window.txt @@ -0,0 +1,15 @@ +# calibre-web fresh install on 9202 (drill catalog, controller 0.283.1) — does the KNOWN default login admin/admin123 work before after_install runs? +# probe: GET /opds with HTTP Basic admin:admin123 through the household's front door (traefik, Host books.), every ~1 s +18:41:24 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/calibre-web'] +18:41:24 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH', 'ADMIN_PASSWORD'] +18:41:24 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +18:42:09 [1] deployed, controller state=running, pinned={'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} +deploy at 16:41:21 True +16:41:21 admin:admin123 -> 404 +16:42:06 admin:admin123 -> 200 +16:42:07 admin:admin123 -> 401 +16:42:11 admin:admin123 -> 429 +16:43:08 admin:admin123 -> 401 +200 (the default login WORKED): 1 polls, 16:42:06 .. 16:42:06 +2026/09/30 16:41:49 deploy.go:562: [INFO] [stacks] Stack calibre-web deployed successfully (took 25.3s) + diff --git a/documentation/audits/more-night-apps-2026-09-30/A/R735-green.txt b/documentation/audits/more-night-apps-2026-09-30/A/R735-green.txt new file mode 100644 index 00000000..df1d1912 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/R735-green.txt @@ -0,0 +1,83 @@ +test_a_prober_that_flags_everything_is_refused (__main__.TestCheckEntryPoint.test_a_prober_that_flags_everything_is_refused) +The other direction — a prober that cannot clear a correct template is equally useless. ... ERROR: the prober failed its own canary — canary-clean: expected CLEAN, got BROKEN (papra: mount /app/data is NOT writable by the app's own uid=999 gid=999; papra: DATA in the writable layer at /app/app-data/db (db_signature=True, e.g. ['db.sqlite']); papra: declared volume /app/data) + refusing to report a verdict: a broken detector reporting CLEAN is worse than no detector at all +ok +test_a_prober_that_never_flags_is_refused (__main__.TestCheckEntryPoint.test_a_prober_that_never_flags_is_refused) +The self-test is the gate's own red-proof. A prober that calls the R-156 canary CLEAN ... ERROR: the prober failed its own canary — canary-broken: expected BROKEN, got CLEAN () + refusing to report a verdict: a broken detector reporting CLEAN is worse than no detector at all +ok +test_all_clean_passes_with_rc0 (__main__.TestCheckEntryPoint.test_all_clean_passes_with_rc0) ... ok +test_broken_wins_over_undetermined (__main__.TestCheckEntryPoint.test_broken_wins_over_undetermined) ... ok +test_one_broken_app_refuses_with_rc1 (__main__.TestCheckEntryPoint.test_one_broken_app_refuses_with_rc1) ... ok +test_out_of_circulation_apps_are_skipped_and_named (__main__.TestCheckEntryPoint.test_out_of_circulation_apps_are_skipped_and_named) ... ok +test_undetermined_is_rc2_not_rc0 (__main__.TestCheckEntryPoint.test_undetermined_is_rc2_not_rc0) +UNDETERMINED must never read as a clean bill of health. ... ok +test_a_SIBLING_container_holding_the_state_silences_it (__main__.TestClassify.test_a_SIBLING_container_holding_the_state_silences_it) +The measured docmost / immich / claper shape, and the reason the question is asked per ... ok +test_a_mount_that_received_data_silences_the_structural_check (__main__.TestClassify.test_a_mount_that_received_data_silences_the_structural_check) +It must not fire on every app with one empty volume — crafty-controller has three ... ok +test_an_anonymous_volume_at_a_RUNTIME_path_is_not_a_defect (__main__.TestClassify.test_an_anonymous_volume_at_a_RUNTIME_path_is_not_a_defect) +The measured privatebin shape: its image declares `VOLUME /run`, so docker created an ... ok +test_an_anonymous_volume_holding_REAL_data_still_convicts (__main__.TestClassify.test_an_anonymous_volume_holding_REAL_data_still_convicts) +…and the runtime exemption must not become a blanket one. ... ok +test_anonymous_volume_with_data_is_broken (__main__.TestClassify.test_anonymous_volume_with_data_is_broken) +An anonymous volume survives a restart, which is what makes it deceptive: it is absent ... ok +test_container_not_running_is_undetermined (__main__.TestClassify.test_container_not_running_is_undetermined) ... ok +test_empty_declared_volume_alone_is_a_note_not_a_verdict (__main__.TestClassify.test_empty_declared_volume_alone_is_a_note_not_a_verdict) +An empty volume on an app that also wrote nothing is UNDETERMINED, not BROKEN — the ... ok +test_is_noise_dir_covers_the_runtime_directories (__main__.TestClassify.test_is_noise_dir_covers_the_runtime_directories) ... ok +test_known_good_is_clean (__main__.TestClassify.test_known_good_is_clean) +A detector with no proven negative is a detector that flags everything. ... ok +test_no_containers_is_undetermined (__main__.TestClassify.test_no_containers_is_undetermined) ... ok +test_nothing_landed_in_any_mount_is_caught_without_any_path_vocabulary (__main__.TestClassify.test_nothing_landed_in_any_mount_is_caught_without_any_path_vocabulary) +The measured gramps-web miss. Its family tree goes to ... ok +test_papra_signature_is_broken (__main__.TestClassify.test_papra_signature_is_broken) +The whole reason this gate exists: it must reproduce the known instance. ... ok +test_structural_check_stays_silent_when_the_app_wrote_nothing_at_all (__main__.TestClassify.test_structural_check_stays_silent_when_the_app_wrote_nothing_at_all) +An idle app is UNDETERMINED for the existing reason, not accused by this one. ... ok +test_the_structural_finding_SURVIVES_a_broken_verdict (__main__.TestClassify.test_the_structural_finding_SURVIVES_a_broken_verdict) +The measured gramps-web reporting bug. Its accounts DB (rule 2) convicted, and the ... ok +test_wrote_nothing_is_undetermined_not_clean (__main__.TestClassify.test_wrote_nothing_is_undetermined_not_clean) +The load-bearing distinction. An app that wrote nothing has not been shown to be ... ok +test_a_bytecode_cache_DIRECTORY_is_noise (__main__.TestDiffRollup.test_a_bytecode_cache_DIRECTORY_is_noise) +The measured crafty-controller shape. `docker diff` lists directories too, so the ... ok +test_a_chown_sweep_over_image_files_is_not_data (__main__.TestDiffRollup.test_a_chown_sweep_over_image_files_is_not_data) +The measured calibre-web shape: 92 `C` entries under ... ok +test_a_database_signature_still_convicts_on_its_own (__main__.TestDiffRollup.test_a_database_signature_still_convicts_on_its_own) +The demotion must not weaken rule 2 — papra and gramps-web are both caught by it. ... ok +test_a_genuinely_misplaced_PGDATA_is_still_caught (__main__.TestDiffRollup.test_a_genuinely_misplaced_PGDATA_is_still_caught) +…and removing it must not open a blind spot: PG_VERSION and pg_control are the real ... ok +test_a_path_token_alone_does_NOT_convict (__main__.TestDiffRollup.test_a_path_token_alone_does_NOT_convict) +The measured onlyoffice shape: the document server unpacks its OWN static assets into ... ok +test_a_postgres_CONFIG_file_is_not_a_database_signature (__main__.TestDiffRollup.test_a_postgres_CONFIG_file_is_not_a_database_signature) +The measured immich shape: the postgres entrypoint writes /etc/postgresql/postgresql.conf ... ok +test_a_token_dir_is_reported_and_counts_as_the_app_having_written (__main__.TestDiffRollup.test_a_token_dir_is_reported_and_counts_as_the_app_having_written) +Demoted is not discarded. The note must reach the operator, and an app that wrote only ... ok +test_but_one_real_file_among_noise_still_convicts (__main__.TestDiffRollup.test_but_one_real_file_among_noise_still_convicts) +…and the rule must not become a blanket amnesty for any directory with a cache in it. ... ok +test_cache_directories_are_filtered_at_ENTRY_level (__main__.TestDiffRollup.test_cache_directories_are_filtered_at_ENTRY_level) +Where the filtering happens matters, because it is the reason a second ... ok +test_changed_db_file_is_SUSPECT_not_a_verdict (__main__.TestDiffRollup.test_changed_db_file_is_SUSPECT_not_a_verdict) +`C` on a database file is genuinely ambiguous: a chown produces it, and so does an app ... ok +test_created_file_in_a_data_path_IS_data (__main__.TestDiffRollup.test_created_file_in_a_data_path_IS_data) +The other direction — the rule must not become blind. papra's verb is `A`. ... ok +test_db_signature_beats_everything (__main__.TestDiffRollup.test_db_signature_beats_everything) ... ok +test_deleted_entries_are_not_writes (__main__.TestDiffRollup.test_deleted_entries_are_not_writes) ... ok +test_logs_caches_and_pids_are_noise (__main__.TestDiffRollup.test_logs_caches_and_pids_are_noise) ... ok +test_unclassified_writes_are_reported_never_dropped (__main__.TestDiffRollup.test_unclassified_writes_are_reported_never_dropped) ... ok +test_base64key_carries_the_controller_s_base64_prefix (__main__.TestEnvBuilding.test_base64key_carries_the_controller_s_base64_prefix) +felhom-controller `deploy.go:904` returns "base64:"+b64. Without the prefix Laravel ... ok +test_deploy_field_default_and_generate_are_honoured (__main__.TestEnvBuilding.test_deploy_field_default_and_generate_are_honoured) ... ok +test_deploy_fields_block_ends_at_the_next_top_level_key (__main__.TestEnvBuilding.test_deploy_fields_block_ends_at_the_next_top_level_key) ... ok +test_every_compose_var_resolves (__main__.TestEnvBuilding.test_every_compose_var_resolves) +A var resolving to "" binds a bogus root-owned dir at the container root ... ok +test_password_special_carries_the_controllers_shape (__main__.TestEnvBuilding.test_password_special_carries_the_controllers_shape) +R-735: `password:N:special` must be what the controller's randomWithSpecial mints (deploy.go L1335): ... ok +test_benign_touch_stays_clean_and_is_still_reported (__main__.TestSuspectAdjudication.test_benign_touch_stays_clean_and_is_still_reported) ... ok +test_confirmed_write_into_an_image_file_is_broken (__main__.TestSuspectAdjudication.test_confirmed_write_into_an_image_file_is_broken) ... ok +test_unresolved_suspect_is_undetermined_never_clean (__main__.TestSuspectAdjudication.test_unresolved_suspect_is_undetermined_never_clean) ... ok + +---------------------------------------------------------------------- +Ran 45 tests in 0.017s + +OK diff --git a/documentation/audits/more-night-apps-2026-09-30/A/R735-red.txt b/documentation/audits/more-night-apps-2026-09-30/A/R735-red.txt new file mode 100644 index 00000000..ebb1a374 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/R735-red.txt @@ -0,0 +1,17 @@ +test_password_special_carries_the_controllers_shape (test_check_volume_persistence.TestEnvBuilding.test_password_special_carries_the_controllers_shape) +R-735: `password:N:special` must be what the controller's randomWithSpecial mints (deploy.go L1335): ... FAIL + +====================================================================== +FAIL: test_password_special_carries_the_controllers_shape (test_check_volume_persistence.TestEnvBuilding.test_password_special_carries_the_controllers_shape) +R-735: `password:N:special` must be what the controller's randomWithSpecial mints (deploy.go L1335): +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts/test_check_volume_persistence.py", line 453, in test_password_special_carries_the_controllers_shape + self.assertEqual(len(v), 24, v) + ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ +AssertionError: 32 != 24 : + +---------------------------------------------------------------------- +Ran 1 test in 0.002s + +FAILED (failures=1) diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names-run.txt b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names-run.txt new file mode 100644 index 00000000..ab3f8d19 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names-run.txt @@ -0,0 +1 @@ +rc=0 diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/MV-calibre-names.log b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/MV-calibre-names.log new file mode 100644 index 00000000..5cae1e88 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/MV-calibre-names.log @@ -0,0 +1 @@ +--move: nothing moves diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/N-calibre.log b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/N-calibre.log new file mode 100644 index 00000000..5549ba13 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/N-calibre.log @@ -0,0 +1,61 @@ +[17:35:51] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media/books', '/srv/felhom-gate/import/calibre'] +[17:35:51] N-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[17:36:22] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:36:22] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[17:36:22] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[17:36:25] calibre-web: after_install :: OKIE_SECURE set to False (Standard/LDAP login) Password for user 'admin' changed +[17:36:25] calibre-web: POST /upload http=200 {"location": "/tasks"} +[17:36:26] calibre-web: seeded book upg564b2e2d107d is in the library +[17:36:32] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:36:32] C1 (seed reads back BEFORE): True +[17:36:32] N-calibre-web: swapping to TO {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} +[17:36:42] TO up -d rc=0 +[17:37:13] TO settled=True in 30.9s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:37:13] migration lines observed: 6 +[17:37:15] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:37:15] RESULT (seed reads back AFTER): True +[17:37:15] files_may_change — the files: ['/srv/felhom-gate/hdd/userdata/media/books/metadata.db (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-shm (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-wal (changed)'] +[17:37:15] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/userdata/media/books'] +[17:37:15] N-calibre-web: ABORT — putting the FROM images back +[17:37:58] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:37:58] ABORT: app came back in 30.9s; data present=True +{ + "harness_version": 4, + "edge": "N-calibre-web", + "app": "calibre-web", + "note": "names re-run 2026-09-30 (soak 0)", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcalibre-web | [migrations] started", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": null, + "marks": [ + "files_may_change" + ], + "duration_s": 30.9, + "measured_at": "2026-09-30T17:37:58Z", + "evidence": "evidence/N-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media/books", + "/srv/felhom-gate/import/calibre" + ], + "files_changed": [ + "/srv/felhom-gate/hdd/userdata/media/books" + ], + "files_changed_detail": [ + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db (changed)", + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db-shm (changed)", + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db-wal (changed)" + ], + "total_s": 127.2 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/abort-states.json new file mode 100644 index 00000000..12ed6c3f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/abort-states.json @@ -0,0 +1,8 @@ +{ + "calibre-web": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/compose-final.log new file mode 100644 index 00000000..c90e8e03 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/compose-final.log @@ -0,0 +1,198 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] Existing user_profiles.json found! +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.6 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.6, STABLE=v4.0.8 +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-process-recovery] Processing status is: idle +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [cwa-auto-zipper] Next run in 15690 seconds. +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: Existing library found at /calibre-library, mounting now... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 19:37:35,977] INFO {cps:92} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 19:37:36,073] INFO {cps.ub:1066} Migrating system magic shelves... +calibre-web | [2026-09-30 19:37:36,096] INFO {cps.ub:1119} System shelf migration complete: 1 old shelves removed, 0 new shelves created +calibre-web | [2026-09-30 19:37:36,215] INFO {cps:140} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 19:37:36,265] INFO {cps:197} Starting Calibre Web... +calibre-web | [2026-09-30 19:37:37,167] INFO {cps:217} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 19:37:37,191] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 19:37:37,469] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 19:37:37,470] INFO {apscheduler.scheduler:1090} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 19:37:37,470] INFO {apscheduler.scheduler:1090} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 19:37:37,471] INFO {apscheduler.scheduler:1090} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 19:37:38,129] INFO {apscheduler.scheduler:1090} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 19:37:38,134] INFO {apscheduler.scheduler:1090} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 19:37:38,136] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 19:37:38,154] INFO {apscheduler.scheduler:1090} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 19:37:38,155] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 19:37:38 CEST], next run at: 2026-09-30 19:37:38 CEST)" (scheduled at 2026-09-30 19:37:38.154619+02:00) +calibre-web | [2026-09-30 19:37:38,155] INFO {apscheduler.scheduler:728} Removed job cfc3b0f6857a4528870a4e38ddaffccc +calibre-web | [2026-09-30 19:37:38,181] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 19:37:38 CEST], next run at: 2026-09-30 19:37:38 CEST)" executed successfully +calibre-web | [2026-09-30 19:37:39,110] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 19:37:39,276] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. +calibre-web | [2026-09-30 19:37:57,299] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 +calibre-web | [2026-09-30 19:37:58,441] INFO {cps.helper:1265} Renamed exported file to match expected name: upg564b2e2d107d - Drill Author.epub +calibre-web | [2026-09-30 19:37:58,442] ERROR {cps.progress_syncing.checksums.manager:128} Failed to store checksum for book 2: (sqlite3.OperationalError) no such table: book_format_checksums +calibre-web | [SQL: +calibre-web | SELECT id FROM book_format_checksums +calibre-web | WHERE book = ? +calibre-web | AND format = ? +calibre-web | AND checksum = ? +calibre-web | ] +calibre-web | [parameters: (2, 'EPUB', '201f4f0126b3d3617d4f8889a9d03f93')] +calibre-web | (Background on this error at: https://sqlalche.me/e/20/e3q8) diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after-detail.json new file mode 100644 index 00000000..5fe109c0 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after-detail.json @@ -0,0 +1,11 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": { + "metadata.db-wal": "0:e3b0c44298fc1c14", + "metadata.db": "425984:f1fc15ccfa03d754", + "metadata.db-shm": "32768:fd4c9fda9cd3f9ae", + "Drill Author/upg564b2e2d107d (2)/upg564b2e2d107d - Drill Author.epub": "1436:0e6c3b2dfe7cbeb5", + "Drill Author/upg564b2e2d107d (2)/metadata.opf": "1030:c681f1d3bb6b978e", + ".calnotes/notes.db": "77824:5ffb1a7c5f416c3c" + }, + "/srv/felhom-gate/import/calibre": {} +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after.json new file mode 100644 index 00000000..858b2439 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-after.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": "1ce27ee0fbdae06889641bcc62b2797b229cf05b4758989602deae67604d5645", + "/srv/felhom-gate/import/calibre": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before-detail.json new file mode 100644 index 00000000..a0816985 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before-detail.json @@ -0,0 +1,11 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": { + "metadata.db-wal": "206032:7cdc627a3594dc79", + "metadata.db": "413696:d542bbdc99ab14d1", + "metadata.db-shm": "32768:c7012b1e7507b0bb", + "Drill Author/upg564b2e2d107d (2)/upg564b2e2d107d - Drill Author.epub": "1436:0e6c3b2dfe7cbeb5", + "Drill Author/upg564b2e2d107d (2)/metadata.opf": "1030:c681f1d3bb6b978e", + ".calnotes/notes.db": "77824:5ffb1a7c5f416c3c" + }, + "/srv/felhom-gate/import/calibre": {} +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before.json new file mode 100644 index 00000000..6aa37b38 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/files-before.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": "7e079940c9c4f480238467739acab28804955e7f70709814a69785155d6504ba", + "/srv/felhom-gate/import/calibre": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/migration-lines.txt new file mode 100644 index 00000000..e4973c72 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/migration-lines.txt @@ -0,0 +1,6 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [2026-09-30 19:36:52,396] INFO {cps.ub:1144} Migrating system magic shelves... +calibre-web | [2026-09-30 19:36:52,413] INFO {cps.ub:1197} System shelf migration complete: 0 old shelves removed, 1 new shelves created +calibre-web | [2026-09-30 19:36:54,349] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/run.log b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/run.log new file mode 100644 index 00000000..d2ecc320 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/run.log @@ -0,0 +1,21 @@ +[17:35:51] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media/books', '/srv/felhom-gate/import/calibre'] +[17:35:51] N-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[17:36:22] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:36:22] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[17:36:22] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[17:36:25] calibre-web: after_install :: OKIE_SECURE set to False (Standard/LDAP login) Password for user 'admin' changed +[17:36:25] calibre-web: POST /upload http=200 {"location": "/tasks"} +[17:36:26] calibre-web: seeded book upg564b2e2d107d is in the library +[17:36:32] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:36:32] C1 (seed reads back BEFORE): True +[17:36:32] N-calibre-web: swapping to TO {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} +[17:36:42] TO up -d rc=0 +[17:37:13] TO settled=True in 30.9s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:37:13] migration lines observed: 6 +[17:37:15] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:37:15] RESULT (seed reads back AFTER): True +[17:37:15] files_may_change — the files: ['/srv/felhom-gate/hdd/userdata/media/books/metadata.db (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-shm (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-wal (changed)'] +[17:37:15] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/userdata/media/books'] +[17:37:15] N-calibre-web: ABORT — putting the FROM images back +[17:37:58] calibre-web: readback — listed=True download_link=True book_content_served=True +[17:37:58] ABORT: app came back in 30.9s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-full.log b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-full.log new file mode 100644 index 00000000..a0a9d6a0 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-full.log @@ -0,0 +1,189 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] Existing user_profiles.json found! +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.8 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.8, STABLE=v4.0.8 +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-process-recovery] Processing status is: idle +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-auto-zipper] Next run in 15733 seconds. +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: Existing library found at /calibre-library, mounting now... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 19:36:52,291] INFO {cps:93} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 19:36:52,396] INFO {cps.ub:1144} Migrating system magic shelves... +calibre-web | [2026-09-30 19:36:52,407] INFO {cps.magic_shelf:790} Created system magic shelf 'Currently Reading' for user 1 +calibre-web | [2026-09-30 19:36:52,413] INFO {cps.magic_shelf:800} Successfully created 1 system magic shelves for user 1 +calibre-web | [2026-09-30 19:36:52,413] INFO {cps.ub:1197} System shelf migration complete: 0 old shelves removed, 1 new shelves created +calibre-web | [2026-09-30 19:36:52,505] INFO {cps:141} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 19:36:52,568] INFO {cps:198} Starting Calibre Web... +calibre-web | [2026-09-30 19:36:53,268] INFO {cps:218} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 19:36:53,314] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 19:36:53,632] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 19:36:53,633] INFO {apscheduler.scheduler:1092} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 19:36:53,633] INFO {apscheduler.scheduler:1092} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 19:36:53,633] INFO {apscheduler.scheduler:1092} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 19:36:54,342] INFO {apscheduler.scheduler:1092} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 19:36:54,347] INFO {apscheduler.scheduler:1092} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 19:36:54,349] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 19:36:54,366] INFO {apscheduler.scheduler:1092} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 19:36:54,366] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 19:36:54 CEST], next run at: 2026-09-30 19:36:54 CEST)" (scheduled at 2026-09-30 19:36:54.365896+02:00) +calibre-web | [2026-09-30 19:36:54,367] INFO {apscheduler.scheduler:728} Removed job 408381914a0a4fad85b402d14142be23 +calibre-web | [2026-09-30 19:36:54,392] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 19:36:54 CEST], next run at: 2026-09-30 19:36:54 CEST)" executed successfully +calibre-web | [2026-09-30 19:36:55,170] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 19:36:55,415] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-states.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-states.json new file mode 100644 index 00000000..12ed6c3f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/to-states.json @@ -0,0 +1,8 @@ +{ + "calibre-web": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/verdict.json b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/verdict.json new file mode 100644 index 00000000..bc087fd5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/A/calibre-names/evidence/N-calibre-web/verdict.json @@ -0,0 +1,40 @@ +{ + "harness_version": 4, + "edge": "N-calibre-web", + "app": "calibre-web", + "note": "names re-run 2026-09-30 (soak 0)", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcalibre-web | [migrations] started", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": null, + "marks": [ + "files_may_change" + ], + "duration_s": 30.9, + "measured_at": "2026-09-30T17:37:58Z", + "evidence": "evidence/N-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media/books", + "/srv/felhom-gate/import/calibre" + ], + "files_changed": [ + "/srv/felhom-gate/hdd/userdata/media/books" + ], + "files_changed_detail": [ + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db (changed)", + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db-shm (changed)", + "/srv/felhom-gate/hdd/userdata/media/books/metadata.db-wal (changed)" + ], + "total_s": 127.2 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe-teardown.txt b/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe-teardown.txt new file mode 100644 index 00000000..029e37fe --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe-teardown.txt @@ -0,0 +1,2 @@ + Network probewanderer_wanderer-internal Removed +0 diff --git a/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe.txt b/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe.txt new file mode 100644 index 00000000..beee548f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/B/wanderer-probe.txt @@ -0,0 +1,8 @@ +# wanderer probe on bench 9401, 2026-09-30 17:58-18:11 CEST (catalog template v0.20.0 / meilisearch v1.36.0, build_env values) +docker ps after 12 min: wanderer Up (unhealthy) | wanderer-db Up (healthy) | wanderer-search Up (healthy) +GET / (Host: hike.gate.invalid) on the web container :3000 -> 500 body: "Error 0: Something went wrong." +env in the web container: PUBLIC_POCKETBASE_URL=https://hike-db.gate.invalid +=> the web server calls the database at its PUBLIC name over https; the bench has no DNS name and no TLS for it, + so FROM can never settle healthy there (harness verdict would be `inconclusive` at FROM, never about the update). +API routes seen (src/routes/api/v1): auth/login, trail(+form/upload), list(+form), search, user, ... (a fixture route exists) +Not attempted: the meilisearch v1.36 -> v1.54 question (whether its index survives or is rebuilt) — not measured. diff --git a/documentation/audits/more-night-apps-2026-09-30/B/wger-probe.txt b/documentation/audits/more-night-apps-2026-09-30/B/wger-probe.txt new file mode 100644 index 00000000..2e8b6b09 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/B/wger-probe.txt @@ -0,0 +1,15 @@ +# wger probe on bench 9401, 2026-09-30 ~17:25-17:33 CEST (catalog template, wger/server:2.6, build_env values) +# Recorded from the session's probe output; tokens and passwords not recorded. +GET /api/v2/ -> 200 (router index: weightentry, userprofile, ... ; no login/token route) +POST /api/v2/login/, /api/v2/token(/), /api/v2/auth/login/ -> 404 +POST /allauth/app/v1/auth/login wrong password -> 400 JSON "The username and/or password you specified are not correct" +POST /allauth/app/v1/auth/login RIGHT password -> 500 text/html + container log: allauth/core/internal/jwkkit.py line 34 load_pem -> ValueError: Unable to load PEM file ... MalformedFraming + settings/main.py:109 JWT_PRIVATE_KEY = env.str('JWT_PRIVATE_KEY', '') (the template sets none) -> R-737 +after_install command (template's own, password as last argument) -> FELHOM_AFTER_INSTALL_OK +GET /en/user/login -> 200 (form: csrfmiddlewaretoken, login, password) +POST /en/user/login (Origin/Referer https://wger.gate.invalid) -> 302, sessionid set +POST /api/v2/weightentry/ {"date":"2026-09-30T10:00:00Z","weight":"77.35"} with session + X-CSRFToken -> 201 +GET /api/v2/weightentry/?weight=77.35 -> 200 count 1 (positive) +GET /api/v2/weightentry/?weight=12.34 -> 200 count 0 (negative: a weight never entered) +GET /api/v2/weightentry/?weight=77.35 without session -> 403 (negative: no login) diff --git a/documentation/audits/more-night-apps-2026-09-30/C/C1-digests-demo-hp-9201.txt b/documentation/audits/more-night-apps-2026-09-30/C/C1-digests-demo-hp-9201.txt new file mode 100644 index 00000000..2f3ecde1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/C/C1-digests-demo-hp-9201.txt @@ -0,0 +1,31 @@ +# guest 9201 https://192.168.0.155 — read-only +adventurelog | update_order=None badge=None catalog_tested_at=2026-09-27T10:29:35Z + adventurelog: ghcr.io/seanmorley15/adventurelog-backend:v0.13.0 installed=0250d9cb0d74 at=2026-09-28T02:22:40Z catalog=0250d9cb0d74 equal=True + adventurelog-frontend: ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0 installed=51ee22428b41 at=2026-09-28T02:22:40Z catalog=51ee22428b41 equal=True + adventurelog-postgres: postgis/postgis:16-3.5-alpine installed=47e961a569fd at=2026-09-13T19:07:19Z catalog=47e961a569fd equal=True +bentopdf | update_order=None badge=None catalog_tested_at=0001-01-01T00:00:00Z + bentopdf: ghcr.io/alam00000/bentopdf:v2.8.6 installed=eaeea1e44720 at=2026-09-06T08:36:22Z catalog=- equal=False +bookstack | update_order=None badge=None catalog_tested_at=2026-09-30T11:09:02Z + bookstack: lscr.io/linuxserver/bookstack:26.09.1 installed=99cd1f5707c1 at=2026-09-30T11:35:13Z catalog=99cd1f5707c1 equal=True + bookstack-db: mariadb:12.3 installed=805c8e104bd5 at=2026-09-22T09:05:22Z catalog=805c8e104bd5 equal=True +calibre-web | update_order=None badge=None catalog_tested_at=0001-01-01T00:00:00Z + calibre-web: crocodilestick/calibre-web-automated:v4.0.6 installed=c31a738b6d5e at=2026-09-03T00:30:19Z catalog=- equal=False +docmost | update_order=None badge=None catalog_tested_at=2026-09-25T12:01:05Z + docmost: docmost/docmost:0.96.0 installed=b56947fcfd08 at=2026-09-22T09:07:17Z catalog=b56947fcfd08 equal=True + docmost-postgres: postgres:18-alpine installed=77f585114c32 at=2026-09-26T02:19:18Z catalog=77f585114c32 equal=True + docmost-redis: redis:7-alpine installed=858f009f9709 at=2026-09-22T09:07:17Z catalog=858f009f9709 equal=True +kimai | update_order=None badge=None catalog_tested_at=2026-09-30T11:25:04Z + kimai: kimai/kimai2:2.67.0 installed=3084f1e5ecdc at=2026-09-30T11:36:28Z catalog=3084f1e5ecdc equal=True + kimai-db: mariadb:11.8 installed=79d59758afc9 at=2026-09-23T21:19:40Z catalog=79d59758afc9 equal=True +opengist | update_order=None badge=None catalog_tested_at=2026-09-23T19:39:21Z + opengist: ghcr.io/thomiceli/opengist:1.15 installed=7edc91273ee7 at=2026-09-23T21:18:27Z catalog=7edc91273ee7 equal=True +paperless-ngx | update_order=None badge=None catalog_tested_at=2026-09-27T09:50:50Z + paperless-postgres: postgres:18-alpine installed=77f585114c32 at=2026-09-28T02:23:49Z catalog=77f585114c32 equal=True + paperless-redis: redis:7-alpine installed=858f009f9709 at=2026-09-23T00:31:38Z catalog=858f009f9709 equal=True + paperless-webserver: ghcr.io/paperless-ngx/paperless-ngx:2.20.15 installed=6c86cad80397 at=2026-09-03T00:31:09Z catalog=6c86cad80397 equal=True +privatebin | update_order=None badge=None catalog_tested_at=2026-09-21T18:19:14.04413Z + privatebin: privatebin/pdo:2.0.6 installed=4c141b2326f8 at=2026-09-22T09:07:38Z catalog=4c141b2326f8 equal=True +romm | update_order=None badge=None catalog_tested_at=2026-09-23T20:00:03Z + romm: rommapp/romm:5.3.1 installed=0d66b4ea152a at=2026-09-23T21:21:09Z catalog=0d66b4ea152a equal=True + romm-db: mariadb:11.8 installed=79d59758afc9 at=2026-09-23T21:21:09Z catalog=79d59758afc9 equal=True + romm-redis: redis:7-alpine installed=858f009f9709 at=2026-09-22T09:08:58Z catalog=858f009f9709 equal=True diff --git a/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk-run.txt b/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk-run.txt new file mode 100644 index 00000000..cb5e80e8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk-run.txt @@ -0,0 +1,20 @@ +=== RUN TestPartC_DigestOnlyBehindAtHead + partc_scratch_test.go:29: 1. CatalogOrder = 2 (catalog digests map[web:sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa], tested 2026-09-29 00:00:00 +0000 UTC; installed {Ref:nextcloud:34.0.1-apache Digest:sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb At:2026-09-20T00:00:00Z}) + partc_scratch_test.go:32: 2. night leg: presses=0 step={App:nextcloud Outcome:skipped Reason:no_test_record From:map[] To:map[] Seconds:0} + partc_scratch_test.go:35: log: [INFO] [update-leg] started (test): window 02:30, no step starts at or after 07:30 + partc_scratch_test.go:35: log: [INFO] [update-leg] nextcloud: skipped — no_test_record + partc_scratch_test.go:35: log: [INFO] [update-leg] update leg (test): done=0 undone=0 held=0 failed=0 skipped=1 in 0s [skipped: nextcloud=no_test_record] + partc_scratch_test.go:45: 3. Update button: phase=done err="" presses=1; live compose pins the tested digest dA: true; pin=nextcloud:34.0.1-apache +--- PASS: TestPartC_DigestOnlyBehindAtHead (0.01s) +=== RUN TestPartC_IfTheCatalogWroteARefreshEntry + partc_scratch_test.go:66: 1. CatalogOrder = 2 + partc_scratch_test.go:70: 2. night leg: presses=1 step={App:nextcloud Outcome:done Reason: From:map[web:nextcloud:34.0.1-apache] To:map[web:nextcloud:34.0.1-apache] Seconds:0}; live compose pins dA: true + partc_scratch_test.go:73: log: [INFO] [update-leg] started (test): window 02:30, no step starts at or after 07:30 + partc_scratch_test.go:73: log: [INFO] [update-leg] nextcloud: step pressed web=nextcloud:34.0.1-apache → web=nextcloud:34.0.1-apache + partc_scratch_test.go:73: log: [INFO] [stacks] update nextcloud: ladder — the last step (2 of 2) — the catalog's current definition + partc_scratch_test.go:73: log: [INFO] [update-leg] nextcloud: step ended done after 0.0 s + partc_scratch_test.go:73: log: [INFO] [update-leg] update leg (test): done=1 undone=0 held=0 failed=0 skipped=0 in 0s [skipped: ] + partc_scratch_test.go:77: 3. the next night: presses=1 step={App: Outcome: Reason: From:map[] To:map[] Seconds:0} +--- PASS: TestPartC_IfTheCatalogWroteARefreshEntry (0.01s) +PASS +ok gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.027s diff --git a/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk_test.go.txt b/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk_test.go.txt new file mode 100644 index 00000000..f7743e5b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/C/C2-unit-walk_test.go.txt @@ -0,0 +1,78 @@ +package stacks + +// SCRATCH (not committed; a copy of controller d48da6c in the scratchpad) — Part C, 2026-09-30: +// what the night leg and the Update button do with an app AT THE HEAD TAG whose catalog carries a +// NEWER tested digest for that same tag (a same-name repush the catalog re-tested). + +import ( + "path/filepath" + "strings" + "testing" +) + +func TestPartC_DigestOnlyBehindAtHead(t *testing.T) { + m, dir, _, ups, logBuf := legManager(t) + catDir := filepath.Dir(m.CatalogTemplatePath("nextcloud", "docker-compose.yml")) + // the ladder: B -> C tested at digest dA, tested 2026-09-29 + mustWrite(t, filepath.Join(catDir, ".felhom.yml"), "display_name: Nextcloud\nupdate_ladder:\n"+ + ` - {"from": {"web": "`+ladderB+`"}, "to": {"web": "`+ladderC+`"}, "digest": {"web": "`+dA+`"}, "verdict": "proven", "tested_at": "2026-09-29T00:00:00Z"}`+"\n") + // the box: at C (the head tag), running the OLDER digest dB, installed 2026-09-20 + cur := "services:\n web:\n image: " + ladderC + "@" + dB + "\nvolumes:\n db:\n" + mustWrite(t, ComposePathIn(dir), cur) + mustWrite(t, AppliedComposePath(dir), cur) + mustWrite(t, filepath.Join(dir, "app.yaml"), "deployed: true\nenv: {}\npinned_images:\n web: "+ladderC+ + "\ninstalled_images:\n web:\n ref: "+ladderC+"\n digest: "+dB+"\n at: \"2026-09-20T00:00:00Z\"\n") + if err := m.ScanStacks(); err != nil { + t.Fatal(err) + } + st, _ := m.GetStack("nextcloud") + t.Logf("1. CatalogOrder = %v (catalog digests %v, tested %v; installed %+v)", CatalogOrder(*st), st.CatalogDigests, st.CatalogTestedAt, st.AppConfig.InstalledImages["web"]) + legOpts(m, nil) + s := mustLeg(t, m) + t.Logf("2. night leg: presses=%d step=%+v", len(*ups), legStepFor(s, "nextcloud")) + for _, l := range strings.Split(logBuf.String(), "\n") { + if strings.Contains(l, "update-leg") { + t.Logf(" log: %s", l) + } + } + // 3. the household's Update button + if err := m.StartGuardedUpdate("nextcloud"); err != nil { + t.Logf("3. Update button refused: %v", err) + return + } + st2 := waitUpdateDone(t, m, "nextcloud") + body := fileBody(t, ComposePathIn(dir)) + t.Logf("3. Update button: phase=%s err=%q presses=%d; live compose pins the tested digest dA: %v; pin=%s", + st2.UpdatePhase, st2.UpdateError, len(*ups), strings.Contains(body, ladderC+"@"+dA), pinOf(t, dir)) +} + +// Option (a)'s box half, measured before it is costed: IF the catalog carried a same-tag re-test +// (from == to == C, tested at the new digest dA, newer than the install), what would the leg do? +func TestPartC_IfTheCatalogWroteARefreshEntry(t *testing.T) { + m, dir, _, ups, logBuf := legManager(t) + catDir := filepath.Dir(m.CatalogTemplatePath("nextcloud", "docker-compose.yml")) + mustWrite(t, filepath.Join(catDir, ".felhom.yml"), "display_name: Nextcloud\nupdate_ladder:\n"+ + ` - {"from": {"web": "`+ladderB+`"}, "to": {"web": "`+ladderC+`"}, "digest": {"web": "`+dB+`"}, "verdict": "proven", "tested_at": "2026-09-19T00:00:00Z"}`+"\n"+ + ` - {"from": {"web": "`+ladderC+`"}, "to": {"web": "`+ladderC+`"}, "digest": {"web": "`+dA+`"}, "verdict": "proven", "tested_at": "2026-09-29T00:00:00Z"}`+"\n") + cur := "services:\n web:\n image: " + ladderC + "@" + dB + "\nvolumes:\n db:\n" + mustWrite(t, ComposePathIn(dir), cur) + mustWrite(t, AppliedComposePath(dir), cur) + mustWrite(t, filepath.Join(dir, "app.yaml"), "deployed: true\nenv: {}\npinned_images:\n web: "+ladderC+ + "\ninstalled_images:\n web:\n ref: "+ladderC+"\n digest: "+dB+"\n at: \"2026-09-20T00:00:00Z\"\n") + if err := m.ScanStacks(); err != nil { + t.Fatal(err) + } + st, _ := m.GetStack("nextcloud") + t.Logf("1. CatalogOrder = %v", CatalogOrder(*st)) + legOpts(m, nil) + s := mustLeg(t, m) + body := fileBody(t, ComposePathIn(dir)) + t.Logf("2. night leg: presses=%d step=%+v; live compose pins dA: %v", len(*ups), legStepFor(s, "nextcloud"), strings.Contains(body, ladderC+"@"+dA)) + for _, l := range strings.Split(logBuf.String(), "\n") { + if strings.Contains(l, "update-leg") || strings.Contains(l, "step") { + t.Logf(" log: %s", l) + } + } + s2 := mustLeg(t, m) + t.Logf("3. the next night: presses=%d step=%+v", len(*ups), legStepFor(s2, "nextcloud")) +} diff --git a/documentation/audits/more-night-apps-2026-09-30/C/C3-floating-repush.txt b/documentation/audits/more-night-apps-2026-09-30/C/C3-floating-repush.txt new file mode 100644 index 00000000..337a2f65 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/C/C3-floating-repush.txt @@ -0,0 +1,60 @@ +# floating lines in the live catalog, read 2026-09-30T15:07:34+00:00 + +ghcr.io/claperco/claper:2.5 last pushed: no anonymous timestamp on ghcr.io + registry digest today: sha256:4f733dc50b0c + claper/claper: = tested + +ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0 last pushed: no anonymous timestamp on ghcr.io + registry digest today: sha256:1a078b237c1d + immich/immich-postgres: = tested + +ghcr.io/thomiceli/opengist:1.15 last pushed: no anonymous timestamp on ghcr.io + registry digest today: sha256:7edc91273ee7 + opengist/opengist: = tested + +mariadb:11.8 last pushed: 2026-09-18T02:36:51.573083Z (12 days ago) + registry digest today: sha256:79d59758afc9 + kimai/kimai-db: = tested + romm/romm-db: = tested + +mariadb:12.3 last pushed: 2026-09-18T02:37:26.402424Z (12 days ago) + registry digest today: sha256:805c8e104bd5 + bookstack/bookstack-db: = tested + nextcloud/nextcloud-db: = tested + +postgis/postgis:16-3.5-alpine last pushed: 2026-08-31T11:37:24.0266Z (30 days ago) + registry digest today: sha256:47e961a569fd + adventurelog/adventurelog-postgres: = tested + +postgres:16-alpine last pushed: 2026-09-21T04:07:46.010722Z (9 days ago) + registry digest today: sha256:721873c34ceb + zipline/zipline-postgres: no ladder digest + +postgres:17-alpine last pushed: 2026-09-21T04:08:17.149523Z (9 days ago) + registry digest today: sha256:b0f9560a2de0 + claper/claper-postgres: = tested + tandoor/tandoor-postgres: = tested + +postgres:18-alpine last pushed: 2026-09-21T01:08:20.384039Z (9 days ago) + registry digest today: sha256:77f585114c32 + calcom/calcom-postgres: = tested + docmost/docmost-postgres: = tested + outline/outline-postgres: = tested + paperless-ngx/paperless-postgres: = tested + rallly/rallly-postgres: = tested + sparkyfitness/sparkyfitness-db: = tested + +redis:7-alpine last pushed: 2026-09-21T12:04:40.637995Z (9 days ago) + registry digest today: sha256:858f009f9709 + docmost/docmost-redis: = tested + immich/immich-redis: = tested + nextcloud/nextcloud-redis: = tested + outline/outline-redis: = tested + paperless-ngx/paperless-redis: = tested + romm/romm-redis: = tested + +wger/server:2.6 last pushed: 2026-06-17T08:41:05.968586Z (105 days ago) + registry digest today: sha256:997ead43aabd + wger/wger: no ladder digest + +# 11 distinct floating lines; Docker Hub lines pushed within 30 days: 7 diff --git a/documentation/audits/more-night-apps-2026-09-30/C/C4-same-tag-retest.txt b/documentation/audits/more-night-apps-2026-09-30/C/C4-same-tag-retest.txt new file mode 100644 index 00000000..83384b4c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/C/C4-same-tag-retest.txt @@ -0,0 +1,5 @@ +# ladders: any entry with from == to (a same-tag re-test), or two entries with the same `to` (a re-test at a new digest)? +from == to entries: none +same `to` twice: none +ladder.check_entry(from == to): no problem found +step_file(to) for the old head and a same-tag re-test are the SAME path: steps/09d1fdf5e748a56c.yml diff --git a/documentation/audits/more-night-apps-2026-09-30/D/D-immich.log b/documentation/audits/more-night-apps-2026-09-30/D/D-immich.log new file mode 100644 index 00000000..459144bd --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/D-immich.log @@ -0,0 +1,169 @@ +[17:17:59] scratch drive folders cleared before FROM (R-656): none existed +[17:17:59] D-immich-0b82-768: deploying immich at FROM {'immich-server': 'ghcr.io/immich-app/immich-server:v3.0.3', 'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.0.3', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine'} +[17:19:34] FROM settled=True in 31.4s :: {"immich-machine-learning": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-server": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:19:34] fixture: the BOX walk's own (Immich), through upgrade_boxport +[17:19:34] immich: seeded album drillalbumcb179b80 +[17:19:35] immich: readback found=True (http 200, control passed) +[17:19:35] C1 (seed reads back BEFORE): True +[17:19:35] D-immich-0b82-768: swapping to TO {'immich-server': 'ghcr.io/immich-app/immich-server:v3.2.2', 'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.0.3', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine'} +[17:19:36] TO up -d rc=0 +[17:20:08] TO settled=True in 31.5s :: {"immich-machine-learning": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-server": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:20:08] engine state immich-postgres: 16 +[17:20:08] migration lines observed: 6 +[17:20:08] immich: readback found=True (http 200, control passed) +[17:20:08] RESULT (seed reads back AFTER): True +[17:20:09] files_may_change — the files: ['/srv/felhom-gate/hdd/appdata/immich/backups/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/encoded-video/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/library/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/profile/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/thumbs/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/upload/.immich (changed)'] +[17:20:09] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/appdata/immich'] +[17:20:09] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:2283 +[17:20:24] + 15s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=723M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1460M/2048M peak=1631M kills=0 rs=0 reqs=304 +[17:20:39] + 30s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=707M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1471M/2048M peak=1631M kills=0 rs=0 reqs=604 +[17:20:55] + 46s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=703M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1467M/2048M peak=1631M kills=0 rs=0 reqs=904 +[17:21:10] + 61s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1494M/2048M peak=1631M kills=0 rs=0 reqs=1204 +[17:21:25] + 76s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1494M/2048M peak=1631M kills=0 rs=0 reqs=1507 +[17:21:40] + 91s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1357M/2048M peak=1631M kills=0 rs=0 reqs=1808 +[17:21:55] + 106s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1111M/2048M peak=1631M kills=0 rs=0 reqs=2108 +[17:22:11] + 122s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1113M/2048M peak=1631M kills=0 rs=0 reqs=2408 +[17:22:26] + 137s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1116M/2048M peak=1631M kills=0 rs=0 reqs=2708 +[17:22:41] + 152s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=3008 +[17:22:56] + 167s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=3308 +[17:23:11] + 182s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1084M/2048M peak=1631M kills=0 rs=0 reqs=3608 +[17:23:26] + 197s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=3912 +[17:23:42] + 213s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=4212 +[17:23:57] + 228s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=705M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1071M/2048M peak=1631M kills=0 rs=0 reqs=4512 +[17:24:12] + 243s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=715M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1068M/2048M peak=1631M kills=0 rs=0 reqs=4812 +[17:24:27] + 258s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=731M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=5112 +[17:24:42] + 273s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=741M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1078M/2048M peak=1631M kills=0 rs=0 reqs=5412 +[17:24:58] + 288s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=748M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=5712 +[17:25:13] + 304s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=754M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=6016 +[17:25:28] + 319s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=754M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1073M/2048M peak=1631M kills=0 rs=0 reqs=6316 +[17:25:43] + 334s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=764M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=6616 +[17:25:58] + 349s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=767M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=6916 +[17:26:14] + 364s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=7216 +[17:26:29] + 380s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=767M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=7516 +[17:26:44] + 395s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1076M/2048M peak=1631M kills=0 rs=0 reqs=7820 +[17:26:59] + 410s immich-machine-learning=249M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1077M/2048M peak=1631M kills=0 rs=0 reqs=8120 +[17:27:14] + 425s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1078M/2048M peak=1631M kills=0 rs=0 reqs=8420 +[17:27:29] + 440s immich-machine-learning=249M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1079M/2048M peak=1631M kills=0 rs=0 reqs=8720 +[17:27:45] + 456s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1079M/2048M peak=1631M kills=0 rs=0 reqs=9020 +[17:28:00] + 471s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=9324 +[17:28:15] + 486s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1080M/2048M peak=1631M kills=0 rs=0 reqs=9624 +[17:28:30] + 501s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=9924 +[17:28:45] + 516s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=10224 +[17:29:01] + 532s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=10524 +[17:29:16] + 547s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=10824 +[17:29:31] + 562s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=11124 +[17:29:46] + 577s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=11426 +[17:30:01] + 592s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=761M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=11728 +[17:30:17] + 607s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=761M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=12028 +[17:30:17] memory watch: killed=False tight=[] requests=12028 codes={'200': 12028} +[17:30:17] D-immich-0b82-768: ABORT — putting the FROM images back +[17:33:20] ABORT: the app did NOT come back (rc=0, 181.6s) +{ + "harness_version": 4, + "edge": "D-immich-0b82-768", + "app": "immich", + "note": "Part D 2026-09-30: step 0b8272068aab36bf's own definition, immich-postgres 512M -> 768M (R-732)", + "from": { + "immich-server": "ghcr.io/immich-app/immich-server:v3.0.3", + "immich-machine-learning": "ghcr.io/immich-app/immich-machine-learning:v3.0.3", + "immich-postgres": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "immich-redis": "redis:7-alpine" + }, + "to": { + "immich-server": "ghcr.io/immich-app/immich-server:v3.2.2", + "immich-machine-learning": "ghcr.io/immich-app/immich-machine-learning:v3.0.3", + "immich-postgres": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "immich-redis": "redis:7-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kimmich-server | \u001b[32m[Nest] 7 - \u001b[39m09/30/2026, 7:19:45 PM \u001b[32m LOG\u001b[39m \u001b[33m[Microservices:DatabaseRepository]\u001b[39m \u001b[32mRunning migrations\u001b[39m", + "abort": "refuses", + "abort_detail": "18:54.244 CEST [72] LOG: database system was shut down at 2026-09-30 19:18:54 CEST\n\u001b[2Kimmich-postgres | 2026-09-30 19:18:54.259 CEST [1] LOG: database system is ready to accept connections\n\u001b[2Kimmich-postgres | 2026-09-30 19:19:07.602 CEST [95] ERROR: relation \"system_metadata\" does not exist at character 21\n\u001b[2Kimmich-postgres | 2026-09-30 19:19:07.602 CEST [95] STATEMENT: select \"value\" from \"system_metadata\" where \"key\" = $1\n\u001b[2Kimmich-postgres | 2026-09-30 19:23:54.345 CEST [70] LOG: checkpoint starting: time\n\u001b[2Kimmich-postgres | 2026-09-30 19:28:24.197 CEST [70] LOG: checkpoint complete: wrote 16951 buffers (25.9%); 0 WAL file(s) added, 0 removed, 16 recycled; write=269.713 s, sync=0.077 s, total=269.853 s; sync files=769, longest=0.007 s, average=0.001 s; distance=269095 kB, estimate=269095 kB; lsn=0/11F98B70, redo lsn=0/11F98B38", + "engine_state_after": { + "immich-postgres": { + "image": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 607.7, + "requested_s": 600, + "requests": 12028, + "codes": { + "200": 12028 + }, + "first_kill": null, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "peak": 278474752, + "peak_pct": 0.173, + "anon_peak_sampled": 246366208, + "anon_peak_pct": 0.153, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-postgres": { + "limit": 805306368, + "peak": 805638144, + "peak_pct": 1.0, + "anon_peak_sampled": 238280704, + "anon_peak_pct": 0.296, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-redis": { + "limit": 134217728, + "peak": 18083840, + "peak_pct": 0.135, + "anon_peak_sampled": 4100096, + "anon_peak_pct": 0.031, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-server": { + "limit": 2147483648, + "peak": 1711157248, + "peak_pct": 0.797, + "anon_peak_sampled": 1054654464, + "anon_peak_pct": 0.491, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [ + "files_may_change" + ], + "duration_s": 31.5, + "measured_at": "2026-09-30T17:33:20Z", + "evidence": "evidence/D-immich-0b82-768", + "scratch_cleared": [], + "files_changed": [ + "/srv/felhom-gate/hdd/appdata/immich" + ], + "files_changed_detail": [ + "/srv/felhom-gate/hdd/appdata/immich/backups/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/encoded-video/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/library/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/profile/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/thumbs/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/upload/.immich (changed)" + ], + "total_s": 921.3 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/D/D1-hub-immich.txt b/documentation/audits/more-night-apps-2026-09-30/D/D1-hub-immich.txt new file mode 100644 index 00000000..5b10987f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/D1-hub-immich.txt @@ -0,0 +1,162 @@ +# hub read-only 2026-09-30T15:10:48Z: /hosts lists 3 hosts +## demo-felhom-8363b5: page 43171 bytes; immich mentions: 0 +## demo-hp-bb76ea: page 42570 bytes; immich mentions: 0 +## drill-r50-0a4f9a: page 26198 bytes; immich mentions: 0 +## demo-felhom-8363b5 positive controls: bookstack=0 paperless=0 kimai=0 nextcloud=0 +## demo-hp-bb76ea positive controls: bookstack=0 paperless=0 kimai=0 nextcloud=0 +## drill-r50-0a4f9a positive controls: bookstack=0 paperless=0 kimai=0 nextcloud=0 + +## GET /apps (fleet app list) — text rendering: + Apps — Felhom Hub + Felhom Hub + Dashboard + Customers + Apps + Hosts + Offsite + Configuration + App Telemetry + 24h + 7d + 30d + 14 + Total Apps + 18 + Deployments + 8 + Apps with Errors + App + Deployments + Avg Memory + P95 Memory + Catalog Estimate + Catalog Limit + Accuracy + Errors + Warnings + Felhom Controller + 3 + 81 MB + 147 MB + — + — + — + 44 + 163 + OpenGist + 2 + 23 MB + 27 MB + 30M + 128M + 2 + 0 + BookStack + 2 + 155 MB + 226 MB + 150M + 512M + 1 + 159 + Vikunja + 1 + 50 MB + 104 MB + 50M + 256M + 0 + 26 + ActualBudget + 1 + 87 MB + 167 MB + 50M + 256M + 0 + 0 + BentoPDF + 1 + 5 MB + 9 MB + 100M + 384M + 0 + 0 + Calibre-Web Automated + 1 + 171 MB + 294 MB + 200M + 768M + 72 + 184 + Nextcloud + 1 + 295 MB + 321 MB + 256M + 1024M + 0 + 12 + Docmost + 1 + 411 MB + 458 MB + 200M + 896M + 364 + 74 + Paperless-ngx + 1 + 540 MB + 585 MB + 500M + 1664M + 84 + 6 + RomM + 1 + 690 MB + 766 MB + 300M + 1280M + 0 + 87 + PrivateBin + 1 + 38 MB + 45 MB + +## GET /hosts — text rendering (report age): + demo-felhom-8363b5 + Demo Ügyfél + 0.138.0 + ONLINE + 1/2 + 0% + 16% + 29% + inactive + 29% local + demo-hp-bb76ea + Demo HP + 0.138.0 + ONLINE + 1/2 + 8% + 21% + 61% + inactive + 62% local-lvm + drill-r50-0a4f9a + drill-r50 + 0.129.0 floor held + DOWN + 1/1 + 20% + 20% + 10% + inactive + 10% local + Felhom Hub 0.126.0 diff --git a/documentation/audits/more-night-apps-2026-09-30/D/D2-geodata-per-image.txt b/documentation/audits/more-night-apps-2026-09-30/D/D2-geodata-per-image.txt new file mode 100644 index 00000000..1f7f1743 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/D2-geodata-per-image.txt @@ -0,0 +1,36 @@ +# geodata shipped inside each immich-server image (bench 9401, 2026-09-30T16:07:16Z) +## v3.0.3 digest ghcr.io/immich-app/immich-server@sha256:c716dc20f957aafd89fa9d284a2ec63e25c9e2d8d8e87c6197 +total 55108 +drwxr-xr-x 2 root root 4096 Jul 13 20:32 . +drwxr-xr-x 1 root root 4096 Jul 15 14:37 .. +-r--r--r-- 1 root root 151572 Jul 13 01:29 admin1CodesASCII.txt +-r--r--r-- 1 root root 2370419 Jul 13 01:29 admin2Codes.txt +-r--r--r-- 1 root root 40599782 Jul 13 03:22 cities500.txt +-r--r--r-- 1 root root 25 Jul 13 20:32 geodata-date.txt +-r--r--r-- 1 root root 13287234 Jan 1 1970 ne_10m_admin_0_countries.geojson +geodata-date: 2026-07-13T20:32:48+00:00 +/build/geodata/cities500.txt lines=234900 sha256=6047c30ba447e8d2 +## v3.2.2 digest ghcr.io/immich-app/immich-server@sha256:79cc1623323d5894922686d8743b4780181428f98eecbfb58c +total 55316 +drwxr-xr-x 2 root root 4096 Aug 30 09:13 . +drwxr-xr-x 1 root root 4096 Sep 15 20:17 .. +-r--r--r-- 1 root root 151536 Aug 30 02:43 admin1CodesASCII.txt +-r--r--r-- 1 root root 2372955 Aug 30 02:43 admin2Codes.txt +-r--r--r-- 1 root root 40781686 Aug 30 04:35 cities500.txt +-r--r--r-- 1 root root 31678 Aug 30 02:49 countryInfo.txt +-r--r--r-- 1 root root 25 Aug 30 09:13 geodata-date.txt +-r--r--r-- 1 root root 13287234 Jan 1 1970 ne_10m_admin_0_countries.geojson +geodata-date: 2026-08-30T09:13:55+00:00 +/build/geodata/cities500.txt lines=235552 sha256=5afa146e5f64d2c9 +## v3.2.4 digest ghcr.io/immich-app/immich-server@sha256:d317916b28090c33eb36b308464ea391f8b7df1d850fcfea22 +total 56120 +drwxr-xr-x 2 root root 4096 Sep 28 15:51 . +drwxr-xr-x 1 root root 4096 Sep 28 16:55 .. +-r--r--r-- 1 root root 151583 Sep 28 01:52 admin1CodesASCII.txt +-r--r--r-- 1 root root 2375171 Sep 28 01:52 admin2Codes.txt +-r--r--r-- 1 root root 41600853 Sep 28 03:45 cities500.txt +-r--r--r-- 1 root root 31678 Sep 28 01:57 countryInfo.txt +-r--r--r-- 1 root root 25 Sep 28 15:51 geodata-date.txt +-r--r--r-- 1 root root 13287234 Jan 1 1970 ne_10m_admin_0_countries.geojson +geodata-date: 2026-09-28T15:51:37+00:00 +/build/geodata/cities500.txt lines=235876 sha256=bc7631917832f176 diff --git a/documentation/audits/more-night-apps-2026-09-30/D/D3-bench-run.txt b/documentation/audits/more-night-apps-2026-09-30/D/D3-bench-run.txt new file mode 100644 index 00000000..4620b347 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/D3-bench-run.txt @@ -0,0 +1,6 @@ +55: memory: 2048M +84: memory: 1536M +109: memory: 768M +131: memory: 128M +swap lines above (none = no swap) +rc=0 diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-refusal.txt b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-refusal.txt new file mode 100644 index 00000000..e71b661a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-refusal.txt @@ -0,0 +1,110 @@ +immich-machine-learning | [09/30/26 19:18:54] INFO  Starting gunicorn 25.3.0 +immich-machine-learning | [09/30/26 19:18:54] INFO  Listening at: http://[::]:3003 (13) +immich-machine-learning | [09/30/26 19:18:54] INFO  Using worker: immich_ml.config.CustomUvicornWorker +immich-machine-learning | [09/30/26 19:18:54] INFO  Booting worker with pid: 19 +immich-machine-learning | [09/30/26 19:18:57] INFO  Started server process [19] +immich-machine-learning | [09/30/26 19:18:57] INFO  Waiting for application startup. +immich-machine-learning | [09/30/26 19:18:57] INFO  Created in-memory cache with unloading after 300s +immich-machine-learning |   of inactivity. +immich-machine-learning | [09/30/26 19:18:57] INFO  Initialized request thread pool with 8 threads. +immich-machine-learning | [09/30/26 19:18:57] INFO  Application startup complete. +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-redis | 1:C 30 Sep 2026 19:18:52.334 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +immich-server | Starting api worker +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Configuration loaded +immich-redis | 1:M 30 Sep 2026 19:18:52.335 * monotonic clock: POSIX clock_gettime +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Running mode=standalone, port=6379. +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Server initialized +immich-redis | 1:M 30 Sep 2026 19:18:52.341 * Creating AOF base file appendonly.aof.1.base.rdb on server start +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Creating AOF incr file appendonly.aof.1.incr.aof on server start +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Ready to accept connections tcp +immich-redis | 1:M 30 Sep 2026 19:23:53.011 * 100 changes in 300 seconds. Saving... +immich-server | Starting microservices worker +immich-redis | 1:M 30 Sep 2026 19:23:53.012 * Background saving started by pid 190 +immich-redis | 190:C 30 Sep 2026 19:23:53.019 * DB saved on disk +immich-redis | 190:C 30 Sep 2026 19:23:53.020 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +immich-redis | 1:M 30 Sep 2026 19:23:53.113 * Background saving terminated with success +immich-redis | 1:M 30 Sep 2026 19:28:54.051 * 100 changes in 300 seconds. Saving... +immich-redis | 1:M 30 Sep 2026 19:28:54.052 * Background saving started by pid 371 +immich-redis | 371:C 30 Sep 2026 19:28:54.062 * DB saved on disk +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-redis | 371:C 30 Sep 2026 19:28:54.063 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +immich-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +immich-postgres | 2026-09-30 17:18:53.381 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.382 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | waiting for server to start....2026-09-30 17:18:53.429 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.430 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 19:18:53.479 CEST [53] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:53.486 CEST [53] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-redis | 1:M 30 Sep 2026 19:28:54.153 * Background saving terminated with success +immich-postgres | 2026-09-30 19:18:53.506 CEST [56] LOG: database system was shut down at 2026-09-30 19:18:53 CEST +immich-postgres | 2026-09-30 19:18:53.519 CEST [53] LOG: database system is ready to accept connections +immich-postgres | done +immich-postgres | server started +immich-postgres | CREATE DATABASE +immich-postgres | +immich-postgres | +immich-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +immich-postgres | +immich-postgres | waiting for server to shut down...2026-09-30 19:18:53.959 CEST [53] LOG: received fast shutdown request +immich-postgres | .2026-09-30 19:18:53.964 CEST [53] LOG: aborting any active transactions +immich-postgres | 2026-09-30 19:18:53.970 CEST [53] LOG: background worker "logical replication launcher" (PID 62) exited with exit code 1 +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-postgres | 2026-09-30 19:18:53.971 CEST [54] LOG: shutting down +immich-postgres | 2026-09-30 19:18:53.974 CEST [54] LOG: checkpoint starting: shutdown immediate +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-postgres | 2026-09-30 19:18:54.069 CEST [54] LOG: checkpoint complete: wrote 922 buffers (1.4%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.035 s, sync=0.048 s, total=0.098 s; sync files=301, longest=0.017 s, average=0.001 s; distance=1672 kB, estimate=1672 kB; lsn=0/18CED10, redo lsn=0/18CED10 +immich-postgres | 2026-09-30 19:18:54.092 CEST [53] LOG: database system is shut down +immich-postgres | done +immich-postgres | server stopped +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-postgres | +immich-postgres | PostgreSQL init process complete; ready for start up. +immich-postgres | +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv6 address "::", port 5432 +immich-postgres | 2026-09-30 19:18:54.232 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-postgres | 2026-09-30 19:18:54.244 CEST [72] LOG: database system was shut down at 2026-09-30 19:18:54 CEST +immich-postgres | 2026-09-30 19:18:54.259 CEST [1] LOG: database system is ready to accept connections +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] ERROR: relation "system_metadata" does not exist at character 21 +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] STATEMENT: select "value" from "system_metadata" where "key" = $1 +immich-postgres | 2026-09-30 19:23:54.345 CEST [70] LOG: checkpoint starting: time +immich-postgres | 2026-09-30 19:28:24.197 CEST [70] LOG: checkpoint complete: wrote 16951 buffers (25.9%); 0 WAL file(s) added, 0 removed, 16 recycled; write=269.713 s, sync=0.077 s, total=269.853 s; sync files=769, longest=0.007 s, average=0.001 s; distance=269095 kB, estimate=269095 kB; lsn=0/11F98B70, redo lsn=0/11F98B38 \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-states.json new file mode 100644 index 00000000..b72c6e43 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/abort-states.json @@ -0,0 +1,26 @@ +{ + "immich-machine-learning": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-redis": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-server": { + "status": "restarting", + "health": "unhealthy", + "restarts": 0, + "exit": 1 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/compose-final.log new file mode 100644 index 00000000..e13d2378 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/compose-final.log @@ -0,0 +1,487 @@ +immich-redis | 1:C 30 Sep 2026 19:18:52.334 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Configuration loaded +immich-redis | 1:M 30 Sep 2026 19:18:52.335 * monotonic clock: POSIX clock_gettime +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Running mode=standalone, port=6379. +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Server initialized +immich-redis | 1:M 30 Sep 2026 19:18:52.341 * Creating AOF base file appendonly.aof.1.base.rdb on server start +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Creating AOF incr file appendonly.aof.1.incr.aof on server start +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Ready to accept connections tcp +immich-redis | 1:M 30 Sep 2026 19:23:53.011 * 100 changes in 300 seconds. Saving... +immich-redis | 1:M 30 Sep 2026 19:23:53.012 * Background saving started by pid 190 +immich-redis | 190:C 30 Sep 2026 19:23:53.019 * DB saved on disk +immich-redis | 190:C 30 Sep 2026 19:23:53.020 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +immich-redis | 1:M 30 Sep 2026 19:23:53.113 * Background saving terminated with success +immich-redis | 1:M 30 Sep 2026 19:28:54.051 * 100 changes in 300 seconds. Saving... +immich-redis | 1:M 30 Sep 2026 19:28:54.052 * Background saving started by pid 371 +immich-redis | 371:C 30 Sep 2026 19:28:54.062 * DB saved on disk +immich-redis | 371:C 30 Sep 2026 19:28:54.063 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +immich-redis | 1:M 30 Sep 2026 19:28:54.153 * Background saving terminated with success +immich-machine-learning | [09/30/26 19:18:54] INFO  Starting gunicorn 25.3.0 +immich-machine-learning | [09/30/26 19:18:54] INFO  Listening at: http://[::]:3003 (13) +immich-machine-learning | [09/30/26 19:18:54] INFO  Using worker: immich_ml.config.CustomUvicornWorker +immich-machine-learning | [09/30/26 19:18:54] INFO  Booting worker with pid: 19 +immich-machine-learning | [09/30/26 19:18:57] INFO  Started server process [19] +immich-machine-learning | [09/30/26 19:18:57] INFO  Waiting for application startup. +immich-machine-learning | [09/30/26 19:18:57] INFO  Created in-memory cache with unloading after 300s +immich-machine-learning |   of inactivity. +immich-machine-learning | [09/30/26 19:18:57] INFO  Initialized request thread pool with 8 threads. +immich-machine-learning | [09/30/26 19:18:57] INFO  Application startup complete. +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:30:26 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-postgres | Using SSD storage +immich-server | [Nest] 7 - 09/30/2026, 7:30:26 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:26 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:26 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:30:27 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-postgres | The files belonging to this database system will be owned by user "postgres". +immich-postgres | This user must also own the server process. +immich-postgres | +immich-postgres | The database cluster will be initialized with locale "en_US.utf8". +immich-postgres | The default database encoding has accordingly been set to "UTF8". +immich-postgres | The default text search configuration will be set to "english". +immich-postgres | +immich-postgres | Data page checksums are enabled. +immich-postgres | +immich-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +immich-postgres | creating subdirectories ... ok +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-postgres | selecting dynamic shared memory implementation ... posix +immich-postgres | selecting default max_connections ... 100 +immich-postgres | selecting default shared_buffers ... 128MB +immich-postgres | selecting default time zone ... Europe/Budapest +immich-postgres | creating configuration files ... ok +immich-postgres | running bootstrap script ... ok +immich-postgres | performing post-bootstrap initialization ... ok +immich-postgres | syncing data to disk ... ok +immich-postgres | +immich-postgres | +immich-postgres | Success. You can now start the database server using: +immich-postgres | +immich-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +immich-postgres | +immich-postgres | initdb: warning: enabling "trust" authentication for local connections +immich-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +immich-postgres | 2026-09-30 17:18:53.381 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.382 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | waiting for server to start....2026-09-30 17:18:53.429 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.430 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 19:18:53.479 CEST [53] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:53.486 CEST [53] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-postgres | 2026-09-30 19:18:53.506 CEST [56] LOG: database system was shut down at 2026-09-30 19:18:53 CEST +immich-postgres | 2026-09-30 19:18:53.519 CEST [53] LOG: database system is ready to accept connections +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-postgres | done +immich-postgres | server started +immich-postgres | CREATE DATABASE +immich-postgres | +immich-postgres | +immich-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +immich-postgres | +immich-postgres | waiting for server to shut down...2026-09-30 19:18:53.959 CEST [53] LOG: received fast shutdown request +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:30:35 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:30:35 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:35 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:35 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:30:35 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-postgres | .2026-09-30 19:18:53.964 CEST [53] LOG: aborting any active transactions +immich-postgres | 2026-09-30 19:18:53.970 CEST [53] LOG: background worker "logical replication launcher" (PID 62) exited with exit code 1 +immich-postgres | 2026-09-30 19:18:53.971 CEST [54] LOG: shutting down +immich-postgres | 2026-09-30 19:18:53.974 CEST [54] LOG: checkpoint starting: shutdown immediate +immich-postgres | 2026-09-30 19:18:54.069 CEST [54] LOG: checkpoint complete: wrote 922 buffers (1.4%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.035 s, sync=0.048 s, total=0.098 s; sync files=301, longest=0.017 s, average=0.001 s; distance=1672 kB, estimate=1672 kB; lsn=0/18CED10, redo lsn=0/18CED10 +immich-postgres | 2026-09-30 19:18:54.092 CEST [53] LOG: database system is shut down +immich-postgres | done +immich-postgres | server stopped +immich-postgres | +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-postgres | PostgreSQL init process complete; ready for start up. +immich-postgres | +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv6 address "::", port 5432 +immich-postgres | 2026-09-30 19:18:54.232 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-postgres | 2026-09-30 19:18:54.244 CEST [72] LOG: database system was shut down at 2026-09-30 19:18:54 CEST +immich-postgres | 2026-09-30 19:18:54.259 CEST [1] LOG: database system is ready to accept connections +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] ERROR: relation "system_metadata" does not exist at character 21 +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] STATEMENT: select "value" from "system_metadata" where "key" = $1 +immich-postgres | 2026-09-30 19:23:54.345 CEST [70] LOG: checkpoint starting: time +immich-postgres | 2026-09-30 19:28:24.197 CEST [70] LOG: checkpoint complete: wrote 16951 buffers (25.9%); 0 WAL file(s) added, 0 removed, 16 recycled; write=269.713 s, sync=0.077 s, total=269.853 s; sync files=769, longest=0.007 s, average=0.001 s; distance=269095 kB, estimate=269095 kB; lsn=0/11F98B70, redo lsn=0/11F98B38 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:30:43 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:30:43 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:43 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:43 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:30:43 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:30:51 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:30:51 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:51 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:30:51 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:30:51 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:31:00 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:31:00 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:00 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:00 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:31:00 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:31:09 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:31:10 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:10 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:10 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:31:10 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:31:20 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:31:21 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:21 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:21 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:31:21 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:31:35 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:31:35 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:35 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:35 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:31:35 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:31:56 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:31:56 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:56 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:31:56 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:31:56 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process +immich-server | Initializing Immich v3.0.3 +immich-server | Detected CPU Cores: 8 +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:32:29 PM  ERROR [Microservices:DatabaseRepository] Migrations failed: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker error: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing, stack: Error: corrupted migrations: previously executed migration 1784647658615-AddOAuthBearerTokenToSession is missing +immich-server | at #ensureNoMissingMigrations (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:495:23) +immich-server | at #getState (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:447:40) +immich-server | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +immich-server | at async run (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:417:31) +immich-server | at async /usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/kysely.js:578:32 +immich-server | at async DefaultConnectionProvider.provideConnection (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20) +immich-server | at async #migrate (/usr/src/app/server/node_modules/.pnpm/kysely@0.28.17/node_modules/kysely/dist/cjs/migration/migrator.js:273:20) +immich-server | at async DatabaseRepository.runMigrations (/usr/src/app/server/dist/repositories/database.repository.js:324:36) +immich-server | at async /usr/src/app/server/dist/services/database.service.js:103:17 +immich-server | at async /usr/src/app/server/dist/repositories/database.repository.js:376:27 +immich-server | microservices worker exited with code 1 +immich-server | Killing api process diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/engine-state.json new file mode 100644 index 00000000..e1be9442 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/engine-state.json @@ -0,0 +1,8 @@ +{ + "immich-postgres": { + "image": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after-detail.json new file mode 100644 index 00000000..e11e116f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after-detail.json @@ -0,0 +1,11 @@ +{ + "/srv/felhom-gate/hdd/appdata/immich": { + "profile/.immich": "13:0bacc6528e07d8cb", + "upload/.immich": "13:a68db79a3fbe6725", + "encoded-video/.immich": "13:2cb994a10bfe243c", + "backups/.immich": "13:648fe4b9664fadff", + "thumbs/.immich": "13:0bacc6528e07d8cb", + "library/.immich": "13:a68db79a3fbe6725" + }, + "/srv/felhom-gate/hdd/userdata/media/photos": {} +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after.json new file mode 100644 index 00000000..1c3650e3 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-after.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/appdata/immich": "f58de940144f864942da1433dce3d28400dec9e5a1839f6f49adcacdb2a88b72", + "/srv/felhom-gate/hdd/userdata/media/photos": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before-detail.json new file mode 100644 index 00000000..2d345d7e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before-detail.json @@ -0,0 +1,11 @@ +{ + "/srv/felhom-gate/hdd/appdata/immich": { + "profile/.immich": "13:7cb1f8a19d944d7e", + "upload/.immich": "13:67848ba791bd7ef6", + "encoded-video/.immich": "13:68bdf71e87fabadc", + "backups/.immich": "13:7cb1f8a19d944d7e", + "thumbs/.immich": "13:7cb1f8a19d944d7e", + "library/.immich": "13:67848ba791bd7ef6" + }, + "/srv/felhom-gate/hdd/userdata/media/photos": {} +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before.json new file mode 100644 index 00000000..a566e2c1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/files-before.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/appdata/immich": "b43c15cc1fae7c10a39b2da086f7455752877aef2cd96c75934782bb6fb03552", + "/srv/felhom-gate/hdd/userdata/media/photos": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/memory-samples.json new file mode 100644 index 00000000..bd06e264 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/memory-samples.json @@ -0,0 +1,2002 @@ +[ + { + "t": 15.2, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260743168, + "peak": 278323200, + "anon": 246345728, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 758906880, + "peak": 805638144, + "anon": 238280704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14036992, + "peak": 17833984, + "anon": 3969024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1531518976, + "peak": 1711157248, + "anon": 1020014592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 304 + }, + { + "t": 30.4, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260751360, + "peak": 278323200, + "anon": 246353920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 742273024, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14245888, + "peak": 17833984, + "anon": 3915776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1542705152, + "peak": 1711157248, + "anon": 1030905856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 604 + }, + { + "t": 45.6, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260751360, + "peak": 278323200, + "anon": 246353920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 737591296, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14585856, + "peak": 17833984, + "anon": 3993600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1538387968, + "peak": 1711157248, + "anon": 1025257472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 904 + }, + { + "t": 60.8, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260751360, + "peak": 278323200, + "anon": 246353920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 735850496, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14303232, + "peak": 17833984, + "anon": 3973120, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1566732288, + "peak": 1711157248, + "anon": 1054552064, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1204 + }, + { + "t": 76.0, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260755456, + "peak": 278323200, + "anon": 246358016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 735846400, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14094336, + "peak": 17833984, + "anon": 4022272, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1567162368, + "peak": 1711157248, + "anon": 1054654464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1507 + }, + { + "t": 91.1, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260755456, + "peak": 278323200, + "anon": 246358016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 735850496, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14348288, + "peak": 17833984, + "anon": 4014080, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1423060992, + "peak": 1711157248, + "anon": 915644416, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1808 + }, + { + "t": 106.3, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736014336, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14385152, + "peak": 17833984, + "anon": 4050944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1165869056, + "peak": 1711157248, + "anon": 666144768, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2108 + }, + { + "t": 121.5, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736104448, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14344192, + "peak": 17833984, + "anon": 4009984, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1167998976, + "peak": 1711157248, + "anon": 668438528, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2408 + }, + { + "t": 136.7, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736157696, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14389248, + "peak": 17833984, + "anon": 4055040, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1170771968, + "peak": 1711157248, + "anon": 671248384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2708 + }, + { + "t": 151.9, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736153600, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14626816, + "peak": 17833984, + "anon": 4030464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1135804416, + "peak": 1711157248, + "anon": 631779328, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3008 + }, + { + "t": 167.1, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736153600, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14422016, + "peak": 17833984, + "anon": 4087808, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1136013312, + "peak": 1711157248, + "anon": 631984128, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3308 + }, + { + "t": 182.2, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736329728, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14401536, + "peak": 17833984, + "anon": 4067328, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1137020928, + "peak": 1711157248, + "anon": 632741888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3608 + }, + { + "t": 197.4, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736153600, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14434304, + "peak": 17833984, + "anon": 4100096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1128194048, + "peak": 1711157248, + "anon": 617328640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3912 + }, + { + "t": 212.6, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 736161792, + "peak": 805638144, + "anon": 225234944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14405632, + "peak": 17833984, + "anon": 4071424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1126682624, + "peak": 1711157248, + "anon": 615772160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4212 + }, + { + "t": 227.8, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260915200, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 739770368, + "peak": 805638144, + "anon": 225345536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14434304, + "peak": 17833984, + "anon": 4100096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1123151872, + "peak": 1711157248, + "anon": 622759936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4512 + }, + { + "t": 243.0, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 750600192, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 13971456, + "peak": 17833984, + "anon": 3899392, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1120141312, + "peak": 1711157248, + "anon": 620670976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4812 + }, + { + "t": 258.2, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260771840, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 767442944, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14266368, + "peak": 17833984, + "anon": 3932160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1126703104, + "peak": 1711157248, + "anon": 631349248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5112 + }, + { + "t": 273.4, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 777056256, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14229504, + "peak": 17833984, + "anon": 3895296, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1130700800, + "peak": 1711157248, + "anon": 636461056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5412 + }, + { + "t": 288.5, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260960256, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 784875520, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14270464, + "peak": 17833984, + "anon": 3936256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1126592512, + "peak": 1711157248, + "anon": 641036288, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5712 + }, + { + "t": 303.7, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 791629824, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 13963264, + "peak": 17833984, + "anon": 3891200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1124954112, + "peak": 1711157248, + "anon": 643526656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6016 + }, + { + "t": 318.9, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260771840, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 791379968, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14258176, + "peak": 17833984, + "anon": 3923968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1125961728, + "peak": 1711157248, + "anon": 644616192, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6316 + }, + { + "t": 334.1, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 801673216, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 13950976, + "peak": 17833984, + "anon": 3878912, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1127378944, + "peak": 1711157248, + "anon": 645586944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6616 + }, + { + "t": 349.3, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 804646912, + "peak": 805638144, + "anon": 225390592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14249984, + "peak": 17833984, + "anon": 3915776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1124229120, + "peak": 1711157248, + "anon": 642465792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6916 + }, + { + "t": 364.5, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260759552, + "peak": 278323200, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 800681984, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14151680, + "peak": 17833984, + "anon": 3817472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1124917248, + "peak": 1711157248, + "anon": 643198976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7216 + }, + { + "t": 379.7, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260796416, + "peak": 278372352, + "anon": 246362112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 805208064, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14151680, + "peak": 17833984, + "anon": 3813376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1127706624, + "peak": 1711157248, + "anon": 646520832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7516 + }, + { + "t": 394.8, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278372352, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 800280576, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14147584, + "peak": 17833984, + "anon": 3809280, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1128849408, + "peak": 1711157248, + "anon": 647139328, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7820 + }, + { + "t": 410.0, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 261136384, + "peak": 278372352, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 800636928, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14151680, + "peak": 17833984, + "anon": 3842048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1129472000, + "peak": 1711157248, + "anon": 647909376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8120 + }, + { + "t": 425.2, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278372352, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 800002048, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14135296, + "peak": 17833984, + "anon": 3796992, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1130496000, + "peak": 1711157248, + "anon": 648761344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8420 + }, + { + "t": 440.4, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 261304320, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799563776, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 13893632, + "peak": 17833984, + "anon": 3813376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1131683840, + "peak": 1711157248, + "anon": 651374592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8720 + }, + { + "t": 455.6, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799907840, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14413824, + "peak": 18083840, + "anon": 3809280, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1132396544, + "peak": 1711157248, + "anon": 652218368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9020 + }, + { + "t": 470.8, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799621120, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14118912, + "peak": 18083840, + "anon": 3846144, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1133551616, + "peak": 1711157248, + "anon": 653287424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9324 + }, + { + "t": 485.9, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 800006144, + "peak": 805638144, + "anon": 225394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14143488, + "peak": 18083840, + "anon": 3813376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1133445120, + "peak": 1711157248, + "anon": 653299712, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9624 + }, + { + "t": 501.1, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260808704, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799449088, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14487552, + "peak": 18083840, + "anon": 3878912, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1133744128, + "peak": 1711157248, + "anon": 653475840, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9924 + }, + { + "t": 516.3, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799277056, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14225408, + "peak": 18083840, + "anon": 3878912, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1133854720, + "peak": 1711157248, + "anon": 653492224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10224 + }, + { + "t": 531.5, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799080448, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14528512, + "peak": 18083840, + "anon": 3919872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1134772224, + "peak": 1711157248, + "anon": 654630912, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10524 + }, + { + "t": 546.7, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799490048, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14630912, + "peak": 18083840, + "anon": 3907584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1134714880, + "peak": 1711157248, + "anon": 654868480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10824 + }, + { + "t": 561.9, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799080448, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14557184, + "peak": 18083840, + "anon": 3944448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1134915584, + "peak": 1711157248, + "anon": 655015936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11124 + }, + { + "t": 577.0, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 799272960, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14483456, + "peak": 18083840, + "anon": 3891200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1135218688, + "peak": 1711157248, + "anon": 655040512, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11426 + }, + { + "t": 592.3, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 798855168, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14209024, + "peak": 18083840, + "anon": 3858432, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1135624192, + "peak": 1711157248, + "anon": 655147008, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11728 + }, + { + "t": 607.4, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "current": 260763648, + "peak": 278474752, + "anon": 246366208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-postgres": { + "limit": 805306368, + "current": 798629888, + "peak": 805638144, + "anon": 225480704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-redis": { + "limit": 134217728, + "current": 14245888, + "peak": 18083840, + "anon": 3837952, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "immich-server": { + "limit": 2147483648, + "current": 1135161344, + "peak": 1711157248, + "anon": 655179776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 12028 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/migration-lines.txt new file mode 100644 index 00000000..4a3dfffe --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/migration-lines.txt @@ -0,0 +1,6 @@ +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784647658615-AddOAuthBearerTokenToSession" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784836013770-MinFacePreferenceMigration" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784986754473-ConvertUserPasswordEmptyStringToNull" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784986754474-AlbumDescriptionNullable" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1786385711807-AlbumOwnerDeleteTrigger" succeeded \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/run.log b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/run.log new file mode 100644 index 00000000..8ef9c906 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/run.log @@ -0,0 +1,60 @@ +[17:17:59] scratch drive folders cleared before FROM (R-656): none existed +[17:17:59] D-immich-0b82-768: deploying immich at FROM {'immich-server': 'ghcr.io/immich-app/immich-server:v3.0.3', 'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.0.3', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine'} +[17:19:34] FROM settled=True in 31.4s :: {"immich-machine-learning": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-server": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:19:34] fixture: the BOX walk's own (Immich), through upgrade_boxport +[17:19:34] immich: seeded album drillalbumcb179b80 +[17:19:35] immich: readback found=True (http 200, control passed) +[17:19:35] C1 (seed reads back BEFORE): True +[17:19:35] D-immich-0b82-768: swapping to TO {'immich-server': 'ghcr.io/immich-app/immich-server:v3.2.2', 'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.0.3', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine'} +[17:19:36] TO up -d rc=0 +[17:20:08] TO settled=True in 31.5s :: {"immich-machine-learning": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "immich-server": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:20:08] engine state immich-postgres: 16 +[17:20:08] migration lines observed: 6 +[17:20:08] immich: readback found=True (http 200, control passed) +[17:20:08] RESULT (seed reads back AFTER): True +[17:20:09] files_may_change — the files: ['/srv/felhom-gate/hdd/appdata/immich/backups/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/encoded-video/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/library/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/profile/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/thumbs/.immich (changed)', '/srv/felhom-gate/hdd/appdata/immich/upload/.immich (changed)'] +[17:20:09] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/appdata/immich'] +[17:20:09] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:2283 +[17:20:24] + 15s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=723M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1460M/2048M peak=1631M kills=0 rs=0 reqs=304 +[17:20:39] + 30s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=707M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1471M/2048M peak=1631M kills=0 rs=0 reqs=604 +[17:20:55] + 46s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=703M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1467M/2048M peak=1631M kills=0 rs=0 reqs=904 +[17:21:10] + 61s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1494M/2048M peak=1631M kills=0 rs=0 reqs=1204 +[17:21:25] + 76s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1494M/2048M peak=1631M kills=0 rs=0 reqs=1507 +[17:21:40] + 91s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1357M/2048M peak=1631M kills=0 rs=0 reqs=1808 +[17:21:55] + 106s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=701M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1111M/2048M peak=1631M kills=0 rs=0 reqs=2108 +[17:22:11] + 122s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1113M/2048M peak=1631M kills=0 rs=0 reqs=2408 +[17:22:26] + 137s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1116M/2048M peak=1631M kills=0 rs=0 reqs=2708 +[17:22:41] + 152s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=3008 +[17:22:56] + 167s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=3308 +[17:23:11] + 182s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1084M/2048M peak=1631M kills=0 rs=0 reqs=3608 +[17:23:26] + 197s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=3912 +[17:23:42] + 213s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=702M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=4212 +[17:23:57] + 228s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=705M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1071M/2048M peak=1631M kills=0 rs=0 reqs=4512 +[17:24:12] + 243s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=715M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1068M/2048M peak=1631M kills=0 rs=0 reqs=4812 +[17:24:27] + 258s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=731M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=5112 +[17:24:42] + 273s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=741M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1078M/2048M peak=1631M kills=0 rs=0 reqs=5412 +[17:24:58] + 288s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=748M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1074M/2048M peak=1631M kills=0 rs=0 reqs=5712 +[17:25:13] + 304s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=754M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=6016 +[17:25:28] + 319s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=754M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1073M/2048M peak=1631M kills=0 rs=0 reqs=6316 +[17:25:43] + 334s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=764M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=6616 +[17:25:58] + 349s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=767M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=6916 +[17:26:14] + 364s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1072M/2048M peak=1631M kills=0 rs=0 reqs=7216 +[17:26:29] + 380s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=767M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1075M/2048M peak=1631M kills=0 rs=0 reqs=7516 +[17:26:44] + 395s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1076M/2048M peak=1631M kills=0 rs=0 reqs=7820 +[17:26:59] + 410s immich-machine-learning=249M/1536M peak=265M kills=0 rs=0 immich-postgres=763M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1077M/2048M peak=1631M kills=0 rs=0 reqs=8120 +[17:27:14] + 425s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1078M/2048M peak=1631M kills=0 rs=0 reqs=8420 +[17:27:29] + 440s immich-machine-learning=249M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1079M/2048M peak=1631M kills=0 rs=0 reqs=8720 +[17:27:45] + 456s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1079M/2048M peak=1631M kills=0 rs=0 reqs=9020 +[17:28:00] + 471s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=9324 +[17:28:15] + 486s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1080M/2048M peak=1631M kills=0 rs=0 reqs=9624 +[17:28:30] + 501s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=9924 +[17:28:45] + 516s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1081M/2048M peak=1631M kills=0 rs=0 reqs=10224 +[17:29:01] + 532s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=10524 +[17:29:16] + 547s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=10824 +[17:29:31] + 562s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=11124 +[17:29:46] + 577s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=762M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=11426 +[17:30:01] + 592s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=761M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1083M/2048M peak=1631M kills=0 rs=0 reqs=11728 +[17:30:17] + 607s immich-machine-learning=248M/1536M peak=265M kills=0 rs=0 immich-postgres=761M/768M peak=768M kills=0 rs=0 immich-redis=13M/128M peak=17M kills=0 rs=0 immich-server=1082M/2048M peak=1631M kills=0 rs=0 reqs=12028 +[17:30:17] memory watch: killed=False tight=[] requests=12028 codes={'200': 12028} +[17:30:17] D-immich-0b82-768: ABORT — putting the FROM images back +[17:33:20] ABORT: the app did NOT come back (rc=0, 181.6s) \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-full.log b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-full.log new file mode 100644 index 00000000..0cfaf384 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-full.log @@ -0,0 +1,566 @@ +immich-redis | 1:C 30 Sep 2026 19:18:52.334 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +immich-machine-learning | [09/30/26 19:18:54] INFO  Starting gunicorn 25.3.0 +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started +immich-machine-learning | [09/30/26 19:18:54] INFO  Listening at: http://[::]:3003 (13) +immich-machine-learning | [09/30/26 19:18:54] INFO  Using worker: immich_ml.config.CustomUvicornWorker +immich-machine-learning | [09/30/26 19:18:54] INFO  Booting worker with pid: 19 +immich-machine-learning | [09/30/26 19:18:57] INFO  Started server process [19] +immich-machine-learning | [09/30/26 19:18:57] INFO  Waiting for application startup. +immich-machine-learning | [09/30/26 19:18:57] INFO  Created in-memory cache with unloading after 300s +immich-machine-learning |   of inactivity. +immich-machine-learning | [09/30/26 19:18:57] INFO  Initialized request thread pool with 8 threads. +immich-machine-learning | [09/30/26 19:18:57] INFO  Application startup complete. +immich-redis | 1:C 30 Sep 2026 19:18:52.334 * Configuration loaded +immich-postgres | Using SSD storage +immich-server | Initializing Immich v3.2.2 +immich-redis | 1:M 30 Sep 2026 19:18:52.335 * monotonic clock: POSIX clock_gettime +immich-server | Detected CPU Cores: 8 +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Running mode=standalone, port=6379. +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-redis | 1:M 30 Sep 2026 19:18:52.337 * Server initialized +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-redis | 1:M 30 Sep 2026 19:18:52.341 * Creating AOF base file appendonly.aof.1.base.rdb on server start +immich-postgres | The files belonging to this database system will be owned by user "postgres". +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Creating AOF incr file appendonly.aof.1.incr.aof on server start +immich-postgres | This user must also own the server process. +immich-postgres | +immich-postgres | The database cluster will be initialized with locale "en_US.utf8". +immich-postgres | The default database encoding has accordingly been set to "UTF8". +immich-postgres | The default text search configuration will be set to "english". +immich-postgres | +immich-postgres | Data page checksums are enabled. +immich-postgres | +immich-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +immich-postgres | creating subdirectories ... ok +immich-postgres | selecting dynamic shared memory implementation ... posix +immich-postgres | selecting default max_connections ... 100 +immich-redis | 1:M 30 Sep 2026 19:18:52.348 * Ready to accept connections tcp +immich-server | Starting api worker +immich-server | Starting microservices worker +immich-server | (node:7) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-postgres | selecting default shared_buffers ... 128MB +immich-postgres | selecting default time zone ... Europe/Budapest +immich-postgres | creating configuration files ... ok +immich-server | (node:29) ExperimentalWarning: WASI is an experimental feature and might change at any time +immich-server | (Use `node --trace-warnings ...` to show where the warning was created) +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784647658615-AddOAuthBearerTokenToSession" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784836013770-MinFacePreferenceMigration" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784986754473-ConvertUserPasswordEmptyStringToNull" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1784986754474-AlbumDescriptionNullable" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1786385711807-AlbumOwnerDeleteTrigger" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1786741078327-AddWorkflowLogsTable" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1786972746371-AssetOcrUpdatedAtTrigger" succeeded +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1786972746372-AssetOcrSyncReset" succeeded +immich-postgres | running bootstrap script ... ok +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1787148183729-ClusterGroups" succeeded +immich-postgres | performing post-bootstrap initialization ... ok +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Migration "1787148183730-DeleteMismatchedMemoryAssets" succeeded +immich-postgres | syncing data to disk ... ok +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseRepository] Finished running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:19:45 PM  LOG [Microservices:DatabaseService] Checking for schema drift +immich-server | [Nest] 7 - 09/30/2026, 7:19:46 PM  LOG [Microservices:DatabaseService] No schema drift detected +immich-server | [Nest] 29 - 09/30/2026, 7:19:46 PM  LOG [Api:WebsocketRepository] Initialized websocket server +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:StorageService] Verifying system mount folder checks, current state: {"mountChecks":{"thumbs":true,"upload":true,"backups":true,"library":true,"profile":true,"encoded-video":true}} +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:StorageService] Successfully verified system mount folder checks +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:MetadataService] Bootstrapping metadata service +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:MetadataService] Initializing metadata service +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseRepository] targetLists=1, current=1 for clip_index of 0 rows +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseRepository] targetLists=1, current=1 for face_index of 0 rows +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseRepository] Running migrations +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:MapRepository] Initializing metadata repository +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseRepository] Finished running migrations +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseService] Checking for schema drift +immich-postgres | +immich-postgres | +immich-postgres | Success. You can now start the database server using: +immich-postgres | +immich-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +immich-postgres | +immich-postgres | initdb: warning: enabling "trust" authentication for local connections +immich-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +immich-postgres | 2026-09-30 17:18:53.381 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.382 GMT [48] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | waiting for server to start....2026-09-30 17:18:53.429 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 17:18:53.430 GMT [53] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-postgres | 2026-09-30 19:18:53.479 CEST [53] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:53.486 CEST [53] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-postgres | 2026-09-30 19:18:53.506 CEST [56] LOG: database system was shut down at 2026-09-30 19:18:53 CEST +immich-postgres | 2026-09-30 19:18:53.519 CEST [53] LOG: database system is ready to accept connections +immich-postgres | done +immich-postgres | server started +immich-postgres | CREATE DATABASE +immich-postgres | +immich-postgres | +immich-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +immich-postgres | +immich-postgres | waiting for server to shut down...2026-09-30 19:18:53.959 CEST [53] LOG: received fast shutdown request +immich-postgres | .2026-09-30 19:18:53.964 CEST [53] LOG: aborting any active transactions +immich-postgres | 2026-09-30 19:18:53.970 CEST [53] LOG: background worker "logical replication launcher" (PID 62) exited with exit code 1 +immich-postgres | 2026-09-30 19:18:53.971 CEST [54] LOG: shutting down +immich-postgres | 2026-09-30 19:18:53.974 CEST [54] LOG: checkpoint starting: shutdown immediate +immich-postgres | 2026-09-30 19:18:54.069 CEST [54] LOG: checkpoint complete: wrote 922 buffers (1.4%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.035 s, sync=0.048 s, total=0.098 s; sync files=301, longest=0.017 s, average=0.001 s; distance=1672 kB, estimate=1672 kB; lsn=0/18CED10, redo lsn=0/18CED10 +immich-postgres | 2026-09-30 19:18:54.092 CEST [53] LOG: database system is shut down +immich-postgres | done +immich-postgres | server stopped +immich-postgres | +immich-postgres | PostgreSQL init process complete; ready for start up. +immich-postgres | +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:DatabaseService] No schema drift detected +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:StorageService] Verifying system mount folder checks, current state: {"mountChecks":{"thumbs":true,"upload":true,"backups":true,"library":true,"profile":true,"encoded-video":true}} +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:StorageService] Successfully verified system mount folder checks +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:ServerService] Feature Flags: { +immich-server | "smartSearch": true, +immich-server | "facialRecognition": true, +immich-server | "duplicateDetection": true, +immich-server | "map": true, +immich-server | "reverseGeocoding": true, +immich-server | "importFaces": false, +immich-server | "sidecar": true, +immich-server | "search": true, +immich-server | "trash": true, +immich-server | "oauth": false, +immich-server | "oauthAutoLaunch": false, +immich-server | "ocr": true, +immich-server | "passwordLogin": true, +immich-server | "configFile": false, +immich-server | "email": false, +immich-server | "realtimeTranscoding": false +immich-server | } +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:SystemConfigService] LogLevel=log (set via system config) +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:NestFactory] Starting Nest application... +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ClsModule dependencies initialized +immich-postgres | 2026-09-30 17:18:54.182 GMT [1] LOG: skipping missing configuration file "/var/lib/postgresql/data/postgresql.override.conf" +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ClsCommonModule dependencies initialized +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +immich-postgres | 2026-09-30 19:18:54.225 CEST [1] LOG: listening on IPv6 address "::", port 5432 +immich-postgres | 2026-09-30 19:18:54.232 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +immich-postgres | 2026-09-30 19:18:54.244 CEST [72] LOG: database system was shut down at 2026-09-30 19:18:54 CEST +immich-postgres | 2026-09-30 19:18:54.259 CEST [1] LOG: database system is ready to accept connections +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] ERROR: relation "system_metadata" does not exist at character 21 +immich-postgres | 2026-09-30 19:19:07.602 CEST [95] STATEMENT: select "value" from "system_metadata" where "key" = $1 +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] OpenTelemetryModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] KyselyModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] OpenTelemetryCoreModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] DiscoveryModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ClsRootModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ClsPluginsModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ScheduleModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:InstanceLoader] ApiModule dependencies initialized +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  WARN [Api:LegacyRouteConverter] Unsupported route path: "/api/*". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of "path-to-regexp" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with "/users", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert to "/api/{*path}"... +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ApiKeyController {/api/api-keys}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/me, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id/rotate, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ActivityController {/api/activities}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/activities, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/activities, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/activities/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/activities/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AlbumController {/api/albums}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/map-markers, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/assets, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/users, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/user/:userId, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/albums/:id/user/:userId, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AppController {/api}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/.well-known/immich, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/custom.css, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AssetController {/api/assets}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/jobs, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/copy, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/metadata, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/metadata, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/metadata, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/ocr, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/metadata, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/metadata/:key, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/metadata/:key, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/edits, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/edits, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/edits, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AssetFilesController {/api/asset-files}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/asset-files, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/asset-files/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/asset-files/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/asset-files/:id/download, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AssetMediaController {/api/assets}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/original, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/thumbnail, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/playback, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/bulk-upload-check, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AuthController {/api/auth}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/login, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/admin-sign-up, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/validateToken, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/change-password, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/logout, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/status, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/pin-code, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/pin-code, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/pin-code, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/session/unlock, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/auth/session/lock, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] AuthAdminController {/api/admin/auth}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/auth/unlink-all, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ClusterGroupController {/api/cluster-groups}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/requests, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/requests/:id/accept, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/requests/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/:id/requests, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/:id/users, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/:id/requests, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/:id/regenerate-people, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/cluster-groups/:id/leave, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ConfigUserController {/api/config}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/config, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/config/defaults, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ConfigAdminController {/api/admin/config}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/config, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/config/defaults, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/config, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ConfigPublicController {/api/public/config}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/public/config, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/public/config/defaults, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] DatabaseBackupController {/api/admin/database-backups}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/database-backups, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/database-backups/:filename, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/database-backups, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/database-backups/start-restore, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/database-backups/upload, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] DownloadController {/api/download}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/download/info, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/download/archive, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] DuplicateController {/api/duplicates}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/duplicates, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/duplicates, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/duplicates/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/duplicates/resolve, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] FaceController {/api/faces}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/faces, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/faces, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/faces/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/faces/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] IntegrityAdminController {/api/admin/integrity}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/integrity/summary, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/integrity/report, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/integrity/report/:id/file, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/integrity/report/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/integrity/report/:type/csv, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] JobController {/api/jobs}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/jobs, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/jobs, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/jobs/:name, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] LibraryController {/api/libraries}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/validate, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/scan, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] MaintenanceController {/api/admin/maintenance}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/maintenance/status, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/maintenance/detect-install, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/maintenance/login, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/maintenance, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] MapController {/api/map}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/map/markers, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/map/reverse-geocode, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] MemoryController {/api/memories}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/memories/:id/assets, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] NotificationController {/api/notifications}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/notifications/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] NotificationAdminController {/api/admin/notifications}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/notifications, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/notifications/test-email, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/notifications/templates/:name, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] OAuthController {/api/oauth}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/mobile-redirect, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/authorize, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/callback, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/link, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/unlink, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/oauth/backchannel-logout, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] PartnerController {/api/partners}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/partners, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/partners, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/partners/:id, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/partners/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/partners/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] PersonController {/api/people}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id/thumbnail, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id/reassign, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/merge, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/people/:id/merge, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] PluginController {/api/plugins}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/plugins, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/plugins/methods, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/plugins/templates, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/plugins/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] QueueController {/api/queues}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/queues, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/queues/:name, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/queues/:name, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/queues/:name/jobs, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/queues/:name/jobs, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SearchController {/api/search}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/metadata, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/statistics, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/random, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/large-assets, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/smart, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/explore, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/person, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/places, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/cities, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/search/suggestions, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ServerController {/api/server}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/about, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/apk-links, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/storage, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/ping, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/version, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/version-history, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/features, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/config, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/media-types, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/license, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/license, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/license, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/server/version-check, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SessionController {/api/sessions}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sessions/:id/lock, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SharedLinkController {/api/shared-links}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/login, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/me, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id/assets, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] StackController {/api/stacks}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/stacks/:id/assets/:assetId, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SyncController {/api/sync}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sync/stream, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sync/ack, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sync/ack, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/sync/ack, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SystemConfigController {/api/system-config}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-config, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-config/defaults, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-config, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-config/storage-template-options, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] SystemMetadataController {/api/system-metadata}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-metadata/admin-onboarding, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-metadata/admin-onboarding, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-metadata/reverse-geocoding-state, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/system-metadata/version-check-state, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] TagController {/api/tags}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id/assets, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/tags/:id/assets, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] TimelineController {/api/timeline}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/timeline/buckets, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/timeline/bucket, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] TrashController {/api/trash}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/trash/empty, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/trash/restore, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/trash/restore/assets, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] UserAdminController {/api/admin/users}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/calendar-heatmap, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/sessions, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/statistics, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/preferences, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/preferences, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/preferences, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/restore, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] UserController {/api/users}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/calendar-heatmap, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/preferences, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/preferences, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/preferences, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/license, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/license, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/license, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/onboarding, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/onboarding, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/me/onboarding, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/profile-image, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/profile-image, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/users/:id/profile-image, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] VideoStreamController {/api/assets}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/stream/main.m3u8, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/stream/:sessionId/:variantIndex/playlist.m3u8, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/stream/:sessionId/:variantIndex/:filename, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/stream/:sessionId, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] ViewController {/api/view}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/view/folder/unique-paths, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/view/folder, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RoutesResolver] WorkflowController {/api/workflows}: +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows, POST} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/triggers, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id/share, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id, PUT} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id, PATCH} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id, DELETE} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:RouterExplorer] Mapped {/api/workflows/:id/logs, GET} route +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:NestApplication] Nest application successfully started +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:Bootstrap] Immich Server is listening on http://[::1]:2283 [v3.2.2] [production]  +immich-server | [Nest] 29 - 09/30/2026, 7:19:47 PM  LOG [Api:MachineLearningRepository] Machine learning server became healthy (http://immich-machine-learning:3003). +immich-server | [Nest] 7 - 09/30/2026, 7:19:47 PM  LOG [Microservices:MapRepository] Starting geodata import +immich-server | [Nest] 7 - 09/30/2026, 7:19:50 PM  LOG [Microservices:MapRepository] 10000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:50 PM  LOG [Microservices:MapRepository] 20000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:50 PM  LOG [Microservices:MapRepository] 30000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:50 PM  LOG [Microservices:MapRepository] 40000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:51 PM  LOG [Microservices:MapRepository] 50000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:52 PM  LOG [Microservices:MapRepository] 60000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:52 PM  LOG [Microservices:MapRepository] 70000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:52 PM  LOG [Microservices:MapRepository] 80000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:52 PM  LOG [Microservices:MapRepository] 90000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:53 PM  LOG [Microservices:MapRepository] 100000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:53 PM  LOG [Microservices:MapRepository] 110000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:53 PM  LOG [Microservices:MapRepository] 120000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:53 PM  LOG [Microservices:MapRepository] 130000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:54 PM  LOG [Microservices:MapRepository] 140000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:54 PM  LOG [Microservices:MapRepository] 150000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:54 PM  LOG [Microservices:MapRepository] 160000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:54 PM  LOG [Microservices:MapRepository] 170000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:55 PM  LOG [Microservices:MapRepository] 180000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:56 PM  LOG [Microservices:MapRepository] 190000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:56 PM  LOG [Microservices:MapRepository] 200000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:56 PM  LOG [Microservices:MapRepository] 210000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:56 PM  LOG [Microservices:MapRepository] 220000 geodata records imported +immich-server | [Nest] 7 - 09/30/2026, 7:19:56 PM  LOG [Microservices:MapRepository] Successfully imported 228294 geodata records in 8.82s (25879 records/second) +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:MapRepository] Geodata import completed +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:MetadataService] Initialized local reverse geocoder +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:ServerService] Feature Flags: { +immich-server | "smartSearch": true, +immich-server | "facialRecognition": true, +immich-server | "duplicateDetection": true, +immich-server | "map": true, +immich-server | "reverseGeocoding": true, +immich-server | "importFaces": false, +immich-server | "sidecar": true, +immich-server | "search": true, +immich-server | "trash": true, +immich-server | "oauth": false, +immich-server | "oauthAutoLaunch": false, +immich-server | "ocr": true, +immich-server | "passwordLogin": true, +immich-server | "configFile": false, +immich-server | "email": false, +immich-server | "realtimeTranscoding": false +immich-server | } +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:VersionService] Adding 3.2.2 to upgrade history +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:SystemConfigService] LogLevel=log (set via system config) +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:MachineLearningRepository] Machine learning server became healthy (http://immich-machine-learning:3003). +immich-server | [Nest] 7 - 09/30/2026, 7:20:04 PM  LOG [Microservices:WorkflowExecutionService] Upgraded plugin immich-plugin-core (14 methods) from 2.0.1 to 2.0.1  +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:WorkflowExecutionService] Loaded plugin: immich-plugin-core@2.0.1 +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:WorkflowExecutionService] Loaded plugin with host functions: immich-plugin-core@2.0.1/worker +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:NestFactory] Starting Nest application... +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] ClsModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] ClsCommonModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] OpenTelemetryModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] KyselyModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] OpenTelemetryCoreModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] DiscoveryModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] ClsRootModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] ClsPluginsModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] BullModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:InstanceLoader] MicroservicesModule dependencies initialized +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:NestApplication] Nest application successfully started +immich-server | [Nest] 7 - 09/30/2026, 7:20:05 PM  LOG [Microservices:Bootstrap] Immich Microservices is running [v3.2.2] [production]  diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-states.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-states.json new file mode 100644 index 00000000..424ab8b8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/to-states.json @@ -0,0 +1,26 @@ +{ + "immich-machine-learning": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-redis": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "immich-server": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/verdict.json b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/verdict.json new file mode 100644 index 00000000..07194795 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/evidence/D-immich-0b82-768/verdict.json @@ -0,0 +1,109 @@ +{ + "harness_version": 4, + "edge": "D-immich-0b82-768", + "app": "immich", + "note": "Part D 2026-09-30: step 0b8272068aab36bf's own definition, immich-postgres 512M -> 768M (R-732)", + "from": { + "immich-server": "ghcr.io/immich-app/immich-server:v3.0.3", + "immich-machine-learning": "ghcr.io/immich-app/immich-machine-learning:v3.0.3", + "immich-postgres": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "immich-redis": "redis:7-alpine" + }, + "to": { + "immich-server": "ghcr.io/immich-app/immich-server:v3.2.2", + "immich-machine-learning": "ghcr.io/immich-app/immich-machine-learning:v3.0.3", + "immich-postgres": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "immich-redis": "redis:7-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kimmich-server | \u001b[32m[Nest] 7 - \u001b[39m09/30/2026, 7:19:45 PM \u001b[32m LOG\u001b[39m \u001b[33m[Microservices:DatabaseRepository]\u001b[39m \u001b[32mRunning migrations\u001b[39m", + "abort": "refuses", + "abort_detail": "18:54.244 CEST [72] LOG: database system was shut down at 2026-09-30 19:18:54 CEST\n\u001b[2Kimmich-postgres | 2026-09-30 19:18:54.259 CEST [1] LOG: database system is ready to accept connections\n\u001b[2Kimmich-postgres | 2026-09-30 19:19:07.602 CEST [95] ERROR: relation \"system_metadata\" does not exist at character 21\n\u001b[2Kimmich-postgres | 2026-09-30 19:19:07.602 CEST [95] STATEMENT: select \"value\" from \"system_metadata\" where \"key\" = $1\n\u001b[2Kimmich-postgres | 2026-09-30 19:23:54.345 CEST [70] LOG: checkpoint starting: time\n\u001b[2Kimmich-postgres | 2026-09-30 19:28:24.197 CEST [70] LOG: checkpoint complete: wrote 16951 buffers (25.9%); 0 WAL file(s) added, 0 removed, 16 recycled; write=269.713 s, sync=0.077 s, total=269.853 s; sync files=769, longest=0.007 s, average=0.001 s; distance=269095 kB, estimate=269095 kB; lsn=0/11F98B70, redo lsn=0/11F98B38", + "engine_state_after": { + "immich-postgres": { + "image": "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 607.7, + "requested_s": 600, + "requests": 12028, + "codes": { + "200": 12028 + }, + "first_kill": null, + "containers": { + "immich-machine-learning": { + "limit": 1610612736, + "peak": 278474752, + "peak_pct": 0.173, + "anon_peak_sampled": 246366208, + "anon_peak_pct": 0.153, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-postgres": { + "limit": 805306368, + "peak": 805638144, + "peak_pct": 1.0, + "anon_peak_sampled": 238280704, + "anon_peak_pct": 0.296, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-redis": { + "limit": 134217728, + "peak": 18083840, + "peak_pct": 0.135, + "anon_peak_sampled": 4100096, + "anon_peak_pct": 0.031, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "immich-server": { + "limit": 2147483648, + "peak": 1711157248, + "peak_pct": 0.797, + "anon_peak_sampled": 1054654464, + "anon_peak_pct": 0.491, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [ + "files_may_change" + ], + "duration_s": 31.5, + "measured_at": "2026-09-30T17:33:20Z", + "evidence": "evidence/D-immich-0b82-768", + "scratch_cleared": [], + "files_changed": [ + "/srv/felhom-gate/hdd/appdata/immich" + ], + "files_changed_detail": [ + "/srv/felhom-gate/hdd/appdata/immich/backups/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/encoded-video/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/library/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/profile/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/thumbs/.immich (changed)", + "/srv/felhom-gate/hdd/appdata/immich/upload/.immich (changed)" + ], + "total_s": 921.3 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/.felhom.yml b/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/.felhom.yml new file mode 100644 index 00000000..e89d58fa --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/.felhom.yml @@ -0,0 +1,144 @@ +# ============================================================================= +# .felhom.yml — App metadata for felhom-controller +# ============================================================================= +# Place alongside docker-compose.yml in each stack directory: +# /opt/docker/stacks/immich/.felhom.yml +# ============================================================================= + +# --- Display info (shown on dashboard) --- +display_name: "Immich" +description: "Fotók és videók kezelése (Google Photos alternatíva)" +category: "media" +subdomain: "photos" + +# --- Asset slug --- +slug: "immich" +# 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-09-22" + +# --- Resource hints (displayed on deploy screen) --- +resources: + mem_request: "2048M" + mem_limit: "4480M" + pi_compatible: false + needs_hdd: true + +# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) --- +backup: + hdd: + - path: appdata/immich + class: mandatory # managed upload library — DB-referenced (SQ3: restore-without = broken) + userdata: + - path: media/photos + class: optional # external library, :ro — precious but re-scanned (explicit overrides ro-default) + +# --- Deploy fields --- +deploy_fields: + - env_var: DOMAIN + label: "Domain" + type: domain + description: "A szerver domain neve" + locked_after_deploy: true + + - env_var: SUBDOMAIN + label: "Aldomain" + type: subdomain + default: "photos" + required: true + locked_after_deploy: true + description: "Az alkalmazás aldomainje" + + - env_var: DB_PASSWORD + label: "Adatbázis jelszó" + type: secret + generate: "password:24" + locked_after_deploy: true + + - env_var: HDD_PATH + label: "Adattárolási útvonal" + type: path + required: true + placeholder: "/mnt/felhom-drives/hdd_1" + description: "A külső merevlemez elérési útja, ahol a fotók és videók tárolódnak" + locked_after_deploy: true + +# --- App info (info page content) --- +app_info: + tagline: 'Google Photos alternatíva - automatikus fotó mentés és rendszerezés' + docs_url: 'https://immich.app/docs/overview/introduction' + + use_cases: + - 'Fotók és videók automatikus mentése telefonról' + - 'Arc- és tárgyfelismerés gépi tanulással' + - 'Térképes megjelenítés helyszín alapján' + - 'Emlékek és visszatekintések automatikus generálása' + - 'Albumok létrehozása és megosztása családtagokkal' + + first_steps: + - 'Nyisd meg a photos.DOMAIN címet a böngészőben' + - 'Hozd létre az admin fiókot' + - 'Telepítsd az Immich alkalmazást a telefonodra (Android/iOS)' + - 'Állítsd be az automatikus feltöltést az alkalmazásban' + - 'Hívd meg a családtagokat külön fiókokkal' + # MOUNT-READY, REGISTRATION PENDING: a megosztott média/photos mappa be van csatolva + # /external/photos néven (csak olvasható), de az Immich CSAK akkor látja, ha az + # adminfelületen (Administration → External Libraries) regisztrálod a /external/photos + # útvonalat. Compose ezt NEM teszi meg automatikusan — ez egy telepítés utáni lépés. + - 'Külső könyvtár (opcionális): Administration → External Libraries → add /external/photos' + + prerequisites: + - 'Külső HDD szükséges a fotók és videók tárolásához' + - 'Legalább 4 GB szabad RAM ajánlott (gépi tanulás funkciókhoz)' + - 'x86 processzor szükséges (nem fut Raspberry Pi-n)' + +# --- Controller-side health probe --- +healthcheck: + # container: no exact match and FOUR `immich-*` containers, so the old prefix rule picked whichever the + # container list happened to yield first — it could have been `immich-postgres` (R-630) + container: immich-server + checks: + - type: api + port: 2283 + path: "/api/server/ping" + expect: + status: 200 + +# --- English copy (localisation slice 5, R-560) -------------------------------------------- +# The Hungarian above is UNCHANGED. A box on English reads this block field by field; a missing +# field shows the Hungarian one; a controller older than 0.257.0 ignores the block entirely. +i18n: + en: + description: 'Photos and videos in one place (a Google Photos alternative)' + app_info: + tagline: 'A Google Photos alternative - your photos back themselves up and sort themselves' + use_cases: + - 'Photos and videos back themselves up from your phone' + - 'It recognises faces and objects on its own' + - 'See where a photo was taken, on a map' + - 'Memories and look-backs, put together for you' + - 'Build albums and share them with the household' + first_steps: + - 'Open photos.DOMAIN in your browser' + - 'Create the admin account' + - 'Install the Immich app on your phone (Android/iOS)' + - 'Turn on automatic upload in the app' + - 'Invite the household, each with their own account' + - 'An external library (optional): Administration -> External Libraries -> add /external/photos' + prerequisites: + - 'An external hard drive is needed to keep the photos and videos on' + - 'At least 4 GB of free RAM is recommended (for the machine learning features)' + - 'An x86 processor is needed (it does not run on a Raspberry Pi)' + deploy_fields: + - env_var: DOMAIN + label: 'Domain' + description: 'The server domain name' + - env_var: SUBDOMAIN + label: 'Subdomain' + description: 'The subdomain this app answers on' + - env_var: DB_PASSWORD + label: 'Database password' + - env_var: HDD_PATH + label: 'Data storage path' + description: 'The path to the external hard drive where the photos and videos are kept' + placeholder: '/mnt/felhom-drives/hdd_1' diff --git a/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/docker-compose.yml b/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/docker-compose.yml new file mode 100644 index 00000000..0e93bbc1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/D/template-immich@0b82-768/docker-compose.yml @@ -0,0 +1,146 @@ +# Immich - Self-hosted Photo & Video Management +# Domain: ${SUBDOMAIN}.${DOMAIN} +# Database: PostgreSQL (with VectorChord) + Redis +# RAM: ~4GB minimum (mem_limit: 4096M total — server 2048M + ML 1536M + postgres 256M + redis 128M) | Pi-compatible: No (ML too heavy) +# +# Environment variables: +# DOMAIN - Your domain (e.g., demo-felhom.eu) +# HDD_PATH - Drive namespace root (managed upload lives under appdata) +# USERDATA_PATH - Ügyfél-tartalom gyökér (/userdata) +# DB_PASSWORD - PostgreSQL password (auto-generated) +# +# Storage layout (felhom userdata convention): +# Managed upload (Immich-owned) → ${HDD_PATH}/appdata/immich (HDD, host path — app-managed) +# External photo library (RO) → ${USERDATA_PATH}/media/photos → /external/photos +# PostgreSQL data → immich_postgres_data (named volume, NVMe) +# ML model cache → immich_ml_cache (named volume, NVMe) +# Redis data → immich_redis_data (named volume, NVMe) +# +# ⚠ EXTERNAL LIBRARY IS NOT WIRED BY COMPOSE: mounting /external/photos only makes the files +# visible to the container. To actually surface them in Immich you MUST register an External +# Library pointing at /external/photos in the Immich admin UI (Administration → External +# Libraries) or via the API — a POST-DEPLOY step. Until then photos sharing is "mount ready, +# registration pending". See .felhom.yml first_steps + REPORT. +# +# First-time setup: +# Create admin account on first visit, then register the External Library (see above). + +services: + immich-server: + image: ghcr.io/immich-app/immich-server:v3.2.2 + container_name: immich-server + restart: unless-stopped + depends_on: + immich-postgres: + condition: service_healthy + immich-redis: + condition: service_healthy + environment: + - DB_PASSWORD=${DB_PASSWORD} + - DB_HOSTNAME=immich-postgres + - DB_USERNAME=immich + - DB_DATABASE_NAME=immich + - REDIS_HOSTNAME=immich-redis + - IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 + - TZ=Europe/Budapest + volumes: + - ${HDD_PATH}/appdata/immich:/usr/src/app/upload + - ${USERDATA_PATH}/media/photos:/external/photos:ro + networks: + - traefik-public + - immich-internal + deploy: + resources: + limits: + memory: 2048M + healthcheck: + test: ["CMD", "curl", "-sf", "http://127.0.0.1:2283/api/server/ping"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + labels: + - "traefik.enable=true" + - "traefik.http.routers.immich.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" + - "traefik.http.routers.immich.entrypoints=websecure" + - "traefik.http.routers.immich.tls=true" + - "traefik.http.routers.immich.tls.certresolver=letsencrypt" + - "traefik.http.services.immich.loadbalancer.server.port=2283" + + immich-machine-learning: + image: ghcr.io/immich-app/immich-machine-learning:v3.0.3 + container_name: immich-machine-learning + restart: unless-stopped + environment: + - TZ=Europe/Budapest + - TRANSFORMERS_CACHE=/cache + volumes: + - immich_ml_cache:/cache + networks: + - immich-internal + deploy: + resources: + limits: + memory: 1536M + healthcheck: + test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:3003/ping')"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 120s + + immich-postgres: + image: ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0 + container_name: immich-postgres + restart: unless-stopped + environment: + - POSTGRES_USER=immich + - POSTGRES_PASSWORD=${DB_PASSWORD} + - POSTGRES_DB=immich + - POSTGRES_INITDB_ARGS=--data-checksums + - TZ=Europe/Budapest + volumes: + - immich_postgres_data:/var/lib/postgresql/data + networks: + - immich-internal + deploy: + resources: + limits: + memory: 768M + healthcheck: + test: ["CMD-SHELL", "pg_isready -U immich -d immich"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + + immich-redis: + image: redis:7-alpine + container_name: immich-redis + restart: unless-stopped + command: redis-server --appendonly yes + environment: + - TZ=Europe/Budapest + volumes: + - immich_redis_data:/data + networks: + - immich-internal + deploy: + resources: + limits: + memory: 128M + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 3 + +volumes: + immich_ml_cache: + immich_postgres_data: + immich_redis_data: + +networks: + traefik-public: + external: true + immich-internal: diff --git a/documentation/audits/more-night-apps-2026-09-30/README.md b/documentation/audits/more-night-apps-2026-09-30/README.md new file mode 100644 index 00000000..e1d906c9 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/README.md @@ -0,0 +1,72 @@ +# More apps that update themselves — 2026-09-30 (evening, by day) + +Brief: the operator's day brief of 2026-09-30 evening (Parts A–D). Architecture read first: +`architecture/09-update-architecture.md` §3 decisions 6, 13, 14, 17, 22, 30, §6.4 parts 4–7, §6.5. +Baselines (live Gitea, 16:49 CEST): controller `d48da6c` (0.283.1), agent `d766666` (0.138.0), felhom.eu +`2866f6a`, catalog `4c552cf`. + +**Venues.** Bench = LXC 9401 on demo-hp, made fresh at 16:52 (6 cores, 10 GiB, **swap 0** — the stricter +venue, R-733), harness v4, 10-minute memory watch (`bench/B1-bench-create.txt`). Box = scratch guest 9202 +(controller 0.283.1, swap 512 MiB) pointed at the drill catalog (`box/B0`, `box/B1`), the product's guarded +Update. The drill force-push was refused once by the permission check and then allowed by the operator. + +## The Part table + +| Part | done / not done / changed | why | +|---|---|---| +| **A1 calibre-web** | **done** — v4.0.6 → v4.0.8, first ladder `53a4a1d` | front door = the Upload button (HTTP form), read back through OPDS + the served EPUB. The ingest folder was NOT used (it would be a file planted in a mount). `files_may_change`: the library DB `metadata.db` (+`-shm`, `-wal`) in the books folder; the book file did not change | +| **A2 gitea** | **done** — 1.27.0 → 1.27.3, first ladder `d7ba60c` | the installer-form POST (no CSRF on that form), through the setup gate on the box. 28.0.0 not touched | +| **B1 emby, ghost, home-assistant** | **done** — `3e4aa77`, `9a78e3b`, `15f4d59` | each had a newer tag inside its line (re-checked) | +| **B2 uptime-kuma, wger, crafty-controller** | **done** — `35dd5cf`, `4ad32aa` (+ fix `7a4ff48`), `e1f0179` | new fixtures; wger needed a template fix first (R-738) | +| **B2 wanderer** | **not done** | the bench cannot run it at all: its web server calls the DB at a public https name (R-739). The meilisearch question is NOT measured | +| **B3 time left** | **done** — outline `b0b2514`, rallly `8d3a35a`, zipline 4.6.1 → 4.7.0 `a9700e2` → 4.8.0 `fb87030` | zipline 4.8.0 refuses a database that skipped 4.7.x (R-742); the box undid the direct jump itself | +| **C the same-name fix gap** | **done** — row R-740, STATUS decision, `09` decision 30 dated note | measured from source, a unit walk, the registry and demo-hp; **nothing built** | +| **D immich's older step** | **done (changed)** — re-proven at 768M, step files rewritten `48440ce` | the brief's route needed a writer mode that did not exist → `upgrade-test.py --restep` `63a96b0`, with tests | + +**Night-updatable apps (the audit's method (a)): 30 + 2 conditional at the start → 35 + 3 conditional** (38 carry a proven step; 15 have no ladder). + +## Per app + +| app | step | bench (harness v4, swap 0, 10-min watch) | anon peak (cgroup peak) | abort | box 9202 (guarded Update) | marks | catalog | +|---|---|---|---|---|---|---|---| +| calibre-web | v4.0.6 → v4.0.8 | proven, read back before/after True/True, kills 0 | calibre-web 19.3 % (38.9 %) | starts-and-serves | done in 64.6 s, read back True | files_may_change | `53a4a1d` | +| gitea | 1.27.0 → 1.27.3 | proven, read back before/after True/True, kills 0 | gitea 26.6 % (52.9 %) | refuses | done in 21.6 s, read back True | — | `d7ba60c` | +| emby | 4.11.0.3 → 4.11.0.4 | proven, read back before/after True/True, kills 0 | emby 4.7 % (7.3 %) | starts-and-serves | done in 23.6 s, read back True | — | `3e4aa77` | +| ghost | 6.65.0-alpine → 6.67.0-alpine | proven, read back before/after True/True, kills 0 | ghost 26.7 % (33.9 %) | starts-and-serves | done in 107.7 s, read back True | — | `9a78e3b` | +| home-assistant | 2026.9.3 → 2026.9.4 | proven, read back before/after True/True, kills 0 | home-assistant 32.0 % (47.4 %) | starts-and-serves | done in 113.8 s, read back True | — | `15f4d59` | +| uptime-kuma | 2.4.0 → 2.5.5 | proven, read back before/after True/True, kills 0 | uptime-kuma 43.3 % (49.7 %) | starts-and-serves | done in 33.9 s, read back True | — | `35dd5cf` | +| wger | 2.6 → 2.7 | proven, read back before/after True/True, kills 0 | wger 49.8 % (78.6 %) | starts-data-gone | done in 46.2 s, read back True | — | `4ad32aa (+ fix 7a4ff48)` | +| crafty-controller | 4.10.7 → 4.11.0 | proven, read back before/after True/True, kills 0 | crafty-controller 2.7 % (8.0 %) | starts-and-serves | done in 51.3 s, read back True | — | `e1f0179` | +| outline | 1.9.1 → 1.10.1 | proven, read back before/after True/True, kills 0 | outline 33.5 % (37.7 %), outline-postgres 5.4 % (62.1 %), outline-redis 2.6 % (7.1 %) | starts-and-serves | done in 89.2 s, read back True | — | `b0b2514` | +| rallly | 4.11.1 → 4.15.3 | proven, read back before/after True/True, kills 0 | rallly 60.6 % (64.0 %), rallly-postgres 2.1 % (65.8 %) | starts-data-gone | done in 64.7 s, read back True | — | `8d3a35a` | +| zipline | 4.6.1 → 4.7.0 | proven, first try (after the fixture was fixed; see the direct jump below) | zipline 41.7 % | starts-and-serves | done in 103.6 s, read back True | — | `a9700e2` | +| zipline | 4.7.0 → 4.8.0 | proven (third attempt: two FROM pulls failed on the bench's full disk) | zipline 34.3 % | starts-and-serves | done in 32.8 s, read back True | — | `fb87030` | +| zipline | 4.6.1 → 4.8.0 (direct) | **failed** — 4.8.0 restarts: „cannot safely migrate from prisma to drizzle" | — | starts-and-serves | **undone** by the box in 20 s | — | not written (R-742) | +| wger | 2.6 → 2.7 WITHOUT the migrations switch | box only | — | — | **done, then login 500** (12 migrations unapplied) | — | not written; fixed `7a4ff48` (R-738) | + +Files behind `files_may_change`: calibre-web — `media/books/metadata.db`, `metadata.db-shm`, `metadata.db-wal` (the +library database; the book file unchanged; `A/calibre-names/`). On 9202 the same step changed no file in that folder +(`box/calibre-web-files-{before,after,diff}.txt`). Memory figures: the anon peak is the basis of `memory_tight` +(decision 22); the cgroup peak includes the file cache. + +## Part C — the same-name security fix (R-740) + +`C/C1` demo-hp 9201 read-only digests (18 of 18 equal) · `C/C2` the unit walk on a scratch copy of the +controller (the leg skips `no_test_record`; the Update button takes the tested digest; a same-tag re-test +entry WOULD be pressed by the leg) · `C/C3` the floating lines' last pushes · `C/C4` no ladder has a same-tag +re-test, and the writer refuses one. The decision is in `STATUS.md`. + +## Part D — immich's step `0b8272068aab36bf` + +`D/D1` hub read-only: `/apps` lists 14 apps over the 3 reporting boxes, bookstack on 2 (positive control), **immich on +none**. `D/D2` the geodata inside each server image: v3.0.3 `2026-07-13`, v3.2.2 `2026-08-30`, v3.2.4 `2026-09-28` — so the +v3.0.3 → v3.2.2 step re-runs the import. `D/template-immich@0b82-768` = the step file with ONE line changed (512M → 768M) +and its `.felhom.yml` `mem_limit` 4096M → 4480M. `D/D3` + `D/evidence/D-immich-0b82-768/`: bench, swap 0 — `Starting +geodata import` 19:19:47, `Geodata import completed` 19:20:04, the database's `oom_kill` 0 from its birth, the album read +back, 10-min watch 0 kills (anon peak 29.6 %). Written by `upgrade-test.py --restep` (catalog `63a96b0`), commit `48440ce`. + +## Tools + +`tools/` — copies of today's walk/bench tools with this folder's paths, plus `benchsync.sh` (catalog scripts + +templates → bench), `probe_up.sh` (a hand probe), `recheck.py` (upstream tags), `digestread.py` (Part C, +read-only), `floatpush.py` (Part C), `partd.py` + `q4.sh` (Part D and the late queue). diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/B1-bench-create.txt b/documentation/audits/more-night-apps-2026-09-30/bench/B1-bench-create.txt new file mode 100644 index 00000000..b7c412b1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/B1-bench-create.txt @@ -0,0 +1,35 @@ ++ date -u +Wed Sep 30 14:52:29 UTC 2026 ++ pct list +VMID Status Lock Name +9201 running demo-hp +9202 running demo-hp-scratch ++ free -g ++ head -2 + total used free shared buff/cache available +Mem: 29 5 14 0 10 23 ++ pvesm status ++ grep -E 'local-lvm|nvme' +local-lvm lvmthin active 56487936 34802217 21685718 61.61% +nvme-scratch dir active 983379700 77130316 856222772 7.84% ++ pct config 9401 ++ head -1 +Configuration file 'nodes/demo-hp/lxc/9401.conf' does not exist ++ pveam download local debian-13-standard_13.6-1_amd64.tar.zst ++ tail -1 +download of 'http://download.proxmox.com/images/system/debian-13-standard_13.6-1_amd64.tar.zst' to '/var/lib/vz/template/cache/debian-13-standard_13.6-1_amd64.tar.zst' finished ++ pct create 9401 local:vztmpl/debian-13-standard_13.6-1_amd64.tar.zst --hostname upgrade-harness --cores 6 --memory 10240 --swap 0 --rootfs nvme-scratch:40 --net0 name=eth0,bridge=vmbr0,ip=dhcp --unprivileged 1 --features nesting=1,keyctl=1 --onboot 0 ++ tail -1 +done: SHA256:VOwfGwujDPythaaASvkGKoXr1I9wWEA2bHZHiZT24XQ root@upgrade-harness ++ pct start 9401 ++ sleep 15 ++ pct exec 9401 -- bash -c 'hostname; ip -4 -o addr show eth0 | awk "{print \$4}"; apt-get update -qq >/dev/null 2>&1; DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker.io docker-compose python3 python3-yaml curl postgresql-client sqlite3 >/dev/null 2>&1; docker --version; docker compose version; python3 --version; docker network create traefik-public >/dev/null && echo traefik-public-net; swapon --show; free -m | head -3' +upgrade-harness +192.168.0.118/24 +Docker version 26.1.5+dfsg1, build a72d7cd +Docker Compose version 2.26.1-4 +Python 3.13.5 +traefik-public-net + total used free shared buff/cache available +Mem: 10240 61 8512 0 1666 10178 +Swap: 0 0 0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/B8-bench-images-removed-by-name.txt b/documentation/audits/more-night-apps-2026-09-30/bench/B8-bench-images-removed-by-name.txt new file mode 100644 index 00000000..f5676e97 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/B8-bench-images-removed-by-name.txt @@ -0,0 +1,31 @@ +removed ghost:6.67.0-alpine +removed lukevella/rallly:4.15.3 +removed ghcr.io/immich-app/immich-server:v3.2.4 +removed crocodilestick/calibre-web-automated:v4.0.8 +removed ghcr.io/home-assistant/home-assistant:2026.9.4 +removed emby/embyserver:4.11.0.4 +removed ghost:6.65.0-alpine +removed emby/embyserver:4.11.0.3 +removed ghcr.io/home-assistant/home-assistant:2026.9.3 +removed redis:7-alpine +removed postgres:18-alpine +removed registry.gitlab.com/crafty-controller/crafty-4:4.11.0 +removed louislam/uptime-kuma:2.5.5 +removed ghcr.io/immich-app/immich-server:v3.2.2 +removed outlinewiki/outline:1.10.1 +removed wger/server:2.7 +removed gitea/gitea:1.27.3 +removed ghcr.io/immich-app/immich-server:v3.0.3 +removed ghcr.io/immich-app/immich-machine-learning:v3.0.3 +removed gitea/gitea:1.27.0 +removed outlinewiki/outline:1.9.1 +removed flomp/wanderer-web:v0.20.0 +removed flomp/wanderer-db:v0.20.0 +removed lukevella/rallly:4.11.1 +removed wger/server:2.6 +removed registry.gitlab.com/crafty-controller/crafty-4:4.10.7 +removed louislam/uptime-kuma:2.4.0 +removed getmeili/meilisearch:v1.36.0 +removed crocodilestick/calibre-web-automated:v4.0.6 +removed ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0 +/dev/loop2 40G 3.4G 34G 9% / diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/B9-bench-destroy.txt b/documentation/audits/more-night-apps-2026-09-30/bench/B9-bench-destroy.txt new file mode 100644 index 00000000..ebf23d99 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/B9-bench-destroy.txt @@ -0,0 +1,10 @@ +## 2026-09-30T18:25:45Z bench destroy +upgrade-harness +purging CT 9401 from related configurations.. +destroyed-9401 +template-removed +VMID Status Lock Name +9201 running demo-hp +9202 running demo-hp-scratch +local-lvm lvmthin active 56487936 34802217 21685718 61.61% +nvme-scratch dir active 983379700 77234652 856118436 7.85% diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt1-fixture-fault.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt1-fixture-fault.log new file mode 100644 index 00000000..2ea99e3b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt1-fixture-fault.log @@ -0,0 +1,36 @@ +[14:58:47] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/import/calibre'] +[14:58:47] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[14:59:18] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[14:59:18] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[14:59:19] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[14:59:19] calibre-web: after_install :: sh: 1: python3: not found +[14:59:19] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route \u2014 tried: admin login after after_install -> 401", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 31.8, + "measured_at": "2026-09-30T14:59:19Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/import/calibre" + ], + "total_s": 31.8 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt2-R735.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt2-R735.log new file mode 100644 index 00000000..136d9ceb --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web-attempt2-R735.log @@ -0,0 +1,37 @@ +[15:15:46] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media/books', '/srv/felhom-gate/import/calibre'] +[15:15:46] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[15:16:17] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:16:17] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[15:16:17] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[15:16:20] calibre-web: after_install :: lse (Standard/LDAP login) Password doesn't comply with password validation rules +[15:16:20] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route \u2014 tried: admin login after after_install -> 401", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 34.0, + "measured_at": "2026-09-30T15:16:20Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media/books", + "/srv/felhom-gate/import/calibre" + ], + "total_s": 34.0 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web.log new file mode 100644 index 00000000..de836dea --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/MV-calibre-web.log @@ -0,0 +1,119 @@ +[15:59:10] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/import/calibre'] +[15:59:10] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[15:59:41] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:59:41] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[15:59:41] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[15:59:44] calibre-web: after_install :: OKIE_SECURE set to False (Standard/LDAP login) Password for user 'admin' changed +[15:59:45] calibre-web: POST /upload http=200 {"location": "/tasks"} +[15:59:45] calibre-web: seeded book upg72a41d2a7698 is in the library +[15:59:51] calibre-web: readback — listed=True download_link=True book_content_served=True +[15:59:51] C1 (seed reads back BEFORE): True +[15:59:51] MV-calibre-web: swapping to TO {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} +[16:00:28] TO up -d rc=0 +[16:00:58] TO settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:00:59] migration lines observed: 6 +[16:01:00] calibre-web: readback — listed=True download_link=True book_content_served=True +[16:01:00] RESULT (seed reads back AFTER): True +[16:01:00] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/userdata/media/books'] +[16:01:00] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8083 +[16:01:15] + 15s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=296 +[16:01:31] + 30s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=592 +[16:01:46] + 45s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=884 +[16:02:01] + 60s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=1180 +[16:02:16] + 76s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=1474 +[16:02:31] + 91s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=1768 +[16:02:46] + 106s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2064 +[16:03:01] + 121s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2356 +[16:03:16] + 136s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2652 +[16:03:31] + 151s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2944 +[16:03:47] + 166s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=3238 +[16:04:02] + 181s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=3534 +[16:04:17] + 196s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=3826 +[16:04:32] + 212s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=4122 +[16:04:47] + 227s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=4418 +[16:05:02] + 242s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=4710 +[16:05:17] + 257s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5006 +[16:05:32] + 272s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5302 +[16:05:48] + 287s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5594 +[16:06:03] + 302s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5890 +[16:06:18] + 318s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=6182 +[16:06:33] + 333s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=6478 +[16:06:48] + 348s calibre-web=205M/768M peak=299M kills=0 rs=0 reqs=6774 +[16:07:03] + 363s calibre-web=193M/768M peak=299M kills=0 rs=0 reqs=7070 +[16:07:18] + 378s calibre-web=192M/768M peak=299M kills=0 rs=0 reqs=7362 +[16:07:33] + 393s calibre-web=191M/768M peak=299M kills=0 rs=0 reqs=7658 +[16:07:49] + 408s calibre-web=191M/768M peak=299M kills=0 rs=0 reqs=7952 +[16:08:04] + 423s calibre-web=184M/768M peak=299M kills=0 rs=0 reqs=8246 +[16:08:19] + 438s calibre-web=179M/768M peak=299M kills=0 rs=0 reqs=8541 +[16:08:34] + 454s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=8834 +[16:08:49] + 469s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9130 +[16:09:04] + 484s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9422 +[16:09:19] + 499s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9718 +[16:09:34] + 514s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=10014 +[16:09:49] + 529s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=10306 +[16:10:05] + 544s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=10602 +[16:10:20] + 559s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=10894 +[16:10:35] + 575s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11190 +[16:10:50] + 590s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11486 +[16:11:05] + 605s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11778 +[16:11:05] memory watch: killed=False tight=[] requests=11778 codes={'302': 11778} +[16:11:05] MV-calibre-web: ABORT — putting the FROM images back +[16:11:42] calibre-web: readback — listed=True download_link=True book_content_served=True +[16:11:42] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcalibre-web | [migrations] started", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.0, + "requested_s": 600, + "requests": 11778, + "codes": { + "302": 11778 + }, + "first_kill": null, + "containers": { + "calibre-web": { + "limit": 805306368, + "peak": 313589760, + "peak_pct": 0.389, + "anon_peak_sampled": 155197440, + "anon_peak_pct": 0.193, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [ + "files_may_change" + ], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:11:42Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/import/calibre" + ], + "files_changed": [ + "/srv/felhom-gate/hdd/userdata/media/books" + ], + "total_s": 751.9 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/compose-final.log new file mode 100644 index 00000000..72af60af --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/compose-final.log @@ -0,0 +1,194 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | First time run, creating app.db... +calibre-web | Successfully set kepubify paths in '/config/app.db'! +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] No existing user_profiles.json found! Creating blank one... +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.6 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.6, STABLE=v4.0.8 +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-process-recovery] No processing status file found, creating with idle status +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [cwa-auto-zipper] Next run in 25206 seconds. +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: No existing library found. Creating new library... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 16:58:58,769] INFO {cps:92} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 16:58:59,017] INFO {cps.ub:1066} Migrating system magic shelves... +calibre-web | [cwa-db]: No existing CWA settings detected, applying default CWA settings... +calibre-web | [cwa-db] CWA Default Settings successfully applied! +calibre-web | [2026-09-30 16:58:59,131] INFO {cps:140} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 16:58:59,198] INFO {cps:197} Starting Calibre Web... +calibre-web | [2026-09-30 16:59:00,002] INFO {cps.ub:1329} github Blueprint Created +calibre-web | [2026-09-30 16:59:00,006] INFO {cps.ub:1329} google Blueprint Created +calibre-web | [2026-09-30 16:59:00,018] INFO {cps:217} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 16:59:00,056] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 16:59:00,339] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 16:59:00,340] INFO {apscheduler.scheduler:1090} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 16:59:00,340] INFO {apscheduler.scheduler:1090} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 16:59:00,340] INFO {apscheduler.scheduler:1090} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 16:59:00,852] INFO {apscheduler.scheduler:1090} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 16:59:00,857] INFO {apscheduler.scheduler:1090} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 16:59:00,858] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 16:59:00,875] INFO {apscheduler.scheduler:1090} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 16:59:00,876] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 16:59:00 CEST], next run at: 2026-09-30 16:59:00 CEST)" (scheduled at 2026-09-30 16:59:00.875258+02:00) +calibre-web | [2026-09-30 16:59:00,876] INFO {apscheduler.scheduler:728} Removed job fcaaf7105ea042ef86c5ceb77ab61bf3 +calibre-web | [2026-09-30 16:59:00,942] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 16:59:00 CEST], next run at: 2026-09-30 16:59:00 CEST)" executed successfully +calibre-web | [2026-09-30 16:59:01,723] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 16:59:01,887] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. +calibre-web | [2026-09-30 16:59:19,079] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 +calibre-web | [2026-09-30 16:59:19,319] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/run.log new file mode 100644 index 00000000..29c44d8f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/run.log @@ -0,0 +1,7 @@ +[14:58:47] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/import/calibre'] +[14:58:47] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[14:59:18] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[14:59:18] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[14:59:19] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[14:59:19] calibre-web: after_install :: sh: 1: python3: not found +[14:59:19] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/verdict.json new file mode 100644 index 00000000..23e932a2 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt1-fixture-fault/verdict.json @@ -0,0 +1,29 @@ +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route \u2014 tried: admin login after after_install -> 401", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 31.8, + "measured_at": "2026-09-30T14:59:19Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/import/calibre" + ], + "total_s": 31.8 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/compose-final.log new file mode 100644 index 00000000..15b7f338 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/compose-final.log @@ -0,0 +1,194 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | First time run, creating app.db... +calibre-web | Successfully set kepubify paths in '/config/app.db'! +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] No existing user_profiles.json found! Creating blank one... +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.6 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.6, STABLE=v4.0.8 +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-process-recovery] No processing status file found, creating with idle status +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [cwa-auto-zipper] Next run in 24188 seconds. +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: No existing library found. Creating new library... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 17:15:57,652] INFO {cps:92} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 17:15:57,889] INFO {cps.ub:1066} Migrating system magic shelves... +calibre-web | [cwa-db]: No existing CWA settings detected, applying default CWA settings... +calibre-web | [cwa-db] CWA Default Settings successfully applied! +calibre-web | [2026-09-30 17:15:58,001] INFO {cps:140} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 17:15:58,067] INFO {cps:197} Starting Calibre Web... +calibre-web | [2026-09-30 17:15:58,900] INFO {cps.ub:1329} github Blueprint Created +calibre-web | [2026-09-30 17:15:58,904] INFO {cps.ub:1329} google Blueprint Created +calibre-web | [2026-09-30 17:15:58,915] INFO {cps:217} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 17:15:58,946] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 17:15:59,211] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 17:15:59,212] INFO {apscheduler.scheduler:1090} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 17:15:59,212] INFO {apscheduler.scheduler:1090} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 17:15:59,212] INFO {apscheduler.scheduler:1090} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 17:15:59,736] INFO {apscheduler.scheduler:1090} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 17:15:59,741] INFO {apscheduler.scheduler:1090} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 17:15:59,742] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 17:15:59,760] INFO {apscheduler.scheduler:1090} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 17:15:59,778] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 17:15:59 CEST], next run at: 2026-09-30 17:15:59 CEST)" (scheduled at 2026-09-30 17:15:59.759992+02:00) +calibre-web | [2026-09-30 17:15:59,778] INFO {apscheduler.scheduler:728} Removed job 38cabeea21b74d5cae806e8ceb6478d4 +calibre-web | [2026-09-30 17:15:59,779] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 17:15:59 CEST], next run at: 2026-09-30 17:15:59 CEST)" executed successfully +calibre-web | [2026-09-30 17:16:00,621] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 17:16:00,803] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. +calibre-web | [2026-09-30 17:16:17,718] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 +calibre-web | [2026-09-30 17:16:20,259] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/run.log new file mode 100644 index 00000000..62f3543c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/run.log @@ -0,0 +1,7 @@ +[15:15:46] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media/books', '/srv/felhom-gate/import/calibre'] +[15:15:46] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[15:16:17] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:16:17] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[15:16:17] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[15:16:20] calibre-web: after_install :: lse (Standard/LDAP login) Password doesn't comply with password validation rules +[15:16:20] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/verdict.json new file mode 100644 index 00000000..56cd3865 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web-attempt2-R735/verdict.json @@ -0,0 +1,30 @@ +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route \u2014 tried: admin login after after_install -> 401", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 34.0, + "measured_at": "2026-09-30T15:16:20Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media/books", + "/srv/felhom-gate/import/calibre" + ], + "total_s": 34.0 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/abort-states.json new file mode 100644 index 00000000..12ed6c3f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/abort-states.json @@ -0,0 +1,8 @@ +{ + "calibre-web": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/compose-final.log new file mode 100644 index 00000000..87a461c0 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/compose-final.log @@ -0,0 +1,198 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] Existing user_profiles.json found! +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.6 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.6, STABLE=v4.0.8 +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Processing status is: idle +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-auto-zipper] Next run in 20866 seconds. +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: Existing library found at /calibre-library, mounting now... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 18:11:19,461] INFO {cps:92} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 18:11:19,540] INFO {cps.ub:1066} Migrating system magic shelves... +calibre-web | [2026-09-30 18:11:19,560] INFO {cps.ub:1119} System shelf migration complete: 1 old shelves removed, 0 new shelves created +calibre-web | [2026-09-30 18:11:19,651] INFO {cps:140} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 18:11:19,695] INFO {cps:197} Starting Calibre Web... +calibre-web | [2026-09-30 18:11:20,551] INFO {cps:217} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 18:11:20,576] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 18:11:20,832] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 18:11:20,833] INFO {apscheduler.scheduler:1090} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 18:11:20,833] INFO {apscheduler.scheduler:1090} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 18:11:20,833] INFO {apscheduler.scheduler:1090} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 18:11:21,463] INFO {apscheduler.scheduler:1090} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 18:11:21,468] INFO {apscheduler.scheduler:1090} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 18:11:21,469] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 18:11:21,490] INFO {apscheduler.scheduler:1090} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 18:11:21,490] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 18:11:21 CEST], next run at: 2026-09-30 18:11:21 CEST)" (scheduled at 2026-09-30 18:11:21.489899+02:00) +calibre-web | [2026-09-30 18:11:21,491] INFO {apscheduler.scheduler:728} Removed job af2d019d2e1a406ab07f108ebaba83cd +calibre-web | [2026-09-30 18:11:21,576] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 18:11:21 CEST], next run at: 2026-09-30 18:11:21 CEST)" executed successfully +calibre-web | [2026-09-30 18:11:22,456] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 18:11:22,639] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. +calibre-web | [2026-09-30 18:11:41,223] WARN {cps.usermanagement:137} OPDS Login failed for user "admin" IP-address: ::ffff:172.18.0.1 +calibre-web | [2026-09-30 18:11:42,336] INFO {cps.helper:1265} Renamed exported file to match expected name: upg72a41d2a7698 - Drill Author.epub +calibre-web | [2026-09-30 18:11:42,337] ERROR {cps.progress_syncing.checksums.manager:128} Failed to store checksum for book 2: (sqlite3.OperationalError) no such table: book_format_checksums +calibre-web | [SQL: +calibre-web | SELECT id FROM book_format_checksums +calibre-web | WHERE book = ? +calibre-web | AND format = ? +calibre-web | AND checksum = ? +calibre-web | ] +calibre-web | [parameters: (2, 'EPUB', '7c1661fba0e6a4d56e89c7402f7d9f72')] +calibre-web | (Background on this error at: https://sqlalche.me/e/20/e3q8) diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-after.json new file mode 100644 index 00000000..6f0ffe63 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-after.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": "46c3e8f91171f011c1adda3a9159b9c0266332b85cdc9d7a6743998cfc308e2a", + "/srv/felhom-gate/import/calibre": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-before.json new file mode 100644 index 00000000..6ad6bf76 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/files-before.json @@ -0,0 +1,4 @@ +{ + "/srv/felhom-gate/hdd/userdata/media/books": "560b1d4c34cb8339249f388e10101001332a92291887b95029727251f986502b", + "/srv/felhom-gate/import/calibre": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/memory-samples.json new file mode 100644 index 00000000..0ecef3e7 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248193024, + "peak": 313589760, + "anon": 154927104, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 296 + }, + { + "t": 30.2, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248201216, + "peak": 313589760, + "anon": 154972160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 592 + }, + { + "t": 45.3, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248369152, + "peak": 313589760, + "anon": 155025408, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 884 + }, + { + "t": 60.4, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248475648, + "peak": 313589760, + "anon": 155066368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1180 + }, + { + "t": 75.6, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248356864, + "peak": 313589760, + "anon": 155111424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1474 + }, + { + "t": 90.7, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248578048, + "peak": 313589760, + "anon": 155144192, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1768 + }, + { + "t": 105.8, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248414208, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2064 + }, + { + "t": 120.9, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248324096, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2356 + }, + { + "t": 136.0, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248279040, + "peak": 313589760, + "anon": 155189248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2652 + }, + { + "t": 151.2, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248217600, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2944 + }, + { + "t": 166.3, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248307712, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3238 + }, + { + "t": 181.4, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248631296, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3534 + }, + { + "t": 196.5, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248553472, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3826 + }, + { + "t": 211.6, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248086528, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4122 + }, + { + "t": 226.8, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248877056, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4418 + }, + { + "t": 241.9, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248320000, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4710 + }, + { + "t": 257.0, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248381440, + "peak": 313589760, + "anon": 155185152, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5006 + }, + { + "t": 272.1, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248348672, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5302 + }, + { + "t": 287.2, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248123392, + "peak": 313589760, + "anon": 155185152, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5594 + }, + { + "t": 302.4, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248279040, + "peak": 313589760, + "anon": 155189248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5890 + }, + { + "t": 317.5, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 248233984, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6182 + }, + { + "t": 332.6, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 247726080, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6478 + }, + { + "t": 347.8, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 215519232, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6774 + }, + { + "t": 362.9, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 202870784, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7070 + }, + { + "t": 378.0, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 201945088, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7362 + }, + { + "t": 393.1, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 201293824, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7658 + }, + { + "t": 408.3, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 201256960, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7952 + }, + { + "t": 423.4, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 193085440, + "peak": 313589760, + "anon": 155181056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8246 + }, + { + "t": 438.5, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 187990016, + "peak": 313589760, + "anon": 155185152, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8541 + }, + { + "t": 453.6, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 190087168, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8834 + }, + { + "t": 468.7, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189616128, + "peak": 313589760, + "anon": 155189248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9130 + }, + { + "t": 483.8, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189603840, + "peak": 313589760, + "anon": 155176960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9422 + }, + { + "t": 499.0, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189374464, + "peak": 313589760, + "anon": 155193344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9718 + }, + { + "t": 514.1, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189816832, + "peak": 313589760, + "anon": 155185152, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10014 + }, + { + "t": 529.2, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189591552, + "peak": 313589760, + "anon": 155193344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10306 + }, + { + "t": 544.3, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189870080, + "peak": 313589760, + "anon": 155189248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10602 + }, + { + "t": 559.4, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189612032, + "peak": 313589760, + "anon": 155189248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10894 + }, + { + "t": 574.6, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 189796352, + "peak": 313589760, + "anon": 155197440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11190 + }, + { + "t": 589.7, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 190513152, + "peak": 313589760, + "anon": 155197440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11486 + }, + { + "t": 604.8, + "containers": { + "calibre-web": { + "limit": 805306368, + "current": 190492672, + "peak": 313589760, + "anon": 155197440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11778 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/migration-lines.txt new file mode 100644 index 00000000..32c57783 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/migration-lines.txt @@ -0,0 +1,6 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [2026-09-30 18:00:37,594] INFO {cps.ub:1144} Migrating system magic shelves... +calibre-web | [2026-09-30 18:00:37,618] INFO {cps.ub:1197} System shelf migration complete: 0 old shelves removed, 1 new shelves created +calibre-web | [2026-09-30 18:00:39,359] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/run.log new file mode 100644 index 00000000..1f38b908 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/run.log @@ -0,0 +1,62 @@ +[15:59:10] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/import/calibre'] +[15:59:10] MV-calibre-web: deploying calibre-web at FROM {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +[15:59:41] FROM settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:59:41] fixture: the BOX walk's own (CalibreWeb), through upgrade_boxport +[15:59:41] calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) +[15:59:44] calibre-web: after_install :: OKIE_SECURE set to False (Standard/LDAP login) Password for user 'admin' changed +[15:59:45] calibre-web: POST /upload http=200 {"location": "/tasks"} +[15:59:45] calibre-web: seeded book upg72a41d2a7698 is in the library +[15:59:51] calibre-web: readback — listed=True download_link=True book_content_served=True +[15:59:51] C1 (seed reads back BEFORE): True +[15:59:51] MV-calibre-web: swapping to TO {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} +[16:00:28] TO up -d rc=0 +[16:00:58] TO settled=True in 30.8s :: {"calibre-web": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:00:59] migration lines observed: 6 +[16:01:00] calibre-web: readback — listed=True download_link=True book_content_served=True +[16:01:00] RESULT (seed reads back AFTER): True +[16:01:00] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/userdata/media/books'] +[16:01:00] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8083 +[16:01:15] + 15s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=296 +[16:01:31] + 30s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=592 +[16:01:46] + 45s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=884 +[16:02:01] + 60s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=1180 +[16:02:16] + 76s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=1474 +[16:02:31] + 91s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=1768 +[16:02:46] + 106s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2064 +[16:03:01] + 121s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2356 +[16:03:16] + 136s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2652 +[16:03:31] + 151s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=2944 +[16:03:47] + 166s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=3238 +[16:04:02] + 181s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=3534 +[16:04:17] + 196s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=3826 +[16:04:32] + 212s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=4122 +[16:04:47] + 227s calibre-web=237M/768M peak=299M kills=0 rs=0 reqs=4418 +[16:05:02] + 242s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=4710 +[16:05:17] + 257s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5006 +[16:05:32] + 272s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5302 +[16:05:48] + 287s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5594 +[16:06:03] + 302s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=5890 +[16:06:18] + 318s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=6182 +[16:06:33] + 333s calibre-web=236M/768M peak=299M kills=0 rs=0 reqs=6478 +[16:06:48] + 348s calibre-web=205M/768M peak=299M kills=0 rs=0 reqs=6774 +[16:07:03] + 363s calibre-web=193M/768M peak=299M kills=0 rs=0 reqs=7070 +[16:07:18] + 378s calibre-web=192M/768M peak=299M kills=0 rs=0 reqs=7362 +[16:07:33] + 393s calibre-web=191M/768M peak=299M kills=0 rs=0 reqs=7658 +[16:07:49] + 408s calibre-web=191M/768M peak=299M kills=0 rs=0 reqs=7952 +[16:08:04] + 423s calibre-web=184M/768M peak=299M kills=0 rs=0 reqs=8246 +[16:08:19] + 438s calibre-web=179M/768M peak=299M kills=0 rs=0 reqs=8541 +[16:08:34] + 454s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=8834 +[16:08:49] + 469s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9130 +[16:09:04] + 484s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9422 +[16:09:19] + 499s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=9718 +[16:09:34] + 514s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=10014 +[16:09:49] + 529s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=10306 +[16:10:05] + 544s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=10602 +[16:10:20] + 559s calibre-web=180M/768M peak=299M kills=0 rs=0 reqs=10894 +[16:10:35] + 575s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11190 +[16:10:50] + 590s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11486 +[16:11:05] + 605s calibre-web=181M/768M peak=299M kills=0 rs=0 reqs=11778 +[16:11:05] memory watch: killed=False tight=[] requests=11778 codes={'302': 11778} +[16:11:05] MV-calibre-web: ABORT — putting the FROM images back +[16:11:42] calibre-web: readback — listed=True download_link=True book_content_served=True +[16:11:42] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-full.log new file mode 100644 index 00000000..8b2cb65a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-full.log @@ -0,0 +1,189 @@ +calibre-web | [migrations] started +calibre-web | [migrations] no migrations found +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | ,gggg, ,ggg, gg ,gg +calibre-web | ,88"""Y8b, ,dPYb, ,dPYb, dP""Y8a 88 ,8P ,dPYb, +calibre-web | d8" `Y8 IP'`Yb IP'`Yb Yb, `88 88 d8' IP'`Yb +calibre-web | d8' 8b d8 I8 8I gg I8 8I `" 88 88 88 I8 8I +calibre-web | ,8I "Y88P' I8 8' "" I8 8' 88 88 88 I8 8' +calibre-web | I8' ,gggg,gg I8 dP gg I8 dP ,gggggg, ,ggg, aaaaaaaa 88 88 88 ,ggg, I8 dP +calibre-web | d8 dP" "Y8I I8dP 88 I8dP 88gg dP""""8I i8" "8i """""""" 88 88 88 i8" "8i I8dP 88gg +calibre-web | Y8, i8' ,8I I8P 88 I8P 8I ,8' 8I I8, ,8I Y8 ,88, 8P I8, ,8I I8P 8I +calibre-web | `Yba,,_____, ,d8, ,d8b,,d8b,_ _,88,_,d8b, ,8I ,dP Y8, `YbadP' Yb,,d8""8b,,dP `YbadP' ,d8b, ,8I +calibre-web | `"Y8888888 P"Y8888P"`Y88P'"Y888P""Y88P'"Y88P"' 8P `Y8888P"Y888 "88" "88" 888P"Y8888P'"Y88P"' +calibre-web | +calibre-web | +calibre-web | █████╗ ██╗ ██╗████████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗██████╗ +calibre-web | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ +calibre-web | ███████║██║ ██║ ██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ██║ ██║ +calibre-web | ██╔══██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ██║ ██║ +calibre-web | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗██████╔╝ +calibre-web | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ +calibre-web | +calibre-web | +calibre-web | ~~~ Based on docker-calibre-web from linuxserver.io & Calibre-Web by janeczku ~~~ +calibre-web | +calibre-web | ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +calibre-web | +calibre-web | To support the app dev(s) visit: +calibre-web | Calibre-Web Automated: https://ko-fi.com/crocodilestick/tip +calibre-web | To support LSIO projects visit: +calibre-web | https://www.linuxserver.io/donate/ +calibre-web | +calibre-web | ─────────────────────────────────────── +calibre-web | GID/UID +calibre-web | ─────────────────────────────────────── +calibre-web | +calibre-web | User UID: 1000 +calibre-web | User GID: 1000 +calibre-web | ─────────────────────────────────────── +calibre-web | [cwa-init] Starting CWA initialization process... +calibre-web | [cwa-init] Verifying essential directories... +calibre-web | [cwa-init] Directory /app/calibre-web-automated verified +calibre-web | [cwa-init] Directory /config verified +calibre-web | [cwa-init] Directory /calibre-library verified +calibre-web | [cwa-init] Directory /app/calibre verified +calibre-web | [cwa-init] Verifying essential files... +calibre-web | [cwa-init] File /app/CWA_RELEASE verified +calibre-web | [cwa-init] File /CALIBRE_RELEASE verified +calibre-web | [cwa-init] Environment verification complete +calibre-web | [cwa-init] Setting up ImageMagick policy... +calibre-web | [cwa-init] Checking for leftover lock files from previous instance... +calibre-web | [cwa-init] No leftover lock files to remove. Ending service... +calibre-web | [cwa-init] Checking for an existing app.db in /config... +calibre-web | [cwa-init] Existing app.db found! +calibre-web | [cwa-init] Setting binary paths in '/config/app.db' to the correct ones... +calibre-web | [cwa-init] Successfully set binary paths in '/config/app.db'! +calibre-web | [cwa-init] Enforcing dark theme in app.db (one-time migration)... +calibre-web | [cwa-init] Dark theme enforcement completed. +calibre-web | [cwa-init] CWA-init complete! Service exiting now... +calibre-web | [cwa-init] Existing user_profiles.json found! +calibre-web | [cwa-init] Preparing to set ownership of everything in /config, /app/calibre-web-automated, /calibre-library, /cwa-book-ingest, /calibre-library, /config/.cwa_conversion_tmp to abc:abc... +calibre-web | [cwa-init] Successfully set permissions for '/config'! +calibre-web | [cwa-init] Successfully set permissions for '/app/calibre-web-automated'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/cwa-book-ingest'! +calibre-web | [cwa-init] Successfully set permissions for '/calibre-library'! +calibre-web | [cwa-init] Successfully set permissions for '/config/.cwa_conversion_tmp'! +calibre-web | [cwa-init][qt6] Starting Qt6 compatibility check... +calibre-web | [cwa-init][qt6] Host kernel 7.0.2-6-pve >= 6.0: leaving Qt6 libs intact for full functionality. (PDF/WebEngine features enabled) +calibre-web | [cwa-init][qt6] Qt6 compatibility check completed. +calibre-web | [cwa-init] Resolving CWA versions (installed + latest stable) ... +calibre-web | [cwa-init] Installed version: v4.0.8 +calibre-web | [cwa-init] Attempting to fetch latest stable version from GitHub... +calibre-web | [cwa-init] Using jq for JSON parsing... +calibre-web | [cwa-init] Successfully fetched stable version via jq: v4.0.8 +calibre-web | [cwa-init] Valid stable version retrieved: v4.0.8 +calibre-web | [cwa-init] Stable version persisted to /app/CWA_STABLE_RELEASE +calibre-web | [cwa-init] Versions resolved: INSTALLED=v4.0.8, STABLE=v4.0.8 +calibre-web | [cwa-process-recovery] Starting process recovery and cleanup... +calibre-web | [calibre-binaries-setup] Starting Calibre binaries setup... +calibre-web | [calibre-binaries-setup] Checking if Calibre is already installed... +calibre-web | [cwa-auto-zipper] Starting CWA-Auto-Zipper service... +calibre-web | [cwa-auto-zipper] Matching internal localtime & timezone with the one provided... +calibre-web | [cwa-process-recovery] ========== Starting Recovery Sequence ========== +calibre-web | [cwa-process-recovery] Cleaning up stale temporary files... +calibre-web | [calibre-binaries-setup] Calibre version check timed out or failed, assuming not installed +calibre-web | [calibre-binaries-setup] USER NOTE: 'Ignore calibredb: command not found' above, nothing is wrong, this just indicates to CWA that Calibre still needs to be installed +calibre-web | [calibre-binaries-setup] Installing Calibre version 9.1.0... +calibre-web | [calibre-binaries-setup] This may take several minutes, please wait... +calibre-web | [cwa-auto-zipper] Zoneinfo for Europe/Budapest found. Setting /etc/localtime and /etc/timezone to match... +calibre-web | [cwa-auto-zipper] Timezone & Localtime successfully set to Europe/Budapest. Initiating Auto-Zipper ... +calibre-web | [cwa-process-recovery] Cleaned up 6 stale temporary file(s) +calibre-web | [cwa-process-recovery] Checking processing status... +calibre-web | [cwa-auto-zipper] Next run in 21508 seconds. +calibre-web | [cwa-process-recovery] Processing status is: idle +calibre-web | [custom-init] No custom files found, skipping... +calibre-web | [cwa-process-recovery] Checking for orphaned CWA processes... +calibre-web | [cwa-process-recovery] No orphaned CWA processes found +calibre-web | [cwa-process-recovery] ========== Recovery Sequence Complete ========== +calibre-web | [cwa-process-recovery] Process recovery service finished successfully +calibre-web | [cwa-auto-library]: Existing library found at /calibre-library, mounting now... +calibre-web | [cwa-auto-library] Updating dirs.json with new library location... +calibre-web | [cwa-auto-library]: Updating Settings Database with library location... +calibre-web | [cwa-auto-library] Library location successfully set to: /calibre-library +calibre-web | [cwa-auto-library] Service completed successfully! Ending service... +calibre-web | xdg-desktop-menu: No writable system menu directory found. +calibre-web | Creating symlinks... +calibre-web | Symlinking /app/calibre/ebook-device to /usr/bin/ebook-device +calibre-web | Symlinking /app/calibre/ebook-meta to /usr/bin/ebook-meta +calibre-web | Symlinking /app/calibre/ebook-convert to /usr/bin/ebook-convert +calibre-web | Symlinking /app/calibre/ebook-polish to /usr/bin/ebook-polish +calibre-web | Symlinking /app/calibre/markdown-calibre to /usr/bin/markdown-calibre +calibre-web | Symlinking /app/calibre/web2disk to /usr/bin/web2disk +calibre-web | Symlinking /app/calibre/calibre-server to /usr/bin/calibre-server +calibre-web | Symlinking /app/calibre/lrf2lrs to /usr/bin/lrf2lrs +calibre-web | Symlinking /app/calibre/lrs2lrf to /usr/bin/lrs2lrf +calibre-web | Symlinking /app/calibre/calibre-debug to /usr/bin/calibre-debug +calibre-web | Symlinking /app/calibre/calibredb to /usr/bin/calibredb +calibre-web | Symlinking /app/calibre/calibre-parallel to /usr/bin/calibre-parallel +calibre-web | Symlinking /app/calibre/calibre-customize to /usr/bin/calibre-customize +calibre-web | Symlinking /app/calibre/fetch-ebook-metadata to /usr/bin/fetch-ebook-metadata +calibre-web | Symlinking /app/calibre/calibre-smtp to /usr/bin/calibre-smtp +calibre-web | Symlinking /app/calibre/calibre to /usr/bin/calibre +calibre-web | Symlinking /app/calibre/lrfviewer to /usr/bin/lrfviewer +calibre-web | Symlinking /app/calibre/ebook-viewer to /usr/bin/ebook-viewer +calibre-web | Symlinking /app/calibre/ebook-edit to /usr/bin/ebook-edit +calibre-web | Setting up command-line completion... +calibre-web | Installing zsh completion to: /usr/share/zsh/vendor-completions/_calibre +calibre-web | Failed to find directory to install bash completions, using default. +calibre-web | Installing bash completion to: /usr/share/bash-completion/completions/ +calibre-web | Setting up desktop integration... +calibre-web | +calibre-web | ____________________ WARNING ____________________ +calibre-web | Setting up desktop integration failed with error: +calibre-web | __________________________________________________ +calibre-web | +calibre-web | +calibre-web | Traceback (most recent call last): +calibre-web | File "calibre/linux.py", line 858, in setup_desktop_integration +calibre-web | File "calibre/linux.py", line 880, in do_setup_desktop_integration +calibre-web | File "calibre/linux.py", line 960, in install_xdg_junk +calibre-web | File "subprocess.py", line 419, in check_call +calibre-web | subprocess.CalledProcessError: Command 'xdg-desktop-menu install --noupdate ./calibre-gui.desktop' returned non-zero exit status 3. +calibre-web | +calibre-web | Creating un-installer: /usr/bin/calibre-uninstall +calibre-web | +calibre-web | +calibre-web | There were 1 warnings +calibre-web | +calibre-web | * Setting up desktop integration failed with error: +calibre-web | +calibre-web | [calibre-binaries-setup] Calibre setup completed successfully! +calibre-web | [calibre-binaries-setup] Installation verified: calibredb (calibre 9.1) +calibre-web | [calibre-binaries-setup] Service completed successfully, exiting... +calibre-web | [2026-09-30 18:00:37,484] INFO {cps:93} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers +calibre-web | [2026-09-30 18:00:37,594] INFO {cps.ub:1144} Migrating system magic shelves... +calibre-web | [2026-09-30 18:00:37,611] INFO {cps.magic_shelf:790} Created system magic shelf 'Currently Reading' for user 1 +calibre-web | [2026-09-30 18:00:37,617] INFO {cps.magic_shelf:800} Successfully created 1 system magic shelves for user 1 +calibre-web | [2026-09-30 18:00:37,618] INFO {cps.ub:1197} System shelf migration complete: 0 old shelves removed, 1 new shelves created +calibre-web | [2026-09-30 18:00:37,712] INFO {cps:141} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) +calibre-web | [2026-09-30 18:00:37,752] INFO {cps:198} Starting Calibre Web... +calibre-web | [2026-09-30 18:00:38,274] INFO {cps:218} OAuth blueprints initialized successfully +calibre-web | [2026-09-30 18:00:38,302] WARN {py.warnings:110} /lsiopy/lib/python3.13/site-packages/flask_limiter/extension.py:324: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. +calibre-web | warnings.warn( +calibre-web | +calibre-web | [2026-09-30 18:00:38,588] INFO {apscheduler.scheduler:214} Scheduler started +calibre-web | [2026-09-30 18:00:38,589] INFO {apscheduler.scheduler:1092} Added job "delete temp" to job store "default" +calibre-web | [2026-09-30 18:00:38,589] INFO {apscheduler.scheduler:1092} Added job "delete superfluous book covers" to job store "default" +calibre-web | [2026-09-30 18:00:38,589] INFO {apscheduler.scheduler:1092} Added job "generate book covers" to job store "default" +calibre-web | [2026-09-30 18:00:39,351] INFO {apscheduler.scheduler:1092} Added job "end scheduled task" to job store "default" +calibre-web | [2026-09-30 18:00:39,357] INFO {apscheduler.scheduler:1092} Added job "clean archived book references" to job store "default" +calibre-web | [2026-09-30 18:00:39,359] INFO {cps.tasks.thumbnail_migration:87} Thumbnail migration: No old subdirectories found, skipping migration +calibre-web | [2026-09-30 18:00:39,382] INFO {apscheduler.scheduler:1092} Added job "immediately delete temp" to job store "default" +calibre-web | [2026-09-30 18:00:39,383] INFO {apscheduler.executors.default:129} Running job "immediately delete temp (trigger: date[2026-09-30 18:00:39 CEST], next run at: 2026-09-30 18:00:39 CEST)" (scheduled at 2026-09-30 18:00:39.382656+02:00) +calibre-web | [2026-09-30 18:00:39,383] INFO {apscheduler.scheduler:728} Removed job a947a9c34e0e4997b2116dbc91a8c1da +calibre-web | [2026-09-30 18:00:39,405] INFO {apscheduler.executors.default:156} Job "immediately delete temp (trigger: date[2026-09-30 18:00:39 CEST], next run at: 2026-09-30 18:00:39 CEST)" executed successfully +calibre-web | [2026-09-30 18:00:40,120] INFO {cps.remotelogin:32} Magic Link QRCode is enabled +calibre-web | [2026-09-30 18:00:40,357] INFO {cps.server:207} Starting Gevent server on [::]:8083 +calibre-web | Connection to localhost (::1) 8083 port [tcp/*] succeeded! +calibre-web | [cwa-checksum-backfill] Waiting for CWA service to be ready... +calibre-web | ========== STARTING METADATA CHANGE DETECTOR =========== +calibre-web | [metadata-change-detector] Watching folder: /app/calibre-web-automated/metadata_change_logs +calibre-web | ========== STARTING CWA-INGEST SERVICE ========== +calibre-web | Setting up watches. +calibre-web | Watches established. +calibre-web | [cwa-ingest-service] Watching folder: /cwa-book-ingest +calibre-web | Setting up watches. Beware: since -r was given, this may take a while! +calibre-web | Watches established. diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-states.json new file mode 100644 index 00000000..12ed6c3f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/to-states.json @@ -0,0 +1,8 @@ +{ + "calibre-web": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/verdict.json new file mode 100644 index 00000000..20a6a96e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/calibre-web/bench/evidence/MV-calibre-web/verdict.json @@ -0,0 +1,57 @@ +{ + "harness_version": 4, + "edge": "MV-calibre-web", + "app": "calibre-web", + "note": "night 2026-09-23 within-a-major move: calibre-web=crocodilestick/calibre-web-automated:v4.0.8", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcalibre-web | [migrations] started", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.0, + "requested_s": 600, + "requests": 11778, + "codes": { + "302": 11778 + }, + "first_kill": null, + "containers": { + "calibre-web": { + "limit": 805306368, + "peak": 313589760, + "peak_pct": 0.389, + "anon_peak_sampled": 155197440, + "anon_peak_pct": 0.193, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [ + "files_may_change" + ], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:11:42Z", + "evidence": "evidence/MV-calibre-web", + "scratch_cleared": [ + "/srv/felhom-gate/import/calibre" + ], + "files_changed": [ + "/srv/felhom-gate/hdd/userdata/media/books" + ], + "total_s": 751.9 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/MV-crafty-controller.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/MV-crafty-controller.log new file mode 100644 index 00000000..a4ece04e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/MV-crafty-controller.log @@ -0,0 +1,109 @@ +[16:25:23] scratch drive folders cleared before FROM (R-656): none existed +[16:25:23] MV-crafty-controller: deploying crafty-controller at FROM {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.10.7'} +[16:25:54] FROM settled=True in 30.8s :: {"crafty-controller": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:25:54] fixture: the BOX walk's own (Crafty), through upgrade_boxport +[16:25:54] crafty: POST /api/v2/roles http=200 {"status":"ok","data":{"role_id":1}} +[16:25:55] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:25:55] C1 (seed reads back BEFORE): True +[16:25:55] MV-crafty-controller: swapping to TO {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.11.0'} +[16:26:46] TO up -d rc=0 +[16:27:17] TO settled=True in 30.8s :: {"crafty-controller": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:27:17] migration lines observed: 1 +[16:27:17] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:27:17] RESULT (seed reads back AFTER): True +[16:27:17] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8443 +[16:27:32] + 15s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=236 +[16:27:48] + 30s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=476 +[16:28:03] + 45s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=716 +[16:28:18] + 60s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=956 +[16:28:33] + 76s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1196 +[16:28:48] + 91s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=1436 +[16:29:03] + 106s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1676 +[16:29:18] + 121s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1920 +[16:29:33] + 136s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=2160 +[16:29:49] + 151s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=2400 +[16:30:04] + 166s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=2640 +[16:30:19] + 182s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=2880 +[16:30:34] + 197s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3120 +[16:30:49] + 212s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=3360 +[16:31:04] + 227s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3600 +[16:31:19] + 242s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3840 +[16:31:34] + 257s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4084 +[16:31:50] + 272s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4324 +[16:32:05] + 287s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4564 +[16:32:20] + 302s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4804 +[16:32:35] + 318s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=5044 +[16:32:50] + 333s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=5284 +[16:33:05] + 348s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=5528 +[16:33:20] + 363s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=5768 +[16:33:35] + 378s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6008 +[16:33:51] + 393s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6252 +[16:34:06] + 408s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6492 +[16:34:21] + 423s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6732 +[16:34:36] + 439s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6972 +[16:34:51] + 454s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7212 +[16:35:06] + 469s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7452 +[16:35:21] + 484s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7696 +[16:35:36] + 499s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7936 +[16:35:51] + 514s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8172 +[16:36:07] + 529s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8416 +[16:36:22] + 544s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8656 +[16:36:37] + 560s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8896 +[16:36:52] + 575s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=9136 +[16:37:07] + 590s crafty-controller=103M/2048M peak=164M kills=0 rs=0 reqs=9376 +[16:37:22] + 605s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=9620 +[16:37:22] memory watch: killed=False tight=[] requests=9620 codes={'302': 9620} +[16:37:22] MV-crafty-controller: ABORT — putting the FROM images back +[16:37:55] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:37:55] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-crafty-controller", + "app": "crafty-controller", + "note": "night 2026-09-23 within-a-major move: crafty-controller=registry.gitlab.com/crafty-controller/crafty-4:4.11.0", + "from": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.10.7" + }, + "to": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.11.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcrafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO:\tStarting migrations", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.2, + "requested_s": 600, + "requests": 9620, + "codes": { + "302": 9620 + }, + "first_kill": null, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "peak": 172363776, + "peak_pct": 0.08, + "anon_peak_sampled": 56918016, + "anon_peak_pct": 0.027, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:37:55Z", + "evidence": "evidence/MV-crafty-controller", + "scratch_cleared": [], + "files_changed": [], + "total_s": 752.7 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/abort-states.json new file mode 100644 index 00000000..d7c7e945 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/abort-states.json @@ -0,0 +1,8 @@ +{ + "crafty-controller": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/compose-final.log new file mode 100644 index 00000000..08571eba --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/compose-final.log @@ -0,0 +1,40 @@ +crafty-controller | Wrapper | 🚂✅ SteamCMD dependencies are available in this image! +crafty-controller | Wrapper | 🚀 Launching crafty with [-d -i] +crafty-controller | Logging set to: 0 +crafty-controller | +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | # Welcome to Crafty Controller - v.4.10.7 # +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | # Server Manager / Web Portal for your Minecraft server # +crafty-controller | # Homepage: www.craftycontrol.com # +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Starting migrations +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: There is nothing to migrate +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Checking for reset secret flag +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: No flag found. Secrets are staying +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Checking for remote changes to config.json +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Remote change complete. +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Initializing all servers defined +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Crafty started in daemon mode, no shell will be printed +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Setting up Crafty's internal components... +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: https://172.18.0.2:8443 is up and ready for connections. +crafty-controller | [+] Crafty: 09/30/26 18:37:25 - INFO: Server Init Complete: Listening For Connections! +crafty-controller | [+] Crafty: 09/30/26 18:37:27 - INFO: Stats collection frequency set to 30 seconds +crafty-controller | [+] Crafty: 09/30/26 18:37:28 - INFO: Launching Scheduler Thread... +crafty-controller | [+] Crafty: 09/30/26 18:37:28 - INFO: Launching command thread... +crafty-controller | [+] Crafty: 09/30/26 18:37:28 - INFO: Launching log watcher... +crafty-controller | [+] Crafty: 09/30/26 18:37:28 - INFO: Launching realtime thread... +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:37:29 - INFO: Checking Internet. This may take a minute. +crafty-controller | [+] Crafty: 09/30/26 18:37:31 - INFO: Execution Mode: Non-interactive (e.g. 'python main.py') +crafty-controller | [+] Crafty: 09/30/26 18:37:31 - INFO: Application path: '/crafty' +crafty-controller | +crafty-controller | A new version of Crafty is available! +crafty-controller | ///////////////////////////////////// +crafty-controller | New version available: 4.11.0 +crafty-controller | Current version: 4.10.7 +crafty-controller | ///////////////////////////////////// +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:37:32 - INFO: Crafty has fully started and is now ready for use! diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/memory-samples.json new file mode 100644 index 00000000..a29e7730 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105312256, + "peak": 172363776, + "anon": 56700928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 236 + }, + { + "t": 30.2, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105357312, + "peak": 172363776, + "anon": 56729600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 476 + }, + { + "t": 45.4, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105492480, + "peak": 172363776, + "anon": 56778752, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 716 + }, + { + "t": 60.5, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105582592, + "peak": 172363776, + "anon": 56827904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 956 + }, + { + "t": 75.6, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 104898560, + "peak": 172363776, + "anon": 56848384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1196 + }, + { + "t": 90.7, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106020864, + "peak": 172363776, + "anon": 56877056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1436 + }, + { + "t": 105.9, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105840640, + "peak": 172363776, + "anon": 56877056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1676 + }, + { + "t": 121.0, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105611264, + "peak": 172363776, + "anon": 56885248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1920 + }, + { + "t": 136.1, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105947136, + "peak": 172363776, + "anon": 56885248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2160 + }, + { + "t": 151.2, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105480192, + "peak": 172363776, + "anon": 56885248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2400 + }, + { + "t": 166.3, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105287680, + "peak": 172363776, + "anon": 56885248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2640 + }, + { + "t": 181.5, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106373120, + "peak": 172363776, + "anon": 56901632, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2880 + }, + { + "t": 196.6, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106201088, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3120 + }, + { + "t": 211.7, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 105754624, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3360 + }, + { + "t": 226.8, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106061824, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3600 + }, + { + "t": 241.9, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106090496, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3840 + }, + { + "t": 257.1, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106430464, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4084 + }, + { + "t": 272.2, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106471424, + "peak": 172363776, + "anon": 56909824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4324 + }, + { + "t": 287.3, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106389504, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4564 + }, + { + "t": 302.4, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106688512, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4804 + }, + { + "t": 317.6, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106598400, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5044 + }, + { + "t": 332.7, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107180032, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5284 + }, + { + "t": 347.8, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 106786816, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5528 + }, + { + "t": 362.9, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107282432, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5768 + }, + { + "t": 378.1, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107274240, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6008 + }, + { + "t": 393.2, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107290624, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6252 + }, + { + "t": 408.3, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107085824, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6492 + }, + { + "t": 423.4, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107388928, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6732 + }, + { + "t": 438.6, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107462656, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6972 + }, + { + "t": 453.7, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107040768, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7212 + }, + { + "t": 468.8, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107601920, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7452 + }, + { + "t": 483.9, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107421696, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7696 + }, + { + "t": 499.0, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107712512, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7936 + }, + { + "t": 514.2, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107483136, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8172 + }, + { + "t": 529.3, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107814912, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8416 + }, + { + "t": 544.4, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107880448, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8656 + }, + { + "t": 559.5, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107663360, + "peak": 172363776, + "anon": 56913920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8896 + }, + { + "t": 574.6, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107483136, + "peak": 172363776, + "anon": 56918016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9136 + }, + { + "t": 589.8, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 108068864, + "peak": 172363776, + "anon": 56918016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9376 + }, + { + "t": 604.9, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "current": 107638784, + "peak": 172363776, + "anon": 56918016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9620 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/migration-lines.txt new file mode 100644 index 00000000..3b04347a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/migration-lines.txt @@ -0,0 +1 @@ +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Starting migrations \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/run.log new file mode 100644 index 00000000..b78584df --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/run.log @@ -0,0 +1,58 @@ +[16:25:23] scratch drive folders cleared before FROM (R-656): none existed +[16:25:23] MV-crafty-controller: deploying crafty-controller at FROM {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.10.7'} +[16:25:54] FROM settled=True in 30.8s :: {"crafty-controller": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:25:54] fixture: the BOX walk's own (Crafty), through upgrade_boxport +[16:25:54] crafty: POST /api/v2/roles http=200 {"status":"ok","data":{"role_id":1}} +[16:25:55] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:25:55] C1 (seed reads back BEFORE): True +[16:25:55] MV-crafty-controller: swapping to TO {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.11.0'} +[16:26:46] TO up -d rc=0 +[16:27:17] TO settled=True in 30.8s :: {"crafty-controller": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:27:17] migration lines observed: 1 +[16:27:17] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:27:17] RESULT (seed reads back AFTER): True +[16:27:17] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8443 +[16:27:32] + 15s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=236 +[16:27:48] + 30s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=476 +[16:28:03] + 45s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=716 +[16:28:18] + 60s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=956 +[16:28:33] + 76s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1196 +[16:28:48] + 91s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=1436 +[16:29:03] + 106s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1676 +[16:29:18] + 121s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=1920 +[16:29:33] + 136s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=2160 +[16:29:49] + 151s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=2400 +[16:30:04] + 166s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=2640 +[16:30:19] + 182s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=2880 +[16:30:34] + 197s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3120 +[16:30:49] + 212s crafty-controller=100M/2048M peak=164M kills=0 rs=0 reqs=3360 +[16:31:04] + 227s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3600 +[16:31:19] + 242s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=3840 +[16:31:34] + 257s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4084 +[16:31:50] + 272s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4324 +[16:32:05] + 287s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4564 +[16:32:20] + 302s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=4804 +[16:32:35] + 318s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=5044 +[16:32:50] + 333s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=5284 +[16:33:05] + 348s crafty-controller=101M/2048M peak=164M kills=0 rs=0 reqs=5528 +[16:33:20] + 363s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=5768 +[16:33:35] + 378s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6008 +[16:33:51] + 393s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6252 +[16:34:06] + 408s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6492 +[16:34:21] + 423s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6732 +[16:34:36] + 439s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=6972 +[16:34:51] + 454s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7212 +[16:35:06] + 469s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7452 +[16:35:21] + 484s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7696 +[16:35:36] + 499s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=7936 +[16:35:51] + 514s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8172 +[16:36:07] + 529s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8416 +[16:36:22] + 544s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8656 +[16:36:37] + 560s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=8896 +[16:36:52] + 575s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=9136 +[16:37:07] + 590s crafty-controller=103M/2048M peak=164M kills=0 rs=0 reqs=9376 +[16:37:22] + 605s crafty-controller=102M/2048M peak=164M kills=0 rs=0 reqs=9620 +[16:37:22] memory watch: killed=False tight=[] requests=9620 codes={'302': 9620} +[16:37:22] MV-crafty-controller: ABORT — putting the FROM images back +[16:37:55] crafty: readback of the seeded role http=200 found=True (roles listed: 1) +[16:37:55] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-full.log new file mode 100644 index 00000000..9e4ffb93 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-full.log @@ -0,0 +1,32 @@ +crafty-controller | Wrapper | 🚂✅ SteamCMD dependencies are available in this image! +crafty-controller | Wrapper | 🚀 Launching crafty with [-d -i] +crafty-controller | Logging set to: 0 +crafty-controller | +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | # Welcome to Crafty Controller - v.4.11.0 # +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | # Server Manager / Web Portal for your Minecraft server # +crafty-controller | # Homepage: www.craftycontrol.com # +crafty-controller | /////////////////////////////////////////////////////////////////////////// +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Starting migrations +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Checking for reset secret flag +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: No flag found. Secrets are staying +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Checking for remote changes to config.json +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Remote change complete. +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Initializing all servers defined +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Crafty started in daemon mode, no shell will be printed +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Setting up Crafty's internal components... +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: https://172.18.0.2:8443 is up and ready for connections. +crafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO: Server Init Complete: Listening For Connections! +crafty-controller | [+] Crafty: 09/30/26 18:26:49 - INFO: Stats collection frequency set to 30 seconds +crafty-controller | [+] Crafty: 09/30/26 18:26:50 - INFO: Launching Scheduler Thread... +crafty-controller | [+] Crafty: 09/30/26 18:26:50 - INFO: Launching command thread... +crafty-controller | [+] Crafty: 09/30/26 18:26:50 - INFO: Launching log watcher... +crafty-controller | [+] Crafty: 09/30/26 18:26:50 - INFO: Launching realtime thread... +crafty-controller | +crafty-controller | [+] Crafty: 09/30/26 18:26:51 - INFO: Checking Internet. This may take a minute. +crafty-controller | [+] Crafty: 09/30/26 18:26:53 - INFO: Execution Mode: Non-interactive (e.g. 'python main.py') +crafty-controller | [+] Crafty: 09/30/26 18:26:53 - INFO: Application path: '/crafty' +crafty-controller | [+] Crafty: 09/30/26 18:26:54 - INFO: Crafty has fully started and is now ready for use! diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-states.json new file mode 100644 index 00000000..d7c7e945 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/to-states.json @@ -0,0 +1,8 @@ +{ + "crafty-controller": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/verdict.json new file mode 100644 index 00000000..49190338 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/crafty-controller/bench/evidence/MV-crafty-controller/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 4, + "edge": "MV-crafty-controller", + "app": "crafty-controller", + "note": "night 2026-09-23 within-a-major move: crafty-controller=registry.gitlab.com/crafty-controller/crafty-4:4.11.0", + "from": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.10.7" + }, + "to": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.11.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kcrafty-controller | [+] Crafty: 09/30/26 18:26:47 - INFO:\tStarting migrations", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.2, + "requested_s": 600, + "requests": 9620, + "codes": { + "302": 9620 + }, + "first_kill": null, + "containers": { + "crafty-controller": { + "limit": 2147483648, + "peak": 172363776, + "peak_pct": 0.08, + "anon_peak_sampled": 56918016, + "anon_peak_pct": 0.027, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:37:55Z", + "evidence": "evidence/MV-crafty-controller", + "scratch_cleared": [], + "files_changed": [], + "total_s": 752.7 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/MV-emby.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/MV-emby.log new file mode 100644 index 00000000..432b1705 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/MV-emby.log @@ -0,0 +1,111 @@ +[15:16:39] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media'] +[15:16:39] MV-emby: deploying emby at FROM {'emby': 'emby/embyserver:4.11.0.3'} +[15:17:29] FROM settled=True in 30.8s :: {"emby": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:17:29] fixture: the BOX walk's own (Emby), through upgrade_boxport +[15:17:29] emby: seeded first user drillde12c4fd +[15:17:29] emby: readback found=True (http 200, control passed) +[15:17:29] C1 (seed reads back BEFORE): True +[15:17:29] MV-emby: swapping to TO {'emby': 'emby/embyserver:4.11.0.4'} +[15:17:49] TO up -d rc=0 +[15:18:20] TO settled=True in 30.8s :: {"emby": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:18:20] migration lines observed: 3 +[15:18:20] emby: readback found=True (http 200, control passed) +[15:18:20] RESULT (seed reads back AFTER): True +[15:18:21] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8096 +[15:18:36] + 15s emby=148M/2048M peak=150M kills=0 rs=0 reqs=300 +[15:18:51] + 30s emby=146M/2048M peak=150M kills=0 rs=0 reqs=600 +[15:19:06] + 45s emby=147M/2048M peak=150M kills=0 rs=0 reqs=900 +[15:19:21] + 60s emby=147M/2048M peak=150M kills=0 rs=0 reqs=1200 +[15:19:36] + 76s emby=146M/2048M peak=150M kills=0 rs=0 reqs=1500 +[15:19:51] + 91s emby=146M/2048M peak=150M kills=0 rs=0 reqs=1800 +[15:20:06] + 106s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2100 +[15:20:22] + 121s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2400 +[15:20:37] + 136s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2700 +[15:20:52] + 151s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3001 +[15:21:07] + 166s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3301 +[15:21:22] + 181s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3601 +[15:21:37] + 196s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3901 +[15:21:52] + 212s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4199 +[15:22:07] + 227s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4499 +[15:22:23] + 242s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4799 +[15:22:38] + 257s emby=145M/2048M peak=150M kills=0 rs=0 reqs=5099 +[15:22:53] + 272s emby=144M/2048M peak=150M kills=0 rs=0 reqs=5402 +[15:23:08] + 287s emby=147M/2048M peak=150M kills=0 rs=0 reqs=5702 +[15:23:23] + 302s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6002 +[15:23:38] + 318s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6302 +[15:23:53] + 333s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6602 +[15:24:08] + 348s emby=145M/2048M peak=150M kills=0 rs=0 reqs=6902 +[15:24:24] + 363s emby=144M/2048M peak=150M kills=0 rs=0 reqs=7200 +[15:24:39] + 378s emby=145M/2048M peak=150M kills=0 rs=0 reqs=7500 +[15:24:54] + 393s emby=146M/2048M peak=150M kills=0 rs=0 reqs=7800 +[15:25:09] + 408s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8100 +[15:25:24] + 423s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8396 +[15:25:39] + 438s emby=145M/2048M peak=150M kills=0 rs=0 reqs=8696 +[15:25:54] + 454s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8996 +[15:26:09] + 469s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9296 +[15:26:24] + 484s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9596 +[15:26:40] + 499s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9896 +[15:26:55] + 514s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10196 +[15:27:10] + 529s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10496 +[15:27:25] + 544s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10796 +[15:27:40] + 559s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11096 +[15:27:55] + 574s emby=145M/2048M peak=150M kills=0 rs=0 reqs=11394 +[15:28:10] + 590s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11694 +[15:28:25] + 605s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11992 +[15:28:26] memory watch: killed=False tight=[] requests=11992 codes={'302': 11992} +[15:28:26] MV-emby: ABORT — putting the FROM images back +[15:28:57] emby: readback found=True (http 200, control passed) +[15:28:57] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-emby", + "app": "emby", + "note": "night 2026-09-23 within-a-major move: emby=emby/embyserver:4.11.0.4", + "from": { + "emby": "emby/embyserver:4.11.0.3" + }, + "to": { + "emby": "emby/embyserver:4.11.0.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kemby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=gcc-13.4.0,DEFAULT_AUTOVACUUM,DEFAULT_CACHE_SIZE=-2000,DEFAULT_FILE_FORMAT=4,DEFAULT_JOURNAL_SIZE_LIMIT=-1,DEFAULT_MMAP_SIZE=0,DEFAULT_PAGE_SIZE=4096,DEFAULT_PCACHE_INITSZ=20,DEFAULT_RECURSIVE_TRIGGERS,DEFAULT_SECTOR_SIZE=4096,DEFAULT_SYNCHRONOUS=2,DEFAULT_WAL_AUTOCHECKPOINT=1000,DEFAULT_WAL_SYNCHRONOUS=2,DEFAULT_WORKER_THREADS=0,DIRECT_OVERFLOW_READ,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS5,ENABLE_MATH_FUNCTIONS,ENABLE_PERCENTILE,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MALLOC_SOFT_LIMIT=1024,MAX_ATTACHED=10,MAX_COLUMN=2000,MAX_COMPOUND_SELECT=500,MAX_DEFAULT_PAGE_SIZE=8192,MAX_EXPR_DEPTH=1000,MAX_FUNCTION_ARG=1000,MAX_LENGTH=1000000000,MAX_LIKE_PATTERN_LENGTH=50000,MAX_MMAP_SIZE=0x7fff0000,MAX_PAGE_COUNT=0xfffffffe,MAX_PAGE_SIZE=65536,MAX_SCHEMA_RETRY=25,MAX_SQL_LENGTH=1000000000,MAX_TRIGGER_DEPTH=1000,MAX_VARIABLE_NUMBER=250000,MAX_VDBE_OP=250000000,MAX_WORKER_THREADS=8,MUTEX_PTHREADS,OMIT_LOOKASIDE,OMIT_SHARED_CACHE,SYSTEM_MALLOC,TEMP_STORE=1,THREADSAFE=1", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11992, + "codes": { + "302": 11992 + }, + "first_kill": null, + "containers": { + "emby": { + "limit": 2147483648, + "peak": 157536256, + "peak_pct": 0.073, + "anon_peak_sampled": 101310464, + "anon_peak_pct": 0.047, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:28:57Z", + "evidence": "evidence/MV-emby", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media" + ], + "files_changed": [], + "total_s": 738.0 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/abort-states.json new file mode 100644 index 00000000..8e43020b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/abort-states.json @@ -0,0 +1,8 @@ +{ + "emby": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/compose-final.log new file mode 100644 index 00000000..b9099020 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/compose-final.log @@ -0,0 +1,259 @@ +emby | s6-rc: info: service s6rc-oneshot-runner: starting +emby | s6-rc: info: service s6rc-oneshot-runner successfully started +emby | s6-rc: info: service fix-attrs: starting +emby | s6-rc: info: service fix-attrs successfully started +emby | s6-rc: info: service legacy-cont-init: starting +emby | s6-rc: info: service legacy-cont-init successfully started +emby | s6-rc: info: service emby-server: starting +emby | s6-rc: info: service emby-server successfully started +emby | s6-rc: info: service legacy-services: starting +emby | s6-rc: info: service legacy-services successfully started +emby | Info Main: Application path: /system/EmbyServer.dll +emby | Info NetworkManager: Adding event handler for NetworkChange.NetworkAddressChanged +emby | Info App: Setting default culture to en-us +emby | Info Main: Emby Server 4.11.0.3 +emby | Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 +emby | Operating system: Linux version 7.0.2-6-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 7.0.2-6 (2 +emby | OS/Process: x64/x64 +emby | Framework: .NET 8.0.28 +emby | Runtime: system/System.Private.CoreLib.dll +emby | Processor count: 6 +emby | Data path: /config +emby | Application path: /system +emby | Info Main: Logs path: /config/logs +emby | Info Main: Cache path: /config/cache +emby | Info Main: Internal metadata path: /config/metadata +emby | Info Main: DefaultThreadCurrentCulture: en-US +emby | Info Main: DefaultThreadCurrentUICulture: en-US +emby | Info Main: DefaultThreadCurrentUICulture: en-US +emby | Info Main: Server Friendly Name: ‌0e007414cdff‌ +emby | Info Main: Local time: 09/30/2026 17:28:27 +02:00 +emby | Info App: Emby Server Version: 4.11.0.3 +emby | Info App: Loading assemblies +emby | Info App: Updating pre-installed plugins due to server rollback. Last server version: 4.11.0.4. Current server version: 4.11.0.3 +emby | Info App: Any manually installed plugins will need to be reverted to compatible versions. Please use the Emby plugin catalog to install compatible versions of your plugins. +emby | Info App: Why did you roll back your server version? If you did so because of a problem, please make sure to report it to the Emby team. +emby | Info App: Copying plugin from /system/plugins/Emby.M3UTuner.dll to /config/plugins/Emby.M3UTuner.dll +emby | Info App: Copying plugin from /system/plugins/Emby.Dlna.dll to /config/plugins/Emby.Dlna.dll +emby | Info App: Copying plugin from /system/plugins/MBBackup.dll to /config/plugins/MBBackup.dll +emby | Info App: Copying plugin from /system/plugins/Emby.Server.CinemaMode.dll to /config/plugins/Emby.Server.CinemaMode.dll +emby | Info App: Copying plugin from /system/plugins/Emby.PortMapper.dll to /config/plugins/Emby.PortMapper.dll +emby | Info App: Copying plugin from /system/plugins/AudioDb.dll to /config/plugins/AudioDb.dll +emby | Info App: Copying plugin from /system/plugins/DvdMounter.dll to /config/plugins/DvdMounter.dll +emby | Info App: Copying plugin from /system/plugins/Emby.XmlTV.dll to /config/plugins/Emby.XmlTV.dll +emby | Info App: Copying plugin from /system/plugins/MusicBrainz.dll to /config/plugins/MusicBrainz.dll +emby | Info App: Copying plugin from /system/plugins/OMDb.dll to /config/plugins/OMDb.dll +emby | Info App: Copying plugin from /system/plugins/Emby.Webhooks.dll to /config/plugins/Emby.Webhooks.dll +emby | Info App: Copying plugin from /system/plugins/NfoMetadata.dll to /config/plugins/NfoMetadata.dll +emby | Info App: Copying plugin from /system/plugins/Fanart.dll to /config/plugins/Fanart.dll +emby | Info App: Copying plugin from /system/plugins/BlurayMounter.dll to /config/plugins/BlurayMounter.dll +emby | Info App: Copying plugin from /system/plugins/EmbyGuideData.dll to /config/plugins/EmbyGuideData.dll +emby | Info App: Copying plugin from /system/plugins/MovieDb.dll to /config/plugins/MovieDb.dll +emby | Info App: Copying plugin from /system/plugins/StudioImages.dll to /config/plugins/StudioImages.dll +emby | Info App: Copying plugin from /system/plugins/Tvdb.dll to /config/plugins/Tvdb.dll +emby | Info App: Copying plugin from /system/plugins/OpenSubtitles.dll to /config/plugins/OpenSubtitles.dll +emby | Info App: Loading Emby.Api, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Web, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Model, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Common, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Controller, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Providers, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Photos, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Implementations, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.LiveTV, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.ActivityLog, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.MediaEncoding, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.LocalMetadata, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Notifications, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Web.GenericUI, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Codecs.Dxva, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Codecs, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Connect, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Sync, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading EmbyServer, Version=4.11.0.3, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.M3UTuner, Version=1.0.46.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.M3UTuner.dll +emby | Info App: Loading Emby.Dlna, Version=1.5.7.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Dlna.dll +emby | Info App: Loading MBBackup, Version=1.8.6.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MBBackup.dll +emby | Info App: Loading Emby.Server.CinemaMode, Version=1.0.52.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Server.CinemaMode.dll +emby | Info App: Loading Emby.PortMapper, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.PortMapper.dll +emby | Info App: Loading AudioDb, Version=1.0.21.0, Culture=neutral, PublicKeyToken=null from /config/plugins/AudioDb.dll +emby | Info App: Loading DvdMounter, Version=1.0.2.0, Culture=neutral, PublicKeyToken=null from /config/plugins/DvdMounter.dll +emby | Info App: Loading Emby.XmlTV, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.XmlTV.dll +emby | Info App: Loading MusicBrainz, Version=1.0.30.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MusicBrainz.dll +emby | Info App: Loading OMDb, Version=1.0.23.0, Culture=neutral, PublicKeyToken=null from /config/plugins/OMDb.dll +emby | Info App: Loading Emby.Webhooks, Version=1.0.38.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Webhooks.dll +emby | Info App: Loading NfoMetadata, Version=1.0.86.0, Culture=neutral, PublicKeyToken=null from /config/plugins/NfoMetadata.dll +emby | Info App: Loading Fanart, Version=1.0.18.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Fanart.dll +emby | Info App: Loading BlurayMounter, Version=1.0.5.0, Culture=neutral, PublicKeyToken=null from /config/plugins/BlurayMounter.dll +emby | Info App: Loading EmbyGuideData, Version=1.0.21.0, Culture=neutral, PublicKeyToken=null from /config/plugins/EmbyGuideData.dll +emby | Info App: Loading MovieDb, Version=1.9.5.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MovieDb.dll +emby | Info App: Loading StudioImages, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null from /config/plugins/StudioImages.dll +emby | Info App: Loading Tvdb, Version=1.6.6.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Tvdb.dll +emby | Info App: Loading OpenSubtitles, Version=1.0.69.0, Culture=neutral, PublicKeyToken=null from /config/plugins/OpenSubtitles.dll +emby | Info SqliteUserRepository: Initializing PooledDatabaseConnectionManager with pool size: 3 +emby | Info SqliteUserRepository: Sqlite version: 3.53.4 +emby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=gcc-13.4.0,DEFAULT_AUTOVACUUM,DEFAULT_CACHE_SIZE=-2000,DEFAULT_FILE_FORMAT=4,DEFAULT_JOURNAL_SIZE_LIMIT=-1,DEFAULT_MMAP_SIZE=0,DEFAULT_PAGE_SIZE=4096,DEFAULT_PCACHE_INITSZ=20,DEFAULT_RECURSIVE_TRIGGERS,DEFAULT_SECTOR_SIZE=4096,DEFAULT_SYNCHRONOUS=2,DEFAULT_WAL_AUTOCHECKPOINT=1000,DEFAULT_WAL_SYNCHRONOUS=2,DEFAULT_WORKER_THREADS=0,DIRECT_OVERFLOW_READ,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS5,ENABLE_MATH_FUNCTIONS,ENABLE_PERCENTILE,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MALLOC_SOFT_LIMIT=1024,MAX_ATTACHED=10,MAX_COLUMN=2000,MAX_COMPOUND_SELECT=500,MAX_DEFAULT_PAGE_SIZE=8192,MAX_EXPR_DEPTH=1000,MAX_FUNCTION_ARG=1000,MAX_LENGTH=1000000000,MAX_LIKE_PATTERN_LENGTH=50000,MAX_MMAP_SIZE=0x7fff0000,MAX_PAGE_COUNT=0xfffffffe,MAX_PAGE_SIZE=65536,MAX_SCHEMA_RETRY=25,MAX_SQL_LENGTH=1000000000,MAX_TRIGGER_DEPTH=1000,MAX_VARIABLE_NUMBER=250000,MAX_VDBE_OP=250000000,MAX_WORKER_THREADS=8,MUTEX_PTHREADS,OMIT_LOOKASIDE,OMIT_SHARED_CACHE,SYSTEM_MALLOC,TEMP_STORE=1,THREADSAFE=1 +emby | Info SqliteUserRepository: Sqlite ThreadSafe: 1 +emby | Info SqliteUserRepository: Sqlite ThreadingMode: MultiThreaded +emby | Info SqliteUserRepository: Opening sqlite connection to /config/data/users.db. isReadOnly: False +emby | Info SqliteUserRepository: Default journal_mode for /config/data/users.db is wal +emby | Info SqliteUserRepository: PRAGMA cache_size=-65536 +emby | Info SqliteUserRepository: PRAGMA page_size=4096 +emby | Info SqliteUserRepository: PRAGMA foreign_keys=1 +emby | Info SqliteUserRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Initializing PooledDatabaseConnectionManager with pool size: 5 +emby | Info AuthenticationRepository: Initializing PooledDatabaseConnectionManager with pool size: 5 +emby | Info ActivityRepository: Initializing PooledDatabaseConnectionManager with pool size: 3 +emby | Info ActivityRepository: Opening sqlite connection to /config/data/activitylog.db. isReadOnly: False +emby | Info ActivityRepository: Default journal_mode for /config/data/activitylog.db is wal +emby | Info ActivityRepository: PRAGMA cache_size=-65536 +emby | Info ActivityRepository: PRAGMA page_size=4096 +emby | Info ActivityRepository: PRAGMA foreign_keys=1 +emby | Info ActivityRepository: PRAGMA SECURE_DELETE=0 +emby | Info ActivityRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info ActivityRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info NetworkManager: Detecting local network addresses +emby | Info NetworkManager: networkInterface: Ethernet eth0, Speed: 10000000000, Description: eth0 +emby | Info NetworkManager: GatewayAddresses: 172.18.0.1 +emby | Info NetworkManager: UnicastAddresses: 172.18.0.2 +emby | Info NetworkManager: networkInterface: Loopback lo, Speed: -1, Description: lo +emby | Info NetworkManager: GatewayAddresses: +emby | Info NetworkManager: UnicastAddresses: 127.0.0.1,::1 +emby | Info NetworkManager: Detected local ip addresses: [{"IPAddress":"172.18.0.2","HasGateWayAddress":true,"PrefixLength":16,"IPv4Mask":"255.255.0.0","BroadcastAddress":"172.18.255.255"},{"IPAddress":"127.0.0.1","HasGateWayAddress":false,"PrefixLength":8,"IPv4Mask":"255.0.0.0","BroadcastAddress":"127.255.255.255"},{"IPAddress":"::1","HasGateWayAddress":false,"PrefixLength":128}] +emby | Info App: Adding HttpListener prefix http://+:8096/ +emby | Info AuthenticationRepository: Opening sqlite connection to /config/data/authentication.db. isReadOnly: False +emby | Info AuthenticationRepository: Default journal_mode for /config/data/authentication.db is wal +emby | Info AuthenticationRepository: PRAGMA cache_size=-65536 +emby | Info AuthenticationRepository: PRAGMA page_size=4096 +emby | Info AuthenticationRepository: PRAGMA foreign_keys=1 +emby | Info AuthenticationRepository: PRAGMA SECURE_DELETE=0 +emby | Info AuthenticationRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info AuthenticationRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Opening sqlite connection to /config/data/library.db. isReadOnly: False +emby | Info SqliteItemRepository: Default journal_mode for /config/data/library.db is wal +emby | Info SqliteItemRepository: PRAGMA cache_size=-131072 +emby | Info SqliteItemRepository: PRAGMA page_size=4096 +emby | Info SqliteItemRepository: PRAGMA foreign_keys=1 +emby | Info SqliteItemRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Init Complete +emby | Info SqliteItemRepository: Opening sqlite connection to /config/data/library.db. isReadOnly: True +emby | Info SqliteItemRepository: PRAGMA cache_size=-131072 +emby | Info SqliteItemRepository: PRAGMA page_size=4096 +emby | Info SqliteItemRepository: PRAGMA foreign_keys=1 +emby | Info SqliteItemRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteUserRepository: Opening sqlite connection to /config/data/users.db. isReadOnly: True +emby | Info SqliteUserRepository: PRAGMA cache_size=-65536 +emby | Info SqliteUserRepository: PRAGMA page_size=4096 +emby | Info SqliteUserRepository: PRAGMA foreign_keys=1 +emby | Info SqliteUserRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info App: Emby Server 4.11.0.3 +emby | Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 +emby | Operating system: Linux version 7.0.2-6-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 7.0.2-6 (2 +emby | OS/Process: x64/x64 +emby | Framework: .NET 8.0.28 +emby | Runtime: system/System.Private.CoreLib.dll +emby | Processor count: 6 +emby | Data path: /config +emby | Application path: /system +emby | Info App: Logs path: /config/logs +emby | Info App: Cache path: /config/cache +emby | Info App: Internal metadata path: /config/metadata +emby | Info App: Transcoding temporary files path: /config/transcoding-temp +emby | Info App: DefaultThreadCurrentCulture: en-US +emby | Info App: DefaultThreadCurrentUICulture: en-US +emby | Info App: DefaultThreadCurrentUICulture: en-US +emby | Info App: Server Friendly Name: ‌0e007414cdff‌ +emby | Info App: Local time: 09/30/2026 17:28:28 +02:00 +emby | Info FfmpegManager: FFMpeg: /bin/ffmpeg +emby | Info FfmpegManager: FFProbe: /bin/ffprobe +emby | Info FfmpegManager: FFDetect: /bin/ffdetect +emby | Info Skia: SkiaSharp version: 2.88.0.0 +emby | Info libvips: NetVips version: 3.0.0.0 +emby | Info ImageProcessor: Adding image processor Skia +emby | Info ImageProcessor: Adding image processor libvips +emby | Info TaskManager: Daily trigger for Video preview thumbnail extraction set to fire at 10/01/2026 02:00:00, which is 511.5091529933333 minutes from now. +emby | Info TaskManager: Daily trigger for Rotate log file set to fire at 10/01/2026 00:00:00, which is 391.5087986016667 minutes from now. +emby | Info TaskManager: Queueing task HardwareDetectionScheduledTask +emby | Info TaskManager: Executing Hardware Detection +emby | Info TaskManager: Daily trigger for Emby Server Backup set to fire at 10/01/2026 00:10:00, which is 401.5086428266667 minutes from now. +emby | Info App: ServerId: d21d02efaa4f4b778f0e53cb03473983 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -version' Execute: /bin/ffmpeg -hide_banner -version +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -version' Process exited with code 0 +emby | Info App: Starting entry point Emby.Server.Implementations.Networking.RemoteAddressEntryPoint +emby | Info App: Loading data from /config/data/wan.dat +emby | Info App: Entry point completed: Emby.Server.Implementations.Networking.RemoteAddressEntryPoint. Duration: 0.001921 seconds +emby | Info App: Starting entry point Emby.Server.Connect.ConnectEntryPoint +emby | Info App: Loading data from /config/data/connect.txt +emby | Info App: Entry point completed: Emby.Server.Connect.ConnectEntryPoint. Duration: 0.0015847 seconds +emby | Info App: Starting entry point Emby.Dlna.Main.DlnaEntryPoint +emby | Info FfmpegManager: FfmpegValidator.Validate complete +emby | Info App: Entry point completed: Emby.Dlna.Main.DlnaEntryPoint. Duration: 0.0609371 seconds +emby | Info App: Core startup complete +emby | Info App: Starting entry point Emby.Server.Implementations.Udp.UdpServerEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Udp.UdpServerEntryPoint. Duration: 0.0012559 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Session.PartyEventNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.Session.PartyEventNotifier. Duration: 0.0016069 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint. Duration: 0.0017783 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Library.DeviceAccessEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Library.DeviceAccessEntryPoint. Duration: 0.0004194 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.IO.LibraryMonitorStartup +emby | Info App: Entry point completed: Emby.Server.Implementations.IO.LibraryMonitorStartup. Duration: 0.0210797 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.AutomaticRestartEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.AutomaticRestartEntryPoint. Duration: 0.0004955 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.KeepServerAwake +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.KeepServerAwake. Duration: 0.0001802 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.LibraryChangedNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.LibraryChangedNotifier. Duration: 0.0008391 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.LogLibrariesEntryPoint +emby | Info App: Libraries +emby | Server Configuration: CollapseVideoFolders: False +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.LogLibrariesEntryPoint. Duration: 0.0009445 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.ServerEventNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.ServerEventNotifier. Duration: 0.0018201 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.StartupWizard +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.StartupWizard. Duration: 0.0004152 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.SystemEvents +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.SystemEvents. Duration: 0.0002895 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.UserDataChangeNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.UserDataChangeNotifier. Duration: 0.000353 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Channels.ChannelsEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Channels.ChannelsEntryPoint. Duration: 0.0026736 seconds +emby | Info App: Starting entry point Emby.LiveTV.EntryPoint +emby | Info LiveTV: Loading live tv data from /config/data/livetv/timers +emby | Info App: Entry point completed: Emby.LiveTV.EntryPoint. Duration: 0.0026515 seconds +emby | Info App: Starting entry point Emby.LiveTV.RecordingNotifier +emby | Info App: Entry point completed: Emby.LiveTV.RecordingNotifier. Duration: 0.0010971 seconds +emby | Info App: Starting entry point Emby.Server.MediaEncoding.Api.EncodingManagerEntryPoint +emby | Info App: Entry point completed: Emby.Server.MediaEncoding.Api.EncodingManagerEntryPoint. Duration: 0.000754 seconds +emby | Info App: Starting entry point Emby.Notifications.NotificationManagerEntryPoint +emby | Info Notifications: Registering event nofitier Activity Log +emby | Info Notifications: Registering event nofitier Emby Server User Notifications +emby | Info Notifications: Registering event factory CoreNotificationTypeFactory +emby | Info Notifications: Registering event factory BackupNotificationTypeFactory +emby | Info App: Entry point completed: Emby.Notifications.NotificationManagerEntryPoint. Duration: 0.0236164 seconds +emby | Info App: Starting entry point Emby.Server.Sync.SyncNotificationEntryPoint +emby | Info App: Entry point completed: Emby.Server.Sync.SyncNotificationEntryPoint. Duration: 0.0010252 seconds +emby | Info App: Starting entry point EmbyServer.Windows.LoopUtilEntryPoint +emby | Info App: Entry point completed: EmbyServer.Windows.LoopUtilEntryPoint. Duration: 6.39E-05 seconds +emby | Info App: Starting entry point MBBackup.ServerEntryPoint +emby | Info App: Entry point completed: MBBackup.ServerEntryPoint. Duration: 4.93E-05 seconds +emby | Info App: Starting entry point Emby.Security.PluginSecurityManager +emby | Info App: Entry point completed: Emby.Security.PluginSecurityManager. Duration: 3.32E-05 seconds +emby | Info App: Starting entry point Emby.Server.CinemaMode.IntrosEntryPoint +emby | Info App: Entry point completed: Emby.Server.CinemaMode.IntrosEntryPoint. Duration: 0.0001156 seconds +emby | Info App: Starting entry point Emby.PortMapper.ExternalPortForwarding +emby | Info App: Entry point completed: Emby.PortMapper.ExternalPortForwarding. Duration: 0.001073 seconds +emby | Info App: Starting entry point NfoMetadata.EntryPoint +emby | Info App: Entry point completed: NfoMetadata.EntryPoint. Duration: 0.000118 seconds +emby | Info App: Starting entry point Tvdb.EntryPoint +emby | Info App: Entry point completed: Tvdb.EntryPoint. Duration: 3.49E-05 seconds +emby | Info App: All entry points have started diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-after.json new file mode 100644 index 00000000..65fca25a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-after.json @@ -0,0 +1,3 @@ +{ + "/srv/felhom-gate/hdd/userdata/media": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-before.json new file mode 100644 index 00000000..65fca25a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/files-before.json @@ -0,0 +1,3 @@ +{ + "/srv/felhom-gate/hdd/userdata/media": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/memory-samples.json new file mode 100644 index 00000000..fef724cd --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "emby": { + "limit": 2147483648, + "current": 156217344, + "peak": 157429760, + "anon": 101310464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.2, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154136576, + "peak": 157536256, + "anon": 99250176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 600 + }, + { + "t": 45.3, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154468352, + "peak": 157536256, + "anon": 99201024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 900 + }, + { + "t": 60.4, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154693632, + "peak": 157536256, + "anon": 99196928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1200 + }, + { + "t": 75.6, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154054656, + "peak": 157536256, + "anon": 99139584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1500 + }, + { + "t": 90.7, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154042368, + "peak": 157536256, + "anon": 99147776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1800 + }, + { + "t": 105.8, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154378240, + "peak": 157536256, + "anon": 99176448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2100 + }, + { + "t": 120.9, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154411008, + "peak": 157536256, + "anon": 99229696, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2400 + }, + { + "t": 136.0, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154640384, + "peak": 157536256, + "anon": 99229696, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2700 + }, + { + "t": 151.1, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151437312, + "peak": 157536256, + "anon": 96231424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3001 + }, + { + "t": 166.2, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151207936, + "peak": 157536256, + "anon": 96276480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3301 + }, + { + "t": 181.4, + "containers": { + "emby": { + "limit": 2147483648, + "current": 152010752, + "peak": 157536256, + "anon": 96288768, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3601 + }, + { + "t": 196.5, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151928832, + "peak": 157536256, + "anon": 96251904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3901 + }, + { + "t": 211.6, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151961600, + "peak": 157536256, + "anon": 96759808, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4199 + }, + { + "t": 226.7, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151851008, + "peak": 157536256, + "anon": 96849920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4499 + }, + { + "t": 241.8, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151855104, + "peak": 157536256, + "anon": 96854016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4799 + }, + { + "t": 256.9, + "containers": { + "emby": { + "limit": 2147483648, + "current": 152092672, + "peak": 157536256, + "anon": 96849920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5099 + }, + { + "t": 272.1, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151904256, + "peak": 157536256, + "anon": 96849920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5402 + }, + { + "t": 287.2, + "containers": { + "emby": { + "limit": 2147483648, + "current": 154804224, + "peak": 157536256, + "anon": 99713024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5702 + }, + { + "t": 302.3, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151896064, + "peak": 157536256, + "anon": 96526336, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6002 + }, + { + "t": 317.5, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151539712, + "peak": 157536256, + "anon": 96497664, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6302 + }, + { + "t": 332.6, + "containers": { + "emby": { + "limit": 2147483648, + "current": 152031232, + "peak": 157536256, + "anon": 96681984, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6602 + }, + { + "t": 347.7, + "containers": { + "emby": { + "limit": 2147483648, + "current": 152801280, + "peak": 157536256, + "anon": 96944128, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6902 + }, + { + "t": 362.8, + "containers": { + "emby": { + "limit": 2147483648, + "current": 151846912, + "peak": 157536256, + "anon": 96948224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7200 + }, + { + "t": 377.9, + "containers": { + "emby": { + "limit": 2147483648, + "current": 152330240, + "peak": 157536256, + "anon": 96948224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7500 + }, + { + "t": 393.0, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153792512, + "peak": 157536256, + "anon": 97878016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7800 + }, + { + "t": 408.2, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153501696, + "peak": 157536256, + "anon": 97869824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8100 + }, + { + "t": 423.3, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153280512, + "peak": 157536256, + "anon": 97873920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8396 + }, + { + "t": 438.4, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153022464, + "peak": 157536256, + "anon": 97890304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8696 + }, + { + "t": 453.5, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153305088, + "peak": 157536256, + "anon": 97890304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8996 + }, + { + "t": 468.6, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153513984, + "peak": 157536256, + "anon": 97890304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9296 + }, + { + "t": 483.7, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153382912, + "peak": 157536256, + "anon": 97890304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9596 + }, + { + "t": 498.9, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153264128, + "peak": 157536256, + "anon": 97890304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9896 + }, + { + "t": 514.0, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153776128, + "peak": 157536256, + "anon": 97894400, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10196 + }, + { + "t": 529.1, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153600000, + "peak": 157536256, + "anon": 97906688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10496 + }, + { + "t": 544.2, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153337856, + "peak": 157536256, + "anon": 97906688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10796 + }, + { + "t": 559.4, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153845760, + "peak": 157536256, + "anon": 97886208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11096 + }, + { + "t": 574.5, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153067520, + "peak": 157536256, + "anon": 97886208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11394 + }, + { + "t": 589.6, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153624576, + "peak": 157536256, + "anon": 97906688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11694 + }, + { + "t": 604.7, + "containers": { + "emby": { + "limit": 2147483648, + "current": 153108480, + "peak": 157536256, + "anon": 97906688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11992 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/migration-lines.txt new file mode 100644 index 00000000..cf662b25 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/migration-lines.txt @@ -0,0 +1,3 @@ +emby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=gcc-13.4.0,DEFAULT_AUTOVACUUM,DEFAULT_CACHE_SIZE=-2000,DEFAULT_FILE_FORMAT=4,DEFAULT_JOURNAL_SIZE_LIMIT=-1,DEFAULT_MMAP_SIZE=0,DEFAULT_PAGE_SIZE=4096,DEFAULT_PCACHE_INITSZ=20,DEFAULT_RECURSIVE_TRIGGERS,DEFAULT_SECTOR_SIZE=4096,DEFAULT_SYNCHRONOUS=2,DEFAULT_WAL_AUTOCHECKPOINT=1000,DEFAULT_WAL_SYNCHRONOUS=2,DEFAULT_WORKER_THREADS=0,DIRECT_OVERFLOW_READ,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS5,ENABLE_MATH_FUNCTIONS,ENABLE_PERCENTILE,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MALLOC_SOFT_LIMIT=1024,MAX_ATTACHED=10,MAX_COLUMN=2000,MAX_COMPOUND_SELECT=500,MAX_DEFAULT_PAGE_SIZE=8192,MAX_EXPR_DEPTH=1000,MAX_FUNCTION_ARG=1000,MAX_LENGTH=1000000000,MAX_LIKE_PATTERN_LENGTH=50000,MAX_MMAP_SIZE=0x7fff0000,MAX_PAGE_COUNT=0xfffffffe,MAX_PAGE_SIZE=65536,MAX_SCHEMA_RETRY=25,MAX_SQL_LENGTH=1000000000,MAX_TRIGGER_DEPTH=1000,MAX_VARIABLE_NUMBER=250000,MAX_VDBE_OP=250000000,MAX_WORKER_THREADS=8,MUTEX_PTHREADS,OMIT_LOOKASIDE,OMIT_SHARED_CACHE,SYSTEM_MALLOC,TEMP_STORE=1,THREADSAFE=1 +emby | Info App: Starting entry point Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint. Duration: 0.0012941 seconds \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/run.log new file mode 100644 index 00000000..d12ca28b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/run.log @@ -0,0 +1,58 @@ +[15:16:39] scratch drive folders cleared before FROM (R-656): ['/srv/felhom-gate/hdd/userdata/media'] +[15:16:39] MV-emby: deploying emby at FROM {'emby': 'emby/embyserver:4.11.0.3'} +[15:17:29] FROM settled=True in 30.8s :: {"emby": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:17:29] fixture: the BOX walk's own (Emby), through upgrade_boxport +[15:17:29] emby: seeded first user drillde12c4fd +[15:17:29] emby: readback found=True (http 200, control passed) +[15:17:29] C1 (seed reads back BEFORE): True +[15:17:29] MV-emby: swapping to TO {'emby': 'emby/embyserver:4.11.0.4'} +[15:17:49] TO up -d rc=0 +[15:18:20] TO settled=True in 30.8s :: {"emby": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:18:20] migration lines observed: 3 +[15:18:20] emby: readback found=True (http 200, control passed) +[15:18:20] RESULT (seed reads back AFTER): True +[15:18:21] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8096 +[15:18:36] + 15s emby=148M/2048M peak=150M kills=0 rs=0 reqs=300 +[15:18:51] + 30s emby=146M/2048M peak=150M kills=0 rs=0 reqs=600 +[15:19:06] + 45s emby=147M/2048M peak=150M kills=0 rs=0 reqs=900 +[15:19:21] + 60s emby=147M/2048M peak=150M kills=0 rs=0 reqs=1200 +[15:19:36] + 76s emby=146M/2048M peak=150M kills=0 rs=0 reqs=1500 +[15:19:51] + 91s emby=146M/2048M peak=150M kills=0 rs=0 reqs=1800 +[15:20:06] + 106s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2100 +[15:20:22] + 121s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2400 +[15:20:37] + 136s emby=147M/2048M peak=150M kills=0 rs=0 reqs=2700 +[15:20:52] + 151s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3001 +[15:21:07] + 166s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3301 +[15:21:22] + 181s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3601 +[15:21:37] + 196s emby=144M/2048M peak=150M kills=0 rs=0 reqs=3901 +[15:21:52] + 212s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4199 +[15:22:07] + 227s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4499 +[15:22:23] + 242s emby=144M/2048M peak=150M kills=0 rs=0 reqs=4799 +[15:22:38] + 257s emby=145M/2048M peak=150M kills=0 rs=0 reqs=5099 +[15:22:53] + 272s emby=144M/2048M peak=150M kills=0 rs=0 reqs=5402 +[15:23:08] + 287s emby=147M/2048M peak=150M kills=0 rs=0 reqs=5702 +[15:23:23] + 302s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6002 +[15:23:38] + 318s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6302 +[15:23:53] + 333s emby=144M/2048M peak=150M kills=0 rs=0 reqs=6602 +[15:24:08] + 348s emby=145M/2048M peak=150M kills=0 rs=0 reqs=6902 +[15:24:24] + 363s emby=144M/2048M peak=150M kills=0 rs=0 reqs=7200 +[15:24:39] + 378s emby=145M/2048M peak=150M kills=0 rs=0 reqs=7500 +[15:24:54] + 393s emby=146M/2048M peak=150M kills=0 rs=0 reqs=7800 +[15:25:09] + 408s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8100 +[15:25:24] + 423s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8396 +[15:25:39] + 438s emby=145M/2048M peak=150M kills=0 rs=0 reqs=8696 +[15:25:54] + 454s emby=146M/2048M peak=150M kills=0 rs=0 reqs=8996 +[15:26:09] + 469s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9296 +[15:26:24] + 484s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9596 +[15:26:40] + 499s emby=146M/2048M peak=150M kills=0 rs=0 reqs=9896 +[15:26:55] + 514s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10196 +[15:27:10] + 529s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10496 +[15:27:25] + 544s emby=146M/2048M peak=150M kills=0 rs=0 reqs=10796 +[15:27:40] + 559s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11096 +[15:27:55] + 574s emby=145M/2048M peak=150M kills=0 rs=0 reqs=11394 +[15:28:10] + 590s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11694 +[15:28:25] + 605s emby=146M/2048M peak=150M kills=0 rs=0 reqs=11992 +[15:28:26] memory watch: killed=False tight=[] requests=11992 codes={'302': 11992} +[15:28:26] MV-emby: ABORT — putting the FROM images back +[15:28:57] emby: readback found=True (http 200, control passed) +[15:28:57] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-full.log new file mode 100644 index 00000000..db01093f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-full.log @@ -0,0 +1,285 @@ +emby | s6-rc: info: service s6rc-oneshot-runner: starting +emby | s6-rc: info: service s6rc-oneshot-runner successfully started +emby | s6-rc: info: service fix-attrs: starting +emby | s6-rc: info: service fix-attrs successfully started +emby | s6-rc: info: service legacy-cont-init: starting +emby | s6-rc: info: service legacy-cont-init successfully started +emby | s6-rc: info: service emby-server: starting +emby | s6-rc: info: service emby-server successfully started +emby | s6-rc: info: service legacy-services: starting +emby | s6-rc: info: service legacy-services successfully started +emby | Info Main: Application path: /system/EmbyServer.dll +emby | Info NetworkManager: Adding event handler for NetworkChange.NetworkAddressChanged +emby | Info App: Setting default culture to en-us +emby | Info Main: Emby Server 4.11.0.4 +emby | Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 +emby | Operating system: Linux version 7.0.2-6-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 7.0.2-6 (2 +emby | OS/Process: x64/x64 +emby | Framework: .NET 8.0.28 +emby | Runtime: system/System.Private.CoreLib.dll +emby | Processor count: 6 +emby | Data path: /config +emby | Application path: /system +emby | Info Main: Logs path: /config/logs +emby | Info Main: Cache path: /config/cache +emby | Info Main: Internal metadata path: /config/metadata +emby | Info Main: DefaultThreadCurrentCulture: en-US +emby | Info Main: DefaultThreadCurrentUICulture: en-US +emby | Info Main: DefaultThreadCurrentUICulture: en-US +emby | Info Main: Server Friendly Name: ‌311c00602fa0‌ +emby | Info Main: Local time: 09/30/2026 17:17:50 +02:00 +emby | Info App: Emby Server Version: 4.11.0.4 +emby | Info App: Loading assemblies +emby | Info App: File /config/plugins/Emby.M3UTuner.dll has version 1.0.46.0 +emby | Info App: File /system/plugins/Emby.M3UTuner.dll has version 1.0.46.0 +emby | Info App: File /config/plugins/Emby.Dlna.dll has version 1.5.7.0 +emby | Info App: File /system/plugins/Emby.Dlna.dll has version 1.5.7.0 +emby | Info App: File /config/plugins/MBBackup.dll has version 1.8.6.0 +emby | Info App: File /system/plugins/MBBackup.dll has version 1.8.6.0 +emby | Info App: File /config/plugins/Emby.Server.CinemaMode.dll has version 1.0.53.0 +emby | Info App: File /system/plugins/Emby.Server.CinemaMode.dll has version 1.0.53.0 +emby | Info App: File /config/plugins/Emby.PortMapper.dll has version 1.3.0.0 +emby | Info App: File /system/plugins/Emby.PortMapper.dll has version 1.3.0.0 +emby | Info App: File /config/plugins/AudioDb.dll has version 1.0.22.0 +emby | Info App: File /system/plugins/AudioDb.dll has version 1.0.21.0 +emby | Info App: File /config/plugins/DvdMounter.dll has version 1.0.2.0 +emby | Info App: File /system/plugins/DvdMounter.dll has version 1.0.2.0 +emby | Info App: File /config/plugins/Emby.XmlTV.dll has version 1.2.2.0 +emby | Info App: File /system/plugins/Emby.XmlTV.dll has version 1.2.2.0 +emby | Info App: File /config/plugins/MusicBrainz.dll has version 1.0.32.0 +emby | Info App: File /system/plugins/MusicBrainz.dll has version 1.0.32.0 +emby | Info App: File /config/plugins/OMDb.dll has version 1.0.23.0 +emby | Info App: File /system/plugins/OMDb.dll has version 1.0.23.0 +emby | Info App: File /config/plugins/Emby.Webhooks.dll has version 1.0.38.0 +emby | Info App: File /system/plugins/Emby.Webhooks.dll has version 1.0.38.0 +emby | Info App: File /config/plugins/NfoMetadata.dll has version 1.0.86.0 +emby | Info App: File /system/plugins/NfoMetadata.dll has version 1.0.86.0 +emby | Info App: File /config/plugins/Fanart.dll has version 1.0.18.0 +emby | Info App: File /system/plugins/Fanart.dll has version 1.0.18.0 +emby | Info App: File /config/plugins/BlurayMounter.dll has version 1.0.5.0 +emby | Info App: File /system/plugins/BlurayMounter.dll has version 1.0.5.0 +emby | Info App: File /config/plugins/EmbyGuideData.dll has version 1.0.21.0 +emby | Info App: File /system/plugins/EmbyGuideData.dll has version 1.0.21.0 +emby | Info App: File /config/plugins/MovieDb.dll has version 1.9.5.0 +emby | Info App: File /system/plugins/MovieDb.dll has version 1.9.5.0 +emby | Info App: File /config/plugins/StudioImages.dll has version 1.0.3.0 +emby | Info App: File /system/plugins/StudioImages.dll has version 1.0.3.0 +emby | Info App: File /config/plugins/Tvdb.dll has version 1.6.7.0 +emby | Info App: File /system/plugins/Tvdb.dll has version 1.6.6.0 +emby | Info App: File /config/plugins/OpenSubtitles.dll has version 1.0.69.0 +emby | Info App: File /system/plugins/OpenSubtitles.dll has version 1.0.69.0 +emby | Info App: Loading Emby.Api, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Web, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Model, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Common, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading MediaBrowser.Controller, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Providers, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Photos, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Implementations, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.LiveTV, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.ActivityLog, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.MediaEncoding, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.LocalMetadata, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Notifications, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Web.GenericUI, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Codecs.Dxva, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Codecs, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Connect, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.Server.Sync, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading EmbyServer, Version=4.11.0.4, Culture=neutral, PublicKeyToken=null +emby | Info App: Loading Emby.M3UTuner, Version=1.0.46.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.M3UTuner.dll +emby | Info App: Loading Emby.Dlna, Version=1.5.7.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Dlna.dll +emby | Info App: Loading MBBackup, Version=1.8.6.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MBBackup.dll +emby | Info App: Loading Emby.Server.CinemaMode, Version=1.0.53.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Server.CinemaMode.dll +emby | Info App: Loading Emby.PortMapper, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.PortMapper.dll +emby | Info App: Loading AudioDb, Version=1.0.22.0, Culture=neutral, PublicKeyToken=null from /config/plugins/AudioDb.dll +emby | Info App: Loading DvdMounter, Version=1.0.2.0, Culture=neutral, PublicKeyToken=null from /config/plugins/DvdMounter.dll +emby | Info App: Loading Emby.XmlTV, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.XmlTV.dll +emby | Info App: Loading MusicBrainz, Version=1.0.32.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MusicBrainz.dll +emby | Info App: Loading OMDb, Version=1.0.23.0, Culture=neutral, PublicKeyToken=null from /config/plugins/OMDb.dll +emby | Info App: Loading Emby.Webhooks, Version=1.0.38.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Emby.Webhooks.dll +emby | Info App: Loading NfoMetadata, Version=1.0.86.0, Culture=neutral, PublicKeyToken=null from /config/plugins/NfoMetadata.dll +emby | Info App: Loading Fanart, Version=1.0.18.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Fanart.dll +emby | Info App: Loading BlurayMounter, Version=1.0.5.0, Culture=neutral, PublicKeyToken=null from /config/plugins/BlurayMounter.dll +emby | Info App: Loading EmbyGuideData, Version=1.0.21.0, Culture=neutral, PublicKeyToken=null from /config/plugins/EmbyGuideData.dll +emby | Info App: Loading MovieDb, Version=1.9.5.0, Culture=neutral, PublicKeyToken=null from /config/plugins/MovieDb.dll +emby | Info App: Loading StudioImages, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null from /config/plugins/StudioImages.dll +emby | Info App: Loading Tvdb, Version=1.6.7.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Tvdb.dll +emby | Info App: Loading OpenSubtitles, Version=1.0.69.0, Culture=neutral, PublicKeyToken=null from /config/plugins/OpenSubtitles.dll +emby | Info SqliteUserRepository: Initializing PooledDatabaseConnectionManager with pool size: 3 +emby | Info SqliteUserRepository: Sqlite version: 3.53.4 +emby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=gcc-13.4.0,DEFAULT_AUTOVACUUM,DEFAULT_CACHE_SIZE=-2000,DEFAULT_FILE_FORMAT=4,DEFAULT_JOURNAL_SIZE_LIMIT=-1,DEFAULT_MMAP_SIZE=0,DEFAULT_PAGE_SIZE=4096,DEFAULT_PCACHE_INITSZ=20,DEFAULT_RECURSIVE_TRIGGERS,DEFAULT_SECTOR_SIZE=4096,DEFAULT_SYNCHRONOUS=2,DEFAULT_WAL_AUTOCHECKPOINT=1000,DEFAULT_WAL_SYNCHRONOUS=2,DEFAULT_WORKER_THREADS=0,DIRECT_OVERFLOW_READ,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS5,ENABLE_MATH_FUNCTIONS,ENABLE_PERCENTILE,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MALLOC_SOFT_LIMIT=1024,MAX_ATTACHED=10,MAX_COLUMN=2000,MAX_COMPOUND_SELECT=500,MAX_DEFAULT_PAGE_SIZE=8192,MAX_EXPR_DEPTH=1000,MAX_FUNCTION_ARG=1000,MAX_LENGTH=1000000000,MAX_LIKE_PATTERN_LENGTH=50000,MAX_MMAP_SIZE=0x7fff0000,MAX_PAGE_COUNT=0xfffffffe,MAX_PAGE_SIZE=65536,MAX_SCHEMA_RETRY=25,MAX_SQL_LENGTH=1000000000,MAX_TRIGGER_DEPTH=1000,MAX_VARIABLE_NUMBER=250000,MAX_VDBE_OP=250000000,MAX_WORKER_THREADS=8,MUTEX_PTHREADS,OMIT_LOOKASIDE,OMIT_SHARED_CACHE,SYSTEM_MALLOC,TEMP_STORE=1,THREADSAFE=1 +emby | Info SqliteUserRepository: Sqlite ThreadSafe: 1 +emby | Info SqliteUserRepository: Sqlite ThreadingMode: MultiThreaded +emby | Info SqliteUserRepository: Opening sqlite connection to /config/data/users.db. isReadOnly: False +emby | Info SqliteUserRepository: Default journal_mode for /config/data/users.db is wal +emby | Info SqliteUserRepository: PRAGMA cache_size=-65536 +emby | Info SqliteUserRepository: PRAGMA page_size=4096 +emby | Info SqliteUserRepository: PRAGMA foreign_keys=1 +emby | Info SqliteUserRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Initializing PooledDatabaseConnectionManager with pool size: 5 +emby | Info AuthenticationRepository: Initializing PooledDatabaseConnectionManager with pool size: 5 +emby | Info ActivityRepository: Initializing PooledDatabaseConnectionManager with pool size: 3 +emby | Info ActivityRepository: Opening sqlite connection to /config/data/activitylog.db. isReadOnly: False +emby | Info ActivityRepository: Default journal_mode for /config/data/activitylog.db is wal +emby | Info ActivityRepository: PRAGMA cache_size=-65536 +emby | Info ActivityRepository: PRAGMA page_size=4096 +emby | Info ActivityRepository: PRAGMA foreign_keys=1 +emby | Info ActivityRepository: PRAGMA SECURE_DELETE=0 +emby | Info ActivityRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info ActivityRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info NetworkManager: Detecting local network addresses +emby | Info NetworkManager: networkInterface: Ethernet eth0, Speed: 10000000000, Description: eth0 +emby | Info NetworkManager: GatewayAddresses: 172.18.0.1 +emby | Info NetworkManager: UnicastAddresses: 172.18.0.2 +emby | Info NetworkManager: networkInterface: Loopback lo, Speed: -1, Description: lo +emby | Info NetworkManager: GatewayAddresses: +emby | Info NetworkManager: UnicastAddresses: 127.0.0.1,::1 +emby | Info NetworkManager: Detected local ip addresses: [{"IPAddress":"172.18.0.2","HasGateWayAddress":true,"PrefixLength":16,"IPv4Mask":"255.255.0.0","BroadcastAddress":"172.18.255.255"},{"IPAddress":"127.0.0.1","HasGateWayAddress":false,"PrefixLength":8,"IPv4Mask":"255.0.0.0","BroadcastAddress":"127.255.255.255"},{"IPAddress":"::1","HasGateWayAddress":false,"PrefixLength":128}] +emby | Info App: Adding HttpListener prefix http://+:8096/ +emby | Info AuthenticationRepository: Opening sqlite connection to /config/data/authentication.db. isReadOnly: False +emby | Info AuthenticationRepository: Default journal_mode for /config/data/authentication.db is wal +emby | Info AuthenticationRepository: PRAGMA cache_size=-65536 +emby | Info AuthenticationRepository: PRAGMA page_size=4096 +emby | Info AuthenticationRepository: PRAGMA foreign_keys=1 +emby | Info AuthenticationRepository: PRAGMA SECURE_DELETE=0 +emby | Info AuthenticationRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info AuthenticationRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Opening sqlite connection to /config/data/library.db. isReadOnly: False +emby | Info SqliteItemRepository: Default journal_mode for /config/data/library.db is wal +emby | Info SqliteItemRepository: PRAGMA cache_size=-131072 +emby | Info SqliteItemRepository: PRAGMA page_size=4096 +emby | Info SqliteItemRepository: PRAGMA foreign_keys=1 +emby | Info SqliteItemRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteItemRepository: Init Complete +emby | Info SqliteItemRepository: Opening sqlite connection to /config/data/library.db. isReadOnly: True +emby | Info SqliteItemRepository: PRAGMA cache_size=-131072 +emby | Info SqliteItemRepository: PRAGMA page_size=4096 +emby | Info SqliteItemRepository: PRAGMA foreign_keys=1 +emby | Info SqliteItemRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteItemRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info SqliteUserRepository: Opening sqlite connection to /config/data/users.db. isReadOnly: True +emby | Info SqliteUserRepository: PRAGMA cache_size=-65536 +emby | Info SqliteUserRepository: PRAGMA page_size=4096 +emby | Info SqliteUserRepository: PRAGMA foreign_keys=1 +emby | Info SqliteUserRepository: PRAGMA SECURE_DELETE=0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DDL to 0 is 0 +emby | Info SqliteUserRepository: Result of setting SQLITE_DBCONFIG_DQS_DML to 0 is 0 +emby | Info App: Emby Server 4.11.0.4 +emby | Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 +emby | Operating system: Linux version 7.0.2-6-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 7.0.2-6 (2 +emby | OS/Process: x64/x64 +emby | Framework: .NET 8.0.28 +emby | Runtime: system/System.Private.CoreLib.dll +emby | Processor count: 6 +emby | Data path: /config +emby | Application path: /system +emby | Info App: Logs path: /config/logs +emby | Info App: Cache path: /config/cache +emby | Info App: Internal metadata path: /config/metadata +emby | Info App: Transcoding temporary files path: /config/transcoding-temp +emby | Info App: DefaultThreadCurrentCulture: en-US +emby | Info App: DefaultThreadCurrentUICulture: en-US +emby | Info App: DefaultThreadCurrentUICulture: en-US +emby | Info App: Server Friendly Name: ‌311c00602fa0‌ +emby | Info App: Local time: 09/30/2026 17:17:50 +02:00 +emby | Info FfmpegManager: FFMpeg: /bin/ffmpeg +emby | Info FfmpegManager: FFProbe: /bin/ffprobe +emby | Info FfmpegManager: FFDetect: /bin/ffdetect +emby | Info Skia: SkiaSharp version: 2.88.0.0 +emby | Info libvips: NetVips version: 3.0.0.0 +emby | Info ImageProcessor: Adding image processor Skia +emby | Info ImageProcessor: Adding image processor libvips +emby | Info TaskManager: Daily trigger for Video preview thumbnail extraction set to fire at 10/01/2026 02:00:00, which is 522.1334624716667 minutes from now. +emby | Info TaskManager: Daily trigger for Rotate log file set to fire at 10/01/2026 00:00:00, which is 402.13306065166665 minutes from now. +emby | Info TaskManager: Queueing task HardwareDetectionScheduledTask +emby | Info TaskManager: Executing Hardware Detection +emby | Info TaskManager: Daily trigger for Emby Server Backup set to fire at 10/01/2026 00:10:00, which is 412.1328347983333 minutes from now. +emby | Info App: ServerId: d21d02efaa4f4b778f0e53cb03473983 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -version' Execute: /bin/ffmpeg -hide_banner -version +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -version' Process exited with code 0 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -decoders' Execute: /bin/ffmpeg -hide_banner -decoders +emby | Info App: Starting entry point Emby.Server.Implementations.Networking.RemoteAddressEntryPoint +emby | Info App: Loading data from /config/data/wan.dat +emby | Info App: Entry point completed: Emby.Server.Implementations.Networking.RemoteAddressEntryPoint. Duration: 0.003612 seconds +emby | Info App: Starting entry point Emby.Server.Connect.ConnectEntryPoint +emby | Info App: Loading data from /config/data/connect.txt +emby | Info App: Entry point completed: Emby.Server.Connect.ConnectEntryPoint. Duration: 0.0019533 seconds +emby | Info App: Starting entry point Emby.Dlna.Main.DlnaEntryPoint +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -decoders' Process exited with code 0 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -encoders' Execute: /bin/ffmpeg -hide_banner -encoders +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -encoders' Process exited with code 0 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -hwaccels' Execute: /bin/ffmpeg -hide_banner -hwaccels +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -hwaccels' Process exited with code 0 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -protocols' Execute: /bin/ffmpeg -hide_banner -protocols +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -protocols' Process exited with code 0 +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -filters' Execute: /bin/ffmpeg -hide_banner -filters +emby | Info FfmpegManager: ProcessRun 'ffmpeg -hide_banner -filters' Process exited with code 0 +emby | Info FfmpegManager: FfmpegValidator.Validate complete +emby | Info App: Entry point completed: Emby.Dlna.Main.DlnaEntryPoint. Duration: 0.0814284 seconds +emby | Info App: Core startup complete +emby | Info App: Starting entry point Emby.Server.Implementations.Udp.UdpServerEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Udp.UdpServerEntryPoint. Duration: 0.0012685 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Session.PartyEventNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.Session.PartyEventNotifier. Duration: 0.0011552 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Playlists.PlaylistUpgradeEntryPoint. Duration: 0.0012941 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Library.DeviceAccessEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Library.DeviceAccessEntryPoint. Duration: 0.0008418 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.IO.LibraryMonitorStartup +emby | Info App: Entry point completed: Emby.Server.Implementations.IO.LibraryMonitorStartup. Duration: 0.0157845 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.AutomaticRestartEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.AutomaticRestartEntryPoint. Duration: 0.0004845 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.KeepServerAwake +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.KeepServerAwake. Duration: 0.0001246 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.LibraryChangedNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.LibraryChangedNotifier. Duration: 0.0006646 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.LogLibrariesEntryPoint +emby | Info App: Libraries +emby | Server Configuration: CollapseVideoFolders: False +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.LogLibrariesEntryPoint. Duration: 0.0007897 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.ServerEventNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.ServerEventNotifier. Duration: 0.001685 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.StartupWizard +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.StartupWizard. Duration: 0.0002719 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.SystemEvents +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.SystemEvents. Duration: 0.0002289 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.EntryPoints.UserDataChangeNotifier +emby | Info App: Entry point completed: Emby.Server.Implementations.EntryPoints.UserDataChangeNotifier. Duration: 0.0002808 seconds +emby | Info App: Starting entry point Emby.Server.Implementations.Channels.ChannelsEntryPoint +emby | Info App: Entry point completed: Emby.Server.Implementations.Channels.ChannelsEntryPoint. Duration: 0.0019908 seconds +emby | Info App: Starting entry point Emby.LiveTV.EntryPoint +emby | Info LiveTV: Loading live tv data from /config/data/livetv/timers +emby | Info App: Entry point completed: Emby.LiveTV.EntryPoint. Duration: 0.0019397 seconds +emby | Info App: Starting entry point Emby.LiveTV.RecordingNotifier +emby | Info App: Entry point completed: Emby.LiveTV.RecordingNotifier. Duration: 0.0010347 seconds +emby | Info App: Starting entry point Emby.Server.MediaEncoding.Api.EncodingManagerEntryPoint +emby | Info App: Entry point completed: Emby.Server.MediaEncoding.Api.EncodingManagerEntryPoint. Duration: 0.0008181 seconds +emby | Info App: Starting entry point Emby.Notifications.NotificationManagerEntryPoint +emby | Info Notifications: Registering event nofitier Activity Log +emby | Info Notifications: Registering event nofitier Emby Server User Notifications +emby | Info Notifications: Registering event factory CoreNotificationTypeFactory +emby | Info Notifications: Registering event factory BackupNotificationTypeFactory +emby | Info App: Entry point completed: Emby.Notifications.NotificationManagerEntryPoint. Duration: 0.0207902 seconds +emby | Info App: Starting entry point Emby.Server.Sync.SyncNotificationEntryPoint +emby | Info App: Entry point completed: Emby.Server.Sync.SyncNotificationEntryPoint. Duration: 0.0010305 seconds +emby | Info App: Starting entry point EmbyServer.Windows.LoopUtilEntryPoint +emby | Info App: Entry point completed: EmbyServer.Windows.LoopUtilEntryPoint. Duration: 8.16E-05 seconds +emby | Info App: Starting entry point MBBackup.ServerEntryPoint +emby | Info App: Entry point completed: MBBackup.ServerEntryPoint. Duration: 8.44E-05 seconds +emby | Info App: Starting entry point Emby.Security.PluginSecurityManager +emby | Info App: Entry point completed: Emby.Security.PluginSecurityManager. Duration: 3.85E-05 seconds +emby | Info App: Starting entry point Emby.Server.CinemaMode.IntrosEntryPoint +emby | Info App: Entry point completed: Emby.Server.CinemaMode.IntrosEntryPoint. Duration: 0.0001348 seconds +emby | Info App: Starting entry point Emby.PortMapper.ExternalPortForwarding +emby | Info App: Entry point completed: Emby.PortMapper.ExternalPortForwarding. Duration: 0.0012258 seconds +emby | Info App: Starting entry point NfoMetadata.EntryPoint +emby | Info App: Entry point completed: NfoMetadata.EntryPoint. Duration: 0.0001927 seconds +emby | Info App: Starting entry point Tvdb.EntryPoint +emby | Info App: Entry point completed: Tvdb.EntryPoint. Duration: 4.17E-05 seconds +emby | Info App: All entry points have started diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-states.json new file mode 100644 index 00000000..8e43020b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/to-states.json @@ -0,0 +1,8 @@ +{ + "emby": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/verdict.json new file mode 100644 index 00000000..ca89d7bc --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/emby/bench/evidence/MV-emby/verdict.json @@ -0,0 +1,53 @@ +{ + "harness_version": 4, + "edge": "MV-emby", + "app": "emby", + "note": "night 2026-09-23 within-a-major move: emby=emby/embyserver:4.11.0.4", + "from": { + "emby": "emby/embyserver:4.11.0.3" + }, + "to": { + "emby": "emby/embyserver:4.11.0.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kemby | Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS=1,COMPILER=gcc-13.4.0,DEFAULT_AUTOVACUUM,DEFAULT_CACHE_SIZE=-2000,DEFAULT_FILE_FORMAT=4,DEFAULT_JOURNAL_SIZE_LIMIT=-1,DEFAULT_MMAP_SIZE=0,DEFAULT_PAGE_SIZE=4096,DEFAULT_PCACHE_INITSZ=20,DEFAULT_RECURSIVE_TRIGGERS,DEFAULT_SECTOR_SIZE=4096,DEFAULT_SYNCHRONOUS=2,DEFAULT_WAL_AUTOCHECKPOINT=1000,DEFAULT_WAL_SYNCHRONOUS=2,DEFAULT_WORKER_THREADS=0,DIRECT_OVERFLOW_READ,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS5,ENABLE_MATH_FUNCTIONS,ENABLE_PERCENTILE,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MALLOC_SOFT_LIMIT=1024,MAX_ATTACHED=10,MAX_COLUMN=2000,MAX_COMPOUND_SELECT=500,MAX_DEFAULT_PAGE_SIZE=8192,MAX_EXPR_DEPTH=1000,MAX_FUNCTION_ARG=1000,MAX_LENGTH=1000000000,MAX_LIKE_PATTERN_LENGTH=50000,MAX_MMAP_SIZE=0x7fff0000,MAX_PAGE_COUNT=0xfffffffe,MAX_PAGE_SIZE=65536,MAX_SCHEMA_RETRY=25,MAX_SQL_LENGTH=1000000000,MAX_TRIGGER_DEPTH=1000,MAX_VARIABLE_NUMBER=250000,MAX_VDBE_OP=250000000,MAX_WORKER_THREADS=8,MUTEX_PTHREADS,OMIT_LOOKASIDE,OMIT_SHARED_CACHE,SYSTEM_MALLOC,TEMP_STORE=1,THREADSAFE=1", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11992, + "codes": { + "302": 11992 + }, + "first_kill": null, + "containers": { + "emby": { + "limit": 2147483648, + "peak": 157536256, + "peak_pct": 0.073, + "anon_peak_sampled": 101310464, + "anon_peak_pct": 0.047, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:28:57Z", + "evidence": "evidence/MV-emby", + "scratch_cleared": [ + "/srv/felhom-gate/hdd/userdata/media" + ], + "files_changed": [], + "total_s": 738.0 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/MV-ghost.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/MV-ghost.log new file mode 100644 index 00000000..840077f8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/MV-ghost.log @@ -0,0 +1,109 @@ +[15:29:07] scratch drive folders cleared before FROM (R-656): none existed +[15:29:07] MV-ghost: deploying ghost at FROM {'ghost': 'ghost:6.65.0-alpine'} +[15:30:24] FROM settled=True in 30.8s :: {"ghost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:30:24] fixture: the BOX walk's own (Ghost), through upgrade_boxport +[15:30:25] ghost: seeded site title Drill-cdda2d63034e +[15:30:26] ghost: readback found=True (http 200, control passed) +[15:30:26] C1 (seed reads back BEFORE): True +[15:30:26] MV-ghost: swapping to TO {'ghost': 'ghost:6.67.0-alpine'} +[15:31:09] TO up -d rc=0 +[15:31:40] TO settled=True in 30.8s :: {"ghost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:31:40] migration lines observed: 3 +[15:31:41] ghost: readback found=True (http 200, control passed) +[15:31:41] RESULT (seed reads back AFTER): True +[15:31:41] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:2368 +[15:31:56] + 15s ghost=139M/512M peak=147M kills=0 rs=0 reqs=260 +[15:32:11] + 30s ghost=142M/512M peak=151M kills=0 rs=0 reqs=527 +[15:32:26] + 45s ghost=143M/512M peak=151M kills=0 rs=0 reqs=797 +[15:32:42] + 60s ghost=143M/512M peak=152M kills=0 rs=0 reqs=1066 +[15:32:57] + 76s ghost=143M/512M peak=152M kills=0 rs=0 reqs=1336 +[15:33:12] + 91s ghost=145M/512M peak=154M kills=0 rs=0 reqs=1605 +[15:33:27] + 106s ghost=145M/512M peak=154M kills=0 rs=0 reqs=1876 +[15:33:42] + 121s ghost=146M/512M peak=156M kills=0 rs=0 reqs=2144 +[15:33:57] + 136s ghost=147M/512M peak=156M kills=0 rs=0 reqs=2416 +[15:34:12] + 151s ghost=147M/512M peak=157M kills=0 rs=0 reqs=2687 +[15:34:27] + 166s ghost=148M/512M peak=157M kills=0 rs=0 reqs=2957 +[15:34:43] + 181s ghost=149M/512M peak=158M kills=0 rs=0 reqs=3228 +[15:34:58] + 196s ghost=149M/512M peak=158M kills=0 rs=0 reqs=3498 +[15:35:13] + 212s ghost=150M/512M peak=159M kills=0 rs=0 reqs=3769 +[15:35:28] + 227s ghost=150M/512M peak=159M kills=0 rs=0 reqs=4040 +[15:35:43] + 242s ghost=151M/512M peak=160M kills=0 rs=0 reqs=4311 +[15:35:58] + 257s ghost=151M/512M peak=160M kills=0 rs=0 reqs=4581 +[15:36:13] + 272s ghost=152M/512M peak=161M kills=0 rs=0 reqs=4852 +[15:36:28] + 287s ghost=152M/512M peak=161M kills=0 rs=0 reqs=5124 +[15:36:43] + 302s ghost=154M/512M peak=163M kills=0 rs=0 reqs=5396 +[15:36:59] + 318s ghost=155M/512M peak=163M kills=0 rs=0 reqs=5668 +[15:37:14] + 333s ghost=155M/512M peak=164M kills=0 rs=0 reqs=5940 +[15:37:29] + 348s ghost=155M/512M peak=164M kills=0 rs=0 reqs=6212 +[15:37:44] + 363s ghost=155M/512M peak=165M kills=0 rs=0 reqs=6484 +[15:37:59] + 378s ghost=156M/512M peak=165M kills=0 rs=0 reqs=6755 +[15:38:14] + 393s ghost=157M/512M peak=166M kills=0 rs=0 reqs=7024 +[15:38:29] + 408s ghost=157M/512M peak=166M kills=0 rs=0 reqs=7296 +[15:38:44] + 423s ghost=158M/512M peak=167M kills=0 rs=0 reqs=7567 +[15:39:00] + 438s ghost=158M/512M peak=167M kills=0 rs=0 reqs=7838 +[15:39:15] + 454s ghost=159M/512M peak=168M kills=0 rs=0 reqs=8110 +[15:39:30] + 469s ghost=160M/512M peak=168M kills=0 rs=0 reqs=8381 +[15:39:45] + 484s ghost=159M/512M peak=169M kills=0 rs=0 reqs=8652 +[15:40:00] + 499s ghost=161M/512M peak=169M kills=0 rs=0 reqs=8923 +[15:40:15] + 514s ghost=161M/512M peak=170M kills=0 rs=0 reqs=9195 +[15:40:30] + 529s ghost=162M/512M peak=170M kills=0 rs=0 reqs=9467 +[15:40:45] + 544s ghost=162M/512M peak=173M kills=0 rs=0 reqs=9736 +[15:41:01] + 559s ghost=163M/512M peak=173M kills=0 rs=0 reqs=10007 +[15:41:16] + 574s ghost=162M/512M peak=173M kills=0 rs=0 reqs=10279 +[15:41:31] + 590s ghost=164M/512M peak=173M kills=0 rs=0 reqs=10551 +[15:41:46] + 605s ghost=164M/512M peak=173M kills=0 rs=0 reqs=10822 +[15:41:46] memory watch: killed=False tight=[] requests=10823 codes={'200': 10823} +[15:41:46] MV-ghost: ABORT — putting the FROM images back +[15:42:18] ghost: readback found=True (http 200, control passed) +[15:42:18] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-ghost", + "app": "ghost", + "note": "night 2026-09-23 within-a-major move: ghost=ghost:6.67.0-alpine", + "from": { + "ghost": "ghost:6.65.0-alpine" + }, + "to": { + "ghost": "ghost:6.67.0-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kghost | [2026-09-30 17:31:10] \u001b[35mWARN\u001b[39m Database state requires migration.", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.1, + "requested_s": 600, + "requests": 10823, + "codes": { + "200": 10823 + }, + "first_kill": null, + "containers": { + "ghost": { + "limit": 536870912, + "peak": 182263808, + "peak_pct": 0.339, + "anon_peak_sampled": 143081472, + "anon_peak_pct": 0.267, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:42:18Z", + "evidence": "evidence/MV-ghost", + "scratch_cleared": [], + "files_changed": [], + "total_s": 791.2 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/abort-states.json new file mode 100644 index 00000000..97355507 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/abort-states.json @@ -0,0 +1,8 @@ +{ + "ghost": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/compose-final.log new file mode 100644 index 00000000..ef5d47b1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/compose-final.log @@ -0,0 +1,26 @@ +ghost | [2026-09-30 17:41:48] INFO Ghost is running in production... +ghost | [2026-09-30 17:41:48] INFO Your site is now available on https://blog.gate.invalid/ +ghost | [2026-09-30 17:41:48] INFO Ctrl+C to shut down +ghost | [2026-09-30 17:41:48] INFO Ghost server started in 0.771s +ghost | [2026-09-30 17:41:48] INFO Database is in a ready state. +ghost | [2026-09-30 17:41:48] INFO Ghost database ready in 0.872s +ghost | [2026-09-30 17:41:48] WARN Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address +ghost | [2026-09-30 17:41:49] INFO Invalidating assets for regeneration +ghost | [2026-09-30 17:41:50] INFO [EmailAnalytics:newsletters] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:41:50] INFO [EmailAnalytics:automations] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:41:50] INFO [EmailAnalytics:gifts] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:41:50] INFO Pinging Explore with Payload https://explore.ghost.org/api/update {"ghost":"6.65.0","site_uuid":"c668e394-c50f-4d4f-ba3a-341a49c3a049","url":"https://blog.gate.invalid","theme":"source","facebook":"ghost","twitter":"@ghost","posts_total":2,"posts_last":"2026-09-30T13:29:58.000Z","posts_first":"2026-09-30T13:29:57.000Z"} +ghost | [2026-09-30 17:41:50] INFO Stripe members-migrations skipped because it has already run +ghost | [2026-09-30 17:41:50] INFO Ghost booted in 3.379s +ghost | [2026-09-30 17:41:50] INFO [Background Job] clean-gifts scheduled at 40 48 2 * * * +ghost | [2026-09-30 17:41:50] INFO [Background Job] send-gift-reminders scheduled at 48 16 3 * * * +ghost | [2026-09-30 17:41:50] INFO [Background Job] clean-tokens scheduled at 2 7 12 * * * +ghost | [2026-09-30 17:41:50] INFO [Background Job] clean-expired-comped scheduled at 53 14 4 * * * +ghost | [2026-09-30 17:41:50] ERROR Could not get webhook secret for ActivityPub TypeError: fetch failed +ghost | [2026-09-30 17:41:50] ERROR No webhook secret found - cannot initialise +ghost | [2026-09-30 17:41:50] INFO [Tinybird sync] Not started: Traffic Analytics service is not configured +ghost | [2026-09-30 17:41:50] INFO [Background Job] update-check scheduled at 20 16 6 * * * +ghost | [2026-09-30 17:41:50] INFO Running milestone emails job on Thu Oct 01 2026 17:41:50 GMT+0200 (Central European Summer Time) +ghost | [2026-09-30 17:41:51] INFO Explore Response 200 OK +ghost | [2026-09-30 17:42:17] INFO "GET /" 301 7ms +ghost | [2026-09-30 17:42:18] INFO "GET /" 200 453ms diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/memory-samples.json new file mode 100644 index 00000000..0d397349 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "ghost": { + "limit": 536870912, + "current": 146452480, + "peak": 154152960, + "anon": 130867200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 260 + }, + { + "t": 30.2, + "containers": { + "ghost": { + "limit": 536870912, + "current": 149032960, + "peak": 158519296, + "anon": 132960256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 527 + }, + { + "t": 45.4, + "containers": { + "ghost": { + "limit": 536870912, + "current": 150446080, + "peak": 158519296, + "anon": 133648384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 797 + }, + { + "t": 60.5, + "containers": { + "ghost": { + "limit": 536870912, + "current": 150044672, + "peak": 160206848, + "anon": 133984256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1066 + }, + { + "t": 75.6, + "containers": { + "ghost": { + "limit": 536870912, + "current": 150867968, + "peak": 160206848, + "anon": 134434816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1336 + }, + { + "t": 90.7, + "containers": { + "ghost": { + "limit": 536870912, + "current": 152379392, + "peak": 161882112, + "anon": 134864896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1605 + }, + { + "t": 105.8, + "containers": { + "ghost": { + "limit": 536870912, + "current": 152240128, + "peak": 161882112, + "anon": 135090176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1876 + }, + { + "t": 120.9, + "containers": { + "ghost": { + "limit": 536870912, + "current": 153980928, + "peak": 163782656, + "anon": 136372224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2144 + }, + { + "t": 136.1, + "containers": { + "ghost": { + "limit": 536870912, + "current": 154800128, + "peak": 163782656, + "anon": 136957952, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2416 + }, + { + "t": 151.2, + "containers": { + "ghost": { + "limit": 536870912, + "current": 154935296, + "peak": 165347328, + "anon": 137453568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2687 + }, + { + "t": 166.3, + "containers": { + "ghost": { + "limit": 536870912, + "current": 155299840, + "peak": 165347328, + "anon": 137560064, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2957 + }, + { + "t": 181.4, + "containers": { + "ghost": { + "limit": 536870912, + "current": 156565504, + "peak": 166416384, + "anon": 138166272, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3228 + }, + { + "t": 196.5, + "containers": { + "ghost": { + "limit": 536870912, + "current": 156983296, + "peak": 166416384, + "anon": 138391552, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3498 + }, + { + "t": 211.7, + "containers": { + "ghost": { + "limit": 536870912, + "current": 157290496, + "peak": 167055360, + "anon": 138416128, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3769 + }, + { + "t": 226.8, + "containers": { + "ghost": { + "limit": 536870912, + "current": 158093312, + "peak": 167055360, + "anon": 139243520, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4040 + }, + { + "t": 241.9, + "containers": { + "ghost": { + "limit": 536870912, + "current": 158699520, + "peak": 168275968, + "anon": 139268096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4311 + }, + { + "t": 257.0, + "containers": { + "ghost": { + "limit": 536870912, + "current": 158347264, + "peak": 168275968, + "anon": 139206656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4581 + }, + { + "t": 272.1, + "containers": { + "ghost": { + "limit": 536870912, + "current": 159436800, + "peak": 169291776, + "anon": 139468800, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4852 + }, + { + "t": 287.2, + "containers": { + "ghost": { + "limit": 536870912, + "current": 160079872, + "peak": 169291776, + "anon": 140255232, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5124 + }, + { + "t": 302.4, + "containers": { + "ghost": { + "limit": 536870912, + "current": 161746944, + "peak": 171417600, + "anon": 141049856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5396 + }, + { + "t": 317.5, + "containers": { + "ghost": { + "limit": 536870912, + "current": 162791424, + "peak": 171417600, + "anon": 141193216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5668 + }, + { + "t": 332.6, + "containers": { + "ghost": { + "limit": 536870912, + "current": 162672640, + "peak": 172163072, + "anon": 141135872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5940 + }, + { + "t": 347.7, + "containers": { + "ghost": { + "limit": 536870912, + "current": 163000320, + "peak": 172163072, + "anon": 141209600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6212 + }, + { + "t": 362.8, + "containers": { + "ghost": { + "limit": 536870912, + "current": 163328000, + "peak": 173592576, + "anon": 141373440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6484 + }, + { + "t": 377.9, + "containers": { + "ghost": { + "limit": 536870912, + "current": 164405248, + "peak": 173592576, + "anon": 141426688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6755 + }, + { + "t": 393.1, + "containers": { + "ghost": { + "limit": 536870912, + "current": 164773888, + "peak": 174673920, + "anon": 141434880, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7024 + }, + { + "t": 408.2, + "containers": { + "ghost": { + "limit": 536870912, + "current": 165101568, + "peak": 174673920, + "anon": 141508608, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7296 + }, + { + "t": 423.3, + "containers": { + "ghost": { + "limit": 536870912, + "current": 165933056, + "peak": 175579136, + "anon": 141647872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7567 + }, + { + "t": 438.4, + "containers": { + "ghost": { + "limit": 536870912, + "current": 166567936, + "peak": 175579136, + "anon": 141766656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7838 + }, + { + "t": 453.5, + "containers": { + "ghost": { + "limit": 536870912, + "current": 166825984, + "peak": 176611328, + "anon": 141832192, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8110 + }, + { + "t": 468.7, + "containers": { + "ghost": { + "limit": 536870912, + "current": 167813120, + "peak": 176611328, + "anon": 142041088, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8381 + }, + { + "t": 483.8, + "containers": { + "ghost": { + "limit": 536870912, + "current": 167759872, + "peak": 177647616, + "anon": 142090240, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8652 + }, + { + "t": 498.9, + "containers": { + "ghost": { + "limit": 536870912, + "current": 169553920, + "peak": 177647616, + "anon": 143081472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8923 + }, + { + "t": 514.0, + "containers": { + "ghost": { + "limit": 536870912, + "current": 169639936, + "peak": 179023872, + "anon": 142274560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9195 + }, + { + "t": 529.2, + "containers": { + "ghost": { + "limit": 536870912, + "current": 169988096, + "peak": 179023872, + "anon": 142696448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9467 + }, + { + "t": 544.3, + "containers": { + "ghost": { + "limit": 536870912, + "current": 170450944, + "peak": 182263808, + "anon": 142745600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9736 + }, + { + "t": 559.4, + "containers": { + "ghost": { + "limit": 536870912, + "current": 171257856, + "peak": 182263808, + "anon": 142581760, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10007 + }, + { + "t": 574.5, + "containers": { + "ghost": { + "limit": 536870912, + "current": 170655744, + "peak": 182263808, + "anon": 142606336, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10279 + }, + { + "t": 589.6, + "containers": { + "ghost": { + "limit": 536870912, + "current": 172097536, + "peak": 182263808, + "anon": 142696448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10551 + }, + { + "t": 604.7, + "containers": { + "ghost": { + "limit": 536870912, + "current": 172580864, + "peak": 182263808, + "anon": 142540800, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10822 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/migration-lines.txt new file mode 100644 index 00000000..a1064ccf --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/migration-lines.txt @@ -0,0 +1,3 @@ +ghost | [2026-09-30 17:31:10] WARN Database state requires migration. +ghost | [2026-09-30 17:31:11] INFO Running migrations. +ghost | [2026-09-30 17:31:13] INFO Stripe members-migrations skipped because it has already run \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/run.log new file mode 100644 index 00000000..b3847529 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/run.log @@ -0,0 +1,58 @@ +[15:29:07] scratch drive folders cleared before FROM (R-656): none existed +[15:29:07] MV-ghost: deploying ghost at FROM {'ghost': 'ghost:6.65.0-alpine'} +[15:30:24] FROM settled=True in 30.8s :: {"ghost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:30:24] fixture: the BOX walk's own (Ghost), through upgrade_boxport +[15:30:25] ghost: seeded site title Drill-cdda2d63034e +[15:30:26] ghost: readback found=True (http 200, control passed) +[15:30:26] C1 (seed reads back BEFORE): True +[15:30:26] MV-ghost: swapping to TO {'ghost': 'ghost:6.67.0-alpine'} +[15:31:09] TO up -d rc=0 +[15:31:40] TO settled=True in 30.8s :: {"ghost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:31:40] migration lines observed: 3 +[15:31:41] ghost: readback found=True (http 200, control passed) +[15:31:41] RESULT (seed reads back AFTER): True +[15:31:41] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:2368 +[15:31:56] + 15s ghost=139M/512M peak=147M kills=0 rs=0 reqs=260 +[15:32:11] + 30s ghost=142M/512M peak=151M kills=0 rs=0 reqs=527 +[15:32:26] + 45s ghost=143M/512M peak=151M kills=0 rs=0 reqs=797 +[15:32:42] + 60s ghost=143M/512M peak=152M kills=0 rs=0 reqs=1066 +[15:32:57] + 76s ghost=143M/512M peak=152M kills=0 rs=0 reqs=1336 +[15:33:12] + 91s ghost=145M/512M peak=154M kills=0 rs=0 reqs=1605 +[15:33:27] + 106s ghost=145M/512M peak=154M kills=0 rs=0 reqs=1876 +[15:33:42] + 121s ghost=146M/512M peak=156M kills=0 rs=0 reqs=2144 +[15:33:57] + 136s ghost=147M/512M peak=156M kills=0 rs=0 reqs=2416 +[15:34:12] + 151s ghost=147M/512M peak=157M kills=0 rs=0 reqs=2687 +[15:34:27] + 166s ghost=148M/512M peak=157M kills=0 rs=0 reqs=2957 +[15:34:43] + 181s ghost=149M/512M peak=158M kills=0 rs=0 reqs=3228 +[15:34:58] + 196s ghost=149M/512M peak=158M kills=0 rs=0 reqs=3498 +[15:35:13] + 212s ghost=150M/512M peak=159M kills=0 rs=0 reqs=3769 +[15:35:28] + 227s ghost=150M/512M peak=159M kills=0 rs=0 reqs=4040 +[15:35:43] + 242s ghost=151M/512M peak=160M kills=0 rs=0 reqs=4311 +[15:35:58] + 257s ghost=151M/512M peak=160M kills=0 rs=0 reqs=4581 +[15:36:13] + 272s ghost=152M/512M peak=161M kills=0 rs=0 reqs=4852 +[15:36:28] + 287s ghost=152M/512M peak=161M kills=0 rs=0 reqs=5124 +[15:36:43] + 302s ghost=154M/512M peak=163M kills=0 rs=0 reqs=5396 +[15:36:59] + 318s ghost=155M/512M peak=163M kills=0 rs=0 reqs=5668 +[15:37:14] + 333s ghost=155M/512M peak=164M kills=0 rs=0 reqs=5940 +[15:37:29] + 348s ghost=155M/512M peak=164M kills=0 rs=0 reqs=6212 +[15:37:44] + 363s ghost=155M/512M peak=165M kills=0 rs=0 reqs=6484 +[15:37:59] + 378s ghost=156M/512M peak=165M kills=0 rs=0 reqs=6755 +[15:38:14] + 393s ghost=157M/512M peak=166M kills=0 rs=0 reqs=7024 +[15:38:29] + 408s ghost=157M/512M peak=166M kills=0 rs=0 reqs=7296 +[15:38:44] + 423s ghost=158M/512M peak=167M kills=0 rs=0 reqs=7567 +[15:39:00] + 438s ghost=158M/512M peak=167M kills=0 rs=0 reqs=7838 +[15:39:15] + 454s ghost=159M/512M peak=168M kills=0 rs=0 reqs=8110 +[15:39:30] + 469s ghost=160M/512M peak=168M kills=0 rs=0 reqs=8381 +[15:39:45] + 484s ghost=159M/512M peak=169M kills=0 rs=0 reqs=8652 +[15:40:00] + 499s ghost=161M/512M peak=169M kills=0 rs=0 reqs=8923 +[15:40:15] + 514s ghost=161M/512M peak=170M kills=0 rs=0 reqs=9195 +[15:40:30] + 529s ghost=162M/512M peak=170M kills=0 rs=0 reqs=9467 +[15:40:45] + 544s ghost=162M/512M peak=173M kills=0 rs=0 reqs=9736 +[15:41:01] + 559s ghost=163M/512M peak=173M kills=0 rs=0 reqs=10007 +[15:41:16] + 574s ghost=162M/512M peak=173M kills=0 rs=0 reqs=10279 +[15:41:31] + 590s ghost=164M/512M peak=173M kills=0 rs=0 reqs=10551 +[15:41:46] + 605s ghost=164M/512M peak=173M kills=0 rs=0 reqs=10822 +[15:41:46] memory watch: killed=False tight=[] requests=10823 codes={'200': 10823} +[15:41:46] MV-ghost: ABORT — putting the FROM images back +[15:42:18] ghost: readback found=True (http 200, control passed) +[15:42:18] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-full.log new file mode 100644 index 00000000..e1e606e5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-full.log @@ -0,0 +1,35 @@ +ghost | [2026-09-30 17:31:10] INFO Ghost is running in production... +ghost | [2026-09-30 17:31:10] INFO Your site is now available on https://blog.gate.invalid/ +ghost | [2026-09-30 17:31:10] INFO Ctrl+C to shut down +ghost | [2026-09-30 17:31:10] INFO Ghost server started in 0.804s +ghost | [2026-09-30 17:31:10] WARN Database state requires migration. +ghost | [2026-09-30 17:31:11] INFO Creating database backup +ghost | [2026-09-30 17:31:11] INFO Database backup written to /var/lib/ghost/content/data/drill-cdda2d63034e.ghost.2026-09-30-15-31-11.json +ghost | [2026-09-30 17:31:11] INFO Running migrations. +ghost | [2026-09-30 17:31:11] INFO Adding setting: ghost_next_private_key +ghost | [2026-09-30 17:31:11] INFO Adding setting: ghost_previous_public_key +ghost | [2026-09-30 17:31:11] INFO Adding setting: members_next_private_key +ghost | [2026-09-30 17:31:11] INFO Adding setting: members_previous_public_key +ghost | [2026-09-30 17:31:11] INFO Adding automations.description column +ghost | [2026-09-30 17:31:11] INFO Set descriptions for 0 automations +ghost | [2026-09-30 17:31:11] INFO Database is in a ready state. +ghost | [2026-09-30 17:31:11] INFO Ghost database ready in 1.125s +ghost | [2026-09-30 17:31:11] WARN Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address +ghost | [2026-09-30 17:31:12] INFO Invalidating assets for regeneration +ghost | [2026-09-30 17:31:13] INFO [EmailAnalytics:newsletters] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:31:13] INFO [EmailAnalytics:automations] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:31:13] INFO [EmailAnalytics:gifts] Initialized with SEQUENTIAL processing mode +ghost | [2026-09-30 17:31:13] INFO Pinging Explore with Payload https://explore.ghost.org/api/update {"ghost":"6.67.0","site_uuid":"c668e394-c50f-4d4f-ba3a-341a49c3a049","url":"https://blog.gate.invalid","theme":"source","facebook":"ghost","twitter":"@ghost","posts_total":2,"posts_last":"2026-09-30T13:29:58.000Z","posts_first":"2026-09-30T13:29:57.000Z"} +ghost | [2026-09-30 17:31:13] INFO Stripe members-migrations skipped because it has already run +ghost | [2026-09-30 17:31:13] INFO Ghost booted in 3.525s +ghost | [2026-09-30 17:31:13] INFO [Background Job] clean-gifts scheduled at 3 59 2 * * * +ghost | [2026-09-30 17:31:13] INFO [Background Job] send-gift-reminders scheduled at 38 20 4 * * * +ghost | [2026-09-30 17:31:13] INFO [Background Job] clean-tokens scheduled at 8 27 22 * * * +ghost | [2026-09-30 17:31:13] INFO [Background Job] clean-expired-comped scheduled at 18 43 0 * * * +ghost | [2026-09-30 17:31:13] INFO [Tinybird sync] Not started: Traffic Analytics service is not configured +ghost | [2026-09-30 17:31:13] INFO [Background Job] update-check scheduled at 49 44 13 * * * +ghost | [2026-09-30 17:31:13] INFO Running milestone emails job on Fri Oct 02 2026 17:31:13 GMT+0200 (Central European Summer Time) +ghost | [2026-09-30 17:31:13] ERROR Could not get webhook secret for ActivityPub TypeError: fetch failed +ghost | [2026-09-30 17:31:13] ERROR No webhook secret found - cannot initialise +ghost | [2026-09-30 17:31:14] INFO Explore Response 200 OK +ghost | [2026-09-30 17:31:40] INFO "GET /" 301 6ms diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-states.json new file mode 100644 index 00000000..97355507 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/to-states.json @@ -0,0 +1,8 @@ +{ + "ghost": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/verdict.json new file mode 100644 index 00000000..a5201c4d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/ghost/bench/evidence/MV-ghost/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 4, + "edge": "MV-ghost", + "app": "ghost", + "note": "night 2026-09-23 within-a-major move: ghost=ghost:6.67.0-alpine", + "from": { + "ghost": "ghost:6.65.0-alpine" + }, + "to": { + "ghost": "ghost:6.67.0-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kghost | [2026-09-30 17:31:10] \u001b[35mWARN\u001b[39m Database state requires migration.", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.1, + "requested_s": 600, + "requests": 10823, + "codes": { + "200": 10823 + }, + "first_kill": null, + "containers": { + "ghost": { + "limit": 536870912, + "peak": 182263808, + "peak_pct": 0.339, + "anon_peak_sampled": 143081472, + "anon_peak_pct": 0.267, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:42:18Z", + "evidence": "evidence/MV-ghost", + "scratch_cleared": [], + "files_changed": [], + "total_s": 791.2 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/MV-gitea.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/MV-gitea.log new file mode 100644 index 00000000..52f0f5ab --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/MV-gitea.log @@ -0,0 +1,110 @@ +[14:59:38] scratch drive folders cleared before FROM (R-656): none existed +[14:59:38] MV-gitea: deploying gitea at FROM {'gitea': 'gitea/gitea:1.27.0'} +[15:00:10] FROM settled=True in 30.8s :: {"gitea": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:00:10] fixture: the BOX walk's own (Gitea), through upgrade_boxport +[15:00:15] gitea: first-run installer POST / http=200 +[15:00:21] gitea: installed through its own first-run form; the admin authenticates +[15:00:21] gitea: create repo http=201 +[15:00:21] gitea: readback of the seeded repo http=200 ok=True +[15:00:21] C1 (seed reads back BEFORE): True +[15:00:21] MV-gitea: swapping to TO {'gitea': 'gitea/gitea:1.27.3'} +[15:00:28] TO up -d rc=0 +[15:00:59] TO settled=True in 30.8s :: {"gitea": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:00:59] migration lines observed: 0 +[15:00:59] gitea: readback of the seeded repo http=200 ok=True +[15:00:59] RESULT (seed reads back AFTER): True +[15:00:59] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[15:01:14] + 15s gitea=237M/512M peak=237M kills=0 rs=0 reqs=300 +[15:01:29] + 30s gitea=249M/512M peak=252M kills=0 rs=0 reqs=596 +[15:01:45] + 45s gitea=259M/512M peak=260M kills=0 rs=0 reqs=896 +[15:02:00] + 60s gitea=260M/512M peak=262M kills=0 rs=0 reqs=1196 +[15:02:15] + 76s gitea=261M/512M peak=262M kills=0 rs=0 reqs=1492 +[15:02:30] + 91s gitea=261M/512M peak=263M kills=0 rs=0 reqs=1792 +[15:02:45] + 106s gitea=262M/512M peak=263M kills=0 rs=0 reqs=2092 +[15:03:00] + 121s gitea=262M/512M peak=263M kills=0 rs=0 reqs=2388 +[15:03:15] + 136s gitea=265M/512M peak=266M kills=0 rs=0 reqs=2688 +[15:03:30] + 151s gitea=267M/512M peak=267M kills=0 rs=0 reqs=2988 +[15:03:45] + 166s gitea=265M/512M peak=267M kills=0 rs=0 reqs=3284 +[15:04:01] + 181s gitea=266M/512M peak=268M kills=0 rs=0 reqs=3584 +[15:04:16] + 196s gitea=266M/512M peak=268M kills=0 rs=0 reqs=3881 +[15:04:31] + 212s gitea=266M/512M peak=269M kills=0 rs=0 reqs=4180 +[15:04:46] + 227s gitea=267M/512M peak=269M kills=0 rs=0 reqs=4477 +[15:05:01] + 242s gitea=267M/512M peak=269M kills=0 rs=0 reqs=4777 +[15:05:16] + 257s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5073 +[15:05:31] + 272s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5373 +[15:05:46] + 287s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5673 +[15:06:01] + 302s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5969 +[15:06:17] + 317s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6269 +[15:06:32] + 332s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6565 +[15:06:47] + 348s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6865 +[15:07:02] + 363s gitea=268M/512M peak=270M kills=0 rs=0 reqs=7161 +[15:07:17] + 378s gitea=268M/512M peak=270M kills=0 rs=0 reqs=7461 +[15:07:32] + 393s gitea=267M/512M peak=270M kills=0 rs=0 reqs=7757 +[15:07:47] + 408s gitea=268M/512M peak=270M kills=0 rs=0 reqs=8057 +[15:08:02] + 423s gitea=267M/512M peak=270M kills=0 rs=0 reqs=8353 +[15:08:17] + 438s gitea=268M/512M peak=270M kills=0 rs=0 reqs=8653 +[15:08:33] + 453s gitea=267M/512M peak=270M kills=0 rs=0 reqs=8949 +[15:08:48] + 468s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9245 +[15:09:03] + 484s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9545 +[15:09:18] + 499s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9845 +[15:09:33] + 514s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10141 +[15:09:48] + 529s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10441 +[15:10:03] + 544s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10737 +[15:10:18] + 559s gitea=267M/512M peak=270M kills=0 rs=0 reqs=11037 +[15:10:34] + 574s gitea=267M/512M peak=270M kills=0 rs=0 reqs=11333 +[15:10:49] + 590s gitea=268M/512M peak=270M kills=0 rs=0 reqs=11633 +[15:11:04] + 605s gitea=268M/512M peak=270M kills=0 rs=0 reqs=11929 +[15:11:04] memory watch: killed=False tight=[] requests=11929 codes={'200': 11929} +[15:11:04] MV-gitea: ABORT — putting the FROM images back +[15:14:09] ABORT: the app did NOT come back (rc=0, 184.2s) +{ + "harness_version": 4, + "edge": "MV-gitea", + "app": "gitea", + "note": "night 2026-09-23 within-a-major move: gitea=gitea/gitea:1.27.3", + "from": { + "gitea": "gitea/gitea:1.27.0" + }, + "to": { + "gitea": "gitea/gitea:1.27.3" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "refuses", + "abort_detail": "scriber_ids\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"number\",\"index\":true,\"docvalues\":true}]},\"title\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"text\",\"index\":true,\"include_term_vectors\":true,\"docvalues\":true}]},\"updated_unix\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"number\",\"index\":true,\"docvalues\":true}]}}}},\"default_mapping\":{\"enabled\":false,\"dynamic\":false},\"type_field\":\"_type\",\"default_type\":\"_default\",\"default_analyzer\":\"issueIndexer\",\"default_datetime_parser\":\"dateTimeOptional\",\"default_field\":\"_all\",\"store_dynamic\":true,\"index_dynamic\":true,\"docvalues_dynamic\":true,\"analysis\":{\"token_filters\":{\"unicodeNormalize\":{\"form\":\"nfc\",\"type\":\"normalize_unicode\"}},\"analyzers\":{\"issueIndexer\":{\"char_filters\":[],\"token_filters\":[\"unicodeNormalize\",\"camelCaseKeepWhole\",\"to_lower\"],\"tokenizer\":\"unicode\",\"type\":\"custom\"}}}}\n\u001b[2Kgitea | Received signal 15; terminating.", + "engine_state_after": null, + "memory": { + "soak_s": 604.7, + "requested_s": 600, + "requests": 11929, + "codes": { + "200": 11929 + }, + "first_kill": null, + "containers": { + "gitea": { + "limit": 536870912, + "peak": 284098560, + "peak_pct": 0.529, + "anon_peak_sampled": 142778368, + "anon_peak_pct": 0.266, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:14:09Z", + "evidence": "evidence/MV-gitea", + "scratch_cleared": [], + "files_changed": [], + "total_s": 870.5 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-refusal.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-refusal.txt new file mode 100644 index 00000000..930cb448 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-refusal.txt @@ -0,0 +1,40 @@ +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:13:57 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 18 +gitea | 2026/09/30 17:13:57 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:13:57 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:13:57 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:13:57 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:13:57 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:13:57 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:13:57 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:13:57 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:13:57 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:13:57 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:13:57 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 18: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:13:57 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:13:57 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:13:57 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-states.json new file mode 100644 index 00000000..82a6e61d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/abort-states.json @@ -0,0 +1,8 @@ +{ + "gitea": { + "status": "restarting", + "health": "unhealthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/compose-final.log new file mode 100644 index 00000000..53dbdb74 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/compose-final.log @@ -0,0 +1,466 @@ +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:05 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 18 +gitea | 2026/09/30 17:11:05 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:05 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:05 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:05 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:05 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:05 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:05 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:05 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:05 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:05 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:05 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:05 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:05 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:05 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:05 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:05 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 18: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:05 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:05 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:05 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:06 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:06 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:06 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:06 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:06 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:06 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:06 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:06 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:06 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:06 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:06 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:06 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:06 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:06 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:06 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:06 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:06 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:06 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:06 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:06 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:07 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:07 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:07 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:07 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:07 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:07 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:07 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:07 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:07 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:07 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:07 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:07 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:07 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:07 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:07 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:07 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:07 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:07 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:07 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:08 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:08 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:09 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:09 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:09 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:09 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:09 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:09 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:09 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:09 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:09 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:09 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:09 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:09 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:09 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:09 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:09 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:09 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:09 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:09 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:09 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:10 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 18 +gitea | 2026/09/30 17:11:10 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:10 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:10 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:10 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:10 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:10 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:10 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:10 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:10 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:10 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:10 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:10 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:10 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:10 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:10 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:10 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 18: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:10 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:10 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:13 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:13 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:13 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:13 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:13 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:13 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:13 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:13 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:13 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:13 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:13 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:13 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:13 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:13 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:13 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:13 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:13 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:13 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:13 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:13 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:17 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:17 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:17 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:17 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:17 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:17 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:17 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:17 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:17 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:17 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:17 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:17 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:17 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:17 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:17 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:17 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:17 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:17 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:17 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:17 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:24 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:11:24 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:24 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:24 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:24 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:24 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:24 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:24 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:24 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:24 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:24 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:24 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:24 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:24 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:24 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:24 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:24 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:24 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:24 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:11:38 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 18 +gitea | 2026/09/30 17:11:38 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:11:38 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:11:38 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:11:38 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:11:38 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:11:38 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:11:38 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:11:38 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:11:38 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:11:38 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:11:38 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:11:38 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:11:38 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:11:38 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:11:38 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:11:38 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 18: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:11:38 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:38 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:11:38 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:12:04 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:12:04 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:12:04 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:12:04 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:12:04 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:12:04 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:12:04 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:12:04 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:12:04 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:12:04 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:12:04 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:12:04 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:12:04 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:12:04 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:12:04 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:12:04 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:12:04 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:12:04 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:12:04 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:12:04 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:12:56 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:12:56 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:12:56 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:12:56 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:12:56 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:12:56 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:12:56 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:12:56 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:12:56 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:12:56 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:12:56 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:12:56 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:12:56 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:12:56 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:12:56 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:12:57 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:12:57 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:12:57 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:12:57 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:12:57 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:13:57 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 18 +gitea | 2026/09/30 17:13:57 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.0 built with go1.26.5-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:13:57 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:13:57 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:13:57 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:13:57 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:13:57 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:208:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:198:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:224:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:218:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:230:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:240:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:251:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:13:57 modules/storage/storage.go:255:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:13:57 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:13:57 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:13:57 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:13:57 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:13:57 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:13:57 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:13:57 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 18: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:13:57 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:13:57 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:13:57 .../indexer/issues/indexer.go:98:InitIssueIndexer.1() [F] Unable to initialize Bleve Issue Indexer at path: /data/gitea/indexers/issues.bleve Error: error parsing mapping JSON: error building analyzer: no token filter with name or type 'camelCaseKeepWhole' registered +gitea | mapping contents: +gitea | {"types":{"_all":{"enabled":false,"dynamic":false},"issueIndexerDocType":{"enabled":true,"dynamic":true,"properties":{"assignee_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comment_count":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"comments":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"content":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"created_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"deadline_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"is_archived":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_closed":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_public":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"is_pull":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"label_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"mention_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"milestone_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"no_assignee":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_label":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"no_project":{"enabled":true,"dynamic":true,"fields":[{"type":"boolean","index":true,"docvalues":true}]},"poster_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"project_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"repo_id":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"review_requested_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"reviewed_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"subscriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type":"text","index":true,"include_term_vectors":true,"docvalues":true}]},"updated_unix":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]}}}},"default_mapping":{"enabled":false,"dynamic":false},"type_field":"_type","default_type":"_default","default_analyzer":"issueIndexer","default_datetime_parser":"dateTimeOptional","default_field":"_all","store_dynamic":true,"index_dynamic":true,"docvalues_dynamic":true,"analysis":{"token_filters":{"unicodeNormalize":{"form":"nfc","type":"normalize_unicode"}},"analyzers":{"issueIndexer":{"char_filters":[],"token_filters":["unicodeNormalize","camelCaseKeepWhole","to_lower"],"tokenizer":"unicode","type":"custom"}}}} +gitea | Received signal 15; terminating. diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/memory-samples.json new file mode 100644 index 00000000..13362a3b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "gitea": { + "limit": 536870912, + "current": 249331712, + "peak": 249344000, + "anon": 111259648, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.2, + "containers": { + "gitea": { + "limit": 536870912, + "current": 262131712, + "peak": 264663040, + "anon": 123715584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 596 + }, + { + "t": 45.3, + "containers": { + "gitea": { + "limit": 536870912, + "current": 272596992, + "peak": 273420288, + "anon": 134578176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 896 + }, + { + "t": 60.5, + "containers": { + "gitea": { + "limit": 536870912, + "current": 273149952, + "peak": 274976768, + "anon": 134676480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1196 + }, + { + "t": 75.6, + "containers": { + "gitea": { + "limit": 536870912, + "current": 274255872, + "peak": 275030016, + "anon": 135741440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1492 + }, + { + "t": 90.7, + "containers": { + "gitea": { + "limit": 536870912, + "current": 274366464, + "peak": 276230144, + "anon": 135901184, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1792 + }, + { + "t": 105.8, + "containers": { + "gitea": { + "limit": 536870912, + "current": 274788352, + "peak": 276230144, + "anon": 136110080, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2092 + }, + { + "t": 120.9, + "containers": { + "gitea": { + "limit": 536870912, + "current": 275243008, + "peak": 276709376, + "anon": 136900608, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2388 + }, + { + "t": 136.1, + "containers": { + "gitea": { + "limit": 536870912, + "current": 278917120, + "peak": 279949312, + "anon": 140705792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2688 + }, + { + "t": 151.2, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280059904, + "peak": 280825856, + "anon": 140836864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2988 + }, + { + "t": 166.3, + "containers": { + "gitea": { + "limit": 536870912, + "current": 278904832, + "peak": 280825856, + "anon": 140906496, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3284 + }, + { + "t": 181.4, + "containers": { + "gitea": { + "limit": 536870912, + "current": 279527424, + "peak": 281522176, + "anon": 141209600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3584 + }, + { + "t": 196.5, + "containers": { + "gitea": { + "limit": 536870912, + "current": 279490560, + "peak": 281522176, + "anon": 141262848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3881 + }, + { + "t": 211.6, + "containers": { + "gitea": { + "limit": 536870912, + "current": 279896064, + "peak": 282210304, + "anon": 141815808, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4180 + }, + { + "t": 226.7, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280064000, + "peak": 282210304, + "anon": 141836288, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4477 + }, + { + "t": 241.8, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280969216, + "peak": 282562560, + "anon": 141950976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4777 + }, + { + "t": 256.9, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280305664, + "peak": 282562560, + "anon": 141959168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5073 + }, + { + "t": 272.1, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280260608, + "peak": 282562560, + "anon": 142032896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5373 + }, + { + "t": 287.2, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280879104, + "peak": 282562560, + "anon": 142082048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5673 + }, + { + "t": 302.3, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280416256, + "peak": 282562560, + "anon": 142086144, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5969 + }, + { + "t": 317.4, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280993792, + "peak": 282562560, + "anon": 142233600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6269 + }, + { + "t": 332.5, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280993792, + "peak": 282898432, + "anon": 142241792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6565 + }, + { + "t": 347.6, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280756224, + "peak": 282898432, + "anon": 142487552, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6865 + }, + { + "t": 362.7, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281026560, + "peak": 283119616, + "anon": 142528512, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7161 + }, + { + "t": 377.9, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281079808, + "peak": 283119616, + "anon": 142544896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7461 + }, + { + "t": 393.0, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280829952, + "peak": 283168768, + "anon": 142548992, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7757 + }, + { + "t": 408.1, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281591808, + "peak": 283168768, + "anon": 142577664, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8057 + }, + { + "t": 423.2, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280637440, + "peak": 283168768, + "anon": 142610432, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8353 + }, + { + "t": 438.3, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281432064, + "peak": 283168768, + "anon": 142622720, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8653 + }, + { + "t": 453.4, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280879104, + "peak": 283168768, + "anon": 142635008, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8949 + }, + { + "t": 468.5, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281153536, + "peak": 283168768, + "anon": 142663680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9245 + }, + { + "t": 483.7, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281165824, + "peak": 283168768, + "anon": 142675968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9545 + }, + { + "t": 498.8, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281489408, + "peak": 283168768, + "anon": 142684160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9845 + }, + { + "t": 513.9, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280457216, + "peak": 283168768, + "anon": 142692352, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10141 + }, + { + "t": 529.0, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280973312, + "peak": 283168768, + "anon": 142716928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10441 + }, + { + "t": 544.1, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280739840, + "peak": 283168768, + "anon": 142721024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10737 + }, + { + "t": 559.2, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280756224, + "peak": 283168768, + "anon": 142725120, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11037 + }, + { + "t": 574.4, + "containers": { + "gitea": { + "limit": 536870912, + "current": 280780800, + "peak": 284098560, + "anon": 142745600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11333 + }, + { + "t": 589.5, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281305088, + "peak": 284098560, + "anon": 142757888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11633 + }, + { + "t": 604.6, + "containers": { + "gitea": { + "limit": 536870912, + "current": 281042944, + "peak": 284098560, + "anon": 142778368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11929 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/run.log new file mode 100644 index 00000000..9740ca66 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/run.log @@ -0,0 +1,59 @@ +[14:59:38] scratch drive folders cleared before FROM (R-656): none existed +[14:59:38] MV-gitea: deploying gitea at FROM {'gitea': 'gitea/gitea:1.27.0'} +[15:00:10] FROM settled=True in 30.8s :: {"gitea": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:00:10] fixture: the BOX walk's own (Gitea), through upgrade_boxport +[15:00:15] gitea: first-run installer POST / http=200 +[15:00:21] gitea: installed through its own first-run form; the admin authenticates +[15:00:21] gitea: create repo http=201 +[15:00:21] gitea: readback of the seeded repo http=200 ok=True +[15:00:21] C1 (seed reads back BEFORE): True +[15:00:21] MV-gitea: swapping to TO {'gitea': 'gitea/gitea:1.27.3'} +[15:00:28] TO up -d rc=0 +[15:00:59] TO settled=True in 30.8s :: {"gitea": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:00:59] migration lines observed: 0 +[15:00:59] gitea: readback of the seeded repo http=200 ok=True +[15:00:59] RESULT (seed reads back AFTER): True +[15:00:59] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[15:01:14] + 15s gitea=237M/512M peak=237M kills=0 rs=0 reqs=300 +[15:01:29] + 30s gitea=249M/512M peak=252M kills=0 rs=0 reqs=596 +[15:01:45] + 45s gitea=259M/512M peak=260M kills=0 rs=0 reqs=896 +[15:02:00] + 60s gitea=260M/512M peak=262M kills=0 rs=0 reqs=1196 +[15:02:15] + 76s gitea=261M/512M peak=262M kills=0 rs=0 reqs=1492 +[15:02:30] + 91s gitea=261M/512M peak=263M kills=0 rs=0 reqs=1792 +[15:02:45] + 106s gitea=262M/512M peak=263M kills=0 rs=0 reqs=2092 +[15:03:00] + 121s gitea=262M/512M peak=263M kills=0 rs=0 reqs=2388 +[15:03:15] + 136s gitea=265M/512M peak=266M kills=0 rs=0 reqs=2688 +[15:03:30] + 151s gitea=267M/512M peak=267M kills=0 rs=0 reqs=2988 +[15:03:45] + 166s gitea=265M/512M peak=267M kills=0 rs=0 reqs=3284 +[15:04:01] + 181s gitea=266M/512M peak=268M kills=0 rs=0 reqs=3584 +[15:04:16] + 196s gitea=266M/512M peak=268M kills=0 rs=0 reqs=3881 +[15:04:31] + 212s gitea=266M/512M peak=269M kills=0 rs=0 reqs=4180 +[15:04:46] + 227s gitea=267M/512M peak=269M kills=0 rs=0 reqs=4477 +[15:05:01] + 242s gitea=267M/512M peak=269M kills=0 rs=0 reqs=4777 +[15:05:16] + 257s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5073 +[15:05:31] + 272s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5373 +[15:05:46] + 287s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5673 +[15:06:01] + 302s gitea=267M/512M peak=269M kills=0 rs=0 reqs=5969 +[15:06:17] + 317s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6269 +[15:06:32] + 332s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6565 +[15:06:47] + 348s gitea=267M/512M peak=269M kills=0 rs=0 reqs=6865 +[15:07:02] + 363s gitea=268M/512M peak=270M kills=0 rs=0 reqs=7161 +[15:07:17] + 378s gitea=268M/512M peak=270M kills=0 rs=0 reqs=7461 +[15:07:32] + 393s gitea=267M/512M peak=270M kills=0 rs=0 reqs=7757 +[15:07:47] + 408s gitea=268M/512M peak=270M kills=0 rs=0 reqs=8057 +[15:08:02] + 423s gitea=267M/512M peak=270M kills=0 rs=0 reqs=8353 +[15:08:17] + 438s gitea=268M/512M peak=270M kills=0 rs=0 reqs=8653 +[15:08:33] + 453s gitea=267M/512M peak=270M kills=0 rs=0 reqs=8949 +[15:08:48] + 468s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9245 +[15:09:03] + 484s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9545 +[15:09:18] + 499s gitea=268M/512M peak=270M kills=0 rs=0 reqs=9845 +[15:09:33] + 514s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10141 +[15:09:48] + 529s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10441 +[15:10:03] + 544s gitea=267M/512M peak=270M kills=0 rs=0 reqs=10737 +[15:10:18] + 559s gitea=267M/512M peak=270M kills=0 rs=0 reqs=11037 +[15:10:34] + 574s gitea=267M/512M peak=270M kills=0 rs=0 reqs=11333 +[15:10:49] + 590s gitea=268M/512M peak=270M kills=0 rs=0 reqs=11633 +[15:11:04] + 605s gitea=268M/512M peak=270M kills=0 rs=0 reqs=11929 +[15:11:04] memory watch: killed=False tight=[] requests=11929 codes={'200': 11929} +[15:11:04] MV-gitea: ABORT — putting the FROM images back +[15:14:09] ABORT: the app did NOT come back (rc=0, 184.2s) \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-full.log new file mode 100644 index 00000000..c9788a7c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-full.log @@ -0,0 +1,43 @@ +gitea | Server listening on :: port 22. +gitea | Server listening on 0.0.0.0 port 22. +gitea | 2026/09/30 17:00:28 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 17 +gitea | 2026/09/30 17:00:28 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.3 built with go1.26.7-X:jsonv2 : bindata, timetzdata, +gitea | 2026/09/30 17:00:28 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea | 2026/09/30 17:00:28 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea | 2026/09/30 17:00:28 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /data/gitea +gitea | 2026/09/30 17:00:28 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /data/gitea +gitea | 2026/09/30 17:00:28 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini +gitea | 2026/09/30 17:00:28 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run web server +gitea | 2026/09/30 17:00:28 routers/init.go:117:InitWebInstalled() [I] Git version: 2.54.0 (home: /data/gitea/home) +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:227:initAttachments() [I] Initialising Attachment storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:217:initAvatars() [I] Initialising Avatar storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:243:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:237:initLFS() [I] Initialising LFS storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:249:initRepoArchives() [I] Initialising Repository Archive storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:259:initPackages() [I] Initialising Packages storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:270:initActions() [I] Initialising Actions storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log +gitea | 2026/09/30 17:00:29 modules/storage/storage.go:274:initActions() [I] Initialising ActionsArtifacts storage with type: local +gitea | 2026/09/30 17:00:29 modules/storage/local.go:48:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts +gitea | 2026/09/30 17:00:29 routers/common/db.go:22:InitDBEngine() [I] Beginning ORM engine initialization. +gitea | 2026/09/30 17:00:29 routers/common/db.go:29:InitDBEngine() [I] ORM engine initialization attempt #1/10... +gitea | 2026/09/30 17:00:29 cmd/web.go:205:serveInstalled() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:00:29 cmd/web.go:205:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1 +gitea | 2026/09/30 17:00:29 routers/init.go:138:InitWebInstalled() [I] ORM engine initialization successful! +gitea | 2026/09/30 17:00:29 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 17: Initializing Issue Indexer: bleve +gitea | 2026/09/30 17:00:29 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:00:29 .../internal/bleve/indexer.go:59:(*Indexer).Init() [W] Found older bleve index with version 7, Gitea will remove it and rebuild +gitea | 2026/09/30 17:00:29 .../indexer/stats/indexer.go:87:populateRepoIndexer() [I] Done (re)populating the repo stats indexer with existing repositories +gitea | 2026/09/30 17:00:29 .../indexer/issues/indexer.go:155:InitIssueIndexer.2() [I] Issue Indexer Initialization took 11.860191ms +gitea | 2026/09/30 17:00:29 cmd/web.go:329:listen() [I] Listen: http://0.0.0.0:3000 +gitea | 2026/09/30 17:00:29 cmd/web.go:333:listen() [I] AppURL(ROOT_URL): https://git.gate.invalid/ +gitea | 2026/09/30 17:00:29 cmd/web.go:336:listen() [I] LFS server enabled +gitea | 2026/09/30 17:00:29 modules/graceful/server.go:52:NewServer() [I] Starting new Web server: tcp:0.0.0.0:3000 on PID: 17 +gitea | 2026/09/30 17:00:58 .../src/net/http/server.go:2286:HandlerFunc.ServeHTTP() [I] PING DATABASE sqlite3 +gitea | 2026/09/30 17:00:58 HTTPRequest [I] router: completed GET /api/healthz for 127.0.0.1:44652, 200 OK in 1.0ms @ healthcheck/check.go:76(healthcheck.Check) diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-states.json new file mode 100644 index 00000000..8d0c9758 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/to-states.json @@ -0,0 +1,8 @@ +{ + "gitea": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/verdict.json new file mode 100644 index 00000000..99b00a3f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/gitea/bench/evidence/MV-gitea/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 4, + "edge": "MV-gitea", + "app": "gitea", + "note": "night 2026-09-23 within-a-major move: gitea=gitea/gitea:1.27.3", + "from": { + "gitea": "gitea/gitea:1.27.0" + }, + "to": { + "gitea": "gitea/gitea:1.27.3" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "refuses", + "abort_detail": "scriber_ids\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"number\",\"index\":true,\"docvalues\":true}]},\"title\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"text\",\"index\":true,\"include_term_vectors\":true,\"docvalues\":true}]},\"updated_unix\":{\"enabled\":true,\"dynamic\":true,\"fields\":[{\"type\":\"number\",\"index\":true,\"docvalues\":true}]}}}},\"default_mapping\":{\"enabled\":false,\"dynamic\":false},\"type_field\":\"_type\",\"default_type\":\"_default\",\"default_analyzer\":\"issueIndexer\",\"default_datetime_parser\":\"dateTimeOptional\",\"default_field\":\"_all\",\"store_dynamic\":true,\"index_dynamic\":true,\"docvalues_dynamic\":true,\"analysis\":{\"token_filters\":{\"unicodeNormalize\":{\"form\":\"nfc\",\"type\":\"normalize_unicode\"}},\"analyzers\":{\"issueIndexer\":{\"char_filters\":[],\"token_filters\":[\"unicodeNormalize\",\"camelCaseKeepWhole\",\"to_lower\"],\"tokenizer\":\"unicode\",\"type\":\"custom\"}}}}\n\u001b[2Kgitea | Received signal 15; terminating.", + "engine_state_after": null, + "memory": { + "soak_s": 604.7, + "requested_s": 600, + "requests": 11929, + "codes": { + "200": 11929 + }, + "first_kill": null, + "containers": { + "gitea": { + "limit": 536870912, + "peak": 284098560, + "peak_pct": 0.529, + "anon_peak_sampled": 142778368, + "anon_peak_pct": 0.266, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:14:09Z", + "evidence": "evidence/MV-gitea", + "scratch_cleared": [], + "files_changed": [], + "total_s": 870.5 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/MV-home-assistant.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/MV-home-assistant.log new file mode 100644 index 00000000..181be3d6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/MV-home-assistant.log @@ -0,0 +1,110 @@ +[15:42:28] scratch drive folders cleared before FROM (R-656): none existed +[15:42:28] MV-home-assistant: deploying home-assistant at FROM {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.3'} +[15:44:13] FROM settled=True in 30.8s :: {"home-assistant": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:44:13] fixture: the BOX walk's own (HomeAssistant), through upgrade_boxport +[15:44:13] home-assistant: /api/onboarding/users http=200 +[15:44:14] home-assistant: login as the seeded owner ok=True +[15:44:14] C1 (seed reads back BEFORE): True +[15:44:14] MV-home-assistant: swapping to TO {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.4'} +[15:45:15] TO up -d rc=0 +[15:45:46] TO settled=True in 30.8s :: {"home-assistant": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:45:46] migration lines observed: 0 +[15:45:47] home-assistant: login as the seeded owner ok=True +[15:45:47] RESULT (seed reads back AFTER): True +[15:45:47] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8123 +[15:46:02] + 15s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=300 +[15:46:17] + 30s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=600 +[15:46:32] + 45s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=900 +[15:46:48] + 60s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=1197 +[15:47:03] + 76s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=1497 +[15:47:18] + 91s home-assistant=444M/1024M peak=450M kills=0 rs=0 reqs=1797 +[15:47:33] + 106s home-assistant=440M/1024M peak=450M kills=0 rs=0 reqs=2097 +[15:47:48] + 121s home-assistant=433M/1024M peak=450M kills=0 rs=0 reqs=2396 +[15:48:03] + 136s home-assistant=393M/1024M peak=450M kills=0 rs=0 reqs=2696 +[15:48:18] + 151s home-assistant=383M/1024M peak=450M kills=0 rs=0 reqs=2994 +[15:48:33] + 166s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3293 +[15:48:49] + 182s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3593 +[15:49:04] + 197s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3893 +[15:49:19] + 212s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=4190 +[15:49:34] + 227s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=4490 +[15:49:49] + 242s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=4790 +[15:50:04] + 257s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=5086 +[15:50:19] + 272s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=5386 +[15:50:34] + 287s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=5678 +[15:50:49] + 302s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=5974 +[15:51:05] + 318s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=6274 +[15:51:20] + 333s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=6574 +[15:51:35] + 348s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=6870 +[15:51:50] + 363s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7170 +[15:52:05] + 378s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7470 +[15:52:20] + 393s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7766 +[15:52:35] + 408s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8066 +[15:52:50] + 423s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8366 +[15:53:06] + 438s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8666 +[15:53:21] + 454s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=8966 +[15:53:36] + 469s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9264 +[15:53:51] + 484s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9562 +[15:54:06] + 499s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9862 +[15:54:21] + 514s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10160 +[15:54:36] + 529s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10458 +[15:54:51] + 544s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10758 +[15:55:07] + 560s home-assistant=483M/1024M peak=485M kills=0 rs=0 reqs=11056 +[15:55:22] + 575s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11354 +[15:55:37] + 590s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11654 +[15:55:52] + 605s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11952 +[15:55:52] memory watch: killed=False tight=[] requests=11952 codes={'302': 11832, 'err': 120} +[15:55:52] MV-home-assistant: ABORT — putting the FROM images back +[15:56:29] home-assistant: login as the seeded owner ok=True +[15:56:29] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-home-assistant", + "app": "home-assistant", + "note": "night 2026-09-23 within-a-major move: home-assistant=ghcr.io/home-assistant/home-assistant:2026.9.4", + "from": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.3" + }, + "to": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.1, + "requested_s": 600, + "requests": 11952, + "codes": { + "302": 11832, + "err": 120 + }, + "first_kill": null, + "containers": { + "home-assistant": { + "limit": 1073741824, + "peak": 509358080, + "peak_pct": 0.474, + "anon_peak_sampled": 344010752, + "anon_peak_pct": 0.32, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:56:29Z", + "evidence": "evidence/MV-home-assistant", + "scratch_cleared": [], + "files_changed": [], + "total_s": 841.8 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/abort-states.json new file mode 100644 index 00000000..473003f4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/abort-states.json @@ -0,0 +1,8 @@ +{ + "home-assistant": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/compose-final.log new file mode 100644 index 00000000..ae38f2f6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/compose-final.log @@ -0,0 +1,13 @@ +home-assistant | s6-rc: info: service s6rc-oneshot-runner: starting +home-assistant | s6-rc: info: service s6rc-oneshot-runner successfully started +home-assistant | s6-rc: info: service fix-attrs: starting +home-assistant | s6-rc: info: service fix-attrs successfully started +home-assistant | s6-rc: info: service legacy-cont-init: starting +home-assistant | s6-rc: info: service legacy-cont-init successfully started +home-assistant | s6-rc: info: service legacy-services: starting +home-assistant | services-up: info: copying legacy longrun home-assistant (no readiness notification) +home-assistant | s6-rc: info: service legacy-services successfully started +home-assistant | 2026-09-30 17:56:09.526 WARNING (ImportExecutor_0) [py.warnings] /usr/local/lib/python3.14/site-packages/rich/segment.py:547: SyntaxWarning: 'return' in a 'finally' block +home-assistant | return +home-assistant |  +home-assistant | 2026-09-30 17:56:29.482 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt or request with invalid authentication from 172.18.0.1 (172.18.0.1). Requested URL: '/auth/login_flow/ddc802a5e65daebe0a94239bd6cdbbbb'. (curl/8.14.1) diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/memory-samples.json new file mode 100644 index 00000000..94d7ed73 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 465145856, + "peak": 472686592, + "anon": 343949312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.3, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 464883712, + "peak": 472686592, + "anon": 343949312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 600 + }, + { + "t": 45.4, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 465383424, + "peak": 472686592, + "anon": 343949312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 900 + }, + { + "t": 60.5, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 465354752, + "peak": 472686592, + "anon": 343949312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1197 + }, + { + "t": 75.6, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 464994304, + "peak": 472686592, + "anon": 343998464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1497 + }, + { + "t": 90.8, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 465625088, + "peak": 472686592, + "anon": 344006656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1797 + }, + { + "t": 105.9, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 461807616, + "peak": 472686592, + "anon": 344006656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2097 + }, + { + "t": 121.0, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 454172672, + "peak": 472686592, + "anon": 344006656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2396 + }, + { + "t": 136.1, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 412168192, + "peak": 472686592, + "anon": 344006656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2696 + }, + { + "t": 151.2, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 402202624, + "peak": 472686592, + "anon": 344010752, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2994 + }, + { + "t": 166.3, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 397746176, + "peak": 472686592, + "anon": 338984960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3293 + }, + { + "t": 181.5, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 397897728, + "peak": 472686592, + "anon": 338997248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3593 + }, + { + "t": 196.6, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 398209024, + "peak": 472686592, + "anon": 338997248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3893 + }, + { + "t": 211.7, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 398004224, + "peak": 472686592, + "anon": 338997248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4190 + }, + { + "t": 226.8, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 398893056, + "peak": 472686592, + "anon": 339009536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4490 + }, + { + "t": 242.0, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 398671872, + "peak": 472686592, + "anon": 339009536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4790 + }, + { + "t": 257.1, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 398458880, + "peak": 472686592, + "anon": 339009536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5086 + }, + { + "t": 272.2, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 399454208, + "peak": 472686592, + "anon": 339009536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5386 + }, + { + "t": 287.3, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506568704, + "peak": 507523072, + "anon": 293535744, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5678 + }, + { + "t": 302.4, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506081280, + "peak": 508448768, + "anon": 293269504, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5974 + }, + { + "t": 317.5, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506109952, + "peak": 508448768, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6274 + }, + { + "t": 332.7, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506736640, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6574 + }, + { + "t": 347.8, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506163200, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6870 + }, + { + "t": 362.9, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506167296, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7170 + }, + { + "t": 378.0, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506425344, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7470 + }, + { + "t": 393.2, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506204160, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7766 + }, + { + "t": 408.3, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 505896960, + "peak": 508502016, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8066 + }, + { + "t": 423.4, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506400768, + "peak": 508526592, + "anon": 293314560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8366 + }, + { + "t": 438.5, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506241024, + "peak": 508526592, + "anon": 293318656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8666 + }, + { + "t": 453.7, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506695680, + "peak": 508526592, + "anon": 293330944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8966 + }, + { + "t": 468.8, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506204160, + "peak": 508526592, + "anon": 293355520, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9264 + }, + { + "t": 483.9, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506421248, + "peak": 508526592, + "anon": 293363712, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9562 + }, + { + "t": 499.0, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506224640, + "peak": 508526592, + "anon": 293363712, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9862 + }, + { + "t": 514.1, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506404864, + "peak": 508579840, + "anon": 293371904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10160 + }, + { + "t": 529.2, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 505950208, + "peak": 508579840, + "anon": 293396480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10458 + }, + { + "t": 544.3, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506286080, + "peak": 509140992, + "anon": 293396480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10758 + }, + { + "t": 559.5, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506470400, + "peak": 509140992, + "anon": 293396480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11056 + }, + { + "t": 574.6, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506339328, + "peak": 509358080, + "anon": 293445632, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11354 + }, + { + "t": 589.7, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506335232, + "peak": 509358080, + "anon": 293445632, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11654 + }, + { + "t": 604.8, + "containers": { + "home-assistant": { + "limit": 1073741824, + "current": 506322944, + "peak": 509358080, + "anon": 293457920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11952 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/run.log new file mode 100644 index 00000000..a765cfc3 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/run.log @@ -0,0 +1,58 @@ +[15:42:28] scratch drive folders cleared before FROM (R-656): none existed +[15:42:28] MV-home-assistant: deploying home-assistant at FROM {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.3'} +[15:44:13] FROM settled=True in 30.8s :: {"home-assistant": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:44:13] fixture: the BOX walk's own (HomeAssistant), through upgrade_boxport +[15:44:13] home-assistant: /api/onboarding/users http=200 +[15:44:14] home-assistant: login as the seeded owner ok=True +[15:44:14] C1 (seed reads back BEFORE): True +[15:44:14] MV-home-assistant: swapping to TO {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.4'} +[15:45:15] TO up -d rc=0 +[15:45:46] TO settled=True in 30.8s :: {"home-assistant": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:45:46] migration lines observed: 0 +[15:45:47] home-assistant: login as the seeded owner ok=True +[15:45:47] RESULT (seed reads back AFTER): True +[15:45:47] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8123 +[15:46:02] + 15s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=300 +[15:46:17] + 30s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=600 +[15:46:32] + 45s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=900 +[15:46:48] + 60s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=1197 +[15:47:03] + 76s home-assistant=443M/1024M peak=450M kills=0 rs=0 reqs=1497 +[15:47:18] + 91s home-assistant=444M/1024M peak=450M kills=0 rs=0 reqs=1797 +[15:47:33] + 106s home-assistant=440M/1024M peak=450M kills=0 rs=0 reqs=2097 +[15:47:48] + 121s home-assistant=433M/1024M peak=450M kills=0 rs=0 reqs=2396 +[15:48:03] + 136s home-assistant=393M/1024M peak=450M kills=0 rs=0 reqs=2696 +[15:48:18] + 151s home-assistant=383M/1024M peak=450M kills=0 rs=0 reqs=2994 +[15:48:33] + 166s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3293 +[15:48:49] + 182s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3593 +[15:49:04] + 197s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=3893 +[15:49:19] + 212s home-assistant=379M/1024M peak=450M kills=0 rs=0 reqs=4190 +[15:49:34] + 227s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=4490 +[15:49:49] + 242s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=4790 +[15:50:04] + 257s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=5086 +[15:50:19] + 272s home-assistant=380M/1024M peak=450M kills=0 rs=0 reqs=5386 +[15:50:34] + 287s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=5678 +[15:50:49] + 302s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=5974 +[15:51:05] + 318s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=6274 +[15:51:20] + 333s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=6574 +[15:51:35] + 348s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=6870 +[15:51:50] + 363s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7170 +[15:52:05] + 378s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7470 +[15:52:20] + 393s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=7766 +[15:52:35] + 408s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8066 +[15:52:50] + 423s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8366 +[15:53:06] + 438s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=8666 +[15:53:21] + 454s home-assistant=483M/1024M peak=484M kills=0 rs=0 reqs=8966 +[15:53:36] + 469s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9264 +[15:53:51] + 484s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9562 +[15:54:06] + 499s home-assistant=482M/1024M peak=484M kills=0 rs=0 reqs=9862 +[15:54:21] + 514s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10160 +[15:54:36] + 529s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10458 +[15:54:51] + 544s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=10758 +[15:55:07] + 560s home-assistant=483M/1024M peak=485M kills=0 rs=0 reqs=11056 +[15:55:22] + 575s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11354 +[15:55:37] + 590s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11654 +[15:55:52] + 605s home-assistant=482M/1024M peak=485M kills=0 rs=0 reqs=11952 +[15:55:52] memory watch: killed=False tight=[] requests=11952 codes={'302': 11832, 'err': 120} +[15:55:52] MV-home-assistant: ABORT — putting the FROM images back +[15:56:29] home-assistant: login as the seeded owner ok=True +[15:56:29] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-full.log new file mode 100644 index 00000000..e82cb407 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-full.log @@ -0,0 +1,12 @@ +home-assistant | s6-rc: info: service s6rc-oneshot-runner: starting +home-assistant | s6-rc: info: service s6rc-oneshot-runner successfully started +home-assistant | s6-rc: info: service fix-attrs: starting +home-assistant | s6-rc: info: service fix-attrs successfully started +home-assistant | s6-rc: info: service legacy-cont-init: starting +home-assistant | s6-rc: info: service legacy-cont-init successfully started +home-assistant | s6-rc: info: service legacy-services: starting +home-assistant | services-up: info: copying legacy longrun home-assistant (no readiness notification) +home-assistant | s6-rc: info: service legacy-services successfully started +home-assistant | 2026-09-30 17:45:27.146 WARNING (ImportExecutor_0) [py.warnings] /usr/local/lib/python3.14/site-packages/rich/segment.py:547: SyntaxWarning: 'return' in a 'finally' block +home-assistant | return +home-assistant |  diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-states.json new file mode 100644 index 00000000..473003f4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/to-states.json @@ -0,0 +1,8 @@ +{ + "home-assistant": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/verdict.json new file mode 100644 index 00000000..3e04ae11 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/home-assistant/bench/evidence/MV-home-assistant/verdict.json @@ -0,0 +1,52 @@ +{ + "harness_version": 4, + "edge": "MV-home-assistant", + "app": "home-assistant", + "note": "night 2026-09-23 within-a-major move: home-assistant=ghcr.io/home-assistant/home-assistant:2026.9.4", + "from": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.3" + }, + "to": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.1, + "requested_s": 600, + "requests": 11952, + "codes": { + "302": 11832, + "err": 120 + }, + "first_kill": null, + "containers": { + "home-assistant": { + "limit": 1073741824, + "peak": 509358080, + "peak_pct": 0.474, + "anon_peak_sampled": 344010752, + "anon_peak_pct": 0.32, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T15:56:29Z", + "evidence": "evidence/MV-home-assistant", + "scratch_cleared": [], + "files_changed": [], + "total_s": 841.8 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/MV-outline.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/MV-outline.log new file mode 100644 index 00000000..68e2856a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/MV-outline.log @@ -0,0 +1,146 @@ +[16:51:02] scratch drive folders cleared before FROM (R-656): none existed +[16:51:02] MV-outline: deploying outline at FROM {'outline': 'outlinewiki/outline:1.9.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} +[16:52:23] FROM settled=True in 31.1s :: {"outline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:52:23] fixture: the BOX walk's own (Outline), through upgrade_boxport +[16:52:23] outline: installation.create http=302 +[16:52:24] outline: seeded document drilldoc-ae7efd90 +[16:52:24] outline: readback of the seeded document http=200 found=True +[16:52:24] C1 (seed reads back BEFORE): True +[16:52:24] MV-outline: swapping to TO {'outline': 'outlinewiki/outline:1.10.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} +[16:53:02] TO up -d rc=0 +[16:53:33] TO settled=True in 31.2s :: {"outline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:53:34] engine state outline-postgres: 18 +[16:53:34] migration lines observed: 6 +[16:53:34] outline: readback of the seeded document http=200 found=True +[16:53:34] RESULT (seed reads back AFTER): True +[16:53:35] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[16:53:50] + 15s outline=261M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=7M kills=0 rs=0 reqs=290 +[16:54:05] + 30s outline=276M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=7M kills=0 rs=0 reqs=580 +[16:54:20] + 46s outline=277M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=872 +[16:54:35] + 61s outline=275M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1164 +[16:54:50] + 76s outline=240M/768M peak=289M kills=0 rs=0 outline-postgres=118M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1456 +[16:55:06] + 91s outline=253M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1748 +[16:55:21] + 106s outline=259M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2040 +[16:55:36] + 121s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2332 +[16:55:51] + 136s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=118M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2624 +[16:56:06] + 152s outline=253M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2916 +[16:56:21] + 167s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=119M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=3205 +[16:56:36] + 182s outline=239M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=3500 +[16:56:52] + 197s outline=240M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=8M kills=0 rs=0 reqs=3792 +[16:57:07] + 212s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=119M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4084 +[16:57:22] + 228s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4376 +[16:57:37] + 243s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=127M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=8M kills=0 rs=0 reqs=4668 +[16:57:52] + 258s outline=242M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4960 +[16:58:07] + 273s outline=256M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5252 +[16:58:23] + 288s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5544 +[16:58:38] + 303s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5836 +[16:58:53] + 318s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6128 +[16:59:08] + 334s outline=255M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6420 +[16:59:23] + 349s outline=249M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6712 +[16:59:38] + 364s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=7006 +[16:59:54] + 379s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=7296 +[17:00:09] + 394s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=7588 +[17:00:24] + 409s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=7880 +[17:00:39] + 425s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=8175 +[17:00:54] + 440s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=8464 +[17:01:09] + 455s outline=259M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=8756 +[17:01:25] + 470s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9048 +[17:01:40] + 485s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9342 +[17:01:55] + 500s outline=247M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9632 +[17:02:10] + 516s outline=263M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9924 +[17:02:25] + 531s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=10216 +[17:02:40] + 546s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=10511 +[17:02:56] + 561s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=10800 +[17:03:11] + 576s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11092 +[17:03:26] + 591s outline=247M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11384 +[17:03:41] + 607s outline=249M/768M peak=289M kills=0 rs=0 outline-postgres=128M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11680 +[17:03:41] memory watch: killed=False tight=[] requests=11680 codes={'200': 10128, '429': 1552} +[17:03:41] MV-outline: ABORT — putting the FROM images back +[17:04:15] outline: readback of the seeded document http=200 found=True +[17:04:15] ABORT: app came back in 31.1s; data present=True +{ + "harness_version": 4, + "edge": "MV-outline", + "app": "outline", + "note": "night 2026-09-23 within-a-major move: outline=outlinewiki/outline:1.10.1", + "from": { + "outline": "outlinewiki/outline:1.9.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "to": { + "outline": "outlinewiki/outline:1.10.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Koutline | {\"label\":\"database\",\"level\":\"info\",\"message\":\"Running migrations\u2026\"}", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "outline-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.9, + "requested_s": 600, + "requests": 11680, + "codes": { + "200": 10128, + "429": 1552 + }, + "first_kill": null, + "containers": { + "outline": { + "limit": 805306368, + "peak": 303575040, + "peak_pct": 0.377, + "anon_peak_sampled": 269766656, + "anon_peak_pct": 0.335, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "outline-postgres": { + "limit": 268435456, + "peak": 166694912, + "peak_pct": 0.621, + "anon_peak_sampled": 14536704, + "anon_peak_pct": 0.054, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "outline-redis": { + "limit": 134217728, + "peak": 9478144, + "peak_pct": 0.071, + "anon_peak_sampled": 3473408, + "anon_peak_pct": 0.026, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 31.2, + "measured_at": "2026-09-30T17:04:15Z", + "evidence": "evidence/MV-outline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 793.0 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/abort-states.json new file mode 100644 index 00000000..fcfe34e4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/abort-states.json @@ -0,0 +1,20 @@ +{ + "outline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "outline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "outline-redis": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/compose-final.log new file mode 100644 index 00000000..007b78f1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/compose-final.log @@ -0,0 +1,90 @@ +outline | {"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"} +outline | (node:1) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +outline | (Use `node --trace-warnings ...` to show where the warning was created) +outline | {"label":"lifecycle","level":"info","message":"\nIs your team enjoying Outline? Consider supporting future development by sponsoring the project:\n\nhttps://github.com/sponsors/outline\n"} +outline | {"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"} +outline | {"label":"lifecycle","level":"info","message":"Starting collaboration service"} +outline | (node:19) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +outline | (Use `node --trace-warnings ...` to show where the warning was created) +outline | {"label":"lifecycle","level":"info","message":"Starting websockets service"} +outline | {"label":"lifecycle","level":"info","message":"Starting worker service"} +outline | {"label":"lifecycle","level":"info","message":"Starting web service"} +outline | {"label":"lifecycle","level":"info","message":"Listening on http://localhost:3000 / https://kb.gate.invalid"} +outline-postgres | The files belonging to this database system will be owned by user "postgres". +outline-postgres | This user must also own the server process. +outline-postgres | +outline-postgres | The database cluster will be initialized with locale "en_US.utf8". +outline-postgres | The default database encoding has accordingly been set to "UTF8". +outline-postgres | The default text search configuration will be set to "english". +outline-postgres | +outline-postgres | Data page checksums are enabled. +outline-postgres | +outline-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok +outline-redis | 1:C 30 Sep 2026 18:51:41.400 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +outline-redis | 1:C 30 Sep 2026 18:51:41.400 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +outline-redis | 1:C 30 Sep 2026 18:51:41.400 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started +outline-postgres | creating subdirectories ... ok +outline-redis | 1:C 30 Sep 2026 18:51:41.400 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf +outline-postgres | selecting dynamic shared memory implementation ... posix +outline-redis | 1:M 30 Sep 2026 18:51:41.400 * monotonic clock: POSIX clock_gettime +outline-postgres | selecting default "max_connections" ... 100 +outline-redis | 1:M 30 Sep 2026 18:51:41.401 * Running mode=standalone, port=6379. +outline-postgres | selecting default "shared_buffers" ... 128MB +outline-redis | 1:M 30 Sep 2026 18:51:41.402 * Server initialized +outline-redis | 1:M 30 Sep 2026 18:51:41.402 * Ready to accept connections tcp +outline-redis | 1:M 30 Sep 2026 18:56:42.014 * 100 changes in 300 seconds. Saving... +outline-redis | 1:M 30 Sep 2026 18:56:42.014 * Background saving started by pid 188 +outline-redis | 188:C 30 Sep 2026 18:56:42.022 * DB saved on disk +outline-redis | 188:C 30 Sep 2026 18:56:42.023 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +outline-redis | 1:M 30 Sep 2026 18:56:42.116 * Background saving terminated with success +outline-redis | 1:M 30 Sep 2026 19:01:43.059 * 100 changes in 300 seconds. Saving... +outline-redis | 1:M 30 Sep 2026 19:01:43.060 * Background saving started by pid 369 +outline-redis | 369:C 30 Sep 2026 19:01:43.068 * DB saved on disk +outline-redis | 369:C 30 Sep 2026 19:01:43.069 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +outline-postgres | selecting default time zone ... Europe/Budapest +outline-postgres | creating configuration files ... ok +outline-postgres | running bootstrap script ... ok +outline-postgres | sh: locale: not found +outline-postgres | 2026-09-30 18:51:41.991 CEST [41] WARNING: no usable system locales were found +outline-postgres | performing post-bootstrap initialization ... ok +outline-postgres | syncing data to disk ... ok +outline-postgres | +outline-postgres | +outline-postgres | Success. You can now start the database server using: +outline-postgres | +outline-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start +outline-postgres | initdb: warning: enabling "trust" authentication for local connections +outline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +outline-postgres | +outline-postgres | waiting for server to start....2026-09-30 18:51:42.762 CEST [47] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +outline-postgres | 2026-09-30 18:51:42.765 CEST [47] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +outline-postgres | 2026-09-30 18:51:42.776 CEST [53] LOG: database system was shut down at 2026-09-30 18:51:42 CEST +outline-postgres | 2026-09-30 18:51:42.784 CEST [47] LOG: database system is ready to accept connections +outline-postgres | done +outline-redis | 1:M 30 Sep 2026 19:01:43.161 * Background saving terminated with success +outline-postgres | server started +outline-postgres | CREATE DATABASE +outline-postgres | +outline-postgres | +outline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +outline-postgres | +outline-postgres | waiting for server to shut down....2026-09-30 18:51:42.953 CEST [47] LOG: received fast shutdown request +outline-postgres | 2026-09-30 18:51:42.958 CEST [47] LOG: aborting any active transactions +outline-postgres | 2026-09-30 18:51:42.961 CEST [47] LOG: background worker "logical replication launcher" (PID 56) exited with exit code 1 +outline-postgres | 2026-09-30 18:51:42.961 CEST [51] LOG: shutting down +outline-postgres | 2026-09-30 18:51:42.964 CEST [51] LOG: checkpoint starting: shutdown immediate +outline-postgres | 2026-09-30 18:51:43.040 CEST [51] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.025 s, sync=0.039 s, total=0.080 s; sync files=303, longest=0.011 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858 +outline-postgres | 2026-09-30 18:51:43.066 CEST [47] LOG: database system is shut down +outline-postgres | done +outline-postgres | server stopped +outline-postgres | +outline-postgres | PostgreSQL init process complete; ready for start up. +outline-postgres | +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: listening on IPv6 address "::", port 5432 +outline-postgres | 2026-09-30 18:51:43.208 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +outline-postgres | 2026-09-30 18:51:43.219 CEST [69] LOG: database system was shut down at 2026-09-30 18:51:43 CEST +outline-postgres | 2026-09-30 18:51:43.230 CEST [1] LOG: database system is ready to accept connections +outline-postgres | 2026-09-30 18:56:43.318 CEST [67] LOG: checkpoint starting: time +outline-postgres | 2026-09-30 18:57:44.248 CEST [67] LOG: checkpoint complete: wrote 607 buffers (3.7%), wrote 4 SLRU buffers; 0 WAL file(s) added, 0 removed, 1 recycled; write=60.861 s, sync=0.051 s, total=60.931 s; sync files=510, longest=0.004 s, average=0.001 s; distance=5238 kB, estimate=5238 kB; lsn=0/20C6140, redo lsn=0/20C60B0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/engine-state.json new file mode 100644 index 00000000..e1e459a5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/engine-state.json @@ -0,0 +1,8 @@ +{ + "outline-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/memory-samples.json new file mode 100644 index 00000000..08ef1be5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/memory-samples.json @@ -0,0 +1,1562 @@ +[ + { + "t": 15.2, + "containers": { + "outline": { + "limit": 805306368, + "current": 274280448, + "peak": 296972288, + "anon": 253652992, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 123191296, + "peak": 166694912, + "anon": 7278592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5312512, + "peak": 7393280, + "anon": 3473408, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 290 + }, + { + "t": 30.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 289701888, + "peak": 296972288, + "anon": 268648448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 123387904, + "peak": 166694912, + "anon": 7278592, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 4997120, + "peak": 7938048, + "anon": 3420160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 580 + }, + { + "t": 45.5, + "containers": { + "outline": { + "limit": 805306368, + "current": 290689024, + "peak": 296972288, + "anon": 269766656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 123179008, + "peak": 166694912, + "anon": 7184384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5275648, + "peak": 8413184, + "anon": 3428352, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 872 + }, + { + "t": 60.7, + "containers": { + "outline": { + "limit": 805306368, + "current": 289337344, + "peak": 303575040, + "anon": 268509184, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 127873024, + "peak": 166694912, + "anon": 10985472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5275648, + "peak": 8413184, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1164 + }, + { + "t": 75.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 252653568, + "peak": 303575040, + "anon": 232583168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 124145664, + "peak": 166694912, + "anon": 7184384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5525504, + "peak": 8413184, + "anon": 3428352, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1456 + }, + { + "t": 91.0, + "containers": { + "outline": { + "limit": 805306368, + "current": 266043392, + "peak": 303575040, + "anon": 244903936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126164992, + "peak": 166694912, + "anon": 9080832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5533696, + "peak": 8413184, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1748 + }, + { + "t": 106.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 271740928, + "peak": 303575040, + "anon": 251281408, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130093056, + "peak": 166694912, + "anon": 12447744, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 6049792, + "peak": 8417280, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2040 + }, + { + "t": 121.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 255283200, + "peak": 303575040, + "anon": 235384832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 127774720, + "peak": 166694912, + "anon": 10985472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5267456, + "peak": 8417280, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2332 + }, + { + "t": 136.5, + "containers": { + "outline": { + "limit": 805306368, + "current": 252964864, + "peak": 303575040, + "anon": 233623552, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 123871232, + "peak": 166694912, + "anon": 7184384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5271552, + "peak": 8417280, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2624 + }, + { + "t": 151.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 266117120, + "peak": 303575040, + "anon": 245886976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126054400, + "peak": 166694912, + "anon": 9084928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5279744, + "peak": 8417280, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2916 + }, + { + "t": 166.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 260497408, + "peak": 303575040, + "anon": 240865280, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 125652992, + "peak": 166694912, + "anon": 9093120, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5271552, + "peak": 8417280, + "anon": 3428352, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3205 + }, + { + "t": 182.0, + "containers": { + "outline": { + "limit": 805306368, + "current": 251416576, + "peak": 303575040, + "anon": 232120320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130351104, + "peak": 166694912, + "anon": 12845056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5533696, + "peak": 8417280, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3500 + }, + { + "t": 197.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 251904000, + "peak": 303575040, + "anon": 232361984, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126201856, + "peak": 166694912, + "anon": 8757248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5025792, + "peak": 8417280, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3792 + }, + { + "t": 212.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 255971328, + "peak": 303575040, + "anon": 235577344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 125050880, + "peak": 166694912, + "anon": 7303168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5287936, + "peak": 8417280, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4084 + }, + { + "t": 227.5, + "containers": { + "outline": { + "limit": 805306368, + "current": 253390848, + "peak": 303575040, + "anon": 233373696, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128462848, + "peak": 166694912, + "anon": 9187328, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5812224, + "peak": 8417280, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4376 + }, + { + "t": 242.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 254939136, + "peak": 303575040, + "anon": 235188224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 134160384, + "peak": 166694912, + "anon": 14024704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5029888, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4668 + }, + { + "t": 257.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 254709760, + "peak": 303575040, + "anon": 235106304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126173184, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5812224, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4960 + }, + { + "t": 273.0, + "containers": { + "outline": { + "limit": 805306368, + "current": 269139968, + "peak": 303575040, + "anon": 248569856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128647168, + "peak": 166694912, + "anon": 9302016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5292032, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5252 + }, + { + "t": 288.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 260382720, + "peak": 303575040, + "anon": 240394240, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126652416, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5554176, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5544 + }, + { + "t": 303.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 257298432, + "peak": 303575040, + "anon": 237629440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130678784, + "peak": 166694912, + "anon": 11206656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5292032, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5836 + }, + { + "t": 318.5, + "containers": { + "outline": { + "limit": 805306368, + "current": 252944384, + "peak": 303575040, + "anon": 233644032, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 127823872, + "peak": 166694912, + "anon": 8863744, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5287936, + "peak": 8433664, + "anon": 3432448, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6128 + }, + { + "t": 333.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 267972608, + "peak": 303575040, + "anon": 247271424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126345216, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5550080, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6420 + }, + { + "t": 348.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 261656576, + "peak": 303575040, + "anon": 241836032, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126164992, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5812224, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6712 + }, + { + "t": 364.0, + "containers": { + "outline": { + "limit": 805306368, + "current": 253136896, + "peak": 303575040, + "anon": 233426944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130961408, + "peak": 166694912, + "anon": 11161600, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5791744, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7006 + }, + { + "t": 379.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 255107072, + "peak": 303575040, + "anon": 235020288, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126500864, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5550080, + "peak": 8433664, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7296 + }, + { + "t": 394.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 255516672, + "peak": 303575040, + "anon": 236113920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128073728, + "peak": 166694912, + "anon": 9302016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5029888, + "peak": 9478144, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7588 + }, + { + "t": 409.4, + "containers": { + "outline": { + "limit": 805306368, + "current": 256679936, + "peak": 303575040, + "anon": 236089344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126611456, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5550080, + "peak": 9478144, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7880 + }, + { + "t": 424.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 258105344, + "peak": 303575040, + "anon": 238370816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130768896, + "peak": 166694912, + "anon": 11206656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5300224, + "peak": 9478144, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8175 + }, + { + "t": 439.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 256630784, + "peak": 303575040, + "anon": 236969984, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 125923328, + "peak": 166694912, + "anon": 7405568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5271552, + "peak": 9478144, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8464 + }, + { + "t": 455.0, + "containers": { + "outline": { + "limit": 805306368, + "current": 271732736, + "peak": 303575040, + "anon": 251592704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126644224, + "peak": 166694912, + "anon": 7405568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5029888, + "peak": 9478144, + "anon": 3436544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8756 + }, + { + "t": 470.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 260706304, + "peak": 303575040, + "anon": 240398336, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128294912, + "peak": 166694912, + "anon": 9314304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5783552, + "peak": 9478144, + "anon": 3440640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9048 + }, + { + "t": 485.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 258170880, + "peak": 303575040, + "anon": 238456832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130572288, + "peak": 166694912, + "anon": 11169792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5558272, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9342 + }, + { + "t": 500.4, + "containers": { + "outline": { + "limit": 805306368, + "current": 259862528, + "peak": 303575040, + "anon": 239984640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128495616, + "peak": 166694912, + "anon": 9310208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5304320, + "peak": 9478144, + "anon": 3440640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9632 + }, + { + "t": 515.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 276279296, + "peak": 303575040, + "anon": 255844352, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128339968, + "peak": 166694912, + "anon": 9269248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5566464, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9924 + }, + { + "t": 530.8, + "containers": { + "outline": { + "limit": 805306368, + "current": 257216512, + "peak": 303575040, + "anon": 236892160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126464000, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5537792, + "peak": 9478144, + "anon": 3440640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10216 + }, + { + "t": 545.9, + "containers": { + "outline": { + "limit": 805306368, + "current": 258473984, + "peak": 303575040, + "anon": 238522368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 130699264, + "peak": 166694912, + "anon": 11169792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5820416, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10511 + }, + { + "t": 561.1, + "containers": { + "outline": { + "limit": 805306368, + "current": 258555904, + "peak": 303575040, + "anon": 238825472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 128040960, + "peak": 166694912, + "anon": 8740864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5042176, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10800 + }, + { + "t": 576.3, + "containers": { + "outline": { + "limit": 805306368, + "current": 257650688, + "peak": 303575040, + "anon": 237858816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126472192, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5574656, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11092 + }, + { + "t": 591.4, + "containers": { + "outline": { + "limit": 805306368, + "current": 259358720, + "peak": 303575040, + "anon": 239915008, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 126410752, + "peak": 166694912, + "anon": 7401472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5562368, + "peak": 9478144, + "anon": 3440640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11384 + }, + { + "t": 606.6, + "containers": { + "outline": { + "limit": 805306368, + "current": 261554176, + "peak": 303575040, + "anon": 241094656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-postgres": { + "limit": 268435456, + "current": 134373376, + "peak": 166694912, + "anon": 14536704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "outline-redis": { + "limit": 134217728, + "current": 5304320, + "peak": 9478144, + "anon": 3444736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11680 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/migration-lines.txt new file mode 100644 index 00000000..1b84c486 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/migration-lines.txt @@ -0,0 +1,6 @@ +outline | {"label":"database","level":"info","message":"Running migrations…"} +outline | {"label":"database","level":"info","message":"Migrating 20260714000000-add-mcp-to-search-queries-source.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260714000000-add-mcp-to-search-queries-source.js in 0.016s"} +outline | {"label":"database","level":"info","message":"Migrating 20260718134528-add-search-queries-created-at-index.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260718134528-add-search-queries-created-at-index.js in 0.019s"} +outline | {"label":"database","level":"info","message":"Migrating 20260803143858-add-documents-team-search-vector-index.js…"} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/run.log new file mode 100644 index 00000000..eeb968e6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/run.log @@ -0,0 +1,60 @@ +[16:51:02] scratch drive folders cleared before FROM (R-656): none existed +[16:51:02] MV-outline: deploying outline at FROM {'outline': 'outlinewiki/outline:1.9.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} +[16:52:23] FROM settled=True in 31.1s :: {"outline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:52:23] fixture: the BOX walk's own (Outline), through upgrade_boxport +[16:52:23] outline: installation.create http=302 +[16:52:24] outline: seeded document drilldoc-ae7efd90 +[16:52:24] outline: readback of the seeded document http=200 found=True +[16:52:24] C1 (seed reads back BEFORE): True +[16:52:24] MV-outline: swapping to TO {'outline': 'outlinewiki/outline:1.10.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} +[16:53:02] TO up -d rc=0 +[16:53:33] TO settled=True in 31.2s :: {"outline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "outline-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:53:34] engine state outline-postgres: 18 +[16:53:34] migration lines observed: 6 +[16:53:34] outline: readback of the seeded document http=200 found=True +[16:53:34] RESULT (seed reads back AFTER): True +[16:53:35] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[16:53:50] + 15s outline=261M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=7M kills=0 rs=0 reqs=290 +[16:54:05] + 30s outline=276M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=7M kills=0 rs=0 reqs=580 +[16:54:20] + 46s outline=277M/768M peak=283M kills=0 rs=0 outline-postgres=117M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=872 +[16:54:35] + 61s outline=275M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1164 +[16:54:50] + 76s outline=240M/768M peak=289M kills=0 rs=0 outline-postgres=118M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1456 +[16:55:06] + 91s outline=253M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=1748 +[16:55:21] + 106s outline=259M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2040 +[16:55:36] + 121s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2332 +[16:55:51] + 136s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=118M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2624 +[16:56:06] + 152s outline=253M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=2916 +[16:56:21] + 167s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=119M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=3205 +[16:56:36] + 182s outline=239M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=3500 +[16:56:52] + 197s outline=240M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=8M kills=0 rs=0 reqs=3792 +[16:57:07] + 212s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=119M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4084 +[16:57:22] + 228s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4376 +[16:57:37] + 243s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=127M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=8M kills=0 rs=0 reqs=4668 +[16:57:52] + 258s outline=242M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=4960 +[16:58:07] + 273s outline=256M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5252 +[16:58:23] + 288s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5544 +[16:58:38] + 303s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=5836 +[16:58:53] + 318s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=121M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6128 +[16:59:08] + 334s outline=255M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6420 +[16:59:23] + 349s outline=249M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=6712 +[16:59:38] + 364s outline=241M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=7006 +[16:59:54] + 379s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=8M kills=0 rs=0 reqs=7296 +[17:00:09] + 394s outline=243M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=7588 +[17:00:24] + 409s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=7880 +[17:00:39] + 425s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=8175 +[17:00:54] + 440s outline=244M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=8464 +[17:01:09] + 455s outline=259M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=8756 +[17:01:25] + 470s outline=248M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9048 +[17:01:40] + 485s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9342 +[17:01:55] + 500s outline=247M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9632 +[17:02:10] + 516s outline=263M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=9924 +[17:02:25] + 531s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=10216 +[17:02:40] + 546s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=124M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=10511 +[17:02:56] + 561s outline=246M/768M peak=289M kills=0 rs=0 outline-postgres=122M/256M peak=158M kills=0 rs=0 outline-redis=4M/128M peak=9M kills=0 rs=0 reqs=10800 +[17:03:11] + 576s outline=245M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11092 +[17:03:26] + 591s outline=247M/768M peak=289M kills=0 rs=0 outline-postgres=120M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11384 +[17:03:41] + 607s outline=249M/768M peak=289M kills=0 rs=0 outline-postgres=128M/256M peak=158M kills=0 rs=0 outline-redis=5M/128M peak=9M kills=0 rs=0 reqs=11680 +[17:03:41] memory watch: killed=False tight=[] requests=11680 codes={'200': 10128, '429': 1552} +[17:03:41] MV-outline: ABORT — putting the FROM images back +[17:04:15] outline: readback of the seeded document http=200 found=True +[17:04:15] ABORT: app came back in 31.1s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-full.log new file mode 100644 index 00000000..eb1f6f37 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-full.log @@ -0,0 +1,99 @@ +outline | {"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"} +outline | {"label":"lifecycle","level":"info","message":"Memory constraint of 768MB detected, defaulting each service process to a 614MB heap limit"} +outline | ⟐ injected env (0) · dotenvx@1.75.1 +outline | (node:15) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +outline | (Use `node --trace-warnings ...` to show where the warning was created) +outline | {"label":"database","level":"info","message":"Running migrations…"} +outline | {"label":"database","level":"info","message":"Migrating 20260714000000-add-mcp-to-search-queries-source.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260714000000-add-mcp-to-search-queries-source.js in 0.016s"} +outline | {"label":"database","level":"info","message":"Migrating 20260718134528-add-search-queries-created-at-index.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260718134528-add-search-queries-created-at-index.js in 0.019s"} +outline | {"label":"database","level":"info","message":"Migrating 20260803143858-add-documents-team-search-vector-index.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260803143858-add-documents-team-search-vector-index.js in 0.084s"} +outline | {"label":"database","level":"info","message":"Migrating 20260804130000-add-documents-active-popularity-index.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260804130000-add-documents-active-popularity-index.js in 0.018s"} +outline | {"label":"database","level":"info","message":"Migrating 20260805120000-add-revisions-source-metadata.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260805120000-add-revisions-source-metadata.js in 0.011s"} +outline | {"label":"database","level":"info","message":"Migrating 20260818120000-add-deletedById-to-documents.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260818120000-add-deletedById-to-documents.js in 0.044s"} +outline-postgres | The files belonging to this database system will be owned by user "postgres". +outline-postgres | This user must also own the server process. +outline-postgres | +outline-postgres | The database cluster will be initialized with locale "en_US.utf8". +outline-postgres | The default database encoding has accordingly been set to "UTF8". +outline-postgres | The default text search configuration will be set to "english". +outline-postgres | +outline-postgres | Data page checksums are enabled. +outline-postgres | +outline-redis | 1:C 30 Sep 2026 18:51:41.400 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +outline-redis | 1:C 30 Sep 2026 18:51:41.400 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +outline-redis | 1:C 30 Sep 2026 18:51:41.400 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started +outline-redis | 1:C 30 Sep 2026 18:51:41.400 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf +outline-redis | 1:M 30 Sep 2026 18:51:41.400 * monotonic clock: POSIX clock_gettime +outline-redis | 1:M 30 Sep 2026 18:51:41.401 * Running mode=standalone, port=6379. +outline-redis | 1:M 30 Sep 2026 18:51:41.402 * Server initialized +outline-redis | 1:M 30 Sep 2026 18:51:41.402 * Ready to accept connections tcp +outline | {"label":"database","level":"info","message":"Migrating 20260821164024-add-preferences-to-documents.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260821164024-add-preferences-to-documents.js in 0.01s"} +outline | {"label":"database","level":"info","message":"Migrating 20260902125149-limit-document-search-trigger-columns.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260902125149-limit-document-search-trigger-columns.js in 0.009s"} +outline | {"label":"database","level":"info","message":"Migrating 20260903145856-add-document-createdbyid-index.js…"} +outline | {"label":"database","level":"info","message":"Migrated 20260903145856-add-document-createdbyid-index.js in 0.038s"} +outline | {"label":"lifecycle","level":"info","message":"\nIs your team enjoying Outline? Consider supporting future development by sponsoring the project:\n\nhttps://github.com/sponsors/outline\n"} +outline | {"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"} +outline | {"label":"lifecycle","level":"info","message":"Starting collaboration service"} +outline | {"label":"lifecycle","level":"info","message":"Starting websockets service"} +outline | {"label":"lifecycle","level":"info","message":"Starting worker service"} +outline-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok +outline | (node:27) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +outline-postgres | creating subdirectories ... ok +outline | (Use `node --trace-warnings ...` to show where the warning was created) +outline-postgres | selecting dynamic shared memory implementation ... posix +outline-postgres | selecting default "max_connections" ... 100 +outline-postgres | selecting default "shared_buffers" ... 128MB +outline-postgres | selecting default time zone ... Europe/Budapest +outline-postgres | creating configuration files ... ok +outline-postgres | running bootstrap script ... ok +outline-postgres | sh: locale: not found +outline-postgres | 2026-09-30 18:51:41.991 CEST [41] WARNING: no usable system locales were found +outline-postgres | performing post-bootstrap initialization ... ok +outline-postgres | syncing data to disk ... ok +outline | {"label":"lifecycle","level":"info","message":"Starting web service"} +outline | {"label":"lifecycle","level":"info","message":"Listening on http://localhost:3000 / https://kb.gate.invalid"} +outline-postgres | +outline-postgres | +outline-postgres | Success. You can now start the database server using: +outline-postgres | +outline-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start +outline-postgres | initdb: warning: enabling "trust" authentication for local connections +outline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +outline-postgres | +outline-postgres | waiting for server to start....2026-09-30 18:51:42.762 CEST [47] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +outline-postgres | 2026-09-30 18:51:42.765 CEST [47] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +outline-postgres | 2026-09-30 18:51:42.776 CEST [53] LOG: database system was shut down at 2026-09-30 18:51:42 CEST +outline-postgres | 2026-09-30 18:51:42.784 CEST [47] LOG: database system is ready to accept connections +outline-postgres | done +outline-postgres | server started +outline-postgres | CREATE DATABASE +outline-postgres | +outline-postgres | +outline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +outline-postgres | +outline-postgres | waiting for server to shut down....2026-09-30 18:51:42.953 CEST [47] LOG: received fast shutdown request +outline-postgres | 2026-09-30 18:51:42.958 CEST [47] LOG: aborting any active transactions +outline-postgres | 2026-09-30 18:51:42.961 CEST [47] LOG: background worker "logical replication launcher" (PID 56) exited with exit code 1 +outline-postgres | 2026-09-30 18:51:42.961 CEST [51] LOG: shutting down +outline-postgres | 2026-09-30 18:51:42.964 CEST [51] LOG: checkpoint starting: shutdown immediate +outline-postgres | 2026-09-30 18:51:43.040 CEST [51] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.025 s, sync=0.039 s, total=0.080 s; sync files=303, longest=0.011 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858 +outline-postgres | 2026-09-30 18:51:43.066 CEST [47] LOG: database system is shut down +outline-postgres | done +outline-postgres | server stopped +outline-postgres | +outline-postgres | PostgreSQL init process complete; ready for start up. +outline-postgres | +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +outline-postgres | 2026-09-30 18:51:43.201 CEST [1] LOG: listening on IPv6 address "::", port 5432 +outline-postgres | 2026-09-30 18:51:43.208 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +outline-postgres | 2026-09-30 18:51:43.219 CEST [69] LOG: database system was shut down at 2026-09-30 18:51:43 CEST +outline-postgres | 2026-09-30 18:51:43.230 CEST [1] LOG: database system is ready to accept connections diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-states.json new file mode 100644 index 00000000..fcfe34e4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/to-states.json @@ -0,0 +1,20 @@ +{ + "outline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "outline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "outline-redis": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/verdict.json new file mode 100644 index 00000000..805fac0f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/verdict.json @@ -0,0 +1,86 @@ +{ + "harness_version": 4, + "edge": "MV-outline", + "app": "outline", + "note": "night 2026-09-23 within-a-major move: outline=outlinewiki/outline:1.10.1", + "from": { + "outline": "outlinewiki/outline:1.9.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "to": { + "outline": "outlinewiki/outline:1.10.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Koutline | {\"label\":\"database\",\"level\":\"info\",\"message\":\"Running migrations\u2026\"}", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "outline-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.9, + "requested_s": 600, + "requests": 11680, + "codes": { + "200": 10128, + "429": 1552 + }, + "first_kill": null, + "containers": { + "outline": { + "limit": 805306368, + "peak": 303575040, + "peak_pct": 0.377, + "anon_peak_sampled": 269766656, + "anon_peak_pct": 0.335, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "outline-postgres": { + "limit": 268435456, + "peak": 166694912, + "peak_pct": 0.621, + "anon_peak_sampled": 14536704, + "anon_peak_pct": 0.054, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "outline-redis": { + "limit": 134217728, + "peak": 9478144, + "peak_pct": 0.071, + "anon_peak_sampled": 3473408, + "anon_peak_pct": 0.026, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 31.2, + "measured_at": "2026-09-30T17:04:15Z", + "evidence": "evidence/MV-outline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 793.0 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/MV-rallly.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/MV-rallly.log new file mode 100644 index 00000000..607105c8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/MV-rallly.log @@ -0,0 +1,133 @@ +[17:04:30] scratch drive folders cleared before FROM (R-656): none existed +[17:04:30] MV-rallly: deploying rallly at FROM {'rallly': 'lukevella/rallly:4.11.1', 'rallly-postgres': 'postgres:18-alpine'} +[17:05:35] FROM settled=True in 36.1s :: {"rallly": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "rallly-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:05:35] fixture: the BOX walk's own (Rallly), through upgrade_boxport +[17:05:36] rallly: sign-up http=200 +[17:05:36] rallly: verify-email with the code http=200 +[17:05:36] rallly: seeded poll drillpoll-58798ef7 (dLWBG8xi50i9) +[17:05:37] rallly: readback of the seeded poll http=200 found=True +[17:05:37] C1 (seed reads back BEFORE): True +[17:05:37] MV-rallly: swapping to TO {'rallly': 'lukevella/rallly:4.15.3', 'rallly-postgres': 'postgres:18-alpine'} +[17:06:08] TO up -d rc=0 +[17:06:44] TO settled=True in 36.1s :: {"rallly": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "rallly-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:06:44] engine state rallly-postgres: 18 +[17:06:44] migration lines observed: 6 +[17:06:46] rallly: readback of the seeded poll http=200 found=True +[17:06:46] RESULT (seed reads back AFTER): True +[17:06:46] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[17:07:01] + 15s rallly=436M/768M peak=444M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=243 +[17:07:17] + 30s rallly=443M/768M peak=454M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=502 +[17:07:32] + 45s rallly=463M/768M peak=464M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=760 +[17:07:47] + 61s rallly=462M/768M peak=474M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1015 +[17:08:02] + 76s rallly=463M/768M peak=474M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1275 +[17:08:17] + 91s rallly=465M/768M peak=475M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1536 +[17:08:32] + 106s rallly=463M/768M peak=475M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1795 +[17:08:47] + 121s rallly=465M/768M peak=478M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2051 +[17:09:03] + 136s rallly=472M/768M peak=478M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2308 +[17:09:18] + 152s rallly=480M/768M peak=490M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2571 +[17:09:33] + 167s rallly=479M/768M peak=490M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2832 +[17:09:48] + 182s rallly=481M/768M peak=491M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=3091 +[17:10:03] + 197s rallly=480M/768M peak=491M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=3346 +[17:10:18] + 212s rallly=452M/768M peak=491M kills=0 rs=0 rallly-postgres=132M/256M peak=158M kills=0 rs=0 reqs=3604 +[17:10:33] + 227s rallly=459M/768M peak=491M kills=0 rs=0 rallly-postgres=132M/256M peak=158M kills=0 rs=0 reqs=3872 +[17:10:49] + 242s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=166M kills=0 rs=0 reqs=4126 +[17:11:04] + 258s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4379 +[17:11:19] + 273s rallly=475M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4633 +[17:11:34] + 288s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4887 +[17:11:49] + 303s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5141 +[17:12:04] + 318s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5395 +[17:12:19] + 333s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5651 +[17:12:35] + 348s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5905 +[17:12:50] + 364s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=6159 +[17:13:05] + 379s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6414 +[17:13:20] + 394s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6669 +[17:13:35] + 409s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6923 +[17:13:50] + 424s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7183 +[17:14:05] + 439s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7443 +[17:14:21] + 454s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7702 +[17:14:36] + 470s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7962 +[17:14:51] + 485s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8218 +[17:15:06] + 500s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8474 +[17:15:21] + 515s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8730 +[17:15:36] + 530s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8984 +[17:15:51] + 545s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9236 +[17:16:07] + 560s rallly=480M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9492 +[17:16:22] + 576s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9752 +[17:16:37] + 591s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=10010 +[17:16:52] + 606s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=10270 +[17:16:52] memory watch: killed=False tight=[] requests=10271 codes={'200': 10271} +[17:16:52] MV-rallly: ABORT — putting the FROM images back +[17:17:40] rallly: READBACK UNUSABLE — an id that cannot exist answered 500 +[17:17:40] ABORT: app came back in 36.1s; data present=False +{ + "harness_version": 4, + "edge": "MV-rallly", + "app": "rallly", + "note": "night 2026-09-23 within-a-major move: rallly=lukevella/rallly:4.15.3", + "from": { + "rallly": "lukevella/rallly:4.11.1", + "rallly-postgres": "postgres:18-alpine" + }, + "to": { + "rallly": "lukevella/rallly:4.15.3", + "rallly-postgres": "postgres:18-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Krallly | Prisma schema loaded from prisma.", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": { + "rallly-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.1, + "requested_s": 600, + "requests": 10271, + "codes": { + "200": 10271 + }, + "first_kill": null, + "containers": { + "rallly": { + "limit": 805306368, + "peak": 515645440, + "peak_pct": 0.64, + "anon_peak_sampled": 488271872, + "anon_peak_pct": 0.606, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "rallly-postgres": { + "limit": 268435456, + "peak": 176537600, + "peak_pct": 0.658, + "anon_peak_sampled": 5513216, + "anon_peak_pct": 0.021, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 36.1, + "measured_at": "2026-09-30T17:17:40Z", + "evidence": "evidence/MV-rallly", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 790.5 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/abort-states.json new file mode 100644 index 00000000..3fec1edc --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/abort-states.json @@ -0,0 +1,14 @@ +{ + "rallly": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "rallly-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/compose-final.log new file mode 100644 index 00000000..27185c0c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/compose-final.log @@ -0,0 +1,82 @@ +rallly | No .env file found, continuing without it +rallly | Loaded Prisma config from prisma.config.ts. +rallly | +rallly | Prisma schema loaded from prisma. +rallly | Datasource "db": PostgreSQL database "rallly", schema "public" at "rallly-postgres:5432" +rallly | +rallly | 129 migrations found in prisma/migrations +rallly | +rallly | +rallly | No pending migrations to apply. +rallly | npm notice +rallly | npm notice New major version of npm available! 11.13.0 -> 12.2.0 +rallly | npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0 +rallly | npm notice To update run: npm install -g npm@12.2.0 +rallly | npm notice +rallly | ▲ Next.js 16.2.6 +rallly | - Local: http://localhost:3000 +rallly | - Network: http://0.0.0.0:3000 +rallly | ✓ Ready in 0ms +rallly | {"level":50,"time":1790788660657,"pid":57,"hostname":"50c12273f4b1","timestamp":"2026-09-30T17:17:40.585Z","service":"trpc","method":"GET","path":"/api/trpc/polls.get","ip":"127.0.0.1","statusCode":500,"errorCode":"INTERNAL_SERVER_ERROR","errorMessage":"\nInvalid `prisma.poll.findUnique()` invocation:\n\n\nThe column `polls.participant_url_id` does not exist in the current database.","errorType":"TRPCError","durationMs":72} +rallly-postgres | The files belonging to this database system will be owned by user "postgres". +rallly-postgres | This user must also own the server process. +rallly-postgres | +rallly-postgres | The database cluster will be initialized with locale "en_US.utf8". +rallly-postgres | The default database encoding has accordingly been set to "UTF8". +rallly-postgres | The default text search configuration will be set to "english". +rallly-postgres | +rallly-postgres | Data page checksums are enabled. +rallly-postgres | +rallly-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok +rallly-postgres | creating subdirectories ... ok +rallly-postgres | selecting dynamic shared memory implementation ... posix +rallly-postgres | selecting default "max_connections" ... 100 +rallly-postgres | selecting default "shared_buffers" ... 128MB +rallly-postgres | selecting default time zone ... Europe/Budapest +rallly-postgres | creating configuration files ... ok +rallly-postgres | running bootstrap script ... ok +rallly-postgres | sh: locale: not found +rallly-postgres | 2026-09-30 19:04:49.641 CEST [40] WARNING: no usable system locales were found +rallly-postgres | performing post-bootstrap initialization ... ok +rallly-postgres | initdb: warning: enabling "trust" authentication for local connections +rallly-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +rallly-postgres | syncing data to disk ... ok +rallly-postgres | +rallly-postgres | +rallly-postgres | Success. You can now start the database server using: +rallly-postgres | +rallly-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start +rallly-postgres | +rallly-postgres | waiting for server to start....2026-09-30 19:04:50.449 CEST [46] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +rallly-postgres | 2026-09-30 19:04:50.452 CEST [46] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +rallly-postgres | 2026-09-30 19:04:50.463 CEST [52] LOG: database system was shut down at 2026-09-30 19:04:50 CEST +rallly-postgres | 2026-09-30 19:04:50.471 CEST [46] LOG: database system is ready to accept connections +rallly-postgres | done +rallly-postgres | server started +rallly-postgres | CREATE DATABASE +rallly-postgres | +rallly-postgres | +rallly-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +rallly-postgres | +rallly-postgres | waiting for server to shut down....2026-09-30 19:04:50.650 CEST [46] LOG: received fast shutdown request +rallly-postgres | 2026-09-30 19:04:50.654 CEST [46] LOG: aborting any active transactions +rallly-postgres | 2026-09-30 19:04:50.658 CEST [46] LOG: background worker "logical replication launcher" (PID 55) exited with exit code 1 +rallly-postgres | 2026-09-30 19:04:50.658 CEST [50] LOG: shutting down +rallly-postgres | 2026-09-30 19:04:50.661 CEST [50] LOG: checkpoint starting: shutdown immediate +rallly-postgres | 2026-09-30 19:04:50.745 CEST [50] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.025 s, sync=0.047 s, total=0.087 s; sync files=303, longest=0.015 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858 +rallly-postgres | 2026-09-30 19:04:50.776 CEST [46] LOG: database system is shut down +rallly-postgres | done +rallly-postgres | server stopped +rallly-postgres | +rallly-postgres | PostgreSQL init process complete; ready for start up. +rallly-postgres | +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: listening on IPv6 address "::", port 5432 +rallly-postgres | 2026-09-30 19:04:50.903 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +rallly-postgres | 2026-09-30 19:04:50.913 CEST [68] LOG: database system was shut down at 2026-09-30 19:04:50 CEST +rallly-postgres | 2026-09-30 19:04:50.921 CEST [1] LOG: database system is ready to accept connections +rallly-postgres | 2026-09-30 19:09:51.012 CEST [66] LOG: checkpoint starting: time +rallly-postgres | 2026-09-30 19:10:41.545 CEST [66] LOG: checkpoint complete: wrote 503 buffers (3.1%), wrote 3 SLRU buffers; 1 WAL file(s) added, 0 removed, 0 recycled; write=50.423 s, sync=0.051 s, total=50.533 s; sync files=448, longest=0.006 s, average=0.001 s; distance=4412 kB, estimate=4412 kB; lsn=0/1FF7A40, redo lsn=0/1FF79B0 +rallly-postgres | 2026-09-30 19:17:40.643 CEST [672] ERROR: column polls.participant_url_id does not exist at character 179 +rallly-postgres | 2026-09-30 19:17:40.643 CEST [672] STATEMENT: SELECT "public"."polls"."id", "public"."polls"."time_zone", "public"."polls"."title", "public"."polls"."location", "public"."polls"."description", "public"."polls"."created_at", "public"."polls"."participant_url_id", "public"."polls"."status"::text, "public"."polls"."hide_participants", "public"."polls"."disable_comments", "public"."polls"."hide_scores", "public"."polls"."require_participant_email", "public"."polls"."user_id", "public"."polls"."deleted", "public"."polls"."space_id", "public"."polls"."muted", "public"."polls"."scheduled_event_id" FROM "public"."polls" WHERE ("public"."polls"."id" = $1 AND 1=1) LIMIT $2 OFFSET $3 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/engine-state.json new file mode 100644 index 00000000..3fa9cf62 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/engine-state.json @@ -0,0 +1,8 @@ +{ + "rallly-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/memory-samples.json new file mode 100644 index 00000000..da53804a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/memory-samples.json @@ -0,0 +1,1122 @@ +[ + { + "t": 15.1, + "containers": { + "rallly": { + "limit": 805306368, + "current": 457809920, + "peak": 466591744, + "anon": 442064896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 137965568, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 243 + }, + { + "t": 30.3, + "containers": { + "rallly": { + "limit": 805306368, + "current": 465436672, + "peak": 476155904, + "anon": 449523712, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 137994240, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 502 + }, + { + "t": 45.4, + "containers": { + "rallly": { + "limit": 805306368, + "current": 486371328, + "peak": 487325696, + "anon": 470564864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 137994240, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 760 + }, + { + "t": 60.6, + "containers": { + "rallly": { + "limit": 805306368, + "current": 485416960, + "peak": 497283072, + "anon": 469757952, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1015 + }, + { + "t": 75.7, + "containers": { + "rallly": { + "limit": 805306368, + "current": 486060032, + "peak": 497283072, + "anon": 469880832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138170368, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1275 + }, + { + "t": 90.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 487608320, + "peak": 498630656, + "anon": 471670784, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1536 + }, + { + "t": 106.0, + "containers": { + "rallly": { + "limit": 805306368, + "current": 486461440, + "peak": 498630656, + "anon": 470769664, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1795 + }, + { + "t": 121.2, + "containers": { + "rallly": { + "limit": 805306368, + "current": 488095744, + "peak": 501313536, + "anon": 472260608, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2051 + }, + { + "t": 136.3, + "containers": { + "rallly": { + "limit": 805306368, + "current": 495579136, + "peak": 501313536, + "anon": 479289344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138321920, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2308 + }, + { + "t": 151.5, + "containers": { + "rallly": { + "limit": 805306368, + "current": 503369728, + "peak": 514146304, + "anon": 487395328, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2571 + }, + { + "t": 166.6, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502845440, + "peak": 514146304, + "anon": 486473728, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2832 + }, + { + "t": 181.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 504455168, + "peak": 515645440, + "anon": 488271872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138162176, + "peak": 166330368, + "anon": 5304320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3091 + }, + { + "t": 196.9, + "containers": { + "rallly": { + "limit": 805306368, + "current": 503902208, + "peak": 515645440, + "anon": 487501824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138362880, + "peak": 166330368, + "anon": 5410816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3346 + }, + { + "t": 212.0, + "containers": { + "rallly": { + "limit": 805306368, + "current": 474693632, + "peak": 515645440, + "anon": 459603968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 138510336, + "peak": 166330368, + "anon": 5431296, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3604 + }, + { + "t": 227.2, + "containers": { + "rallly": { + "limit": 805306368, + "current": 481980416, + "peak": 515645440, + "anon": 466333696, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 139161600, + "peak": 166330368, + "anon": 5443584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3872 + }, + { + "t": 242.3, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500523008, + "peak": 515645440, + "anon": 483917824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172408832, + "peak": 174120960, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4126 + }, + { + "t": 257.5, + "containers": { + "rallly": { + "limit": 805306368, + "current": 499453952, + "peak": 515645440, + "anon": 483643392, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172408832, + "peak": 175857664, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4379 + }, + { + "t": 272.6, + "containers": { + "rallly": { + "limit": 805306368, + "current": 498282496, + "peak": 515645440, + "anon": 482394112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172118016, + "peak": 175857664, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4633 + }, + { + "t": 287.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 499695616, + "peak": 515645440, + "anon": 483880960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172118016, + "peak": 175857664, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4887 + }, + { + "t": 302.9, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500473856, + "peak": 515645440, + "anon": 484352000, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172118016, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5141 + }, + { + "t": 318.1, + "containers": { + "rallly": { + "limit": 805306368, + "current": 499830784, + "peak": 515645440, + "anon": 483516416, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172118016, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5395 + }, + { + "t": 333.2, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500047872, + "peak": 515645440, + "anon": 483655680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172118016, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5651 + }, + { + "t": 348.4, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500224000, + "peak": 515645440, + "anon": 484061184, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172093440, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5905 + }, + { + "t": 363.5, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500342784, + "peak": 515645440, + "anon": 484167680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 172093440, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6159 + }, + { + "t": 378.6, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500613120, + "peak": 515645440, + "anon": 484274176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6414 + }, + { + "t": 393.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 501092352, + "peak": 515645440, + "anon": 484724736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6669 + }, + { + "t": 408.9, + "containers": { + "rallly": { + "limit": 805306368, + "current": 501239808, + "peak": 515645440, + "anon": 485199872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6923 + }, + { + "t": 424.1, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500559872, + "peak": 515645440, + "anon": 484458496, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7183 + }, + { + "t": 439.2, + "containers": { + "rallly": { + "limit": 805306368, + "current": 501338112, + "peak": 515645440, + "anon": 485326848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7443 + }, + { + "t": 454.4, + "containers": { + "rallly": { + "limit": 805306368, + "current": 501354496, + "peak": 515645440, + "anon": 484921344, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7702 + }, + { + "t": 469.5, + "containers": { + "rallly": { + "limit": 805306368, + "current": 501104640, + "peak": 515645440, + "anon": 484700160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7962 + }, + { + "t": 484.7, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502562816, + "peak": 515645440, + "anon": 486572032, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8218 + }, + { + "t": 499.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502583296, + "peak": 515645440, + "anon": 486223872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8474 + }, + { + "t": 514.9, + "containers": { + "rallly": { + "limit": 805306368, + "current": 500858880, + "peak": 515645440, + "anon": 484945920, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8730 + }, + { + "t": 530.1, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502599680, + "peak": 515645440, + "anon": 486674432, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8984 + }, + { + "t": 545.2, + "containers": { + "rallly": { + "limit": 805306368, + "current": 503021568, + "peak": 515645440, + "anon": 486793216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9236 + }, + { + "t": 560.4, + "containers": { + "rallly": { + "limit": 805306368, + "current": 503554048, + "peak": 515645440, + "anon": 487137280, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9492 + }, + { + "t": 575.5, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502059008, + "peak": 515645440, + "anon": 486014976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9752 + }, + { + "t": 590.6, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502214656, + "peak": 515645440, + "anon": 486391808, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171810816, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10010 + }, + { + "t": 605.8, + "containers": { + "rallly": { + "limit": 805306368, + "current": 502538240, + "peak": 515645440, + "anon": 486584320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "rallly-postgres": { + "limit": 268435456, + "current": 171806720, + "peak": 176537600, + "anon": 5513216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10270 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/migration-lines.txt new file mode 100644 index 00000000..d6c8aef2 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/migration-lines.txt @@ -0,0 +1,6 @@ +rallly | Prisma schema loaded from prisma. +rallly | Datasource "db": PostgreSQL database "rallly", schema "public" at "rallly-postgres:5432" +rallly | 153 migrations found in prisma/migrations +rallly | Applying migration `20260620115022_drop_guest_id_columns` +rallly | Applying migration `20260703161929_add_scheduled_event_space_status_start_index` +rallly | Applying migration `20260708131500_normalize_empty_string_time_zones` \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/run.log new file mode 100644 index 00000000..06ed7c0e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/run.log @@ -0,0 +1,61 @@ +[17:04:30] scratch drive folders cleared before FROM (R-656): none existed +[17:04:30] MV-rallly: deploying rallly at FROM {'rallly': 'lukevella/rallly:4.11.1', 'rallly-postgres': 'postgres:18-alpine'} +[17:05:35] FROM settled=True in 36.1s :: {"rallly": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "rallly-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:05:35] fixture: the BOX walk's own (Rallly), through upgrade_boxport +[17:05:36] rallly: sign-up http=200 +[17:05:36] rallly: verify-email with the code http=200 +[17:05:36] rallly: seeded poll drillpoll-58798ef7 (dLWBG8xi50i9) +[17:05:37] rallly: readback of the seeded poll http=200 found=True +[17:05:37] C1 (seed reads back BEFORE): True +[17:05:37] MV-rallly: swapping to TO {'rallly': 'lukevella/rallly:4.15.3', 'rallly-postgres': 'postgres:18-alpine'} +[17:06:08] TO up -d rc=0 +[17:06:44] TO settled=True in 36.1s :: {"rallly": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "rallly-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:06:44] engine state rallly-postgres: 18 +[17:06:44] migration lines observed: 6 +[17:06:46] rallly: readback of the seeded poll http=200 found=True +[17:06:46] RESULT (seed reads back AFTER): True +[17:06:46] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[17:07:01] + 15s rallly=436M/768M peak=444M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=243 +[17:07:17] + 30s rallly=443M/768M peak=454M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=502 +[17:07:32] + 45s rallly=463M/768M peak=464M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=760 +[17:07:47] + 61s rallly=462M/768M peak=474M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1015 +[17:08:02] + 76s rallly=463M/768M peak=474M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1275 +[17:08:17] + 91s rallly=465M/768M peak=475M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1536 +[17:08:32] + 106s rallly=463M/768M peak=475M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=1795 +[17:08:47] + 121s rallly=465M/768M peak=478M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2051 +[17:09:03] + 136s rallly=472M/768M peak=478M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2308 +[17:09:18] + 152s rallly=480M/768M peak=490M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2571 +[17:09:33] + 167s rallly=479M/768M peak=490M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=2832 +[17:09:48] + 182s rallly=481M/768M peak=491M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=3091 +[17:10:03] + 197s rallly=480M/768M peak=491M kills=0 rs=0 rallly-postgres=131M/256M peak=158M kills=0 rs=0 reqs=3346 +[17:10:18] + 212s rallly=452M/768M peak=491M kills=0 rs=0 rallly-postgres=132M/256M peak=158M kills=0 rs=0 reqs=3604 +[17:10:33] + 227s rallly=459M/768M peak=491M kills=0 rs=0 rallly-postgres=132M/256M peak=158M kills=0 rs=0 reqs=3872 +[17:10:49] + 242s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=166M kills=0 rs=0 reqs=4126 +[17:11:04] + 258s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4379 +[17:11:19] + 273s rallly=475M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4633 +[17:11:34] + 288s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=167M kills=0 rs=0 reqs=4887 +[17:11:49] + 303s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5141 +[17:12:04] + 318s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5395 +[17:12:19] + 333s rallly=476M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5651 +[17:12:35] + 348s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=5905 +[17:12:50] + 364s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=164M/256M peak=168M kills=0 rs=0 reqs=6159 +[17:13:05] + 379s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6414 +[17:13:20] + 394s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6669 +[17:13:35] + 409s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=6923 +[17:13:50] + 424s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7183 +[17:14:05] + 439s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7443 +[17:14:21] + 454s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7702 +[17:14:36] + 470s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=7962 +[17:14:51] + 485s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8218 +[17:15:06] + 500s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8474 +[17:15:21] + 515s rallly=477M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8730 +[17:15:36] + 530s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=8984 +[17:15:51] + 545s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9236 +[17:16:07] + 560s rallly=480M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9492 +[17:16:22] + 576s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=9752 +[17:16:37] + 591s rallly=478M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=10010 +[17:16:52] + 606s rallly=479M/768M peak=491M kills=0 rs=0 rallly-postgres=163M/256M peak=168M kills=0 rs=0 reqs=10270 +[17:16:52] memory watch: killed=False tight=[] requests=10271 codes={'200': 10271} +[17:16:52] MV-rallly: ABORT — putting the FROM images back +[17:17:40] rallly: READBACK UNUSABLE — an id that cannot exist answered 500 +[17:17:40] ABORT: app came back in 36.1s; data present=False \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-full.log new file mode 100644 index 00000000..6f7d7680 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-full.log @@ -0,0 +1,154 @@ +rallly | No .env file found, continuing without it +rallly | Loaded Prisma config from prisma.config.ts. +rallly | +rallly | Prisma schema loaded from prisma. +rallly | Datasource "db": PostgreSQL database "rallly", schema "public" at "rallly-postgres:5432" +rallly | +rallly | 153 migrations found in prisma/migrations +rallly | +rallly | Applying migration `20260620115022_drop_guest_id_columns` +rallly | Applying migration `20260703161929_add_scheduled_event_space_status_start_index` +rallly | Applying migration `20260708131500_normalize_empty_string_time_zones` +rallly | Applying migration `20260709104425_enforce_all_day_event_invariants` +rallly | Applying migration `20260710092341_add_poll_closed_reason` +rallly | Applying migration `20260710120000_add_license_idempotency_key` +rallly | Applying migration `20260719000000_add_user_deleted_at` +rallly | Applying migration `20260719120000_add_subscription_discount_columns` +rallly | Applying migration `20260723000000_add_orphaned_anonymous_user_indexes` +rallly | Applying migration `20260729000000_drop_legacy_url_id_columns` +rallly | Applying migration `20260730000000_add_participant_note` +rallly | Applying migration `20260730120000_default_disable_comments_to_true` +rallly | Applying migration `20260731000000_add_space_hide_attribution` +rallly | Applying migration `20260802224313_add_poll_invites_and_activities` +rallly | Applying migration `20260814000000_add_branding_instance_settings` +rallly | Applying migration `20260820130000_add_instance_footer_links` +rallly | Applying migration `20260821000000_add_professional_segment_fields` +rallly | Applying migration `20260828000000_add_space_shared_setting` +rallly | Applying migration `20260831000000_unshare_single_member_spaces` +rallly | Applying migration `20260904150000_backfill_participant_token` +rallly | Applying migration `20260905170000_require_participant_token` +rallly | Applying migration `20260906090000_purge_soft_deleted_participants` +rallly | Applying migration `20260906120000_drop_participant_soft_delete_columns` +rallly | Applying migration `20260930120000_shift_manitoba_winter_times` +rallly | +rallly | The following migration(s) have been applied: +rallly | +rallly | migrations/ +rallly | └─ 20260620115022_drop_guest_id_columns/ +rallly | └─ migration.sql +rallly | └─ 20260703161929_add_scheduled_event_space_status_start_index/ +rallly | └─ migration.sql +rallly | └─ 20260708131500_normalize_empty_string_time_zones/ +rallly | └─ migration.sql +rallly | └─ 20260709104425_enforce_all_day_event_invariants/ +rallly | └─ migration.sql +rallly | └─ 20260710092341_add_poll_closed_reason/ +rallly | └─ migration.sql +rallly | └─ 20260710120000_add_license_idempotency_key/ +rallly | └─ migration.sql +rallly | └─ 20260719000000_add_user_deleted_at/ +rallly | └─ migration.sql +rallly | └─ 20260719120000_add_subscription_discount_columns/ +rallly | └─ migration.sql +rallly | └─ 20260723000000_add_orphaned_anonymous_user_indexes/ +rallly | └─ migration.sql +rallly | └─ 20260729000000_drop_legacy_url_id_columns/ +rallly | └─ migration.sql +rallly | └─ 20260730000000_add_participant_note/ +rallly | └─ migration.sql +rallly | └─ 20260730120000_default_disable_comments_to_true/ +rallly | └─ migration.sql +rallly | └─ 20260731000000_add_space_hide_attribution/ +rallly | └─ migration.sql +rallly | └─ 20260802224313_add_poll_invites_and_activities/ +rallly | └─ migration.sql +rallly | └─ 20260814000000_add_branding_instance_settings/ +rallly | └─ migration.sql +rallly | └─ 20260820130000_add_instance_footer_links/ +rallly | └─ migration.sql +rallly | └─ 20260821000000_add_professional_segment_fields/ +rallly | └─ migration.sql +rallly | └─ 20260828000000_add_space_shared_setting/ +rallly | └─ migration.sql +rallly | └─ 20260831000000_unshare_single_member_spaces/ +rallly | └─ migration.sql +rallly | └─ 20260904150000_backfill_participant_token/ +rallly | └─ migration.sql +rallly | └─ 20260905170000_require_participant_token/ +rallly | └─ migration.sql +rallly | └─ 20260906090000_purge_soft_deleted_participants/ +rallly | └─ migration.sql +rallly | └─ 20260906120000_drop_participant_soft_delete_columns/ +rallly | └─ migration.sql +rallly | └─ 20260930120000_shift_manitoba_winter_times/ +rallly | └─ migration.sql +rallly | +rallly | All migrations have been successfully applied. +rallly | npm notice +rallly | npm notice New major version of npm available! 11.19.0 -> 12.2.0 +rallly | npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0 +rallly | npm notice To update run: npm install -g npm@12.2.0 +rallly | npm notice +rallly | ▲ Next.js 16.3.3 +rallly | - Local: http://localhost:3000 +rallly | - Network: http://0.0.0.0:3000 +rallly | ✓ Ready in 0ms +rallly | ✓ Running next.config took 1.9ms +rallly-postgres | The files belonging to this database system will be owned by user "postgres". +rallly-postgres | This user must also own the server process. +rallly-postgres | +rallly-postgres | The database cluster will be initialized with locale "en_US.utf8". +rallly-postgres | The default database encoding has accordingly been set to "UTF8". +rallly-postgres | The default text search configuration will be set to "english". +rallly-postgres | +rallly-postgres | Data page checksums are enabled. +rallly-postgres | +rallly-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok +rallly-postgres | creating subdirectories ... ok +rallly-postgres | selecting dynamic shared memory implementation ... posix +rallly-postgres | selecting default "max_connections" ... 100 +rallly-postgres | selecting default "shared_buffers" ... 128MB +rallly-postgres | selecting default time zone ... Europe/Budapest +rallly-postgres | creating configuration files ... ok +rallly-postgres | running bootstrap script ... ok +rallly-postgres | sh: locale: not found +rallly-postgres | 2026-09-30 19:04:49.641 CEST [40] WARNING: no usable system locales were found +rallly-postgres | performing post-bootstrap initialization ... ok +rallly-postgres | initdb: warning: enabling "trust" authentication for local connections +rallly-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +rallly-postgres | syncing data to disk ... ok +rallly-postgres | +rallly-postgres | +rallly-postgres | Success. You can now start the database server using: +rallly-postgres | +rallly-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start +rallly-postgres | +rallly-postgres | waiting for server to start....2026-09-30 19:04:50.449 CEST [46] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +rallly-postgres | 2026-09-30 19:04:50.452 CEST [46] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +rallly-postgres | 2026-09-30 19:04:50.463 CEST [52] LOG: database system was shut down at 2026-09-30 19:04:50 CEST +rallly-postgres | 2026-09-30 19:04:50.471 CEST [46] LOG: database system is ready to accept connections +rallly-postgres | done +rallly-postgres | server started +rallly-postgres | CREATE DATABASE +rallly-postgres | +rallly-postgres | +rallly-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +rallly-postgres | +rallly-postgres | waiting for server to shut down....2026-09-30 19:04:50.650 CEST [46] LOG: received fast shutdown request +rallly-postgres | 2026-09-30 19:04:50.654 CEST [46] LOG: aborting any active transactions +rallly-postgres | 2026-09-30 19:04:50.658 CEST [46] LOG: background worker "logical replication launcher" (PID 55) exited with exit code 1 +rallly-postgres | 2026-09-30 19:04:50.658 CEST [50] LOG: shutting down +rallly-postgres | 2026-09-30 19:04:50.661 CEST [50] LOG: checkpoint starting: shutdown immediate +rallly-postgres | 2026-09-30 19:04:50.745 CEST [50] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.025 s, sync=0.047 s, total=0.087 s; sync files=303, longest=0.015 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858 +rallly-postgres | 2026-09-30 19:04:50.776 CEST [46] LOG: database system is shut down +rallly-postgres | done +rallly-postgres | server stopped +rallly-postgres | +rallly-postgres | PostgreSQL init process complete; ready for start up. +rallly-postgres | +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +rallly-postgres | 2026-09-30 19:04:50.898 CEST [1] LOG: listening on IPv6 address "::", port 5432 +rallly-postgres | 2026-09-30 19:04:50.903 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +rallly-postgres | 2026-09-30 19:04:50.913 CEST [68] LOG: database system was shut down at 2026-09-30 19:04:50 CEST +rallly-postgres | 2026-09-30 19:04:50.921 CEST [1] LOG: database system is ready to accept connections diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-states.json new file mode 100644 index 00000000..3fec1edc --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/to-states.json @@ -0,0 +1,14 @@ +{ + "rallly": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "rallly-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/verdict.json new file mode 100644 index 00000000..8962e860 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/verdict.json @@ -0,0 +1,72 @@ +{ + "harness_version": 4, + "edge": "MV-rallly", + "app": "rallly", + "note": "night 2026-09-23 within-a-major move: rallly=lukevella/rallly:4.15.3", + "from": { + "rallly": "lukevella/rallly:4.11.1", + "rallly-postgres": "postgres:18-alpine" + }, + "to": { + "rallly": "lukevella/rallly:4.15.3", + "rallly-postgres": "postgres:18-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Krallly | Prisma schema loaded from prisma.", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": { + "rallly-postgres": { + "image": "postgres:18-alpine", + "probe": "datadir major version", + "answer": "18", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.1, + "requested_s": 600, + "requests": 10271, + "codes": { + "200": 10271 + }, + "first_kill": null, + "containers": { + "rallly": { + "limit": 805306368, + "peak": 515645440, + "peak_pct": 0.64, + "anon_peak_sampled": 488271872, + "anon_peak_pct": 0.606, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "rallly-postgres": { + "limit": 268435456, + "peak": 176537600, + "peak_pct": 0.658, + "anon_peak_sampled": 5513216, + "anon_peak_pct": 0.021, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 36.1, + "measured_at": "2026-09-30T17:17:40Z", + "evidence": "evidence/MV-rallly", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 790.5 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/MV-uptime-kuma.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/MV-uptime-kuma.log new file mode 100644 index 00000000..39ad6dbb --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/MV-uptime-kuma.log @@ -0,0 +1,110 @@ +[16:38:05] scratch drive folders cleared before FROM (R-656): none existed +[16:38:05] MV-uptime-kuma: deploying uptime-kuma at FROM {'uptime-kuma': 'louislam/uptime-kuma:2.4.0'} +[16:39:10] FROM settled=True in 30.8s :: {"uptime-kuma": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:39:10] fixture: the BOX walk's own (UptimeKuma), through upgrade_boxport +[16:39:10] uptime-kuma: setup ok=True successAdded +[16:39:11] uptime-kuma: addStatusPage ok=True successAdded +[16:39:11] uptime-kuma: readback of the seeded status page http=200 found=True +[16:39:11] C1 (seed reads back BEFORE): True +[16:39:11] MV-uptime-kuma: swapping to TO {'uptime-kuma': 'louislam/uptime-kuma:2.5.5'} +[16:39:28] TO up -d rc=0 +[16:39:59] TO settled=True in 30.8s :: {"uptime-kuma": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:39:59] migration lines observed: 0 +[16:39:59] uptime-kuma: readback of the seeded status page http=200 found=True +[16:39:59] RESULT (seed reads back AFTER): True +[16:39:59] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3001 +[16:40:14] + 15s uptime-kuma=115M/256M peak=118M kills=0 rs=0 reqs=300 +[16:40:29] + 30s uptime-kuma=118M/256M peak=121M kills=0 rs=0 reqs=600 +[16:40:45] + 45s uptime-kuma=121M/256M peak=121M kills=0 rs=0 reqs=900 +[16:41:00] + 60s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=1196 +[16:41:15] + 76s uptime-kuma=121M/256M peak=125M kills=0 rs=0 reqs=1496 +[16:41:30] + 91s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=1796 +[16:41:45] + 106s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2096 +[16:42:00] + 121s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2396 +[16:42:15] + 136s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2692 +[16:42:30] + 151s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=2992 +[16:42:45] + 166s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=3292 +[16:43:01] + 181s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=3592 +[16:43:16] + 196s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=3892 +[16:43:31] + 212s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=4188 +[16:43:46] + 227s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=4488 +[16:44:01] + 242s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=4788 +[16:44:16] + 257s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=5088 +[16:44:31] + 272s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=5388 +[16:44:46] + 287s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=5688 +[16:45:01] + 302s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=5988 +[16:45:17] + 317s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6284 +[16:45:32] + 332s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6584 +[16:45:47] + 348s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6884 +[16:46:02] + 363s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7184 +[16:46:17] + 378s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7484 +[16:46:32] + 393s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7784 +[16:46:47] + 408s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8080 +[16:47:02] + 423s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8380 +[16:47:17] + 438s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8680 +[16:47:33] + 453s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8980 +[16:47:48] + 468s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9280 +[16:48:03] + 484s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9580 +[16:48:18] + 499s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9880 +[16:48:33] + 514s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=10180 +[16:48:48] + 529s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=10476 +[16:49:03] + 544s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=10776 +[16:49:18] + 559s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11076 +[16:49:34] + 574s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11376 +[16:49:49] + 590s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11676 +[16:50:04] + 605s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11976 +[16:50:04] memory watch: killed=False tight=[] requests=11976 codes={'302': 11976} +[16:50:04] MV-uptime-kuma: ABORT — putting the FROM images back +[16:50:40] uptime-kuma: readback of the seeded status page http=200 found=True +[16:50:40] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 4, + "edge": "MV-uptime-kuma", + "app": "uptime-kuma", + "note": "night 2026-09-23 within-a-major move: uptime-kuma=louislam/uptime-kuma:2.5.5", + "from": { + "uptime-kuma": "louislam/uptime-kuma:2.4.0" + }, + "to": { + "uptime-kuma": "louislam/uptime-kuma:2.5.5" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11976, + "codes": { + "302": 11976 + }, + "first_kill": null, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "peak": 133279744, + "peak_pct": 0.497, + "anon_peak_sampled": 116269056, + "anon_peak_pct": 0.433, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:50:40Z", + "evidence": "evidence/MV-uptime-kuma", + "scratch_cleared": [], + "files_changed": [], + "total_s": 754.8 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/abort-states.json new file mode 100644 index 00000000..3904ee7d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/abort-states.json @@ -0,0 +1,8 @@ +{ + "uptime-kuma": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/compose-final.log new file mode 100644 index 00000000..408b41da --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/compose-final.log @@ -0,0 +1,18 @@ +uptime-kuma | Welcome to Uptime Kuma +uptime-kuma | Your Node.js version: 22.22.3 +uptime-kuma | 2026-09-30T18:50:09+02:00 [SERVER] INFO: Env: production +uptime-kuma | 2026-09-30T18:50:09+02:00 [SERVER] INFO: Uptime Kuma Version: 2.4.0 +uptime-kuma | 2026-09-30T18:50:09+02:00 [SERVER] INFO: Loading modules +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: Creating express and socket.io instance +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: Server Type: HTTP +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: Data Dir: ./data/ +uptime-kuma | 2026-09-30T18:50:11+02:00 [SETUP-DATABASE] INFO: UPTIME_KUMA_DB_TYPE is provided by env, try to override db-config.json +uptime-kuma | 2026-09-30T18:50:11+02:00 [DB] INFO: Database Type: sqlite +uptime-kuma | 2026-09-30T18:50:11+02:00 [DB] INFO: Using single connection for SQLite +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: Connected to the database +uptime-kuma | 2026-09-30T18:50:11+02:00 [DB] WARN: The migration directory is corrupt, the following files are missing: 2026-03-27-0000-add-ntp-monitor.js, 2026-06-19-1411-add-rybbit-analytics-type.js, 2026-06-19-1412-analytics-type-to-string.js, 2026-07-22-0000-fix-stat-daily-overflow.js, 2026-08-07-0000-add-sftp-monitor.js, 2026-08-18-0000-sqlite-only-drop-analytics-type-check.js +uptime-kuma | 2026-09-30T18:50:11+02:00 [DB] WARN: Database migration failed, you may be downgrading Uptime Kuma. +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVICES] INFO: Starting nscd +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: Listening on: +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: - http://localhost:3001 +uptime-kuma | 2026-09-30T18:50:11+02:00 [SERVER] INFO: - http://172.18.0.2:3001 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/memory-samples.json new file mode 100644 index 00000000..70ddca8a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 121561088, + "peak": 123920384, + "anon": 109092864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.2, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 124477440, + "peak": 126881792, + "anon": 111849472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 600 + }, + { + "t": 45.3, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 127541248, + "peak": 127549440, + "anon": 114360320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 900 + }, + { + "t": 60.4, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 127954944, + "peak": 131072000, + "anon": 115179520, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1196 + }, + { + "t": 75.6, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 127709184, + "peak": 131072000, + "anon": 115200000, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1496 + }, + { + "t": 90.7, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128348160, + "peak": 131477504, + "anon": 115380224, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1796 + }, + { + "t": 105.8, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129155072, + "peak": 131477504, + "anon": 115896320, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2096 + }, + { + "t": 120.9, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129245184, + "peak": 131477504, + "anon": 115982336, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2396 + }, + { + "t": 136.0, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129052672, + "peak": 131477504, + "anon": 115990528, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2692 + }, + { + "t": 151.1, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128319488, + "peak": 131477504, + "anon": 115077120, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2992 + }, + { + "t": 166.2, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129126400, + "peak": 131477504, + "anon": 116019200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3292 + }, + { + "t": 181.3, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128888832, + "peak": 131477504, + "anon": 116056064, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3592 + }, + { + "t": 196.5, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129503232, + "peak": 131477504, + "anon": 116183040, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3892 + }, + { + "t": 211.6, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128499712, + "peak": 132161536, + "anon": 115716096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4188 + }, + { + "t": 226.7, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128856064, + "peak": 132161536, + "anon": 115716096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4488 + }, + { + "t": 241.8, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129048576, + "peak": 132161536, + "anon": 115752960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4788 + }, + { + "t": 256.9, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128929792, + "peak": 132161536, + "anon": 116031488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5088 + }, + { + "t": 272.0, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129495040, + "peak": 132161536, + "anon": 116031488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5388 + }, + { + "t": 287.1, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 128868352, + "peak": 132161536, + "anon": 116035584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5688 + }, + { + "t": 302.3, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129789952, + "peak": 132411392, + "anon": 116039680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5988 + }, + { + "t": 317.4, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129306624, + "peak": 132411392, + "anon": 116039680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6284 + }, + { + "t": 332.5, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129048576, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6584 + }, + { + "t": 347.6, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129126400, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6884 + }, + { + "t": 362.7, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129064960, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7184 + }, + { + "t": 377.8, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129552384, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7484 + }, + { + "t": 392.9, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129794048, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7784 + }, + { + "t": 408.1, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129208320, + "peak": 132411392, + "anon": 116248576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8080 + }, + { + "t": 423.2, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129052672, + "peak": 132411392, + "anon": 116260864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8380 + }, + { + "t": 438.3, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129576960, + "peak": 132411392, + "anon": 116260864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8680 + }, + { + "t": 453.4, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129073152, + "peak": 133042176, + "anon": 116260864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8980 + }, + { + "t": 468.5, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129576960, + "peak": 133042176, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9280 + }, + { + "t": 483.7, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129298432, + "peak": 133042176, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9580 + }, + { + "t": 498.8, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129069056, + "peak": 133042176, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9880 + }, + { + "t": 513.9, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129572864, + "peak": 133042176, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10180 + }, + { + "t": 529.0, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129277952, + "peak": 133042176, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10476 + }, + { + "t": 544.1, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129060864, + "peak": 133279744, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10776 + }, + { + "t": 559.2, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129536000, + "peak": 133279744, + "anon": 116269056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11076 + }, + { + "t": 574.4, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129413120, + "peak": 133279744, + "anon": 116133888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11376 + }, + { + "t": 589.5, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129441792, + "peak": 133279744, + "anon": 116133888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11676 + }, + { + "t": 604.6, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "current": 129437696, + "peak": 133279744, + "anon": 116133888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11976 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/run.log new file mode 100644 index 00000000..63cde907 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/run.log @@ -0,0 +1,59 @@ +[16:38:05] scratch drive folders cleared before FROM (R-656): none existed +[16:38:05] MV-uptime-kuma: deploying uptime-kuma at FROM {'uptime-kuma': 'louislam/uptime-kuma:2.4.0'} +[16:39:10] FROM settled=True in 30.8s :: {"uptime-kuma": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:39:10] fixture: the BOX walk's own (UptimeKuma), through upgrade_boxport +[16:39:10] uptime-kuma: setup ok=True successAdded +[16:39:11] uptime-kuma: addStatusPage ok=True successAdded +[16:39:11] uptime-kuma: readback of the seeded status page http=200 found=True +[16:39:11] C1 (seed reads back BEFORE): True +[16:39:11] MV-uptime-kuma: swapping to TO {'uptime-kuma': 'louislam/uptime-kuma:2.5.5'} +[16:39:28] TO up -d rc=0 +[16:39:59] TO settled=True in 30.8s :: {"uptime-kuma": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:39:59] migration lines observed: 0 +[16:39:59] uptime-kuma: readback of the seeded status page http=200 found=True +[16:39:59] RESULT (seed reads back AFTER): True +[16:39:59] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3001 +[16:40:14] + 15s uptime-kuma=115M/256M peak=118M kills=0 rs=0 reqs=300 +[16:40:29] + 30s uptime-kuma=118M/256M peak=121M kills=0 rs=0 reqs=600 +[16:40:45] + 45s uptime-kuma=121M/256M peak=121M kills=0 rs=0 reqs=900 +[16:41:00] + 60s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=1196 +[16:41:15] + 76s uptime-kuma=121M/256M peak=125M kills=0 rs=0 reqs=1496 +[16:41:30] + 91s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=1796 +[16:41:45] + 106s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2096 +[16:42:00] + 121s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2396 +[16:42:15] + 136s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=2692 +[16:42:30] + 151s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=2992 +[16:42:45] + 166s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=3292 +[16:43:01] + 181s uptime-kuma=122M/256M peak=125M kills=0 rs=0 reqs=3592 +[16:43:16] + 196s uptime-kuma=123M/256M peak=125M kills=0 rs=0 reqs=3892 +[16:43:31] + 212s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=4188 +[16:43:46] + 227s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=4488 +[16:44:01] + 242s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=4788 +[16:44:16] + 257s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=5088 +[16:44:31] + 272s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=5388 +[16:44:46] + 287s uptime-kuma=122M/256M peak=126M kills=0 rs=0 reqs=5688 +[16:45:01] + 302s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=5988 +[16:45:17] + 317s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6284 +[16:45:32] + 332s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6584 +[16:45:47] + 348s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=6884 +[16:46:02] + 363s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7184 +[16:46:17] + 378s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7484 +[16:46:32] + 393s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=7784 +[16:46:47] + 408s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8080 +[16:47:02] + 423s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8380 +[16:47:17] + 438s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8680 +[16:47:33] + 453s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=8980 +[16:47:48] + 468s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9280 +[16:48:03] + 484s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9580 +[16:48:18] + 499s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=9880 +[16:48:33] + 514s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=10180 +[16:48:48] + 529s uptime-kuma=123M/256M peak=126M kills=0 rs=0 reqs=10476 +[16:49:03] + 544s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=10776 +[16:49:18] + 559s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11076 +[16:49:34] + 574s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11376 +[16:49:49] + 590s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11676 +[16:50:04] + 605s uptime-kuma=123M/256M peak=127M kills=0 rs=0 reqs=11976 +[16:50:04] memory watch: killed=False tight=[] requests=11976 codes={'302': 11976} +[16:50:04] MV-uptime-kuma: ABORT — putting the FROM images back +[16:50:40] uptime-kuma: readback of the seeded status page http=200 found=True +[16:50:40] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-full.log new file mode 100644 index 00000000..eb243529 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-full.log @@ -0,0 +1,16 @@ +uptime-kuma | Welcome to Uptime Kuma +uptime-kuma | Your Node.js version: 22.22.3 +uptime-kuma | 2026-09-30T18:39:28+02:00 [SERVER] INFO: Env: production +uptime-kuma | 2026-09-30T18:39:28+02:00 [SERVER] INFO: Uptime Kuma Version: 2.5.5 +uptime-kuma | 2026-09-30T18:39:28+02:00 [SERVER] INFO: Loading modules +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: Creating express and socket.io instance +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: Server Type: HTTP +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: Data Dir: ./data/ +uptime-kuma | 2026-09-30T18:39:30+02:00 [SETUP-DATABASE] INFO: UPTIME_KUMA_DB_TYPE is provided by env, try to override db-config.json +uptime-kuma | 2026-09-30T18:39:30+02:00 [DB] INFO: Database Type: sqlite +uptime-kuma | 2026-09-30T18:39:30+02:00 [DB] INFO: Using single connection for SQLite +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: Connected to the database +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVICES] INFO: Starting nscd +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: Listening on: +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: - http://localhost:3001 +uptime-kuma | 2026-09-30T18:39:30+02:00 [SERVER] INFO: - http://172.18.0.2:3001 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-states.json new file mode 100644 index 00000000..3904ee7d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/to-states.json @@ -0,0 +1,8 @@ +{ + "uptime-kuma": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/verdict.json new file mode 100644 index 00000000..e17b32c8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/uptime-kuma/bench/evidence/MV-uptime-kuma/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 4, + "edge": "MV-uptime-kuma", + "app": "uptime-kuma", + "note": "night 2026-09-23 within-a-major move: uptime-kuma=louislam/uptime-kuma:2.5.5", + "from": { + "uptime-kuma": "louislam/uptime-kuma:2.4.0" + }, + "to": { + "uptime-kuma": "louislam/uptime-kuma:2.5.5" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11976, + "codes": { + "302": 11976 + }, + "first_kill": null, + "containers": { + "uptime-kuma": { + "limit": 268435456, + "peak": 133279744, + "peak_pct": 0.497, + "anon_peak_sampled": 116269056, + "anon_peak_pct": 0.433, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:50:40Z", + "evidence": "evidence/MV-uptime-kuma", + "scratch_cleared": [], + "files_changed": [], + "total_s": 754.8 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/MV-wger.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/MV-wger.log new file mode 100644 index 00000000..169d53e2 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/MV-wger.log @@ -0,0 +1,111 @@ +[16:12:01] scratch drive folders cleared before FROM (R-656): none existed +[16:12:01] MV-wger: deploying wger at FROM {'wger': 'wger/server:2.6'} +[16:13:04] FROM settled=True in 61.7s :: {"wger": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:13:04] fixture: the BOX walk's own (Wger), through upgrade_boxport +[16:13:05] wger: the generated admin password does not log in (POST /en/user/login -> 200) — running the template's own after_install command (the app's CLI, as the product does after an install) +[16:13:07] wger: after_install :: ersion 8.3.1, blocking by ip_address FELHOM_AFTER_INSTALL_OK +[16:13:07] wger: POST /api/v2/weightentry/ http=201 +[16:13:08] wger: readback of the seeded weight entry http=200 found=True +[16:13:08] C1 (seed reads back BEFORE): True +[16:13:08] MV-wger: swapping to TO {'wger': 'wger/server:2.7'} +[16:13:44] TO up -d rc=0 +[16:14:15] TO settled=True in 30.8s :: {"wger": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:14:15] migration lines observed: 6 +[16:14:16] wger: readback of the seeded weight entry http=200 found=True +[16:14:16] RESULT (seed reads back AFTER): True +[16:14:17] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8000 +[16:14:32] + 15s wger=202M/384M peak=301M kills=0 rs=0 reqs=288 +[16:14:47] + 30s wger=203M/384M peak=301M kills=0 rs=0 reqs=572 +[16:15:02] + 45s wger=203M/384M peak=301M kills=0 rs=0 reqs=859 +[16:15:17] + 60s wger=203M/384M peak=301M kills=0 rs=0 reqs=1148 +[16:15:32] + 76s wger=203M/384M peak=301M kills=0 rs=0 reqs=1432 +[16:15:47] + 91s wger=203M/384M peak=301M kills=0 rs=0 reqs=1718 +[16:16:02] + 106s wger=203M/384M peak=301M kills=0 rs=0 reqs=2004 +[16:16:17] + 121s wger=204M/384M peak=301M kills=0 rs=0 reqs=2290 +[16:16:33] + 136s wger=204M/384M peak=301M kills=0 rs=0 reqs=2576 +[16:16:48] + 151s wger=204M/384M peak=301M kills=0 rs=0 reqs=2864 +[16:17:03] + 166s wger=204M/384M peak=301M kills=0 rs=0 reqs=3150 +[16:17:18] + 181s wger=204M/384M peak=301M kills=0 rs=0 reqs=3438 +[16:17:33] + 196s wger=204M/384M peak=301M kills=0 rs=0 reqs=3726 +[16:17:48] + 212s wger=204M/384M peak=301M kills=0 rs=0 reqs=4012 +[16:18:03] + 227s wger=204M/384M peak=301M kills=0 rs=0 reqs=4296 +[16:18:18] + 242s wger=204M/384M peak=301M kills=0 rs=0 reqs=4584 +[16:18:34] + 257s wger=204M/384M peak=301M kills=0 rs=0 reqs=4869 +[16:18:49] + 272s wger=204M/384M peak=301M kills=0 rs=0 reqs=5156 +[16:19:04] + 287s wger=204M/384M peak=301M kills=0 rs=0 reqs=5440 +[16:19:19] + 302s wger=205M/384M peak=301M kills=0 rs=0 reqs=5726 +[16:19:34] + 318s wger=205M/384M peak=301M kills=0 rs=0 reqs=6014 +[16:19:49] + 333s wger=206M/384M peak=301M kills=0 rs=0 reqs=6300 +[16:20:04] + 348s wger=206M/384M peak=301M kills=0 rs=0 reqs=6586 +[16:20:19] + 363s wger=206M/384M peak=301M kills=0 rs=0 reqs=6874 +[16:20:34] + 378s wger=206M/384M peak=301M kills=0 rs=0 reqs=7160 +[16:20:50] + 393s wger=206M/384M peak=301M kills=0 rs=0 reqs=7448 +[16:21:05] + 408s wger=207M/384M peak=301M kills=0 rs=0 reqs=7736 +[16:21:20] + 423s wger=206M/384M peak=301M kills=0 rs=0 reqs=8022 +[16:21:35] + 438s wger=206M/384M peak=301M kills=0 rs=0 reqs=8306 +[16:21:50] + 454s wger=206M/384M peak=301M kills=0 rs=0 reqs=8592 +[16:22:05] + 469s wger=206M/384M peak=301M kills=0 rs=0 reqs=8880 +[16:22:20] + 484s wger=207M/384M peak=301M kills=0 rs=0 reqs=9166 +[16:22:35] + 499s wger=206M/384M peak=301M kills=0 rs=0 reqs=9455 +[16:22:51] + 514s wger=206M/384M peak=301M kills=0 rs=0 reqs=9743 +[16:23:06] + 529s wger=207M/384M peak=301M kills=0 rs=0 reqs=10034 +[16:23:21] + 544s wger=206M/384M peak=301M kills=0 rs=0 reqs=10320 +[16:23:36] + 559s wger=206M/384M peak=301M kills=0 rs=0 reqs=10608 +[16:23:51] + 574s wger=207M/384M peak=301M kills=0 rs=0 reqs=10894 +[16:24:06] + 590s wger=207M/384M peak=301M kills=0 rs=0 reqs=11179 +[16:24:21] + 605s wger=206M/384M peak=301M kills=0 rs=0 reqs=11467 +[16:24:21] memory watch: killed=False tight=[] requests=11467 codes={'302': 11467} +[16:24:21] MV-wger: ABORT — putting the FROM images back +[16:25:03] wger: login failed: POST /en/user/login -> 500 +[16:25:03] ABORT: app came back in 30.9s; data present=False +{ + "harness_version": 4, + "edge": "MV-wger", + "app": "wger", + "note": "night 2026-09-23 within-a-major move: wger=wger/server:2.7", + "from": { + "wger": "wger/server:2.6" + }, + "to": { + "wger": "wger/server:2.7" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kwger | Performing database migrations", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11467, + "codes": { + "302": 11467 + }, + "first_kill": null, + "containers": { + "wger": { + "limit": 402653184, + "peak": 316538880, + "peak_pct": 0.786, + "anon_peak_sampled": 200527872, + "anon_peak_pct": 0.498, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:25:03Z", + "evidence": "evidence/MV-wger", + "scratch_cleared": [], + "files_changed": [], + "total_s": 781.9 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/abort-states.json new file mode 100644 index 00000000..2e9c052e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/abort-states.json @@ -0,0 +1,8 @@ +{ + "wger": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/compose-final.log new file mode 100644 index 00000000..97d7bc2b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/compose-final.log @@ -0,0 +1,362 @@ +wger | *** Using settings from env: settings.main +wger | /home/wger/src/settings/main.py:123: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:24:34,166 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | Performing database migrations +wger | /home/wger/src/settings/main.py:123: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:24:35,650 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | Operations to perform: +wger | Apply all migrations: account, actstream, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight +wger | Running migrations: +wger | No migrations to apply. +wger | Your models in app(s): 'exercises', 'gallery', 'manager', 'weight' have changes that are not yet reflected in a migration, and so won't be applied. +wger | Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. +wger | /home/wger/src/settings/main.py:123: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:24:38,517 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | Set site URL to fitness.gate.invalid +wger | Using django's development server on port 8000... +wger | /home/wger/src/settings/main.py:123: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:24:40,442 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | /home/wger/src/settings/main.py:123: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:24:41,546 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | level=INFO ts=2026-09-30 18:24:41,558 module=autoreload path=/home/wger/.local/lib/python3.12/site-packages/django/utils/autoreload.py line=681 message=Watching for file changes with StatReloader +wger | Performing system checks... +wger | +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | +wger | System check identified 1 issue (0 silenced). +wger | September 30, 2026 - 18:24:42 +wger | Django version 6.0.6, using settings 'settings.main' +wger | Starting development server at http://0.0.0.0:8000/ +wger | Quit the server with CONTROL-C. +wger | +wger | WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead. +wger | For more information on production servers see: https://docs.djangoproject.com/en/6.0/howto/deployment/ +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/workout-manager.css. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/bootstrap-custom.css. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | [30/Sep/2026 18:25:02] "HEAD / HTTP/1.1" 302 0 +wger | [30/Sep/2026 18:25:02] "HEAD /en/ HTTP/1.1" 302 0 +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font.svg. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/landing_page.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/bootstrap/dist/js/bootstrap.bundle.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/@popperjs/core/dist/umd/popper.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/language.js. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/hero.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/hero.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-1.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-1.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-2.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-2.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-3.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-3.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/community.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/community.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/dumbbell.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/code.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/fork.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font-inverse.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/bg.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ca.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/cs.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/de.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/el.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-au.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-gb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ar.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-co.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-mx.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ni.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ve.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/fr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/he.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/hr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/it.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ko.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/mk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt-br.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ro.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ru.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sv.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ta.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/th.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/tr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/uk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hans.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hant.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/play-store/badge.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/app-store/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/flathub/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/fdroid/get-it-on.svg. This is expected in some node packages. +wger | [30/Sep/2026 18:25:03] "HEAD /en/software/features HTTP/1.1" 200 0 +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | Can't find name for static file reference: css/workout-manager.css. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/bootstrap-custom.css. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.min.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/@wger-project/react-components/build/assets/index.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/language-menu.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/bootstrap/dist/js/bootstrap.bundle.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/htmx.org/dist/htmx.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/@popperjs/core/dist/umd/popper.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/nutrition.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/language.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/@wger-project/react-components/build/main.js. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-bg-white.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/play-store/badge.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/app-store/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/flathub/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/bg.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ca.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/cs.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/de.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/el.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-au.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-gb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ar.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-co.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-mx.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ni.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ve.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/fr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/he.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/hr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/it.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ko.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/mk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt-br.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ro.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ru.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sv.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ta.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/th.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/tr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/uk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hans.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hant.svg. This is expected in some node packages. +wger | Can't find name for static file reference: mfa/js/webauthn-json.js. This is expected in some node packages. +wger | Can't find name for static file reference: mfa/js/webauthn.js. This is expected in some node packages. +wger | Can't find name for static file reference: account/js/onload.js. This is expected in some node packages. +wger | [30/Sep/2026 18:25:03] "GET /en/user/login HTTP/1.1" 200 39578 +wger | level=WARNING ts=2026-09-30 18:25:03,710 module=log path=/home/wger/.local/lib/python3.12/site-packages/django/utils/log.py line=249 message=Forbidden: /api/v2/weightentry/ +wger | [30/Sep/2026 18:25:03] "GET /api/v2/weightentry/?weight=103.92 HTTP/1.1" 403 58 +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | Can't find name for static file reference: css/workout-manager.css. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/bootstrap-custom.css. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.min.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/@wger-project/react-components/build/assets/index.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/language-menu.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/bootstrap/dist/js/bootstrap.bundle.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/htmx.org/dist/htmx.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/@popperjs/core/dist/umd/popper.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/nutrition.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/language.js. This is expected in some node packages. +wger | Can't find name for static file reference: node/@wger-project/react-components/build/main.js. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-bg-white.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/play-store/badge.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/app-store/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/flathub/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/bg.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ca.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/cs.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/de.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/el.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-au.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-gb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ar.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-co.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-mx.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ni.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ve.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/fr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/he.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/hr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/it.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ko.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/mk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt-br.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ro.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ru.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sv.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ta.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/th.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/tr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/uk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hans.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hant.svg. This is expected in some node packages. +wger | Can't find name for static file reference: mfa/js/webauthn-json.js. This is expected in some node packages. +wger | Can't find name for static file reference: mfa/js/webauthn.js. This is expected in some node packages. +wger | Can't find name for static file reference: account/js/onload.js. This is expected in some node packages. +wger | [30/Sep/2026 18:25:03] "GET /en/user/login HTTP/1.1" 200 39578 +wger | Can't find name for static file reference: fontawesomefree/css/all.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/workout-manager.css. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/bootstrap-custom.css. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | level=ERROR ts=2026-09-30 18:25:03,822 module=log path=/home/wger/.local/lib/python3.12/site-packages/django/utils/log.py line=249 message=Internal Server Error: /en/user/login +wger | Traceback (most recent call last): +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/hashers.py", line 231, in _load_library +wger | module = importlib.import_module(mod_path) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module +wger | return _bootstrap._gcd_import(name[level:], package, level) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "", line 1387, in _gcd_import +wger | File "", line 1360, in _find_and_load +wger | File "", line 1324, in _find_and_load_unlocked +wger | ModuleNotFoundError: No module named 'argon2' +wger | +wger | During handling of the above exception, another exception occurred: +wger | +wger | Traceback (most recent call last): +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner +wger | response = get_response(request) +wger | ^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/core/handlers/base.py", line 198, in _get_response +wger | response = wrapped_callback(request, *callback_args, **callback_kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/generic/base.py", line 106, in view +wger | return self.dispatch(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/src/wger/core/views/user.py", line 773, in dispatch +wger | return super().dispatch(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/decorators.py", line 16, in wrap +wger | resp = function(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/decorators/debug.py", line 143, in sensitive_post_parameters_wrapper +wger | return view(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper +wger | response = view_func(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/views.py", line 108, in dispatch +wger | return super().dispatch(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper +wger | return bound_method(*args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper +wger | response = view_func(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/mixins.py", line 57, in dispatch +wger | response = super().dispatch(request, *args, **kwargs) # type:ignore[misc] +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/generic/base.py", line 145, in dispatch +wger | return handler(request, *args, **kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/mixins.py", line 106, in post +wger | if form.is_valid(): +wger | ^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/forms/forms.py", line 206, in is_valid +wger | return self.is_bound and not self.errors +wger | ^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/forms/forms.py", line 201, in errors +wger | self.full_clean() +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/forms/forms.py", line 338, in full_clean +wger | self._clean_form() +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/forms/forms.py", line 354, in _clean_form +wger | cleaned_data = self.clean() +wger | ^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/forms.py", line 186, in clean +wger | return self._clean_with_password(credentials) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/forms.py", line 216, in _clean_with_password +wger | user = adapter.authenticate(self.request, **credentials) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/allauth/account/adapter.py", line 798, in authenticate +wger | user: AbstractBaseUser | None = authenticate(request, **credentials) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/views/decorators/debug.py", line 75, in sensitive_variables_wrapper +wger | return func(*func_args, **func_kwargs) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/__init__.py", line 114, in authenticate +wger | user = backend.authenticate(request, **credentials) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/backends.py", line 71, in authenticate +wger | if user.check_password(password) and self.user_can_authenticate(user): +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/base_user.py", line 109, in check_password +wger | return check_password(raw_password, self.password, setter) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/hashers.py", line 83, in check_password +wger | is_correct, must_update = verify_password(password, encoded, preferred=preferred) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/hashers.py", line 63, in verify_password +wger | is_correct = hasher.verify(password, encoded) +wger | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/hashers.py", line 439, in verify +wger | argon2 = self._load_library() +wger | ^^^^^^^^^^^^^^^^^^^^ +wger | File "/home/wger/.local/lib/python3.12/site-packages/django/contrib/auth/hashers.py", line 233, in _load_library +wger | raise ValueError( +wger | ValueError: Couldn't load 'Argon2PasswordHasher' algorithm library: No module named 'argon2' +wger | [30/Sep/2026 18:25:03] "POST /en/user/login HTTP/1.1" 500 2799 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/memory-samples.json new file mode 100644 index 00000000..c56c98d6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "wger": { + "limit": 402653184, + "current": 212246528, + "peak": 316538880, + "anon": 198144000, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 288 + }, + { + "t": 30.2, + "containers": { + "wger": { + "limit": 402653184, + "current": 213479424, + "peak": 316538880, + "anon": 198975488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 572 + }, + { + "t": 45.3, + "containers": { + "wger": { + "limit": 402653184, + "current": 213708800, + "peak": 316538880, + "anon": 199008256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 859 + }, + { + "t": 60.5, + "containers": { + "wger": { + "limit": 402653184, + "current": 213774336, + "peak": 316538880, + "anon": 199188480, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1148 + }, + { + "t": 75.6, + "containers": { + "wger": { + "limit": 402653184, + "current": 213782528, + "peak": 316538880, + "anon": 199204864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1432 + }, + { + "t": 90.7, + "containers": { + "wger": { + "limit": 402653184, + "current": 213815296, + "peak": 316538880, + "anon": 199610368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1718 + }, + { + "t": 105.8, + "containers": { + "wger": { + "limit": 402653184, + "current": 213504000, + "peak": 316538880, + "anon": 199680000, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2004 + }, + { + "t": 120.9, + "containers": { + "wger": { + "limit": 402653184, + "current": 214253568, + "peak": 316538880, + "anon": 200011776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2290 + }, + { + "t": 136.0, + "containers": { + "wger": { + "limit": 402653184, + "current": 214339584, + "peak": 316538880, + "anon": 200011776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2576 + }, + { + "t": 151.2, + "containers": { + "wger": { + "limit": 402653184, + "current": 214749184, + "peak": 316538880, + "anon": 200011776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2864 + }, + { + "t": 166.3, + "containers": { + "wger": { + "limit": 402653184, + "current": 214249472, + "peak": 316538880, + "anon": 200011776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3150 + }, + { + "t": 181.4, + "containers": { + "wger": { + "limit": 402653184, + "current": 214753280, + "peak": 316538880, + "anon": 200032256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3438 + }, + { + "t": 196.5, + "containers": { + "wger": { + "limit": 402653184, + "current": 214335488, + "peak": 316538880, + "anon": 200032256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3726 + }, + { + "t": 211.6, + "containers": { + "wger": { + "limit": 402653184, + "current": 214626304, + "peak": 316538880, + "anon": 200065024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4012 + }, + { + "t": 226.8, + "containers": { + "wger": { + "limit": 402653184, + "current": 214360064, + "peak": 316538880, + "anon": 200065024, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4296 + }, + { + "t": 241.9, + "containers": { + "wger": { + "limit": 402653184, + "current": 213938176, + "peak": 316538880, + "anon": 200077312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4584 + }, + { + "t": 257.0, + "containers": { + "wger": { + "limit": 402653184, + "current": 214638592, + "peak": 316538880, + "anon": 200077312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4869 + }, + { + "t": 272.1, + "containers": { + "wger": { + "limit": 402653184, + "current": 214212608, + "peak": 316538880, + "anon": 200077312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5156 + }, + { + "t": 287.2, + "containers": { + "wger": { + "limit": 402653184, + "current": 214601728, + "peak": 316538880, + "anon": 200077312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5440 + }, + { + "t": 302.4, + "containers": { + "wger": { + "limit": 402653184, + "current": 215375872, + "peak": 316538880, + "anon": 200425472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5726 + }, + { + "t": 317.5, + "containers": { + "wger": { + "limit": 402653184, + "current": 215859200, + "peak": 316538880, + "anon": 200425472, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6014 + }, + { + "t": 332.6, + "containers": { + "wger": { + "limit": 402653184, + "current": 216133632, + "peak": 316538880, + "anon": 200429568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6300 + }, + { + "t": 347.7, + "containers": { + "wger": { + "limit": 402653184, + "current": 216117248, + "peak": 316538880, + "anon": 200429568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6586 + }, + { + "t": 362.8, + "containers": { + "wger": { + "limit": 402653184, + "current": 216784896, + "peak": 316538880, + "anon": 200474624, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6874 + }, + { + "t": 378.0, + "containers": { + "wger": { + "limit": 402653184, + "current": 216694784, + "peak": 316538880, + "anon": 200433664, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7160 + }, + { + "t": 393.1, + "containers": { + "wger": { + "limit": 402653184, + "current": 216690688, + "peak": 316538880, + "anon": 200450048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7448 + }, + { + "t": 408.2, + "containers": { + "wger": { + "limit": 402653184, + "current": 217137152, + "peak": 316538880, + "anon": 200450048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7736 + }, + { + "t": 423.3, + "containers": { + "wger": { + "limit": 402653184, + "current": 216821760, + "peak": 316538880, + "anon": 200462336, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8022 + }, + { + "t": 438.4, + "containers": { + "wger": { + "limit": 402653184, + "current": 216358912, + "peak": 316538880, + "anon": 200482816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8306 + }, + { + "t": 453.5, + "containers": { + "wger": { + "limit": 402653184, + "current": 216674304, + "peak": 316538880, + "anon": 200466432, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8592 + }, + { + "t": 468.7, + "containers": { + "wger": { + "limit": 402653184, + "current": 216653824, + "peak": 316538880, + "anon": 200466432, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8880 + }, + { + "t": 483.8, + "containers": { + "wger": { + "limit": 402653184, + "current": 217092096, + "peak": 316538880, + "anon": 200470528, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9166 + }, + { + "t": 498.9, + "containers": { + "wger": { + "limit": 402653184, + "current": 216760320, + "peak": 316538880, + "anon": 200470528, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9455 + }, + { + "t": 514.0, + "containers": { + "wger": { + "limit": 402653184, + "current": 216711168, + "peak": 316538880, + "anon": 200507392, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9743 + }, + { + "t": 529.1, + "containers": { + "wger": { + "limit": 402653184, + "current": 217317376, + "peak": 316538880, + "anon": 200527872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10034 + }, + { + "t": 544.2, + "containers": { + "wger": { + "limit": 402653184, + "current": 216682496, + "peak": 316538880, + "anon": 200511488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10320 + }, + { + "t": 559.4, + "containers": { + "wger": { + "limit": 402653184, + "current": 216924160, + "peak": 316538880, + "anon": 200511488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10608 + }, + { + "t": 574.5, + "containers": { + "wger": { + "limit": 402653184, + "current": 217411584, + "peak": 316538880, + "anon": 200511488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10894 + }, + { + "t": 589.6, + "containers": { + "wger": { + "limit": 402653184, + "current": 217092096, + "peak": 316538880, + "anon": 200511488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11179 + }, + { + "t": 604.7, + "containers": { + "wger": { + "limit": 402653184, + "current": 216596480, + "peak": 316538880, + "anon": 200511488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11467 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/migration-lines.txt new file mode 100644 index 00000000..801909e3 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/migration-lines.txt @@ -0,0 +1,6 @@ +wger | Performing database migrations +wger | Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight +wger | Running migrations: +wger | Applying allauth_idp_oidc.0001_initial... OK +wger | Applying allauth_idp_oidc.0002_client_default_scopes... OK +wger | Applying allauth_idp_oidc.0003_client_allow_uri_wildcards... OK \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/run.log new file mode 100644 index 00000000..e02f6d9b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/run.log @@ -0,0 +1,60 @@ +[16:12:01] scratch drive folders cleared before FROM (R-656): none existed +[16:12:01] MV-wger: deploying wger at FROM {'wger': 'wger/server:2.6'} +[16:13:04] FROM settled=True in 61.7s :: {"wger": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:13:04] fixture: the BOX walk's own (Wger), through upgrade_boxport +[16:13:05] wger: the generated admin password does not log in (POST /en/user/login -> 200) — running the template's own after_install command (the app's CLI, as the product does after an install) +[16:13:07] wger: after_install :: ersion 8.3.1, blocking by ip_address FELHOM_AFTER_INSTALL_OK +[16:13:07] wger: POST /api/v2/weightentry/ http=201 +[16:13:08] wger: readback of the seeded weight entry http=200 found=True +[16:13:08] C1 (seed reads back BEFORE): True +[16:13:08] MV-wger: swapping to TO {'wger': 'wger/server:2.7'} +[16:13:44] TO up -d rc=0 +[16:14:15] TO settled=True in 30.8s :: {"wger": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[16:14:15] migration lines observed: 6 +[16:14:16] wger: readback of the seeded weight entry http=200 found=True +[16:14:16] RESULT (seed reads back AFTER): True +[16:14:17] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8000 +[16:14:32] + 15s wger=202M/384M peak=301M kills=0 rs=0 reqs=288 +[16:14:47] + 30s wger=203M/384M peak=301M kills=0 rs=0 reqs=572 +[16:15:02] + 45s wger=203M/384M peak=301M kills=0 rs=0 reqs=859 +[16:15:17] + 60s wger=203M/384M peak=301M kills=0 rs=0 reqs=1148 +[16:15:32] + 76s wger=203M/384M peak=301M kills=0 rs=0 reqs=1432 +[16:15:47] + 91s wger=203M/384M peak=301M kills=0 rs=0 reqs=1718 +[16:16:02] + 106s wger=203M/384M peak=301M kills=0 rs=0 reqs=2004 +[16:16:17] + 121s wger=204M/384M peak=301M kills=0 rs=0 reqs=2290 +[16:16:33] + 136s wger=204M/384M peak=301M kills=0 rs=0 reqs=2576 +[16:16:48] + 151s wger=204M/384M peak=301M kills=0 rs=0 reqs=2864 +[16:17:03] + 166s wger=204M/384M peak=301M kills=0 rs=0 reqs=3150 +[16:17:18] + 181s wger=204M/384M peak=301M kills=0 rs=0 reqs=3438 +[16:17:33] + 196s wger=204M/384M peak=301M kills=0 rs=0 reqs=3726 +[16:17:48] + 212s wger=204M/384M peak=301M kills=0 rs=0 reqs=4012 +[16:18:03] + 227s wger=204M/384M peak=301M kills=0 rs=0 reqs=4296 +[16:18:18] + 242s wger=204M/384M peak=301M kills=0 rs=0 reqs=4584 +[16:18:34] + 257s wger=204M/384M peak=301M kills=0 rs=0 reqs=4869 +[16:18:49] + 272s wger=204M/384M peak=301M kills=0 rs=0 reqs=5156 +[16:19:04] + 287s wger=204M/384M peak=301M kills=0 rs=0 reqs=5440 +[16:19:19] + 302s wger=205M/384M peak=301M kills=0 rs=0 reqs=5726 +[16:19:34] + 318s wger=205M/384M peak=301M kills=0 rs=0 reqs=6014 +[16:19:49] + 333s wger=206M/384M peak=301M kills=0 rs=0 reqs=6300 +[16:20:04] + 348s wger=206M/384M peak=301M kills=0 rs=0 reqs=6586 +[16:20:19] + 363s wger=206M/384M peak=301M kills=0 rs=0 reqs=6874 +[16:20:34] + 378s wger=206M/384M peak=301M kills=0 rs=0 reqs=7160 +[16:20:50] + 393s wger=206M/384M peak=301M kills=0 rs=0 reqs=7448 +[16:21:05] + 408s wger=207M/384M peak=301M kills=0 rs=0 reqs=7736 +[16:21:20] + 423s wger=206M/384M peak=301M kills=0 rs=0 reqs=8022 +[16:21:35] + 438s wger=206M/384M peak=301M kills=0 rs=0 reqs=8306 +[16:21:50] + 454s wger=206M/384M peak=301M kills=0 rs=0 reqs=8592 +[16:22:05] + 469s wger=206M/384M peak=301M kills=0 rs=0 reqs=8880 +[16:22:20] + 484s wger=207M/384M peak=301M kills=0 rs=0 reqs=9166 +[16:22:35] + 499s wger=206M/384M peak=301M kills=0 rs=0 reqs=9455 +[16:22:51] + 514s wger=206M/384M peak=301M kills=0 rs=0 reqs=9743 +[16:23:06] + 529s wger=207M/384M peak=301M kills=0 rs=0 reqs=10034 +[16:23:21] + 544s wger=206M/384M peak=301M kills=0 rs=0 reqs=10320 +[16:23:36] + 559s wger=206M/384M peak=301M kills=0 rs=0 reqs=10608 +[16:23:51] + 574s wger=207M/384M peak=301M kills=0 rs=0 reqs=10894 +[16:24:06] + 590s wger=207M/384M peak=301M kills=0 rs=0 reqs=11179 +[16:24:21] + 605s wger=206M/384M peak=301M kills=0 rs=0 reqs=11467 +[16:24:21] memory watch: killed=False tight=[] requests=11467 codes={'302': 11467} +[16:24:21] MV-wger: ABORT — putting the FROM images back +[16:25:03] wger: login failed: POST /en/user/login -> 500 +[16:25:03] ABORT: app came back in 30.9s; data present=False \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-full.log new file mode 100644 index 00000000..db7e565b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-full.log @@ -0,0 +1,133 @@ +wger | *** Using settings from env: settings.main +wger | /home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:13:46,111 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | Performing database migrations +wger | /home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:13:47,762 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | Operations to perform: +wger | Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight +wger | Running migrations: +wger | Applying allauth_idp_oidc.0001_initial... OK +wger | Applying allauth_idp_oidc.0002_client_default_scopes... OK +wger | Applying allauth_idp_oidc.0003_client_allow_uri_wildcards... OK +wger | Applying manager.0028_backfill_session_day... OK +wger | Applying core.0027_powersync_publication... OK +wger | Applying core.0028_longlivedsession... OK +wger | Applying core.0029_userprofile_timezone... OK +wger | Applying manager.0029_alter_workoutsession_options_and_more... OK +wger | Applying measurements.0006_health_sync... OK +wger | Applying measurements.0007_migrate_weight... OK +wger | Applying measurements.0008_dynamic_type... OK +wger | Applying weight.0006_delete_weightentry... OK +wger | /home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:13:54,410 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | Set site URL to fitness.gate.invalid +wger | Using django's development server on port 8000... +wger | /home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:13:57,020 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | /home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment. +wger | warnings.warn( +wger | level=INFO ts=2026-09-30 18:13:58,257 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address +wger | level=INFO ts=2026-09-30 18:13:58,269 module=autoreload path=/home/wger/.local/lib/python3.12/site-packages/django/utils/autoreload.py line=681 message=Watching for file changes with StatReloader +wger | Performing system checks... +wger | +wger | System check identified some issues: +wger | +wger | WARNINGS: +wger | ?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation. +wger | +wger | System check identified 1 issue (0 silenced). +wger | September 30, 2026 - 18:13:59 +wger | Django version 6.0.8, using settings 'settings.main' +wger | Starting development server at http://0.0.0.0:8000/ +wger | Quit the server with CONTROL-C. +wger | +wger | WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead. +wger | For more information on production servers see: https://docs.djangoproject.com/en/6.0/howto/deployment/ +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/workout-manager.css. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/bootstrap-custom.css. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | [30/Sep/2026 18:14:14] "HEAD / HTTP/1.1" 302 0 +wger | [30/Sep/2026 18:14:14] "HEAD /en/ HTTP/1.1" 302 0 +wger | Can't find name for static file reference: images/logos/logo-social.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/favicon.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font.svg. This is expected in some node packages. +wger | Can't find name for static file reference: bootstrap-compiled.css. This is expected in some node packages. +wger | Can't find name for static file reference: fontawesomefree/css/all.min.css. This is expected in some node packages. +wger | Can't find name for static file reference: css/landing_page.css. This is expected in some node packages. +wger | Can't find name for static file reference: node/bootstrap/dist/js/bootstrap.bundle.min.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/language.js. This is expected in some node packages. +wger | Can't find name for static file reference: js/forms.js. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/hero.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/hero.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-1.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-1.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-2.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-2.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-3.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/screens-3.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/community.avif. This is expected in some node packages. +wger | Can't find name for static file reference: images/community.png. This is expected in some node packages. +wger | Can't find name for static file reference: images/dumbbell.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/code.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/fork.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/logo-font-inverse.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/bg.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ca.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/cs.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/de.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/el.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-au.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/en-gb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ar.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-co.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-mx.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ni.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/es-ve.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/fi.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/fr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/he.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/hr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/it.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ko.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/mk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/nb.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/pt-br.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ro.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ru.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sl.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/sv.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/ta.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/th.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/tr.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/uk.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hans.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/icons/flags/zh-hant.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/play-store/badge.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/app-store/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/flathub/black.svg. This is expected in some node packages. +wger | Can't find name for static file reference: images/logos/fdroid/get-it-on.svg. This is expected in some node packages. +wger | [30/Sep/2026 18:14:15] "HEAD /en/software/features HTTP/1.1" 200 0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-states.json new file mode 100644 index 00000000..2e9c052e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/to-states.json @@ -0,0 +1,8 @@ +{ + "wger": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/verdict.json new file mode 100644 index 00000000..4c3be023 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/wger/bench/evidence/MV-wger/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 4, + "edge": "MV-wger", + "app": "wger", + "note": "night 2026-09-23 within-a-major move: wger=wger/server:2.7", + "from": { + "wger": "wger/server:2.6" + }, + "to": { + "wger": "wger/server:2.7" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kwger | Performing database migrations", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11467, + "codes": { + "302": 11467 + }, + "first_kill": null, + "containers": { + "wger": { + "limit": 402653184, + "peak": 316538880, + "peak_pct": 0.786, + "anon_peak_sampled": 200527872, + "anon_peak_pct": 0.498, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-30T16:25:03Z", + "evidence": "evidence/MV-wger", + "scratch_cleared": [], + "files_changed": [], + "total_s": 781.9 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt1-429.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt1-429.log new file mode 100644 index 00000000..0575690e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt1-429.log @@ -0,0 +1,37 @@ +[17:33:30] scratch drive folders cleared before FROM (R-656): none existed +[17:33:30] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:34:45] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:34:45] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:34:45] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuodxwy3000201pczx4w7lxt","username":"drillbcb14e","createdAt":"2026-09-30T17:34:45.771Z","updatedAt":"2026-09-30T17:34:45.771 +[17:34:46] zipline: login as the seeded user http=429 ok=False +[17:34:46] C1 (seed reads back BEFORE): False +[17:34:46] C1 FAILED — a fixture that cannot prove itself first proves nothing after +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "C1 failed: the fixture could not prove itself before the upgrade", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 75.9, + "measured_at": "2026-09-30T17:34:46Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 75.9 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt2-4.8.0-FAILED.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt2-4.8.0-FAILED.log new file mode 100644 index 00000000..de45b934 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-attempt2-4.8.0-FAILED.log @@ -0,0 +1,55 @@ +[17:38:17] scratch drive folders cleared before FROM (R-656): none existed +[17:38:17] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:39:00] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:39:00] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:39:00] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuoe3dfr000201pcun5fhyba","username":"drill504390","createdAt":"2026-09-30T17:39:00.422Z","updatedAt":"2026-09-30T17:39:00.422 +[17:39:00] zipline: login as the seeded user http=200 ok=True +[17:39:00] C1 (seed reads back BEFORE): True +[17:39:00] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.8.0', 'zipline-postgres': 'postgres:16-alpine'} +[17:39:47] TO up -d rc=0 +[17:46:49] TO settled=False in 422.0s :: {"zipline": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 1}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:46:49] engine state zipline-postgres: 16 +[17:46:49] migration lines observed: 6 +[17:51:51] zipline: /api/healthcheck never answered 200 +[17:51:51] RESULT (seed reads back AFTER): False +[17:51:51] MV-zipline: ABORT — putting the FROM images back +[17:52:23] zipline: login as the seeded user http=200 ok=True +[17:52:23] ABORT: app came back in 31.0s; data present=True +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "failed", + "seed_read_before": true, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": "\u001b[2Kzipline | [2026-09-30T19:39:50 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded.", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": null, + "marks": [], + "duration_s": 422.0, + "measured_at": "2026-09-30T17:52:23Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 845.8 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step1-4.7.0.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step1-4.7.0.log new file mode 100644 index 00000000..a31238d8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step1-4.7.0.log @@ -0,0 +1,131 @@ +[17:53:13] scratch drive folders cleared before FROM (R-656): none existed +[17:53:13] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:53:55] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:53:55] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:53:55] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuoemkea000201rmnjxlwixt","username":"drillad0bf6","createdAt":"2026-09-30T17:53:55.905Z","updatedAt":"2026-09-30T17:53:55.905 +[17:53:56] zipline: login as the seeded user http=200 ok=True +[17:53:56] C1 (seed reads back BEFORE): True +[17:53:56] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[17:54:50] TO up -d rc=18 +[17:54:51] TO settled=True in 0.1s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:54:51] engine state zipline-postgres: 16 +[17:54:51] migration lines observed: 0 +[17:54:51] zipline: login as the seeded user http=200 ok=True +[17:54:51] RESULT (seed reads back AFTER): True +[17:54:51] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[17:55:07] + 15s zipline=227M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=300 +[17:55:22] + 30s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=600 +[17:55:37] + 45s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=901 +[17:55:52] + 61s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1204 +[17:56:07] + 76s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1504 +[17:56:22] + 91s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1804 +[17:56:37] + 106s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2100 +[17:56:53] + 121s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2400 +[17:57:08] + 136s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2700 +[17:57:23] + 151s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3004 +[17:57:38] + 167s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3304 +[17:57:53] + 182s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3604 +[17:58:08] + 197s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3904 +[17:58:23] + 212s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4204 +[17:58:39] + 227s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4504 +[17:58:54] + 242s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4800 +[17:59:09] + 258s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5100 +[17:59:24] + 273s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5404 +[17:59:39] + 288s zipline=215M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5704 +[17:59:54] + 303s zipline=215M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6004 +[18:00:09] + 318s zipline=216M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6304 +[18:00:25] + 333s zipline=216M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6604 +[18:00:40] + 348s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6904 +[18:00:55] + 364s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7204 +[18:01:10] + 379s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7504 +[18:01:25] + 394s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7804 +[18:01:40] + 409s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8104 +[18:01:55] + 424s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8404 +[18:02:11] + 439s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8704 +[18:02:26] + 454s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9004 +[18:02:41] + 469s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9304 +[18:02:56] + 485s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9604 +[18:03:11] + 500s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9904 +[18:03:26] + 515s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10204 +[18:03:41] + 530s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10504 +[18:03:57] + 545s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10804 +[18:04:12] + 560s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11104 +[18:04:27] + 575s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11404 +[18:04:42] + 590s zipline=219M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11704 +[18:04:57] + 606s zipline=219M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=12004 +[18:04:57] memory watch: killed=False tight=[] requests=12004 codes={'301': 12004} +[18:04:57] MV-zipline: ABORT — putting the FROM images back +[18:04:58] zipline: login as the seeded user http=200 ok=True +[18:04:58] ABORT: app came back in 0.1s; data present=True +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.7.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.0, + "requested_s": 600, + "requests": 12004, + "codes": { + "301": 12004 + }, + "first_kill": null, + "containers": { + "zipline": { + "limit": 536870912, + "peak": 305209344, + "peak_pct": 0.568, + "anon_peak_sampled": 223789056, + "anon_peak_pct": 0.417, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "zipline-postgres": { + "limit": 268435456, + "peak": 105070592, + "peak_pct": 0.391, + "anon_peak_sampled": 4231168, + "anon_peak_pct": 0.016, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 0.1, + "measured_at": "2026-09-30T18:04:58Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 705.5 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt1-pullfault.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt1-pullfault.log new file mode 100644 index 00000000..59461919 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt1-pullfault.log @@ -0,0 +1,32 @@ +[18:06:02] scratch drive folders cleared before FROM (R-656): none existed +[18:06:02] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:06:35] FROM deploy FAILED — inconclusive, the edge was never reached +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.2MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.7MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 105.3MB/164.7MB\n bc6a0c8f7ef1 Extracting [================================> ] 105.8MB/164.7MB\n bc6a0c8f7ef1 Extracting [==================================================>] 164.7MB/164.7MB\nfailed to register layer: write /zipline/node_modules/.pnpm/@tabler+icons@3.44.0/node_modules/@tabler/icons/categories/outline/Letters/hexagon-letter-z.svg: no space left on device\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 33.0, + "measured_at": "2026-09-30T18:06:35Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 33.0 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt2-benchdiskfull.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt2-benchdiskfull.log new file mode 100644 index 00000000..c71b7498 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline-step2-attempt2-benchdiskfull.log @@ -0,0 +1,32 @@ +[18:07:20] scratch drive folders cleared before FROM (R-656): none existed +[18:07:20] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:07:48] FROM deploy FAILED — inconclusive, the edge was never reached +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.2MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.7MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 105.3MB/164.7MB\n bc6a0c8f7ef1 Extracting [================================> ] 105.8MB/164.7MB\n bc6a0c8f7ef1 Extracting [==================================================>] 164.7MB/164.7MB\nfailed to register layer: write /zipline/node_modules/.pnpm/@tabler+icons@3.44.0/node_modules/@tabler/icons/categories/outline/Letters/hexagon-letter-x.svg: no space left on device\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 27.4, + "measured_at": "2026-09-30T18:07:48Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 27.4 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline.log new file mode 100644 index 00000000..cf3bf24d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/MV-zipline.log @@ -0,0 +1,131 @@ +[18:09:20] scratch drive folders cleared before FROM (R-656): none existed +[18:09:20] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:10:38] FROM settled=True in 30.9s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[18:10:38] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[18:10:38] zipline: /api/setup http=200 :: {"firstSetup":false,"user":{"id":"cmuof81t6000201pcqxmonqk6","username":"drill5c7f02","createdAt":"2026-09-30T18:10:38.250Z","updatedAt":"2026-09-30T18:10:38.25 +[18:10:38] zipline: login as the seeded user http=200 ok=True +[18:10:38] C1 (seed reads back BEFORE): True +[18:10:38] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.8.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:10:50] TO up -d rc=0 +[18:11:21] TO settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[18:11:21] engine state zipline-postgres: 16 +[18:11:21] migration lines observed: 0 +[18:11:21] zipline: login as the seeded user http=200 ok=True +[18:11:21] RESULT (seed reads back AFTER): True +[18:11:22] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[18:11:37] + 15s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=300 +[18:11:52] + 30s zipline=207M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=600 +[18:12:07] + 45s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=900 +[18:12:22] + 60s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=1200 +[18:12:37] + 76s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=1500 +[18:12:52] + 91s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=1800 +[18:13:08] + 106s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=2100 +[18:13:23] + 121s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=2400 +[18:13:38] + 136s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=2700 +[18:13:53] + 151s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=3000 +[18:14:08] + 166s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=3300 +[18:14:23] + 182s zipline=190M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=3600 +[18:14:38] + 197s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=3896 +[18:14:54] + 212s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=4196 +[18:15:09] + 227s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=4496 +[18:15:24] + 242s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=121M/256M peak=138M kills=0 rs=0 reqs=4796 +[18:15:39] + 257s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=5096 +[18:15:54] + 272s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=5396 +[18:16:09] + 288s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=5696 +[18:16:24] + 303s zipline=186M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=5996 +[18:16:40] + 318s zipline=186M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=6296 +[18:16:55] + 333s zipline=187M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=6596 +[18:17:10] + 348s zipline=187M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=6896 +[18:17:25] + 363s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=7196 +[18:17:40] + 378s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=7496 +[18:17:55] + 394s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=7796 +[18:18:10] + 409s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=8096 +[18:18:25] + 424s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=8396 +[18:18:41] + 439s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=8696 +[18:18:56] + 454s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=8996 +[18:19:11] + 469s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=9296 +[18:19:26] + 484s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=9596 +[18:19:41] + 500s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=9896 +[18:19:56] + 515s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=10196 +[18:20:11] + 530s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=10496 +[18:20:27] + 545s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=10796 +[18:20:42] + 560s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=11096 +[18:20:57] + 575s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=11396 +[18:21:12] + 590s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=11696 +[18:21:27] + 606s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=11996 +[18:21:27] memory watch: killed=False tight=[] requests=11996 codes={'301': 11996} +[18:21:27] MV-zipline: ABORT — putting the FROM images back +[18:22:10] zipline: login as the seeded user http=200 ok=True +[18:22:10] ABORT: app came back in 31.0s; data present=True +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 605.8, + "requested_s": 600, + "requests": 11996, + "codes": { + "301": 11996 + }, + "first_kill": null, + "containers": { + "zipline": { + "limit": 536870912, + "peak": 284307456, + "peak_pct": 0.53, + "anon_peak_sampled": 183943168, + "anon_peak_pct": 0.343, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "zipline-postgres": { + "limit": 268435456, + "peak": 144867328, + "peak_pct": 0.54, + "anon_peak_sampled": 5582848, + "anon_peak_pct": 0.021, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 31.0, + "measured_at": "2026-09-30T18:22:10Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 770.3 +} diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/compose-final.log new file mode 100644 index 00000000..2c4bb4bd --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/compose-final.log @@ -0,0 +1,89 @@ +zipline | [2026-09-30T19:34:14 INFO db] connecting to database +zipline | [2026-09-30T19:34:16 INFO server] starting zipline mode="production" version="4.6.1" argv=[] +zipline | Applying migration `20241228224006_init` +zipline | Applying migration `20250103233230_string_settings_expiration` +zipline | Applying migration `20250109054202_string_bytes_ms` +zipline | Applying migration `20250110223901_website_login_bg_blur` +zipline | Applying migration `20250131204021_url_enabled` +zipline | Applying migration `20250213234605_random_words` +zipline | Applying migration `20250304051948_unauthenticated_folder_uploads` +zipline | Applying migration `20250516022401_version_checking` +zipline | Applying migration `20250607030453_discord_whitelist` +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline | Applying migration `20250607183312_discord_allow_deny_list` +zipline | Applying migration `20250613161158_add_domains` +zipline | Applying migration `20250827234055_files_default_compression_format` +zipline | Applying migration `20250828035734_features_thumbnails_format` +zipline | Applying migration `20251001031548_core_trust_proxy` +zipline | Applying migration `20251209070242_file_max_expiration` +zipline | Applying migration `20260108050615_passkeys_overhaul` +zipline | Applying migration `20260114063251_clean_thumbnails` +zipline | Applying migration `20260114182751_add_nested_folders` +zipline | Applying migration `20260214054654_revamp_sessions` +zipline | Applying migration `20260304074731_max_files_per_upload` +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline | Applying migration `20260318172322_file_prop_anonymous_upload` +zipline | Applying migration `20260406015245_thumbnails_instantaneous` +zipline | [2026-09-30T19:34:17 INFO migrations] applied migrations: 20241228224006_init, 20250103233230_string_settings_expiration, 20250109054202_string_bytes_ms, 20250110223901_website_login_bg_blur, 20250131204021_url_enabled, 20250213234605_random_words, 20250304051948_unauthenticated_folder_uploads, 20250516022401_version_checking, 20250607030453_discord_whitelist, 20250607183312_discord_allow_deny_list, 20250613161158_add_domains, 20250827234055_files_default_compression_format, 20250828035734_features_thumbnails_format, 20251001031548_core_trust_proxy, 20251209070242_file_max_expiration, 20260108050615_passkeys_overhaul, 20260114063251_clean_thumbnails, 20260114182751_add_nested_folders, 20260214054654_revamp_sessions, 20260304074731_max_files_per_upload, 20260318172322_file_prop_anonymous_upload, 20260406015245_thumbnails_instantaneous +zipline | [2026-09-30T19:34:17 INFO server] reading settings... +zipline | [2026-09-30T19:34:18 INFO server] server started hostname="0.0.0.0" port=3000 +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 19:34:04.298 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline | [2026-09-30T19:34:45 INFO api::setup] first setup running +zipline | [2026-09-30T19:34:45 INFO api::setup] first setup complete +zipline | [2026-09-30T19:34:45 WARN api::auth::login] invalid login attempt username="drillbcb14e" ip="172.18.0.1" ua="curl/8.14.1" +zipline | [2026-09-30T19:34:46 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline-postgres | +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 19:34:05.088 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:34:05.091 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:34:05.102 CEST [44] LOG: database system was shut down at 2026-09-30 19:34:04 CEST +zipline-postgres | 2026-09-30 19:34:05.111 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down....2026-09-30 19:34:05.255 CEST [41] LOG: received fast shutdown request +zipline-postgres | 2026-09-30 19:34:05.258 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 19:34:05.261 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 19:34:05.261 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 19:34:05.264 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 19:34:05.344 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.028 s, sync=0.042 s, total=0.083 s; sync files=301, longest=0.015 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 19:34:05.359 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 19:34:05.492 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:34:05.492 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 19:34:05.492 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 19:34:05.498 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:34:05.505 CEST [57] LOG: database system was shut down at 2026-09-30 19:34:05 CEST +zipline-postgres | 2026-09-30 19:34:05.514 CEST [1] LOG: database system is ready to accept connections diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/run.log new file mode 100644 index 00000000..569b503f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/run.log @@ -0,0 +1,8 @@ +[17:33:30] scratch drive folders cleared before FROM (R-656): none existed +[17:33:30] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:34:45] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:34:45] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:34:45] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuodxwy3000201pczx4w7lxt","username":"drillbcb14e","createdAt":"2026-09-30T17:34:45.771Z","updatedAt":"2026-09-30T17:34:45.771 +[17:34:46] zipline: login as the seeded user http=429 ok=False +[17:34:46] C1 (seed reads back BEFORE): False +[17:34:46] C1 FAILED — a fixture that cannot prove itself first proves nothing after \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/verdict.json new file mode 100644 index 00000000..89008fb6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt1-429/verdict.json @@ -0,0 +1,29 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "C1 failed: the fixture could not prove itself before the upgrade", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 75.9, + "measured_at": "2026-09-30T17:34:46Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 75.9 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/abort-states.json new file mode 100644 index 00000000..748d6a20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/abort-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/compose-final.log new file mode 100644 index 00000000..8d962729 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/compose-final.log @@ -0,0 +1,66 @@ +zipline | [2026-09-30T19:51:52 INFO db] connecting to database +zipline | [2026-09-30T19:51:54 INFO server] starting zipline mode="production" version="4.6.1" argv=[] +zipline | [2026-09-30T19:51:54 INFO server] reading settings... +zipline | [2026-09-30T19:51:56 INFO server] server started hostname="0.0.0.0" port=3000 +zipline | [2026-09-30T19:52:23 INFO api::auth::login] user logged in successfully username="drill504390" ip="172.18.0.1" ua="curl/8.14.1" +zipline | [2026-09-30T19:52:23 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 19:38:18.887 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 19:38:19.649 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:38:19.652 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:38:19.667 CEST [44] LOG: database system was shut down at 2026-09-30 19:38:19 CEST +zipline-postgres | 2026-09-30 19:38:19.675 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down...2026-09-30 19:38:19.832 CEST [41] LOG: received fast shutdown request +zipline-postgres | .2026-09-30 19:38:19.835 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 19:38:19.839 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 19:38:19.839 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 19:38:19.842 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 19:38:19.925 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.024 s, sync=0.045 s, total=0.086 s; sync files=301, longest=0.016 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 19:38:19.938 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 19:38:20.071 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:38:20.083 CEST [57] LOG: database system was shut down at 2026-09-30 19:38:19 CEST +zipline-postgres | 2026-09-30 19:38:20.092 CEST [1] LOG: database system is ready to accept connections +zipline-postgres | 2026-09-30 19:43:20.179 CEST [55] LOG: checkpoint starting: time +zipline-postgres | 2026-09-30 19:43:41.984 CEST [55] LOG: checkpoint complete: wrote 220 buffers (1.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=21.767 s, sync=0.026 s, total=21.806 s; sync files=151, longest=0.006 s, average=0.001 s; distance=1300 kB, estimate=1300 kB; lsn=0/1A6B080, redo lsn=0/1A6B048 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/engine-state.json new file mode 100644 index 00000000..11b57819 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/engine-state.json @@ -0,0 +1,8 @@ +{ + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/migration-lines.txt new file mode 100644 index 00000000..eea3e0a7 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/migration-lines.txt @@ -0,0 +1,6 @@ +zipline | [2026-09-30T19:39:50 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/run.log new file mode 100644 index 00000000..2caac4e7 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/run.log @@ -0,0 +1,17 @@ +[17:38:17] scratch drive folders cleared before FROM (R-656): none existed +[17:38:17] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:39:00] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:39:00] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:39:00] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuoe3dfr000201pcun5fhyba","username":"drill504390","createdAt":"2026-09-30T17:39:00.422Z","updatedAt":"2026-09-30T17:39:00.422 +[17:39:00] zipline: login as the seeded user http=200 ok=True +[17:39:00] C1 (seed reads back BEFORE): True +[17:39:00] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.8.0', 'zipline-postgres': 'postgres:16-alpine'} +[17:39:47] TO up -d rc=0 +[17:46:49] TO settled=False in 422.0s :: {"zipline": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 1}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:46:49] engine state zipline-postgres: 16 +[17:46:49] migration lines observed: 6 +[17:51:51] zipline: /api/healthcheck never answered 200 +[17:51:51] RESULT (seed reads back AFTER): False +[17:51:51] MV-zipline: ABORT — putting the FROM images back +[17:52:23] zipline: login as the seeded user http=200 ok=True +[17:52:23] ABORT: app came back in 31.0s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-full.log new file mode 100644 index 00000000..860b360e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-full.log @@ -0,0 +1,360 @@ +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 19:38:18.887 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 19:38:19.649 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:38:19.652 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:38:19.667 CEST [44] LOG: database system was shut down at 2026-09-30 19:38:19 CEST +zipline-postgres | 2026-09-30 19:38:19.675 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down...2026-09-30 19:38:19.832 CEST [41] LOG: received fast shutdown request +zipline-postgres | .2026-09-30 19:38:19.835 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 19:38:19.839 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 19:38:19.839 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 19:38:19.842 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 19:38:19.925 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.024 s, sync=0.045 s, total=0.086 s; sync files=301, longest=0.016 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 19:38:19.938 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 19:38:20.066 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 19:38:20.071 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:38:20.083 CEST [57] LOG: database system was shut down at 2026-09-30 19:38:19 CEST +zipline-postgres | 2026-09-30 19:38:20.092 CEST [1] LOG: database system is ready to accept connections +zipline-postgres | 2026-09-30 19:43:20.179 CEST [55] LOG: checkpoint starting: time +zipline-postgres | 2026-09-30 19:43:41.984 CEST [55] LOG: checkpoint complete: wrote 220 buffers (1.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=21.767 s, sync=0.026 s, total=21.806 s; sync files=151, longest=0.006 s, average=0.001 s; distance=1300 kB, estimate=1300 kB; lsn=0/1A6B080, redo lsn=0/1A6B048 +zipline | [2026-09-30T19:39:50 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:39:50 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:39:54 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:39:54 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:39:57 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:39:57 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:01 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:01 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:05 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:05 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:10 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:10 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:17 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:17 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:26 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:26 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:40:43 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:40:43 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:41:12 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:41:12 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:42:06 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:42:06 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:43:09 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:43:10 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:44:13 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:44:13 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:45:16 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:45:16 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 +zipline | [2026-09-30T19:46:19 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T19:46:20 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | /zipline/src/lib/db/migration/index.ts:99 +zipline | throw new Error( +zipline | ^ +zipline | +zipline | Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded. +zipline | at adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:99:11) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) { +zipline | [cause]: Error: expected migration 20260508022000_add_file_folder_created_at_index was not applied +zipline | at assertCompletePrismaMigrationHistory (/zipline/src/lib/db/migration/prisma-history.ts:111:13) +zipline | at process.processTicksAndRejections (node:internal/process/task_queues:104:5) +zipline | at async adoptPrismaDatabase (/zipline/src/lib/db/migration/index.ts:83:5) +zipline | at async runMigrations (/zipline/src/lib/db/migration/index.ts:135:29) +zipline | at async main (/zipline/src/server/index.ts:41:3) +zipline | } +zipline | +zipline | Node.js v24.21.0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-states.json new file mode 100644 index 00000000..b0be0d1f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/to-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "restarting", + "health": "unhealthy", + "restarts": 0, + "exit": 1 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/verdict.json new file mode 100644 index 00000000..7f945b4f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-attempt2-4.8.0-FAILED/verdict.json @@ -0,0 +1,38 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "failed", + "seed_read_before": true, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": "\u001b[2Kzipline | [2026-09-30T19:39:50 ERROR migrations] Error: cannot safely migrate from prisma to drizzle: expected migration 20260508022000_add_file_folder_created_at_index was not applied. To resolve this, repair the database with the previous (latest before this) Zipline release before upgrading; no baseline was recorded.", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": null, + "marks": [], + "duration_s": 422.0, + "measured_at": "2026-09-30T17:52:23Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 845.8 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/abort-states.json new file mode 100644 index 00000000..748d6a20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/abort-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/compose-final.log new file mode 100644 index 00000000..01a07452 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/compose-final.log @@ -0,0 +1,95 @@ +zipline | [2026-09-30T19:53:24 INFO db] connecting to database +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline | [2026-09-30T19:53:26 INFO server] starting zipline mode="production" version="4.6.1" argv=[] +zipline | Applying migration `20241228224006_init` +zipline | Applying migration `20250103233230_string_settings_expiration` +zipline | Applying migration `20250109054202_string_bytes_ms` +zipline | Applying migration `20250110223901_website_login_bg_blur` +zipline | Applying migration `20250131204021_url_enabled` +zipline | Applying migration `20250213234605_random_words` +zipline | Applying migration `20250304051948_unauthenticated_folder_uploads` +zipline | Applying migration `20250516022401_version_checking` +zipline | Applying migration `20250607030453_discord_whitelist` +zipline | Applying migration `20250607183312_discord_allow_deny_list` +zipline | Applying migration `20250613161158_add_domains` +zipline | Applying migration `20250827234055_files_default_compression_format` +zipline | Applying migration `20250828035734_features_thumbnails_format` +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline | Applying migration `20251001031548_core_trust_proxy` +zipline | Applying migration `20251209070242_file_max_expiration` +zipline | Applying migration `20260108050615_passkeys_overhaul` +zipline | Applying migration `20260114063251_clean_thumbnails` +zipline | Applying migration `20260114182751_add_nested_folders` +zipline | Applying migration `20260214054654_revamp_sessions` +zipline | Applying migration `20260304074731_max_files_per_upload` +zipline | Applying migration `20260318172322_file_prop_anonymous_upload` +zipline | Applying migration `20260406015245_thumbnails_instantaneous` +zipline-postgres | Data page checksums are disabled. +zipline | [2026-09-30T19:53:27 INFO migrations] applied migrations: 20241228224006_init, 20250103233230_string_settings_expiration, 20250109054202_string_bytes_ms, 20250110223901_website_login_bg_blur, 20250131204021_url_enabled, 20250213234605_random_words, 20250304051948_unauthenticated_folder_uploads, 20250516022401_version_checking, 20250607030453_discord_whitelist, 20250607183312_discord_allow_deny_list, 20250613161158_add_domains, 20250827234055_files_default_compression_format, 20250828035734_features_thumbnails_format, 20251001031548_core_trust_proxy, 20251209070242_file_max_expiration, 20260108050615_passkeys_overhaul, 20260114063251_clean_thumbnails, 20260114182751_add_nested_folders, 20260214054654_revamp_sessions, 20260304074731_max_files_per_upload, 20260318172322_file_prop_anonymous_upload, 20260406015245_thumbnails_instantaneous +zipline | [2026-09-30T19:53:27 INFO server] reading settings... +zipline | [2026-09-30T19:53:28 INFO server] server started hostname="0.0.0.0" port=3000 +zipline | [2026-09-30T19:53:55 INFO api::setup] first setup running +zipline | [2026-09-30T19:53:55 INFO api::setup] first setup complete +zipline | [2026-09-30T19:53:56 INFO api::auth::login] user logged in successfully username="drillad0bf6" ip="172.18.0.1" ua="curl/8.14.1" +zipline | [2026-09-30T19:53:56 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline | [2026-09-30T19:54:51 INFO api::auth::login] user logged in successfully username="drillad0bf6" ip="172.18.0.1" ua="curl/8.14.1" +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 19:53:14.444 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 19:53:15.199 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:53:15.202 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:53:15.216 CEST [44] LOG: database system was shut down at 2026-09-30 19:53:14 CEST +zipline-postgres | 2026-09-30 19:53:15.224 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down...2026-09-30 19:53:15.390 CEST [41] LOG: received fast shutdown request +zipline-postgres | .2026-09-30 19:53:15.393 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 19:53:15.399 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 19:53:15.400 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 19:53:15.402 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline | [2026-09-30T19:54:51 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline | [2026-09-30T20:04:58 INFO api::auth::login] user logged in successfully username="drillad0bf6" ip="172.18.0.1" ua="curl/8.14.1" +zipline-postgres | 2026-09-30 19:53:15.483 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.026 s, sync=0.044 s, total=0.084 s; sync files=301, longest=0.017 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline | [2026-09-30T20:04:58 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline-postgres | 2026-09-30 19:53:15.496 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 19:53:15.631 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:53:15.639 CEST [57] LOG: database system was shut down at 2026-09-30 19:53:15 CEST +zipline-postgres | 2026-09-30 19:53:15.648 CEST [1] LOG: database system is ready to accept connections +zipline-postgres | 2026-09-30 19:58:15.668 CEST [55] LOG: checkpoint starting: time +zipline-postgres | 2026-09-30 19:58:37.474 CEST [55] LOG: checkpoint complete: wrote 220 buffers (1.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=21.772 s, sync=0.024 s, total=21.807 s; sync files=151, longest=0.006 s, average=0.001 s; distance=1301 kB, estimate=1301 kB; lsn=0/1A6B218, redo lsn=0/1A6B1E0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/engine-state.json new file mode 100644 index 00000000..11b57819 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/engine-state.json @@ -0,0 +1,8 @@ +{ + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/memory-samples.json new file mode 100644 index 00000000..f059523f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/memory-samples.json @@ -0,0 +1,1122 @@ +[ + { + "t": 15.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 238399488, + "peak": 305209344, + "anon": 223789056, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71680000, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228061184, + "peak": 305209344, + "anon": 213721088, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71716864, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 600 + }, + { + "t": 45.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228741120, + "peak": 305209344, + "anon": 214147072, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71712768, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 901 + }, + { + "t": 60.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228786176, + "peak": 305209344, + "anon": 214175744, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71745536, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1204 + }, + { + "t": 75.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228540416, + "peak": 305209344, + "anon": 214216704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71909376, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1504 + }, + { + "t": 90.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228401152, + "peak": 305209344, + "anon": 214274048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1804 + }, + { + "t": 106.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228622336, + "peak": 305209344, + "anon": 214347776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71909376, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2100 + }, + { + "t": 121.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228560896, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2400 + }, + { + "t": 136.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 223453184, + "peak": 305209344, + "anon": 209436672, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2700 + }, + { + "t": 151.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 223817728, + "peak": 305209344, + "anon": 209448960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3004 + }, + { + "t": 166.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 223809536, + "peak": 305209344, + "anon": 209534976, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3304 + }, + { + "t": 181.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224395264, + "peak": 305209344, + "anon": 209596416, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71905280, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3604 + }, + { + "t": 196.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224374784, + "peak": 305209344, + "anon": 209629184, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 71909376, + "peak": 105070592, + "anon": 4112384, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3904 + }, + { + "t": 212.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224264192, + "peak": 305209344, + "anon": 209657856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 72392704, + "peak": 105070592, + "anon": 4186112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4204 + }, + { + "t": 227.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224219136, + "peak": 305209344, + "anon": 209756160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73076736, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4504 + }, + { + "t": 242.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224022528, + "peak": 305209344, + "anon": 209772544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4800 + }, + { + "t": 257.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 224628736, + "peak": 305209344, + "anon": 210116608, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5100 + }, + { + "t": 272.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 225103872, + "peak": 305209344, + "anon": 210710528, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5404 + }, + { + "t": 287.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 225927168, + "peak": 305209344, + "anon": 211283968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5704 + }, + { + "t": 302.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 225927168, + "peak": 305209344, + "anon": 211857408, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6004 + }, + { + "t": 318.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 226766848, + "peak": 305209344, + "anon": 212418560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6304 + }, + { + "t": 333.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 227332096, + "peak": 305209344, + "anon": 212987904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73080832, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6604 + }, + { + "t": 348.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 227696640, + "peak": 305209344, + "anon": 213573632, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6904 + }, + { + "t": 363.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228466688, + "peak": 305209344, + "anon": 214069248, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7204 + }, + { + "t": 378.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228896768, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7504 + }, + { + "t": 393.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228655104, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7804 + }, + { + "t": 408.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229441536, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8104 + }, + { + "t": 424.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228868096, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8404 + }, + { + "t": 439.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229429248, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8704 + }, + { + "t": 454.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229105664, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73125888, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9004 + }, + { + "t": 469.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229146624, + "peak": 305209344, + "anon": 214478848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9304 + }, + { + "t": 484.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228913152, + "peak": 305209344, + "anon": 214482944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9604 + }, + { + "t": 499.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229150720, + "peak": 305209344, + "anon": 214482944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9904 + }, + { + "t": 514.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229146624, + "peak": 305209344, + "anon": 214482944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73048064, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10204 + }, + { + "t": 530.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229367808, + "peak": 305209344, + "anon": 214564864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10504 + }, + { + "t": 545.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229343232, + "peak": 305209344, + "anon": 214503424, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10804 + }, + { + "t": 560.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 228864000, + "peak": 305209344, + "anon": 214622208, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11104 + }, + { + "t": 575.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229621760, + "peak": 305209344, + "anon": 214732800, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73392128, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11404 + }, + { + "t": 590.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229974016, + "peak": 305209344, + "anon": 214777856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11704 + }, + { + "t": 605.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 229810176, + "peak": 305209344, + "anon": 214917120, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 73043968, + "peak": 105070592, + "anon": 4231168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 12004 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/run.log new file mode 100644 index 00000000..c0bfd13e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/run.log @@ -0,0 +1,59 @@ +[17:53:13] scratch drive folders cleared before FROM (R-656): none existed +[17:53:13] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +[17:53:55] FROM settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:53:55] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[17:53:55] zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuoemkea000201rmnjxlwixt","username":"drillad0bf6","createdAt":"2026-09-30T17:53:55.905Z","updatedAt":"2026-09-30T17:53:55.905 +[17:53:56] zipline: login as the seeded user http=200 ok=True +[17:53:56] C1 (seed reads back BEFORE): True +[17:53:56] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[17:54:50] TO up -d rc=18 +[17:54:51] TO settled=True in 0.1s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[17:54:51] engine state zipline-postgres: 16 +[17:54:51] migration lines observed: 0 +[17:54:51] zipline: login as the seeded user http=200 ok=True +[17:54:51] RESULT (seed reads back AFTER): True +[17:54:51] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[17:55:07] + 15s zipline=227M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=300 +[17:55:22] + 30s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=600 +[17:55:37] + 45s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=901 +[17:55:52] + 61s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1204 +[17:56:07] + 76s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1504 +[17:56:22] + 91s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=1804 +[17:56:37] + 106s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2100 +[17:56:53] + 121s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2400 +[17:57:08] + 136s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=2700 +[17:57:23] + 151s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3004 +[17:57:38] + 167s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3304 +[17:57:53] + 182s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3604 +[17:58:08] + 197s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=68M/256M peak=100M kills=0 rs=0 reqs=3904 +[17:58:23] + 212s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4204 +[17:58:39] + 227s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4504 +[17:58:54] + 242s zipline=213M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=4800 +[17:59:09] + 258s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5100 +[17:59:24] + 273s zipline=214M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5404 +[17:59:39] + 288s zipline=215M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=5704 +[17:59:54] + 303s zipline=215M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6004 +[18:00:09] + 318s zipline=216M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6304 +[18:00:25] + 333s zipline=216M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6604 +[18:00:40] + 348s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=6904 +[18:00:55] + 364s zipline=217M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7204 +[18:01:10] + 379s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7504 +[18:01:25] + 394s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=7804 +[18:01:40] + 409s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8104 +[18:01:55] + 424s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8404 +[18:02:11] + 439s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=8704 +[18:02:26] + 454s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9004 +[18:02:41] + 469s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9304 +[18:02:56] + 485s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9604 +[18:03:11] + 500s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=9904 +[18:03:26] + 515s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10204 +[18:03:41] + 530s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10504 +[18:03:57] + 545s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=10804 +[18:04:12] + 560s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11104 +[18:04:27] + 575s zipline=218M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11404 +[18:04:42] + 590s zipline=219M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=11704 +[18:04:57] + 606s zipline=219M/512M peak=291M kills=0 rs=0 zipline-postgres=69M/256M peak=100M kills=0 rs=0 reqs=12004 +[18:04:57] memory watch: killed=False tight=[] requests=12004 codes={'301': 12004} +[18:04:57] MV-zipline: ABORT — putting the FROM images back +[18:04:58] zipline: login as the seeded user http=200 ok=True +[18:04:58] ABORT: app came back in 0.1s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-full.log new file mode 100644 index 00000000..3d6c6654 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-full.log @@ -0,0 +1,89 @@ +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 19:53:14.444 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 19:53:15.199 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:53:15.202 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline | [2026-09-30T19:53:24 INFO db] connecting to database +zipline | [2026-09-30T19:53:26 INFO server] starting zipline mode="production" version="4.6.1" argv=[] +zipline | Applying migration `20241228224006_init` +zipline | Applying migration `20250103233230_string_settings_expiration` +zipline | Applying migration `20250109054202_string_bytes_ms` +zipline | Applying migration `20250110223901_website_login_bg_blur` +zipline | Applying migration `20250131204021_url_enabled` +zipline | Applying migration `20250213234605_random_words` +zipline | Applying migration `20250304051948_unauthenticated_folder_uploads` +zipline | Applying migration `20250516022401_version_checking` +zipline | Applying migration `20250607030453_discord_whitelist` +zipline | Applying migration `20250607183312_discord_allow_deny_list` +zipline | Applying migration `20250613161158_add_domains` +zipline | Applying migration `20250827234055_files_default_compression_format` +zipline-postgres | 2026-09-30 19:53:15.216 CEST [44] LOG: database system was shut down at 2026-09-30 19:53:14 CEST +zipline | Applying migration `20250828035734_features_thumbnails_format` +zipline | Applying migration `20251001031548_core_trust_proxy` +zipline | Applying migration `20251209070242_file_max_expiration` +zipline | Applying migration `20260108050615_passkeys_overhaul` +zipline | Applying migration `20260114063251_clean_thumbnails` +zipline | Applying migration `20260114182751_add_nested_folders` +zipline | Applying migration `20260214054654_revamp_sessions` +zipline | Applying migration `20260304074731_max_files_per_upload` +zipline | Applying migration `20260318172322_file_prop_anonymous_upload` +zipline | Applying migration `20260406015245_thumbnails_instantaneous` +zipline | [2026-09-30T19:53:27 INFO migrations] applied migrations: 20241228224006_init, 20250103233230_string_settings_expiration, 20250109054202_string_bytes_ms, 20250110223901_website_login_bg_blur, 20250131204021_url_enabled, 20250213234605_random_words, 20250304051948_unauthenticated_folder_uploads, 20250516022401_version_checking, 20250607030453_discord_whitelist, 20250607183312_discord_allow_deny_list, 20250613161158_add_domains, 20250827234055_files_default_compression_format, 20250828035734_features_thumbnails_format, 20251001031548_core_trust_proxy, 20251209070242_file_max_expiration, 20260108050615_passkeys_overhaul, 20260114063251_clean_thumbnails, 20260114182751_add_nested_folders, 20260214054654_revamp_sessions, 20260304074731_max_files_per_upload, 20260318172322_file_prop_anonymous_upload, 20260406015245_thumbnails_instantaneous +zipline | [2026-09-30T19:53:27 INFO server] reading settings... +zipline | [2026-09-30T19:53:28 INFO server] server started hostname="0.0.0.0" port=3000 +zipline | [2026-09-30T19:53:55 INFO api::setup] first setup running +zipline | [2026-09-30T19:53:55 INFO api::setup] first setup complete +zipline | [2026-09-30T19:53:56 INFO api::auth::login] user logged in successfully username="drillad0bf6" ip="172.18.0.1" ua="curl/8.14.1" +zipline | [2026-09-30T19:53:56 WARN server::ratelimit] rate limit exceeded for user 172.18.0.1 key="172.18.0.1-/api/auth/login-POST" +zipline-postgres | 2026-09-30 19:53:15.224 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down...2026-09-30 19:53:15.390 CEST [41] LOG: received fast shutdown request +zipline-postgres | .2026-09-30 19:53:15.393 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 19:53:15.399 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 19:53:15.400 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 19:53:15.402 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 19:53:15.483 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.026 s, sync=0.044 s, total=0.084 s; sync files=301, longest=0.017 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 19:53:15.496 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 19:53:15.625 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 19:53:15.631 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 19:53:15.639 CEST [57] LOG: database system was shut down at 2026-09-30 19:53:15 CEST +zipline-postgres | 2026-09-30 19:53:15.648 CEST [1] LOG: database system is ready to accept connections diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-states.json new file mode 100644 index 00000000..748d6a20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/to-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/verdict.json new file mode 100644 index 00000000..24249859 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step1-4.7.0/verdict.json @@ -0,0 +1,72 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.7.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 606.0, + "requested_s": 600, + "requests": 12004, + "codes": { + "301": 12004 + }, + "first_kill": null, + "containers": { + "zipline": { + "limit": 536870912, + "peak": 305209344, + "peak_pct": 0.568, + "anon_peak_sampled": 223789056, + "anon_peak_pct": 0.417, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "zipline-postgres": { + "limit": 268435456, + "peak": 105070592, + "peak_pct": 0.391, + "anon_peak_sampled": 4231168, + "anon_peak_pct": 0.016, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 0.1, + "measured_at": "2026-09-30T18:04:58Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 705.5 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/compose-final.log new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/run.log new file mode 100644 index 00000000..290e6d97 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/run.log @@ -0,0 +1,3 @@ +[18:06:02] scratch drive folders cleared before FROM (R-656): none existed +[18:06:02] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:06:35] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/verdict.json new file mode 100644 index 00000000..fb898adc --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt1-pullfault/verdict.json @@ -0,0 +1,29 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.2MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.7MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 105.3MB/164.7MB\n bc6a0c8f7ef1 Extracting [================================> ] 105.8MB/164.7MB\n bc6a0c8f7ef1 Extracting [==================================================>] 164.7MB/164.7MB\nfailed to register layer: write /zipline/node_modules/.pnpm/@tabler+icons@3.44.0/node_modules/@tabler/icons/categories/outline/Letters/hexagon-letter-z.svg: no space left on device\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 33.0, + "measured_at": "2026-09-30T18:06:35Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 33.0 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/compose-final.log new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/run.log new file mode 100644 index 00000000..c593796c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/run.log @@ -0,0 +1,3 @@ +[18:07:20] scratch drive folders cleared before FROM (R-656): none existed +[18:07:20] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:07:48] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/verdict.json new file mode 100644 index 00000000..e3bd5566 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline-step2-attempt2-benchdiskfull/verdict.json @@ -0,0 +1,29 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.2MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 104.7MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 105.3MB/164.7MB\n bc6a0c8f7ef1 Extracting [================================> ] 105.8MB/164.7MB\n bc6a0c8f7ef1 Extracting [==================================================>] 164.7MB/164.7MB\nfailed to register layer: write /zipline/node_modules/.pnpm/@tabler+icons@3.44.0/node_modules/@tabler/icons/categories/outline/Letters/hexagon-letter-x.svg: no space left on device\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 27.4, + "measured_at": "2026-09-30T18:07:48Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "total_s": 27.4 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/abort-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/abort-states.json new file mode 100644 index 00000000..748d6a20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/abort-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/compose-final.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/compose-final.log new file mode 100644 index 00000000..4f6c898f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/compose-final.log @@ -0,0 +1,66 @@ +zipline | [2026-09-30T20:21:39 INFO db] connecting to database +zipline | [2026-09-30T20:21:41 INFO server] starting zipline mode="production" version="4.7.0" argv=[] +zipline | [2026-09-30T20:21:41 INFO server] reading settings... +zipline | [2026-09-30T20:21:42 INFO server] server started hostname="0.0.0.0" port=3000 +zipline | [2026-09-30T20:22:10 INFO api.auth.login] user logged in successfully username="drill5c7f02" ip="172.18.0.1" ua="curl/8.14.1" +zipline | [2026-09-30T20:22:10 WARN api.auth.login] invalid login attempt username="drill5c7f02" ip="172.18.0.1" ua="curl/8.14.1" +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 20:09:56.808 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 20:09:57.616 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 20:09:57.619 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 20:09:57.629 CEST [44] LOG: database system was shut down at 2026-09-30 20:09:57 CEST +zipline-postgres | 2026-09-30 20:09:57.639 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down....2026-09-30 20:09:57.806 CEST [41] LOG: received fast shutdown request +zipline-postgres | 2026-09-30 20:09:57.811 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 20:09:57.815 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 20:09:57.815 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 20:09:57.818 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 20:09:57.897 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.021 s, sync=0.048 s, total=0.083 s; sync files=301, longest=0.021 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 20:09:57.913 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 20:09:58.040 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 20:09:58.041 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 20:09:58.041 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 20:09:58.050 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 20:09:58.058 CEST [57] LOG: database system was shut down at 2026-09-30 20:09:57 CEST +zipline-postgres | 2026-09-30 20:09:58.067 CEST [1] LOG: database system is ready to accept connections +zipline-postgres | 2026-09-30 20:14:58.152 CEST [55] LOG: checkpoint starting: time +zipline-postgres | 2026-09-30 20:15:25.786 CEST [55] LOG: checkpoint complete: wrote 278 buffers (1.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=27.586 s, sync=0.032 s, total=27.635 s; sync files=248, longest=0.005 s, average=0.001 s; distance=1983 kB, estimate=1983 kB; lsn=0/1B15B18, redo lsn=0/1B15AE0 diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/engine-state.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/engine-state.json new file mode 100644 index 00000000..11b57819 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/engine-state.json @@ -0,0 +1,8 @@ +{ + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before-detail.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/memory-samples.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/memory-samples.json new file mode 100644 index 00000000..51f51212 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/memory-samples.json @@ -0,0 +1,1122 @@ +[ + { + "t": 15.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 216395776, + "peak": 284307456, + "anon": 182935552, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125067264, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 217821184, + "peak": 284307456, + "anon": 183791616, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126431232, + "peak": 144867328, + "anon": 5570560, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 600 + }, + { + "t": 45.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 216858624, + "peak": 284307456, + "anon": 183836672, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 124993536, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 900 + }, + { + "t": 60.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 216797184, + "peak": 284307456, + "anon": 183898112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126320640, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1200 + }, + { + "t": 75.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 216670208, + "peak": 284307456, + "anon": 183943168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125255680, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1500 + }, + { + "t": 90.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 197623808, + "peak": 284307456, + "anon": 165437440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126582784, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1800 + }, + { + "t": 106.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 197877760, + "peak": 284307456, + "anon": 165453824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125054976, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2100 + }, + { + "t": 121.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 197840896, + "peak": 284307456, + "anon": 165605376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126582784, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2400 + }, + { + "t": 136.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198639616, + "peak": 284307456, + "anon": 165642240, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125566976, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2700 + }, + { + "t": 151.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198160384, + "peak": 284307456, + "anon": 165707776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126578688, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3000 + }, + { + "t": 166.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 199110656, + "peak": 284307456, + "anon": 166215680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125243392, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3300 + }, + { + "t": 181.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 199266304, + "peak": 284307456, + "anon": 166793216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126578688, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3600 + }, + { + "t": 196.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 193540096, + "peak": 284307456, + "anon": 161394688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125132800, + "peak": 144867328, + "anon": 4136960, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3896 + }, + { + "t": 211.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 193810432, + "peak": 284307456, + "anon": 161431552, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126578688, + "peak": 144867328, + "anon": 5455872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4196 + }, + { + "t": 227.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 194248704, + "peak": 284307456, + "anon": 161456128, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125161472, + "peak": 144867328, + "anon": 4202496, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4496 + }, + { + "t": 242.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 193871872, + "peak": 284307456, + "anon": 161476608, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 127246336, + "peak": 144867328, + "anon": 5541888, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4796 + }, + { + "t": 257.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 194097152, + "peak": 284307456, + "anon": 161492992, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125136896, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5096 + }, + { + "t": 272.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 194371584, + "peak": 284307456, + "anon": 161796096, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126664704, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5396 + }, + { + "t": 287.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 194805760, + "peak": 284307456, + "anon": 162234368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125140992, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5696 + }, + { + "t": 302.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 195481600, + "peak": 284307456, + "anon": 162799616, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126664704, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5996 + }, + { + "t": 317.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 195780608, + "peak": 284307456, + "anon": 163352576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125292544, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6296 + }, + { + "t": 333.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 196132864, + "peak": 284307456, + "anon": 163901440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126664704, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6596 + }, + { + "t": 348.2, + "containers": { + "zipline": { + "limit": 536870912, + "current": 196976640, + "peak": 284307456, + "anon": 164450304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125214720, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6896 + }, + { + "t": 363.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 197296128, + "peak": 284307456, + "anon": 165003264, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126664704, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7196 + }, + { + "t": 378.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198438912, + "peak": 284307456, + "anon": 165634048, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125116416, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7496 + }, + { + "t": 393.6, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198369280, + "peak": 284307456, + "anon": 166092800, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126648320, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7796 + }, + { + "t": 408.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198369280, + "peak": 284307456, + "anon": 166092800, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125349888, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8096 + }, + { + "t": 423.9, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198905856, + "peak": 284307456, + "anon": 166096896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126644224, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8396 + }, + { + "t": 439.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198647808, + "peak": 284307456, + "anon": 166096896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125095936, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8696 + }, + { + "t": 454.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198631424, + "peak": 284307456, + "anon": 166096896, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126627840, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8996 + }, + { + "t": 469.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198393856, + "peak": 284307456, + "anon": 166100992, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125095936, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9296 + }, + { + "t": 484.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198651904, + "peak": 284307456, + "anon": 166109184, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126623744, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9596 + }, + { + "t": 499.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198926336, + "peak": 284307456, + "anon": 166141952, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125095936, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9896 + }, + { + "t": 514.7, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198742016, + "peak": 284307456, + "anon": 166178816, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126623744, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10196 + }, + { + "t": 529.8, + "containers": { + "zipline": { + "limit": 536870912, + "current": 199077888, + "peak": 284307456, + "anon": 166465536, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125177856, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10496 + }, + { + "t": 545.0, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198975488, + "peak": 284307456, + "anon": 166203392, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126623744, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10796 + }, + { + "t": 560.1, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198512640, + "peak": 284307456, + "anon": 166219776, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125095936, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11096 + }, + { + "t": 575.3, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198840320, + "peak": 284307456, + "anon": 166223872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126623744, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11396 + }, + { + "t": 590.4, + "containers": { + "zipline": { + "limit": 536870912, + "current": 198782976, + "peak": 284307456, + "anon": 166223872, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 125095936, + "peak": 144867328, + "anon": 4263936, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11696 + }, + { + "t": 605.5, + "containers": { + "zipline": { + "limit": 536870912, + "current": 199041024, + "peak": 284307456, + "anon": 166461440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "zipline-postgres": { + "limit": 268435456, + "current": 126623744, + "peak": 144867328, + "anon": 5582848, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11996 + } +] \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/migration-lines.txt b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/run.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/run.log new file mode 100644 index 00000000..ede2fe1b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/run.log @@ -0,0 +1,59 @@ +[18:09:20] scratch drive folders cleared before FROM (R-656): none existed +[18:09:20] MV-zipline: deploying zipline at FROM {'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:10:38] FROM settled=True in 30.9s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[18:10:38] fixture: the BOX walk's own (Zipline), through upgrade_boxport +[18:10:38] zipline: /api/setup http=200 :: {"firstSetup":false,"user":{"id":"cmuof81t6000201pcqxmonqk6","username":"drill5c7f02","createdAt":"2026-09-30T18:10:38.250Z","updatedAt":"2026-09-30T18:10:38.25 +[18:10:38] zipline: login as the seeded user http=200 ok=True +[18:10:38] C1 (seed reads back BEFORE): True +[18:10:38] MV-zipline: swapping to TO {'zipline': 'ghcr.io/diced/zipline:4.8.0', 'zipline-postgres': 'postgres:16-alpine'} +[18:10:50] TO up -d rc=0 +[18:11:21] TO settled=True in 31.0s :: {"zipline": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "zipline-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[18:11:21] engine state zipline-postgres: 16 +[18:11:21] migration lines observed: 0 +[18:11:21] zipline: login as the seeded user http=200 ok=True +[18:11:21] RESULT (seed reads back AFTER): True +[18:11:22] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[18:11:37] + 15s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=300 +[18:11:52] + 30s zipline=207M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=600 +[18:12:07] + 45s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=900 +[18:12:22] + 60s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=1200 +[18:12:37] + 76s zipline=206M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=1500 +[18:12:52] + 91s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=1800 +[18:13:08] + 106s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=2100 +[18:13:23] + 121s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=2400 +[18:13:38] + 136s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=2700 +[18:13:53] + 151s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=3000 +[18:14:08] + 166s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=3300 +[18:14:23] + 182s zipline=190M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=3600 +[18:14:38] + 197s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=3896 +[18:14:54] + 212s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=4196 +[18:15:09] + 227s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=4496 +[18:15:24] + 242s zipline=184M/512M peak=271M kills=0 rs=0 zipline-postgres=121M/256M peak=138M kills=0 rs=0 reqs=4796 +[18:15:39] + 257s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=5096 +[18:15:54] + 272s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=5396 +[18:16:09] + 288s zipline=185M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=5696 +[18:16:24] + 303s zipline=186M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=5996 +[18:16:40] + 318s zipline=186M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=6296 +[18:16:55] + 333s zipline=187M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=6596 +[18:17:10] + 348s zipline=187M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=6896 +[18:17:25] + 363s zipline=188M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=7196 +[18:17:40] + 378s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=7496 +[18:17:55] + 394s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=7796 +[18:18:10] + 409s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=8096 +[18:18:25] + 424s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=8396 +[18:18:41] + 439s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=8696 +[18:18:56] + 454s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=8996 +[18:19:11] + 469s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=9296 +[18:19:26] + 484s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=9596 +[18:19:41] + 500s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=9896 +[18:19:56] + 515s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=10196 +[18:20:11] + 530s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=10496 +[18:20:27] + 545s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=10796 +[18:20:42] + 560s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=11096 +[18:20:57] + 575s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=11396 +[18:21:12] + 590s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=119M/256M peak=138M kills=0 rs=0 reqs=11696 +[18:21:27] + 606s zipline=189M/512M peak=271M kills=0 rs=0 zipline-postgres=120M/256M peak=138M kills=0 rs=0 reqs=11996 +[18:21:27] memory watch: killed=False tight=[] requests=11996 codes={'301': 11996} +[18:21:27] MV-zipline: ABORT — putting the FROM images back +[18:22:10] zipline: login as the seeded user http=200 ok=True +[18:22:10] ABORT: app came back in 31.0s; data present=True \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-full.log b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-full.log new file mode 100644 index 00000000..d5b818f6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-full.log @@ -0,0 +1,62 @@ +zipline-postgres | The files belonging to this database system will be owned by user "postgres". +zipline-postgres | This user must also own the server process. +zipline-postgres | +zipline-postgres | The database cluster will be initialized with locale "en_US.utf8". +zipline-postgres | The default database encoding has accordingly been set to "UTF8". +zipline-postgres | The default text search configuration will be set to "english". +zipline-postgres | +zipline-postgres | Data page checksums are disabled. +zipline-postgres | +zipline-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok +zipline-postgres | creating subdirectories ... ok +zipline-postgres | selecting dynamic shared memory implementation ... posix +zipline | [2026-09-30T20:10:53 INFO server] starting zipline mode="production" version="4.8.0" argv=[] +zipline | [2026-09-30T20:10:53 INFO server] reading settings... +zipline | [2026-09-30T20:10:53 INFO db] connecting to database +zipline | [2026-09-30T20:10:55 INFO server] server started hostname="0.0.0.0" port=3000 +zipline-postgres | selecting default max_connections ... 100 +zipline-postgres | selecting default shared_buffers ... 128MB +zipline-postgres | selecting default time zone ... Europe/Budapest +zipline-postgres | creating configuration files ... ok +zipline-postgres | running bootstrap script ... ok +zipline-postgres | sh: locale: not found +zipline-postgres | 2026-09-30 20:09:56.808 CEST [35] WARNING: no usable system locales were found +zipline-postgres | performing post-bootstrap initialization ... ok +zipline-postgres | initdb: warning: enabling "trust" authentication for local connections +zipline-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. +zipline-postgres | syncing data to disk ... ok +zipline-postgres | +zipline-postgres | +zipline-postgres | Success. You can now start the database server using: +zipline-postgres | +zipline-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start +zipline-postgres | +zipline-postgres | waiting for server to start....2026-09-30 20:09:57.616 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 20:09:57.619 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 20:09:57.629 CEST [44] LOG: database system was shut down at 2026-09-30 20:09:57 CEST +zipline-postgres | 2026-09-30 20:09:57.639 CEST [41] LOG: database system is ready to accept connections +zipline-postgres | done +zipline-postgres | server started +zipline-postgres | CREATE DATABASE +zipline-postgres | +zipline-postgres | +zipline-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* +zipline-postgres | +zipline-postgres | waiting for server to shut down....2026-09-30 20:09:57.806 CEST [41] LOG: received fast shutdown request +zipline-postgres | 2026-09-30 20:09:57.811 CEST [41] LOG: aborting any active transactions +zipline-postgres | 2026-09-30 20:09:57.815 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1 +zipline-postgres | 2026-09-30 20:09:57.815 CEST [42] LOG: shutting down +zipline-postgres | 2026-09-30 20:09:57.818 CEST [42] LOG: checkpoint starting: shutdown immediate +zipline-postgres | 2026-09-30 20:09:57.897 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.021 s, sync=0.048 s, total=0.083 s; sync files=301, longest=0.021 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58 +zipline-postgres | 2026-09-30 20:09:57.913 CEST [41] LOG: database system is shut down +zipline-postgres | done +zipline-postgres | server stopped +zipline-postgres | +zipline-postgres | PostgreSQL init process complete; ready for start up. +zipline-postgres | +zipline-postgres | 2026-09-30 20:09:58.040 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit +zipline-postgres | 2026-09-30 20:09:58.041 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +zipline-postgres | 2026-09-30 20:09:58.041 CEST [1] LOG: listening on IPv6 address "::", port 5432 +zipline-postgres | 2026-09-30 20:09:58.050 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +zipline-postgres | 2026-09-30 20:09:58.058 CEST [57] LOG: database system was shut down at 2026-09-30 20:09:57 CEST +zipline-postgres | 2026-09-30 20:09:58.067 CEST [1] LOG: database system is ready to accept connections diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-states.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-states.json new file mode 100644 index 00000000..748d6a20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/to-states.json @@ -0,0 +1,14 @@ +{ + "zipline": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "zipline-postgres": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/verdict.json b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/verdict.json new file mode 100644 index 00000000..a389d377 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/apps/zipline/bench/evidence/MV-zipline/verdict.json @@ -0,0 +1,72 @@ +{ + "harness_version": 4, + "edge": "MV-zipline", + "app": "zipline", + "note": "night 2026-09-23 within-a-major move: zipline=ghcr.io/diced/zipline:4.8.0", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "zipline-postgres": { + "image": "postgres:16-alpine", + "probe": "datadir major version", + "answer": "16", + "probe_rc": 0 + } + }, + "memory": { + "soak_s": 605.8, + "requested_s": 600, + "requests": 11996, + "codes": { + "301": 11996 + }, + "first_kill": null, + "containers": { + "zipline": { + "limit": 536870912, + "peak": 284307456, + "peak_pct": 0.53, + "anon_peak_sampled": 183943168, + "anon_peak_pct": 0.343, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "zipline-postgres": { + "limit": 268435456, + "peak": 144867328, + "peak_pct": 0.54, + "anon_peak_sampled": 5582848, + "anon_peak_pct": 0.021, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 31.0, + "measured_at": "2026-09-30T18:22:10Z", + "evidence": "evidence/MV-zipline", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "total_s": 770.3 +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q1.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q1.txt new file mode 100644 index 00000000..35e274d9 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q1.txt @@ -0,0 +1,5 @@ +16:58:42 START calibre-web ['calibre-web=crocodilestick/calibre-web-automated:v4.0.8'] +16:59:33 DONE calibre-web rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='no non-browser seed route — tried: admin login after after_install -> 401' (51s) +16:59:33 START gitea ['gitea=gitea/gitea:1.27.3'] +17:14:14 DONE gitea rc=0 verdict=proven read_before=True read_after=True abort=refuses marks=[] peaks={'gitea': 0.529} detail='scriber_ids":{"enabled":true,"dynamic":true,"fields":[{"type":"number","index":true,"docvalues":true}]},"title":{"enabled":true,"dynamic":true,"fields":[{"type"' (881s) +17:14:14 QUEUE q1 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q2.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q2.txt new file mode 100644 index 00000000..5495c48c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q2.txt @@ -0,0 +1,9 @@ +17:15:40 START calibre-web ['calibre-web=crocodilestick/calibre-web-automated:v4.0.8'] +17:16:34 DONE calibre-web rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='no non-browser seed route — tried: admin login after after_install -> 401' (54s) +17:16:34 START emby ['emby=emby/embyserver:4.11.0.4'] +17:29:02 DONE emby rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'emby': 0.073} detail='None' (748s) +17:29:02 START ghost ['ghost=ghost:6.67.0-alpine'] +17:42:22 DONE ghost rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'ghost': 0.339} detail='None' (800s) +17:42:22 START home-assistant ['home-assistant=ghcr.io/home-assistant/home-assistant:2026.9.4'] +17:56:39 DONE home-assistant rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'home-assistant': 0.474} detail='None' (856s) +17:56:39 QUEUE q2 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q3.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q3.txt new file mode 100644 index 00000000..e5caa72a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q3.txt @@ -0,0 +1,9 @@ +17:59:05 START calibre-web ['calibre-web=crocodilestick/calibre-web-automated:v4.0.8'] +18:11:56 DONE calibre-web rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=['files_may_change'] peaks={'calibre-web': 0.389} detail='None' (772s) +18:11:56 START wger ['wger=wger/server:2.7'] +18:25:18 DONE wger rc=0 verdict=proven read_before=True read_after=True abort=starts-data-gone marks=[] peaks={'wger': 0.786} detail='the app started but the seeded data was gone' (801s) +18:25:18 START crafty-controller ['crafty-controller=registry.gitlab.com/crafty-controller/crafty-4:4.11.0'] +18:38:00 DONE crafty-controller rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'crafty-controller': 0.08} detail='None' (762s) +18:38:00 START uptime-kuma ['uptime-kuma=louislam/uptime-kuma:2.5.5'] +18:50:48 DONE uptime-kuma rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'uptime-kuma': 0.497} detail='None' (768s) +18:50:48 QUEUE q3 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q4.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q4.txt new file mode 100644 index 00000000..5c5517c2 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q4.txt @@ -0,0 +1,16 @@ +53 +f853f44209d97aac73adf6947427a3b5 upgrade-test.py +84b0e18e593e88e3abe3209ad8274c08 upgrade_fixtures_box.py +b5a9d21a7908e29c6903fca953e1128f upgrade_fixtures_box28.py +18:50:57 START outline ['outline=outlinewiki/outline:1.10.1'] +19:04:25 DONE outline rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'outline': 0.377, 'outline-postgres': 0.621, 'outline-redis': 0.071} detail='None' (808s) +19:04:25 START rallly ['rallly=lukevella/rallly:4.15.3'] +19:17:55 DONE rallly rc=0 verdict=proven read_before=True read_after=True abort=starts-data-gone marks=[] peaks={'rallly': 0.64, 'rallly-postgres': 0.658} detail='the app started but the seeded data was gone' (811s) +19:17:55 QUEUE q4 FINISHED +19:17:56 START partD (immich step 0b82 at 768M) +DONE partD verdict=proven read_before=True read_after=True abort=refuses marks=['files_may_change'] containers={'immich-machine-learning': (0.153, None), 'immich-postgres': (0.296, None), 'immich-redis': (0.031, None), 'immich-server': (0.491, None)} +19:33:25 START zipline ['zipline=ghcr.io/diced/zipline:4.8.0'] +19:35:00 DONE zipline rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='C1 failed: the fixture could not prove itself before the upgrade' (96s) +19:35:00 QUEUE q4 FINISHED +19:35:00 START calibre-web names re-run (--soak 0) +19:35:06 QUEUE q4 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q5.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q5.txt new file mode 100644 index 00000000..e817e92c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q5.txt @@ -0,0 +1,9 @@ +53 +3521a71b6ee61dd86739a5ec0a84c7c9 upgrade-test.py +a2e3cf98bfcd49972f94adf33b03d1b7 upgrade_fixtures_box.py +b5a9d21a7908e29c6903fca953e1128f upgrade_fixtures_box28.py +19:35:49 START calibre-web names (edge N-calibre-web, soak 0) +DONE calibre-names verdict proven files_changed_detail ['/srv/felhom-gate/hdd/userdata/media/books/metadata.db (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-shm (changed)', '/srv/felhom-gate/hdd/userdata/media/books/metadata.db-wal (changed)'] +19:38:12 START zipline ['zipline=ghcr.io/diced/zipline:4.8.0'] +19:52:38 DONE zipline rc=0 verdict=failed read_before=True read_after=False abort=starts-and-serves marks=[] peaks={} detail='None' (866s) +19:52:38 QUEUE q5 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q6.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q6.txt new file mode 100644 index 00000000..3a410421 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q6.txt @@ -0,0 +1,3 @@ +19:53:08 START zipline ['zipline=ghcr.io/diced/zipline:4.7.0'] +20:05:13 DONE zipline rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'zipline': 0.568, 'zipline-postgres': 0.391} detail='None' (726s) +20:05:13 QUEUE q6 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q7.txt b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q7.txt new file mode 100644 index 00000000..a2be4ec5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/bench/benchq-q7.txt @@ -0,0 +1,9 @@ +20:05:57 START zipline ['zipline=ghcr.io/diced/zipline:4.8.0'] +20:06:39 DONE zipline rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164' (42s) +20:06:39 QUEUE q7 FINISHED +20:07:15 START zipline ['zipline=ghcr.io/diced/zipline:4.8.0'] +20:07:52 DONE zipline rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='FROM deploy failed rc=18: ===> ] 101.4MB/164.7MB\n bc6a0c8f7ef1 Extracting [===============================> ] 103.6MB/164' (37s) +20:07:52 QUEUE q7 FINISHED +20:09:15 START zipline ['zipline=ghcr.io/diced/zipline:4.8.0'] +20:22:25 DONE zipline rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'zipline': 0.53, 'zipline-postgres': 0.54} detail='None' (790s) +20:22:25 QUEUE q7 FINISHED diff --git a/documentation/audits/more-night-apps-2026-09-30/box/B0-drill-reset.txt b/documentation/audits/more-night-apps-2026-09-30/box/B0-drill-reset.txt new file mode 100644 index 00000000..96f0731c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/B0-drill-reset.txt @@ -0,0 +1,5 @@ +# drill reset to live main 2026-09-30T15:01:39Z (operator allowed it after a permission refusal) +drill before: 56c4888; live main: 4c552cf +remote: . Processing 1 references +remote: Processed 1 references in total +drill after: 4c552cf diff --git a/documentation/audits/more-night-apps-2026-09-30/box/B1-repoint-drill.txt b/documentation/audits/more-night-apps-2026-09-30/box/B1-repoint-drill.txt new file mode 100644 index 00000000..f2c89786 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/B1-repoint-drill.txt @@ -0,0 +1,10 @@ +git: + branch: main + repo_url: https://gitea.dooplex.hu/admin/app-catalog-drill.git + sync_interval: 15m + token: + username: "admin" +hub: +update: + health_timeout: 90s + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T1-remove-first-batch.txt b/documentation/audits/more-night-apps-2026-09-30/box/T1-remove-first-batch.txt new file mode 100644 index 00000000..b0218f29 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T1-remove-first-batch.txt @@ -0,0 +1,11 @@ +17:40:28 == remove calibre-web +17:40:37 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead +17:41:12 [X] after remove: deployed=False leftovers='/opt/docker/stacks/calibre-web' +17:41:12 == remove emby +17:41:18 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead +17:41:52 [X] after remove: deployed=False leftovers='/opt/docker/stacks/emby' +17:41:52 == remove ghost +17:42:33 [X] after remove: deployed=False leftovers='/opt/docker/stacks/ghost' +17:42:33 == remove home-assistant +17:43:19 [X] after remove: deployed=False leftovers='/opt/docker/stacks/home-assistant' +/dev/loop1 69G 61G 4.4G 94% /var/lib/docker diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T2-images-removed-by-name.txt b/documentation/audits/more-night-apps-2026-09-30/box/T2-images-removed-by-name.txt new file mode 100644 index 00000000..763eff09 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T2-images-removed-by-name.txt @@ -0,0 +1,51 @@ +removed calcom/cal.com:v6.2.0 +removed ghcr.io/gramps-project/grampsweb:v25.6.0 +removed crocodilestick/calibre-web-automated:v4.0.6 +removed crocodilestick/calibre-web-automated:v4.0.8 +removed emby/embyserver:4.11.0.4 +removed ghcr.io/home-assistant/home-assistant:2026.9.4 +removed ghcr.io/immich-app/immich-machine-learning:v3.2.4 +removed ghcr.io/immich-app/immich-server:v3.2.4 +removed ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0 +removed ghcr.io/seanmorley15/adventurelog-backend:v0.12.1 +removed ghcr.io/seanmorley15/adventurelog-backend:v0.13.0 +removed ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1 +removed ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0 +removed ghcr.io/cmintey/wishlist:v0.67.1 +removed n8nio/n8n:2.42.1 +removed grafana/grafana:13.2.3 +removed lukevella/rallly:4.11.1 +removed outlinewiki/outline:1.9.1 +removed kimai/kimai2:2.67.0 +removed ghcr.io/lukegus/termix:2.8.0 +removed ghcr.io/papra-hq/papra:26.6.2-rootless +removed lscr.io/linuxserver/bookstack:26.09.1 +removed ghost:6.67.0-alpine +removed gitea/gitea:1.27.0 +removed gitea/gitea:1.27.3 +removed deluan/navidrome:0.64.2 +removed gotson/komga:1.28.0 +removed ghcr.io/advplyr/audiobookshelf:2.37.1 +removed gitea.dooplex.hu/admin/felhom-controller:0.281.0 +removed gitea.dooplex.hu/admin/felhom-controller:0.282.0 +removed gitea.dooplex.hu/admin/felhom-controller:0.283.0 +removed postgis/postgis:16-3.5-alpine +removed mariadb:11.4 +removed mariadb:11.8 +removed mariadb:12.3 +removed postgres:15-alpine +removed postgres:16-alpine +removed postgres:17-alpine +removed vikunja/vikunja:2.3.0 +removed vikunja/vikunja:2.6.0 +removed vaultwarden/server:1.36.0-alpine +removed codewithcj/sparkyfitness:v0.17.3 +removed codewithcj/sparkyfitness_server:v0.17.3 +removed ghcr.io/sysadminsmedia/homebox:0.26.2 +removed redis:7.2-alpine +removed redis:7.4.0-alpine +removed glanceapp/glance:v0.8.5 +removed privatebin/pdo:2.0.6 +removed ghcr.io/thomiceli/opengist:1.15 +/dev/loop1 69G 23G 43G 36% /var/lib/docker + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T3-remove-second-batch.txt b/documentation/audits/more-night-apps-2026-09-30/box/T3-remove-second-batch.txt new file mode 100644 index 00000000..1d84f92b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T3-remove-second-batch.txt @@ -0,0 +1,7 @@ +18:10:56 == remove wger +18:11:46 [X] after remove: deployed=False leftovers='/opt/docker/stacks/wger' +18:11:46 == remove crafty-controller +18:12:28 [X] after remove: deployed=False leftovers='/opt/docker/stacks/crafty-controller' +18:12:28 == remove uptime-kuma +18:13:12 [X] after remove: deployed=False leftovers='/opt/docker/stacks/uptime-kuma' +/dev/loop1 69G 31G 35G 47% /var/lib/docker diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T4-remove-third-batch.txt b/documentation/audits/more-night-apps-2026-09-30/box/T4-remove-third-batch.txt new file mode 100644 index 00000000..e6782d19 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T4-remove-third-batch.txt @@ -0,0 +1,5 @@ +19:18:36 == remove outline +19:19:18 [X] after remove: deployed=False leftovers='/opt/docker/stacks/outline' +19:19:18 == remove rallly +19:20:09 [X] after remove: deployed=False leftovers='/opt/docker/stacks/rallly' +/dev/loop1 69G 39G 27G 59% /var/lib/docker diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T5-teardown-9202.txt b/documentation/audits/more-night-apps-2026-09-30/box/T5-teardown-9202.txt new file mode 100644 index 00000000..fc0816d6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T5-teardown-9202.txt @@ -0,0 +1,36 @@ +20:23:57 [X] stop -> 200 {'ok': True, 'message': 'Stack zipline stop completed'} +20:24:29 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'zipline', 'volumes_removed': ['zipline_zipline_postgres_data', 'zipline_zipline_public', 'zipline_zipline_uploads'], 'hdd_path +20:24:37 [X] after remove: deployed=False leftovers='/opt/docker/stacks/zipline' +absent-or-kept crocodilestick/calibre-web-automated:v4.0.6 +removed crocodilestick/calibre-web-automated:v4.0.8 +absent-or-kept gitea/gitea:1.27.0 +absent-or-kept gitea/gitea:1.27.3 +absent-or-kept emby/embyserver:4.11.0.3 +absent-or-kept emby/embyserver:4.11.0.4 +absent-or-kept ghost:6.65.0-alpine +absent-or-kept ghost:6.67.0-alpine +absent-or-kept ghcr.io/home-assistant/home-assistant:2026.9.3 +absent-or-kept ghcr.io/home-assistant/home-assistant:2026.9.4 +removed louislam/uptime-kuma:2.4.0 +removed louislam/uptime-kuma:2.5.5 +removed wger/server:2.6 +removed wger/server:2.7 +removed registry.gitlab.com/crafty-controller/crafty-4:4.10.7 +removed registry.gitlab.com/crafty-controller/crafty-4:4.11.0 +absent-or-kept outlinewiki/outline:1.9.1 +removed outlinewiki/outline:1.10.1 +absent-or-kept lukevella/rallly:4.11.1 +removed lukevella/rallly:4.15.3 +removed ghcr.io/diced/zipline:4.6.1 +removed ghcr.io/diced/zipline:4.7.0 +removed ghcr.io/diced/zipline:4.8.0 +removed postgres:16-alpine +/dev/loop1 69G 25G 40G 39% /var/lib/docker +filebrowser gtstef/filebrowser:1.3.3-stable +felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.283.1 +paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 +paperless-postgres postgres:18-alpine +paperless-redis redis:7-alpine +traefik traefik:v3.6.7 +249 + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T6-repoint-live.txt b/documentation/audits/more-night-apps-2026-09-30/box/T6-repoint-live.txt new file mode 100644 index 00000000..e7f043c6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T6-repoint-live.txt @@ -0,0 +1,9 @@ +git: + branch: main + repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git + sync_interval: 15m + token: + username: "" +hub: +0 + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/T7-drill-reset.txt b/documentation/audits/more-night-apps-2026-09-30/box/T7-drill-reset.txt new file mode 100644 index 00000000..3df359c8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/T7-drill-reset.txt @@ -0,0 +1,27 @@ +# drill reset 2026-09-30T18:25:28Z (operator allowed the force-push this session) +drill before: 1fa22c5; live main: fb87030 +1fa22c5 DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.8.0'} (box proof) +fe5feff DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.7.0'} (box proof) +727a379 Revert "DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.8.0'} (box proof)" +f85ef9d DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.8.0'} (box proof) +3ce8e5e DRILL rallly: {'rallly': 'lukevella/rallly:4.15.3'} (box proof) +418cc41 DRILL outline: {'outline': 'outlinewiki/outline:1.10.1'} (box proof) +f545bd4 DRILL uptime-kuma: {'uptime-kuma': 'louislam/uptime-kuma:2.5.5'} (box proof) +c1485a7 DRILL crafty-controller: {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.11.0'} (box proof) +ff6d034 DRILL wger: {'wger': 'wger/server:2.7'} (box proof) +ebe672e Revert "DRILL wger: {'wger': 'wger/server:2.7'} (box proof)" +9295e35 DRILL wger: {'wger': 'wger/server:2.7'} (box proof) +4dd5982 DRILL wger: the R-738 template fix (migrations at start), at 2.6 +1233ccf Revert "DRILL wger: {'wger': 'wger/server:2.7'} (box proof)" +55f293e DRILL wger: {'wger': 'wger/server:2.7'} (box proof) +4223872 DRILL home-assistant: {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.4'} (box proof) +dc614cd DRILL ghost: {'ghost': 'ghost:6.67.0-alpine'} (box proof) +526d38b DRILL emby: {'emby': 'emby/embyserver:4.11.0.4'} (box proof) +7fe29b9 DRILL calibre-web: {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} (box proof) +fe7607f DRILL gitea: {'gitea': 'gitea/gitea:1.27.3'} (box proof) +remote: . Processing 1 references +drill after: fb87030 +image-line diff drill vs live: +IDENTICAL +live commits carrying DRILL: 4 +note: the 4 live commits whose message says DRILL are historic (ae08a03, 573e41f, 89304ab, d5d91e0 — before the drill repo); none from 2026-09-30 diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-after.txt b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-after.txt new file mode 100644 index 00000000..a2b16c30 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-after.txt @@ -0,0 +1,7 @@ +5ffb1a7c5f416c3c88e7f82bdc24c90faffd64cbee1eadc22d260a734e6c3722 ./.calnotes/notes.db +a107c547e9740489469c2b281e15e69c0b0f10135532a544f7aa1da319c3308e ./Drill Author/upg6b6189eb1d82 (2)/metadata.opf +04e070b67b553da8af96f2590d2a27d1e3b15bf4ea1985d7de81978e77b3c0a5 ./Drill Author/upg6b6189eb1d82 (2)/upg6b6189eb1d82 - Drill Author.epub +7f3ac49ea54c6e6e47ae38a7cef046ffb0bbaf02e75983283c98c286d130f3c7 ./metadata.db +fd4c9fda9cd3f9ae7c962b0ddf37232294d55580e1aa165aa06129b8549389eb ./metadata.db-shm +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./metadata.db-wal + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-before.txt b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-before.txt new file mode 100644 index 00000000..5263ecb2 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-before.txt @@ -0,0 +1,12 @@ +bind /mnt/felhom-drives/scratch_hdd/userdata/calibre-web/userdata/media/books -> /calibre-library +volume /var/lib/docker/volumes/calibre-web_calibre_web_config/_data -> /config +bind /mnt/sys_drive/felhom-data/userdata/import/calibre -> /cwa-book-ingest + +LIB=/mnt/felhom-drives/scratch_hdd/userdata/calibre-web/userdata/media/books +5ffb1a7c5f416c3c88e7f82bdc24c90faffd64cbee1eadc22d260a734e6c3722 ./.calnotes/notes.db +a107c547e9740489469c2b281e15e69c0b0f10135532a544f7aa1da319c3308e ./Drill Author/upg6b6189eb1d82 (2)/metadata.opf +04e070b67b553da8af96f2590d2a27d1e3b15bf4ea1985d7de81978e77b3c0a5 ./Drill Author/upg6b6189eb1d82 (2)/upg6b6189eb1d82 - Drill Author.epub +7f3ac49ea54c6e6e47ae38a7cef046ffb0bbaf02e75983283c98c286d130f3c7 ./metadata.db +fd4c9fda9cd3f9ae7c962b0ddf37232294d55580e1aa165aa06129b8549389eb ./metadata.db-shm +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./metadata.db-wal + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-diff.txt b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-diff.txt new file mode 100644 index 00000000..4b121b9d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web-files-diff.txt @@ -0,0 +1,2 @@ +6a7 +> diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/box-verdict-calibre-web.json b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/box-verdict-calibre-web.json new file mode 100644 index 00000000..18942a7b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/box-verdict-calibre-web.json @@ -0,0 +1,18 @@ +{ + "app": "calibre-web", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.6" + }, + "to": { + "calibre-web": "crocodilestick/calibre-web-automated:v4.0.8" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 64.6, + "final_phase": "done", + "measured_at": "2026-09-30T15:13:55Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/prep.txt new file mode 100644 index 00000000..75263089 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/prep.txt @@ -0,0 +1,7 @@ +deploy/reuse calibre-web: True + calibre-web: the generated admin password does not log in (opds http=401) — running the template's own after_install command (the app's CLI, as the product does after an install) + calibre-web: after_install :: sh: 1: python3: not found + calibre-web: POST /upload http=200 {"location": "/tasks"} + calibre-web: seeded book upg6b6189eb1d82 is in the library + calibre-web: readback — listed=True download_link=True book_content_served=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/step.txt new file mode 100644 index 00000000..d523e4e7 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/calibre-web/step.txt @@ -0,0 +1,29 @@ +before: pinned={'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.6'} +drill: 7fe29b9 DRILL calibre-web: {'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} (box proof) + phase +0.0s backing-up | err=None + phase +6.2s pulling | err=None + phase +30.8s copying | err=None + phase +44.1s verifying | err=None + phase +64.6s done | err=None + calibre-web: readback — listed=True download_link=True book_content_served=True +2026/09/30 15:13:56 update.go:536: [INFO] [stacks] update calibre-web: accepted — guarded update started +2026/09/30 15:13:56 update.go:1365: [INFO] [stacks] update calibre-web: phase checking +2026/09/30 15:13:56 update.go:786: [INFO] [stacks] update calibre-web: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 15:13:56 update.go:816: [INFO] [stacks] update calibre-web: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:02:07Z) (found: none) — backing up first +2026/09/30 15:13:56 update.go:1365: [INFO] [stacks] update calibre-web: phase backing-up +2026/09/30 15:14:01 update.go:831: [INFO] [stacks] update calibre-web: precondition met after the backup — Tier 1 (own recovery unit) copy from 2026-09-30T15:14:01Z +2026/09/30 15:14:01 update.go:1365: [INFO] [stacks] update calibre-web: phase safety-dump +2026/09/30 15:14:01 update.go:846: [INFO] [stacks] update calibre-web: safety dump done (0 file(s)) [] +2026/09/30 15:14:02 undo.go:287: [INFO] [stacks] update calibre-web: the undo copy will hold 1 named volume(s), 0.4 MiB +2026/09/30 15:14:02 update.go:1365: [INFO] [stacks] update calibre-web: phase pinning +2026/09/30 15:14:02 pin.go:373: [INFO] [stacks] update calibre-web: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/calibre-web/docker-compose.yml (calibre-web=crocodilestick/calibre-web-automated:v4.0.8) +2026/09/30 15:14:02 update.go:1365: [INFO] [stacks] update calibre-web: phase pulling +2026/09/30 15:14:27 update.go:1365: [INFO] [stacks] update calibre-web: phase copying +2026/09/30 15:14:39 update.go:1365: [INFO] [stacks] update calibre-web: phase copying +2026/09/30 15:14:40 undo.go:437: [INFO] [stacks] update calibre-web: copied calibre-web_calibre_web_config → calibre-web_calibre_web_config.pre-update-20260930T151439Z in 456ms +2026/09/30 15:14:40 update.go:1365: [INFO] [stacks] update calibre-web: phase starting +2026/09/30 15:14:40 update.go:1365: [INFO] [stacks] update calibre-web: phase verifying +2026/09/30 15:15:00 update.go:997: [INFO] [stacks] update calibre-web: healthy after 20s (the app's health check passed) +2026/09/30 15:15:01 update.go:1033: [INFO] [stacks] update calibre-web: DONE in 1m4s + +RESULT final_phase=done after={'calibre-web': 'crocodilestick/calibre-web-automated:v4.0.8'} seed_after=True verdict=proven (64.6 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/box-verdict-crafty-controller.json b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/box-verdict-crafty-controller.json new file mode 100644 index 00000000..ab1c62ca --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/box-verdict-crafty-controller.json @@ -0,0 +1,18 @@ +{ + "app": "crafty-controller", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.10.7" + }, + "to": { + "crafty-controller": "registry.gitlab.com/crafty-controller/crafty-4:4.11.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 51.3, + "final_phase": "done", + "measured_at": "2026-09-30T16:07:33Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/prep.txt new file mode 100644 index 00000000..85c30c34 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse crafty-controller: True + crafty: POST /api/v2/roles http=200 {"status":"ok","data":{"role_id":1}} + crafty: readback of the seeded role http=200 found=True (roles listed: 1) +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/step.txt new file mode 100644 index 00000000..ee2d437f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/crafty-controller/step.txt @@ -0,0 +1,39 @@ +before: pinned={'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.10.7'} +drill: c1485a7 DRILL crafty-controller: {'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.11.0'} (box proof) + phase +0.0s backing-up | err=None + phase +4.1s safety-dump | err=None + phase +7.2s pulling | err=None + phase +35.9s copying | err=None + phase +40.0s starting | err=None + phase +41.0s verifying | err=None + phase +51.3s done | err=None + crafty: readback of the seeded role http=200 found=True (roles listed: 1) +2026/09/30 16:07:34 update.go:536: [INFO] [stacks] update crafty-controller: accepted — guarded update started +2026/09/30 16:07:34 update.go:1365: [INFO] [stacks] update crafty-controller: phase checking +2026/09/30 16:07:34 update.go:786: [INFO] [stacks] update crafty-controller: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 16:07:34 update.go:816: [INFO] [stacks] update crafty-controller: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:05:59Z) (found: none) — backing up first +2026/09/30 16:07:34 update.go:1365: [INFO] [stacks] update crafty-controller: phase backing-up +2026/09/30 16:07:38 update.go:831: [INFO] [stacks] update crafty-controller: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:07:36Z +2026/09/30 16:07:38 update.go:1365: [INFO] [stacks] update crafty-controller: phase safety-dump +2026/09/30 16:07:39 update.go:846: [INFO] [stacks] update crafty-controller: safety dump done (0 file(s)) [] +2026/09/30 16:07:41 undo.go:287: [INFO] [stacks] update crafty-controller: the undo copy will hold 5 named volume(s), 0.4 MiB +2026/09/30 16:07:41 update.go:1365: [INFO] [stacks] update crafty-controller: phase pinning +2026/09/30 16:07:41 pin.go:373: [INFO] [stacks] update crafty-controller: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/crafty-controller/docker-compose.yml (crafty-controller=registry.gitlab.com/crafty-controller/crafty-4:4.11.0) +2026/09/30 16:07:41 update.go:1365: [INFO] [stacks] update crafty-controller: phase pulling +2026/09/30 16:08:10 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:12 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:12 undo.go:437: [INFO] [stacks] update crafty-controller: copied crafty-controller_crafty_backups → crafty-controller_crafty_backups.pre-update-20260930T160812Z in 462ms +2026/09/30 16:08:12 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:13 undo.go:437: [INFO] [stacks] update crafty-controller: copied crafty-controller_crafty_config → crafty-controller_crafty_config.pre-update-20260930T160812Z in 500ms +2026/09/30 16:08:13 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:13 undo.go:437: [INFO] [stacks] update crafty-controller: copied crafty-controller_crafty_import → crafty-controller_crafty_import.pre-update-20260930T160812Z in 457ms +2026/09/30 16:08:13 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:14 undo.go:437: [INFO] [stacks] update crafty-controller: copied crafty-controller_crafty_logs → crafty-controller_crafty_logs.pre-update-20260930T160812Z in 448ms +2026/09/30 16:08:14 update.go:1365: [INFO] [stacks] update crafty-controller: phase copying +2026/09/30 16:08:14 undo.go:437: [INFO] [stacks] update crafty-controller: copied crafty-controller_crafty_servers → crafty-controller_crafty_servers.pre-update-20260930T160812Z in 440ms +2026/09/30 16:08:14 update.go:1365: [INFO] [stacks] update crafty-controller: phase starting +2026/09/30 16:08:15 update.go:1365: [INFO] [stacks] update crafty-controller: phase verifying +2026/09/30 16:08:25 update.go:997: [INFO] [stacks] update crafty-controller: healthy after 10s (the app's health check passed) +2026/09/30 16:08:25 update.go:1033: [INFO] [stacks] update crafty-controller: DONE in 51s + +RESULT final_phase=done after={'crafty-controller': 'registry.gitlab.com/crafty-controller/crafty-4:4.11.0'} seed_after=True verdict=proven (51.3 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/emby/box-verdict-emby.json b/documentation/audits/more-night-apps-2026-09-30/box/emby/box-verdict-emby.json new file mode 100644 index 00000000..88732222 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/emby/box-verdict-emby.json @@ -0,0 +1,18 @@ +{ + "app": "emby", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "emby": "emby/embyserver:4.11.0.3" + }, + "to": { + "emby": "emby/embyserver:4.11.0.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 23.6, + "final_phase": "done", + "measured_at": "2026-09-30T15:19:09Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/emby/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/emby/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/emby/prep.txt new file mode 100644 index 00000000..91d4114d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/emby/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse emby: True + emby: seeded first user drille6af16da + emby: readback found=True (http 200, control passed) +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/emby/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/emby/step.txt new file mode 100644 index 00000000..0cdfff92 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/emby/step.txt @@ -0,0 +1,30 @@ +before: pinned={'emby': 'emby/embyserver:4.11.0.3'} +drill: 526d38b DRILL emby: {'emby': 'emby/embyserver:4.11.0.4'} (box proof) + phase +0.0s backing-up | err=None + phase +2.1s pulling | err=None + phase +14.4s copying | err=None + phase +17.4s starting | err=None + phase +18.5s verifying | err=None + phase +23.6s done | err=None + emby: readback found=True (http 200, control passed) +2026/09/30 15:19:10 update.go:536: [INFO] [stacks] update emby: accepted — guarded update started +2026/09/30 15:19:10 update.go:1365: [INFO] [stacks] update emby: phase checking +2026/09/30 15:19:10 update.go:786: [INFO] [stacks] update emby: ladder — the last step (3 of 3) — the catalog's current definition +2026/09/30 15:19:10 update.go:816: [INFO] [stacks] update emby: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:18:06Z) (found: none) — backing up first +2026/09/30 15:19:10 update.go:1365: [INFO] [stacks] update emby: phase backing-up +2026/09/30 15:19:12 update.go:831: [INFO] [stacks] update emby: precondition met after the backup — Tier 1 (own recovery unit) copy from 2026-09-30T15:19:11Z +2026/09/30 15:19:12 update.go:1365: [INFO] [stacks] update emby: phase safety-dump +2026/09/30 15:19:12 update.go:846: [INFO] [stacks] update emby: safety dump done (0 file(s)) [] +2026/09/30 15:19:12 undo.go:287: [INFO] [stacks] update emby: the undo copy will hold 1 named volume(s), 7.8 MiB +2026/09/30 15:19:12 update.go:1365: [INFO] [stacks] update emby: phase pinning +2026/09/30 15:19:12 pin.go:373: [INFO] [stacks] update emby: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/emby/docker-compose.yml (emby=emby/embyserver:4.11.0.4) +2026/09/30 15:19:12 update.go:1365: [INFO] [stacks] update emby: phase pulling +2026/09/30 15:19:23 update.go:1365: [INFO] [stacks] update emby: phase copying +2026/09/30 15:19:26 update.go:1365: [INFO] [stacks] update emby: phase copying +2026/09/30 15:19:27 undo.go:437: [INFO] [stacks] update emby: copied emby_emby_config → emby_emby_config.pre-update-20260930T151926Z in 587ms +2026/09/30 15:19:27 update.go:1365: [INFO] [stacks] update emby: phase starting +2026/09/30 15:19:27 update.go:1365: [INFO] [stacks] update emby: phase verifying +2026/09/30 15:19:33 update.go:997: [INFO] [stacks] update emby: healthy after 5s (the app's health check passed) +2026/09/30 15:19:33 update.go:1033: [INFO] [stacks] update emby: DONE in 23s + +RESULT final_phase=done after={'emby': 'emby/embyserver:4.11.0.4'} seed_after=True verdict=proven (23.6 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/ghost/box-verdict-ghost.json b/documentation/audits/more-night-apps-2026-09-30/box/ghost/box-verdict-ghost.json new file mode 100644 index 00000000..4839bdc8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/ghost/box-verdict-ghost.json @@ -0,0 +1,18 @@ +{ + "app": "ghost", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "ghost": "ghost:6.65.0-alpine" + }, + "to": { + "ghost": "ghost:6.67.0-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 107.7, + "final_phase": "done", + "measured_at": "2026-09-30T15:19:55Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/ghost/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/ghost/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/ghost/prep.txt new file mode 100644 index 00000000..ff8847eb --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/ghost/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse ghost: True + ghost: seeded site title Drill-532b527694eb + ghost: readback found=True (http 200, control passed) +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/ghost/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/ghost/step.txt new file mode 100644 index 00000000..e6e71eb9 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/ghost/step.txt @@ -0,0 +1,29 @@ +before: pinned={'ghost': 'ghost:6.65.0-alpine'} +drill: dc614cd DRILL ghost: {'ghost': 'ghost:6.67.0-alpine'} (box proof) + phase +0.0s backing-up | err=None + phase +2.1s pulling | err=None + phase +96.4s starting | err=None + phase +97.4s verifying | err=None + phase +107.7s done | err=None + ghost: readback found=True (http 200, control passed) +2026/09/30 15:19:56 update.go:536: [INFO] [stacks] update ghost: accepted — guarded update started +2026/09/30 15:19:56 update.go:1365: [INFO] [stacks] update ghost: phase checking +2026/09/30 15:19:56 update.go:786: [INFO] [stacks] update ghost: ladder — the last step (3 of 3) — the catalog's current definition +2026/09/30 15:19:56 update.go:816: [INFO] [stacks] update ghost: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:18:17Z) (found: none) — backing up first +2026/09/30 15:19:56 update.go:1365: [INFO] [stacks] update ghost: phase backing-up +2026/09/30 15:19:57 update.go:831: [INFO] [stacks] update ghost: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T15:19:57Z +2026/09/30 15:19:57 update.go:1365: [INFO] [stacks] update ghost: phase safety-dump +2026/09/30 15:19:57 update.go:846: [INFO] [stacks] update ghost: safety dump done (0 file(s)) [] +2026/09/30 15:19:58 undo.go:287: [INFO] [stacks] update ghost: the undo copy will hold 1 named volume(s), 1.5 MiB +2026/09/30 15:19:58 update.go:1365: [INFO] [stacks] update ghost: phase pinning +2026/09/30 15:19:58 pin.go:373: [INFO] [stacks] update ghost: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/ghost/docker-compose.yml (ghost=ghost:6.67.0-alpine) +2026/09/30 15:19:58 update.go:1365: [INFO] [stacks] update ghost: phase pulling +2026/09/30 15:21:31 update.go:1365: [INFO] [stacks] update ghost: phase copying +2026/09/30 15:21:32 update.go:1365: [INFO] [stacks] update ghost: phase copying +2026/09/30 15:21:32 undo.go:437: [INFO] [stacks] update ghost: copied ghost_ghost_content → ghost_ghost_content.pre-update-20260930T152132Z in 481ms +2026/09/30 15:21:32 update.go:1365: [INFO] [stacks] update ghost: phase starting +2026/09/30 15:21:33 update.go:1365: [INFO] [stacks] update ghost: phase verifying +2026/09/30 15:21:43 update.go:997: [INFO] [stacks] update ghost: healthy after 10s (the app's health check passed) +2026/09/30 15:21:43 update.go:1033: [INFO] [stacks] update ghost: DONE in 1m47s + +RESULT final_phase=done after={'ghost': 'ghost:6.67.0-alpine'} seed_after=True verdict=proven (107.7 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/gitea/box-verdict-gitea.json b/documentation/audits/more-night-apps-2026-09-30/box/gitea/box-verdict-gitea.json new file mode 100644 index 00000000..c59f285d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/gitea/box-verdict-gitea.json @@ -0,0 +1,18 @@ +{ + "app": "gitea", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "gitea": "gitea/gitea:1.27.0" + }, + "to": { + "gitea": "gitea/gitea:1.27.3" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 21.6, + "final_phase": "done", + "measured_at": "2026-09-30T15:12:47Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/gitea/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/gitea/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/gitea/prep.txt new file mode 100644 index 00000000..6efc67d8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/gitea/prep.txt @@ -0,0 +1,6 @@ +deploy/reuse gitea: True + gitea: first-run installer POST / http=200 + gitea: installed through its own first-run form; the admin authenticates + gitea: create repo http=201 + gitea: readback of the seeded repo http=200 ok=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/gitea/remove.txt b/documentation/audits/more-night-apps-2026-09-30/box/gitea/remove.txt new file mode 100644 index 00000000..62b6719b --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/gitea/remove.txt @@ -0,0 +1,3 @@ +17:17:13 [X] stop -> 200 {'ok': True, 'message': 'Stack gitea stop completed'} +17:17:44 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'gitea', 'volumes_removed': ['gitea_gitea_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazá +17:17:53 [X] after remove: deployed=False leftovers='/opt/docker/stacks/gitea' diff --git a/documentation/audits/more-night-apps-2026-09-30/box/gitea/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/gitea/step.txt new file mode 100644 index 00000000..5fa8b889 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/gitea/step.txt @@ -0,0 +1,30 @@ +before: pinned={'gitea': 'gitea/gitea:1.27.0'} +drill: fe7607f DRILL gitea: {'gitea': 'gitea/gitea:1.27.3'} (box proof) + phase +0.0s backing-up | err=None + phase +2.1s safety-dump | err=None + phase +3.1s pulling | err=None + phase +15.4s copying | err=None + phase +16.4s verifying | err=None + phase +21.5s done | err=None + gitea: readback of the seeded repo http=200 ok=True +2026/09/30 15:12:48 update.go:536: [INFO] [stacks] update gitea: accepted — guarded update started +2026/09/30 15:12:48 update.go:1365: [INFO] [stacks] update gitea: phase checking +2026/09/30 15:12:48 update.go:786: [INFO] [stacks] update gitea: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 15:12:48 update.go:816: [INFO] [stacks] update gitea: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:09:24Z) (found: none) — backing up first +2026/09/30 15:12:48 update.go:1365: [INFO] [stacks] update gitea: phase backing-up +2026/09/30 15:12:49 update.go:831: [INFO] [stacks] update gitea: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T15:12:49Z +2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase safety-dump +2026/09/30 15:12:50 update.go:846: [INFO] [stacks] update gitea: safety dump done (0 file(s)) [] +2026/09/30 15:12:50 undo.go:287: [INFO] [stacks] update gitea: the undo copy will hold 1 named volume(s), 2.3 MiB +2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase pinning +2026/09/30 15:12:50 pin.go:373: [INFO] [stacks] update gitea: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/gitea/docker-compose.yml (gitea=gitea/gitea:1.27.3) +2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase pulling +2026/09/30 15:13:03 update.go:1365: [INFO] [stacks] update gitea: phase copying +2026/09/30 15:13:03 update.go:1365: [INFO] [stacks] update gitea: phase copying +2026/09/30 15:13:04 undo.go:437: [INFO] [stacks] update gitea: copied gitea_gitea_data → gitea_gitea_data.pre-update-20260930T151303Z in 477ms +2026/09/30 15:13:04 update.go:1365: [INFO] [stacks] update gitea: phase starting +2026/09/30 15:13:04 update.go:1365: [INFO] [stacks] update gitea: phase verifying +2026/09/30 15:13:09 update.go:997: [INFO] [stacks] update gitea: healthy after 5s (the app's health check passed) +2026/09/30 15:13:09 update.go:1033: [INFO] [stacks] update gitea: DONE in 21s + +RESULT final_phase=done after={'gitea': 'gitea/gitea:1.27.3'} seed_after=True verdict=proven (21.6 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/box-verdict-home-assistant.json b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/box-verdict-home-assistant.json new file mode 100644 index 00000000..0733d1f3 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/box-verdict-home-assistant.json @@ -0,0 +1,18 @@ +{ + "app": "home-assistant", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.3" + }, + "to": { + "home-assistant": "ghcr.io/home-assistant/home-assistant:2026.9.4" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 113.8, + "final_phase": "done", + "measured_at": "2026-09-30T15:22:06Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/prep.txt new file mode 100644 index 00000000..fc18cb52 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse home-assistant: True + home-assistant: /api/onboarding/users http=200 + home-assistant: login as the seeded owner ok=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/step.txt new file mode 100644 index 00000000..48d74f05 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/home-assistant/step.txt @@ -0,0 +1,29 @@ +before: pinned={'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.3'} +drill: 4223872 DRILL home-assistant: {'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.4'} (box proof) + phase +0.0s backing-up | err=None + phase +7.2s pulling | err=None + phase +91.3s copying | err=None + phase +98.4s verifying | err=None + phase +113.8s done | err=None + home-assistant: login as the seeded owner ok=True +2026/09/30 15:22:07 update.go:536: [INFO] [stacks] update home-assistant: accepted — guarded update started +2026/09/30 15:22:07 update.go:1365: [INFO] [stacks] update home-assistant: phase checking +2026/09/30 15:22:07 update.go:786: [INFO] [stacks] update home-assistant: ladder — the last step (2 of 2) — the catalog's current definition +2026/09/30 15:22:07 update.go:816: [INFO] [stacks] update home-assistant: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:18:39Z) (found: none) — backing up first +2026/09/30 15:22:07 update.go:1365: [INFO] [stacks] update home-assistant: phase backing-up +2026/09/30 15:22:13 update.go:831: [INFO] [stacks] update home-assistant: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T15:22:13Z +2026/09/30 15:22:13 update.go:1365: [INFO] [stacks] update home-assistant: phase safety-dump +2026/09/30 15:22:13 update.go:846: [INFO] [stacks] update home-assistant: safety dump done (0 file(s)) [] +2026/09/30 15:22:14 undo.go:287: [INFO] [stacks] update home-assistant: the undo copy will hold 1 named volume(s), 0.3 MiB +2026/09/30 15:22:14 update.go:1365: [INFO] [stacks] update home-assistant: phase pinning +2026/09/30 15:22:14 pin.go:373: [INFO] [stacks] update home-assistant: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/home-assistant/docker-compose.yml (home-assistant=ghcr.io/home-assistant/home-assistant:2026.9.4) +2026/09/30 15:22:14 update.go:1365: [INFO] [stacks] update home-assistant: phase pulling +2026/09/30 15:23:37 update.go:1365: [INFO] [stacks] update home-assistant: phase copying +2026/09/30 15:23:44 update.go:1365: [INFO] [stacks] update home-assistant: phase copying +2026/09/30 15:23:44 undo.go:437: [INFO] [stacks] update home-assistant: copied home-assistant_homeassistant_config → home-assistant_homeassistant_config.pre-update-20260930T152344Z in 464ms +2026/09/30 15:23:44 update.go:1365: [INFO] [stacks] update home-assistant: phase starting +2026/09/30 15:23:45 update.go:1365: [INFO] [stacks] update home-assistant: phase verifying +2026/09/30 15:24:00 update.go:997: [INFO] [stacks] update home-assistant: healthy after 15s (the app's health check passed) +2026/09/30 15:24:00 update.go:1033: [INFO] [stacks] update home-assistant: DONE in 1m53s + +RESULT final_phase=done after={'home-assistant': 'ghcr.io/home-assistant/home-assistant:2026.9.4'} seed_after=True verdict=proven (113.8 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/outline/box-verdict-outline.json b/documentation/audits/more-night-apps-2026-09-30/box/outline/box-verdict-outline.json new file mode 100644 index 00000000..f785c40c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/outline/box-verdict-outline.json @@ -0,0 +1,22 @@ +{ + "app": "outline", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "outline": "outlinewiki/outline:1.9.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "to": { + "outline": "outlinewiki/outline:1.10.1", + "outline-postgres": "postgres:18-alpine", + "outline-redis": "redis:7-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 89.2, + "final_phase": "done", + "measured_at": "2026-09-30T16:15:12Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/outline/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/outline/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/outline/prep.txt new file mode 100644 index 00000000..9da08e74 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/outline/prep.txt @@ -0,0 +1,5 @@ +deploy/reuse outline: True + outline: installation.create http=302 + outline: seeded document drilldoc-885c8a49 + outline: readback of the seeded document http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/outline/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/outline/step.txt new file mode 100644 index 00000000..78f5d1a5 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/outline/step.txt @@ -0,0 +1,35 @@ +before: pinned={'outline': 'outlinewiki/outline:1.9.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} +drill: 418cc41 DRILL outline: {'outline': 'outlinewiki/outline:1.10.1'} (box proof) + phase +0.0s backing-up | err=None + phase +15.4s safety-dump | err=None + phase +16.4s pulling | err=None + phase +59.5s copying | err=None + phase +67.7s starting | err=None + phase +73.8s verifying | err=None + phase +89.2s done | err=None + outline: readback of the seeded document http=200 found=True +2026/09/30 16:15:13 update.go:536: [INFO] [stacks] update outline: accepted — guarded update started +2026/09/30 16:15:13 update.go:1365: [INFO] [stacks] update outline: phase checking +2026/09/30 16:15:13 update.go:786: [INFO] [stacks] update outline: ladder — the last step (2 of 2) — the catalog's current definition +2026/09/30 16:15:13 update.go:816: [INFO] [stacks] update outline: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:13:37Z) (found: none) — backing up first +2026/09/30 16:15:13 update.go:1365: [INFO] [stacks] update outline: phase backing-up +2026/09/30 16:15:28 update.go:831: [INFO] [stacks] update outline: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:15:14Z +2026/09/30 16:15:28 update.go:1365: [INFO] [stacks] update outline: phase safety-dump +2026/09/30 16:15:28 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-20260930T161528Z-outline-postgres.sql] +2026/09/30 16:15:29 undo.go:287: [INFO] [stacks] update outline: the undo copy will hold 3 named volume(s), 65.8 MiB +2026/09/30 16:15:29 update.go:1365: [INFO] [stacks] update outline: phase pinning +2026/09/30 16:15:29 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.10.1, outline-postgres=postgres:18-alpine, outline-redis=redis:7-alpine) +2026/09/30 16:15:29 update.go:1365: [INFO] [stacks] update outline: phase pulling +2026/09/30 16:16:12 update.go:1365: [INFO] [stacks] update outline: phase copying +2026/09/30 16:16:19 update.go:1365: [INFO] [stacks] update outline: phase copying +2026/09/30 16:16:19 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_data → outline_outline_data.pre-update-20260930T161619Z in 464ms +2026/09/30 16:16:19 update.go:1365: [INFO] [stacks] update outline: phase copying +2026/09/30 16:16:20 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_postgres_data → outline_outline_postgres_data.pre-update-20260930T161619Z in 915ms +2026/09/30 16:16:20 update.go:1365: [INFO] [stacks] update outline: phase copying +2026/09/30 16:16:20 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_redis_data → outline_outline_redis_data.pre-update-20260930T161619Z in 441ms +2026/09/30 16:16:20 update.go:1365: [INFO] [stacks] update outline: phase starting +2026/09/30 16:16:27 update.go:1365: [INFO] [stacks] update outline: phase verifying +2026/09/30 16:16:42 update.go:997: [INFO] [stacks] update outline: healthy after 15s (the app's health check passed) +2026/09/30 16:16:42 update.go:1033: [INFO] [stacks] update outline: DONE in 1m29s + +RESULT final_phase=done after={'outline': 'outlinewiki/outline:1.10.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} seed_after=True verdict=proven (89.2 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/rallly/box-verdict-rallly.json b/documentation/audits/more-night-apps-2026-09-30/box/rallly/box-verdict-rallly.json new file mode 100644 index 00000000..2d569cae --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/rallly/box-verdict-rallly.json @@ -0,0 +1,20 @@ +{ + "app": "rallly", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "rallly": "lukevella/rallly:4.11.1", + "rallly-postgres": "postgres:18-alpine" + }, + "to": { + "rallly": "lukevella/rallly:4.15.3", + "rallly-postgres": "postgres:18-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 64.7, + "final_phase": "done", + "measured_at": "2026-09-30T16:17:59Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/rallly/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/rallly/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/rallly/prep.txt new file mode 100644 index 00000000..4184114a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/rallly/prep.txt @@ -0,0 +1,6 @@ +deploy/reuse rallly: True + rallly: sign-up http=200 + rallly: verify-email with the code http=200 + rallly: seeded poll drillpoll-83aa32b8 (vQUlmKBdy7L8) + rallly: readback of the seeded poll http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/rallly/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/rallly/step.txt new file mode 100644 index 00000000..be1ddedf --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/rallly/step.txt @@ -0,0 +1,31 @@ +before: pinned={'rallly': 'lukevella/rallly:4.11.1', 'rallly-postgres': 'postgres:18-alpine'} +drill: 3ce8e5e DRILL rallly: {'rallly': 'lukevella/rallly:4.15.3'} (box proof) + phase +0.0s backing-up | err=None + phase +18.5s safety-dump | err=None + phase +19.5s pulling | err=None + phase +36.0s copying | err=None + phase +48.2s starting | err=None + phase +54.4s verifying | err=None + phase +64.6s done | err=None + rallly: readback of the seeded poll http=200 found=True +2026/09/30 16:18:00 update.go:536: [INFO] [stacks] update rallly: accepted — guarded update started +2026/09/30 16:18:00 update.go:1365: [INFO] [stacks] update rallly: phase checking +2026/09/30 16:18:00 update.go:786: [INFO] [stacks] update rallly: ladder — the last step (2 of 2) — the catalog's current definition +2026/09/30 16:18:00 update.go:816: [INFO] [stacks] update rallly: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:16:57Z) (found: none) — backing up first +2026/09/30 16:18:00 update.go:1365: [INFO] [stacks] update rallly: phase backing-up +2026/09/30 16:18:19 update.go:831: [INFO] [stacks] update rallly: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:18:01Z +2026/09/30 16:18:19 update.go:1365: [INFO] [stacks] update rallly: phase safety-dump +2026/09/30 16:18:19 update.go:846: [INFO] [stacks] update rallly: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/rallly/db-dumps/pre-restore-20260930T161819Z-rallly-postgres.sql] +2026/09/30 16:18:20 undo.go:287: [INFO] [stacks] update rallly: the undo copy will hold 1 named volume(s), 64.9 MiB +2026/09/30 16:18:20 update.go:1365: [INFO] [stacks] update rallly: phase pinning +2026/09/30 16:18:20 pin.go:373: [INFO] [stacks] update rallly: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/rallly/docker-compose.yml (rallly=lukevella/rallly:4.15.3, rallly-postgres=postgres:18-alpine) +2026/09/30 16:18:20 update.go:1365: [INFO] [stacks] update rallly: phase pulling +2026/09/30 16:18:36 update.go:1365: [INFO] [stacks] update rallly: phase copying +2026/09/30 16:18:47 update.go:1365: [INFO] [stacks] update rallly: phase copying +2026/09/30 16:18:48 undo.go:437: [INFO] [stacks] update rallly: copied rallly_rallly_postgres_data → rallly_rallly_postgres_data.pre-update-20260930T161847Z in 876ms +2026/09/30 16:18:48 update.go:1365: [INFO] [stacks] update rallly: phase starting +2026/09/30 16:18:54 update.go:1365: [INFO] [stacks] update rallly: phase verifying +2026/09/30 16:19:04 update.go:997: [INFO] [stacks] update rallly: healthy after 10s (the app's health check passed) +2026/09/30 16:19:05 update.go:1033: [INFO] [stacks] update rallly: DONE in 1m4s + +RESULT final_phase=done after={'rallly': 'lukevella/rallly:4.15.3', 'rallly-postgres': 'postgres:18-alpine'} seed_after=True verdict=proven (64.7 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/box-verdict-uptime-kuma.json b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/box-verdict-uptime-kuma.json new file mode 100644 index 00000000..de8cbd57 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/box-verdict-uptime-kuma.json @@ -0,0 +1,18 @@ +{ + "app": "uptime-kuma", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "uptime-kuma": "louislam/uptime-kuma:2.4.0" + }, + "to": { + "uptime-kuma": "louislam/uptime-kuma:2.5.5" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 33.9, + "final_phase": "done", + "measured_at": "2026-09-30T16:09:34Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/prep.txt new file mode 100644 index 00000000..6b89edf8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/prep.txt @@ -0,0 +1,5 @@ +deploy/reuse uptime-kuma: True + uptime-kuma: setup ok=True successAdded + uptime-kuma: addStatusPage ok=True successAdded + uptime-kuma: readback of the seeded status page http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/step.txt new file mode 100644 index 00000000..949314b3 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/uptime-kuma/step.txt @@ -0,0 +1,29 @@ +before: pinned={'uptime-kuma': 'louislam/uptime-kuma:2.4.0'} +drill: f545bd4 DRILL uptime-kuma: {'uptime-kuma': 'louislam/uptime-kuma:2.5.5'} (box proof) + phase +0.0s backing-up | err=None + phase +6.2s pulling | err=None + phase +22.6s copying | err=None + phase +28.7s verifying | err=None + phase +33.8s done | err=None + uptime-kuma: readback of the seeded status page http=200 found=True +2026/09/30 16:09:36 update.go:536: [INFO] [stacks] update uptime-kuma: accepted — guarded update started +2026/09/30 16:09:36 update.go:1365: [INFO] [stacks] update uptime-kuma: phase checking +2026/09/30 16:09:36 update.go:786: [INFO] [stacks] update uptime-kuma: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 16:09:36 update.go:816: [INFO] [stacks] update uptime-kuma: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:08:40Z) (found: none) — backing up first +2026/09/30 16:09:36 update.go:1365: [INFO] [stacks] update uptime-kuma: phase backing-up +2026/09/30 16:09:41 update.go:831: [INFO] [stacks] update uptime-kuma: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:09:40Z +2026/09/30 16:09:41 update.go:1365: [INFO] [stacks] update uptime-kuma: phase safety-dump +2026/09/30 16:09:41 update.go:846: [INFO] [stacks] update uptime-kuma: safety dump done (0 file(s)) [] +2026/09/30 16:09:42 undo.go:287: [INFO] [stacks] update uptime-kuma: the undo copy will hold 1 named volume(s), 0.3 MiB +2026/09/30 16:09:42 update.go:1365: [INFO] [stacks] update uptime-kuma: phase pinning +2026/09/30 16:09:42 pin.go:373: [INFO] [stacks] update uptime-kuma: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/uptime-kuma/docker-compose.yml (uptime-kuma=louislam/uptime-kuma:2.5.5) +2026/09/30 16:09:42 update.go:1365: [INFO] [stacks] update uptime-kuma: phase pulling +2026/09/30 16:09:58 update.go:1365: [INFO] [stacks] update uptime-kuma: phase copying +2026/09/30 16:10:02 update.go:1365: [INFO] [stacks] update uptime-kuma: phase copying +2026/09/30 16:10:03 undo.go:437: [INFO] [stacks] update uptime-kuma: copied uptime-kuma_uptime_kuma_data → uptime-kuma_uptime_kuma_data.pre-update-20260930T161002Z in 1.1s +2026/09/30 16:10:03 update.go:1365: [INFO] [stacks] update uptime-kuma: phase starting +2026/09/30 16:10:04 update.go:1365: [INFO] [stacks] update uptime-kuma: phase verifying +2026/09/30 16:10:09 update.go:997: [INFO] [stacks] update uptime-kuma: healthy after 5s (the app's health check passed) +2026/09/30 16:10:09 update.go:1033: [INFO] [stacks] update uptime-kuma: DONE in 34s + +RESULT final_phase=done after={'uptime-kuma': 'louislam/uptime-kuma:2.5.5'} seed_after=True verdict=proven (33.9 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-log.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-log.txt new file mode 100644 index 00000000..62caee20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-log.txt @@ -0,0 +1,11 @@ +wger wger/server:2.7 Up About a minute (healthy) +level=ERROR ts=2026-09-30 17:48:46,153 module=log path=/home/wger/.local/lib/python3.12/site-packages/django/utils/log.py line=249 message=Internal Server Error: /en/user/login +Traceback (most recent call last): +KeyError: 'userprofile' +Traceback (most recent call last): +sqlite3.OperationalError: no such column: core_userprofile.time_zone +Traceback (most recent call last): + with self.db.wrap_database_errors: +django.db.utils.OperationalError: no such column: core_userprofile.time_zone +[30/Sep/2026 17:48:46] "POST /en/user/login HTTP/1.1" 500 2799 + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-recheck.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-recheck.txt new file mode 100644 index 00000000..7e52a2d7 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/after-500-recheck.txt @@ -0,0 +1,11 @@ +17:49:33 wger: login failed: POST /en/user/login -> 500 +verify now: False + [X] 0025_remove_unused_fields_in_userprofile + [X] 0026_alter_userprofile_birthdate_alter_userprofile_height + [ ] 0027_powersync_publication + [ ] 0028_longlivedsession + [ ] 0029_userprofile_timezone +You have 12 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): allauth_idp_oidc, core, manager, measurements, weight. +Run 'python manage.py migrate' to apply them. +2026-09-30T15:48:18.807417783Z restarts=0 + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt1-FAILED-R738.json b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt1-FAILED-R738.json new file mode 100644 index 00000000..77ef1511 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt1-FAILED-R738.json @@ -0,0 +1,18 @@ +{ + "app": "wger", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "wger": "wger/server:2.6" + }, + "to": { + "wger": "wger/server:2.7" + }, + "verdict": "failed", + "seed_read_before": true, + "seed_read_after": false, + "healthy_after": true, + "duration_s": 72.8, + "final_phase": "done", + "measured_at": "2026-09-30T15:47:21Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt3-invalid.json b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt3-invalid.json new file mode 100644 index 00000000..b144f1d8 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger-attempt3-invalid.json @@ -0,0 +1,18 @@ +{ + "app": "wger", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "wger": "wger/server:2.7" + }, + "to": { + "wger": "wger/server:2.7" + }, + "verdict": "failed", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 0, + "final_phase": null, + "measured_at": "2026-09-30T15:53:03Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger.json b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger.json new file mode 100644 index 00000000..74afca40 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/box-verdict-wger.json @@ -0,0 +1,18 @@ +{ + "app": "wger", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "wger": "wger/server:2.6" + }, + "to": { + "wger": "wger/server:2.7" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 46.2, + "final_phase": "done", + "measured_at": "2026-09-30T16:04:07Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/entrypoint-read.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/entrypoint-read.txt new file mode 100644 index 00000000..c3257a8e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/entrypoint-read.txt @@ -0,0 +1,25 @@ +null ["/home/wger/entrypoint.sh"] +3:# Bootstrap the application +7:# * (optionally) Compile custom bootstrap theme +10:if [ "$YARN_PROCESS_STATIC" == "True" ]; +14: echo "bootstrap process with: 'docker compose exec web wger bootstrap'" +18:wger bootstrap --no-process-static +21:if [ "$DJANGO_CLEAR_STATIC_FIRST" == "False" ]; then +27:if [[ "$DJANGO_DEBUG" == "False" && "${DJANGO_COLLECTSTATIC_ON_STARTUP:-True}" == "True" ]]; +33:# Perform database migrations +34:if [[ "$DJANGO_PERFORM_MIGRATIONS" == "True" ]]; +36: echo "Performing database migrations" +37: python3 manage.py migrate +40:# Sync exercises +41:if [[ "$SYNC_EXERCISES_ON_STARTUP" == "True" ]]; +43: echo "Synchronizing exercises" +44: python3 manage.py sync-exercises +48:if [[ "$DOWNLOAD_EXERCISE_IMAGES_ON_STARTUP" == "True" ]]; +55:if [[ "$DOWNLOAD_EXERCISE_VIDEOS_ON_STARTUP" == "True" ]]; +62:if [[ "$LOAD_ONLINE_FIXTURES_ON_STARTUP" == "True" ]]; +68:# Sync ingredients +69:if [[ "$SYNC_INGREDIENTS_ON_STARTUP" == "True" ]]; +71: echo "The option SYNC_INGREDIENTS_ON_STARTUP is not supported anymore as it needs several hours to complete." +72: echo "Please start the process manually with: docker compose exec web python3 manage.py sync-ingredients" +81:if [[ "$WGER_USE_GUNICORN" == "True" ]]; + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/migrations-ran.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/migrations-ran.txt new file mode 100644 index 00000000..bc333746 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/migrations-ran.txt @@ -0,0 +1,6 @@ + Applying manager.0029_alter_workoutsession_options_and_more... OK + Applying measurements.0006_health_sync... OK + Applying measurements.0007_migrate_weight... OK + Applying measurements.0008_dynamic_type... OK + Applying weight.0006_delete_weightentry... OK + diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt1-disk-refused.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt1-disk-refused.txt new file mode 100644 index 00000000..ce1e4921 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt1-disk-refused.txt @@ -0,0 +1 @@ +deploy/reuse wger: False diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt2-before-fix.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt2-before-fix.txt new file mode 100644 index 00000000..e727d8c6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt2-before-fix.txt @@ -0,0 +1,4 @@ +deploy/reuse wger: True + wger: POST /api/v2/weightentry/ http=201 + wger: readback of the seeded weight entry http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt3-deployed-2.7-stale-sync.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt3-deployed-2.7-stale-sync.txt new file mode 100644 index 00000000..e727d8c6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep-attempt3-deployed-2.7-stale-sync.txt @@ -0,0 +1,4 @@ +deploy/reuse wger: True + wger: POST /api/v2/weightentry/ http=201 + wger: readback of the seeded weight entry http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep.txt new file mode 100644 index 00000000..e727d8c6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse wger: True + wger: POST /api/v2/weightentry/ http=201 + wger: readback of the seeded weight entry http=200 found=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt1-FAILED-R738.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt1-FAILED-R738.txt new file mode 100644 index 00000000..db1bbd26 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt1-FAILED-R738.txt @@ -0,0 +1,33 @@ +before: pinned={'wger': 'wger/server:2.6'} +drill: 55f293e DRILL wger: {'wger': 'wger/server:2.7'} (box proof) + phase +0.0s backing-up | err=None + phase +12.3s safety-dump | err=None + phase +13.4s pulling | err=None + phase +45.1s copying | err=None + phase +56.4s starting | err=None + phase +57.4s verifying | err=None + phase +72.8s done | err=None + wger: login failed: POST /en/user/login -> 500 +2026/09/30 15:47:22 update.go:536: [INFO] [stacks] update wger: accepted — guarded update started +2026/09/30 15:47:22 update.go:1365: [INFO] [stacks] update wger: phase checking +2026/09/30 15:47:22 update.go:786: [INFO] [stacks] update wger: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 15:47:22 update.go:816: [INFO] [stacks] update wger: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:45:17Z) (found: none) — backing up first +2026/09/30 15:47:22 update.go:1365: [INFO] [stacks] update wger: phase backing-up +2026/09/30 15:47:34 update.go:831: [INFO] [stacks] update wger: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T15:47:33Z +2026/09/30 15:47:34 update.go:1365: [INFO] [stacks] update wger: phase safety-dump +2026/09/30 15:47:34 update.go:846: [INFO] [stacks] update wger: safety dump done (0 file(s)) [] +2026/09/30 15:47:35 undo.go:287: [INFO] [stacks] update wger: the undo copy will hold 2 named volume(s), 4.1 MiB +2026/09/30 15:47:35 update.go:1365: [INFO] [stacks] update wger: phase pinning +2026/09/30 15:47:35 pin.go:373: [INFO] [stacks] update wger: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wger/docker-compose.yml (wger=wger/server:2.7) +2026/09/30 15:47:35 update.go:1365: [INFO] [stacks] update wger: phase pulling +2026/09/30 15:48:06 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 15:48:17 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 15:48:18 undo.go:437: [INFO] [stacks] update wger: copied wger_wger_data → wger_wger_data.pre-update-20260930T154817Z in 550ms +2026/09/30 15:48:18 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 15:48:18 undo.go:437: [INFO] [stacks] update wger: copied wger_wger_media → wger_wger_media.pre-update-20260930T154817Z in 505ms +2026/09/30 15:48:18 update.go:1365: [INFO] [stacks] update wger: phase starting +2026/09/30 15:48:18 update.go:1365: [INFO] [stacks] update wger: phase verifying +2026/09/30 15:48:34 update.go:997: [INFO] [stacks] update wger: healthy after 15s (the app's health check passed) +2026/09/30 15:48:34 update.go:1033: [INFO] [stacks] update wger: DONE in 1m12s + +RESULT final_phase=done after={'wger': 'wger/server:2.7'} seed_after=False verdict=failed (72.8 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt3-invalid.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt3-invalid.txt new file mode 100644 index 00000000..cd8e1258 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/step-attempt3-invalid.txt @@ -0,0 +1,6 @@ +before: pinned={'wger': 'wger/server:2.7'} +drill: 9295e35 DRILL wger: {'wger': 'wger/server:2.7'} (box proof) + wger: readback of the seeded weight entry http=200 found=True +2026/09/30 15:53:04 update.go:361: [ERROR] [stacks] update wger REFUSED (already_current): installed equals the catalog head on every service and no newer tested digest (installed=map[wger:{wger/server:2.7 sha256:1c5789b93bfe5eed0b7287255782d9177027b255de2b22b59f511a693a48db04 2026-09-30T15:51:49Z}] catalog=map[wger:wger/server:2.7]) + +RESULT final_phase=None after={'wger': 'wger/server:2.7'} seed_after=True verdict=failed (0 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt new file mode 100644 index 00000000..0688be8e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/wger/step.txt @@ -0,0 +1,32 @@ +before: pinned={'wger': 'wger/server:2.6'} +drill: ff6d034 DRILL wger: {'wger': 'wger/server:2.7'} (box proof) + phase +0.0s backing-up | err=None + phase +12.3s safety-dump | err=None + phase +13.3s pulling | err=None + phase +14.4s copying | err=None + phase +25.7s verifying | err=None + phase +46.2s done | err=None + wger: readback of the seeded weight entry http=200 found=True +2026/09/30 16:04:08 update.go:536: [INFO] [stacks] update wger: accepted — guarded update started +2026/09/30 16:04:08 update.go:1365: [INFO] [stacks] update wger: phase checking +2026/09/30 16:04:08 update.go:786: [INFO] [stacks] update wger: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 16:04:08 update.go:816: [INFO] [stacks] update wger: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:02:52Z) (found: none) — backing up first +2026/09/30 16:04:08 update.go:1365: [INFO] [stacks] update wger: phase backing-up +2026/09/30 16:04:20 update.go:831: [INFO] [stacks] update wger: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:04:19Z +2026/09/30 16:04:20 update.go:1365: [INFO] [stacks] update wger: phase safety-dump +2026/09/30 16:04:20 update.go:846: [INFO] [stacks] update wger: safety dump done (0 file(s)) [] +2026/09/30 16:04:21 undo.go:287: [INFO] [stacks] update wger: the undo copy will hold 2 named volume(s), 4.1 MiB +2026/09/30 16:04:21 update.go:1365: [INFO] [stacks] update wger: phase pinning +2026/09/30 16:04:21 pin.go:373: [INFO] [stacks] update wger: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wger/docker-compose.yml (wger=wger/server:2.7) +2026/09/30 16:04:21 update.go:1365: [INFO] [stacks] update wger: phase pulling +2026/09/30 16:04:22 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 16:04:32 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 16:04:33 undo.go:437: [INFO] [stacks] update wger: copied wger_wger_data → wger_wger_data.pre-update-20260930T160432Z in 495ms +2026/09/30 16:04:33 update.go:1365: [INFO] [stacks] update wger: phase copying +2026/09/30 16:04:33 undo.go:437: [INFO] [stacks] update wger: copied wger_wger_media → wger_wger_media.pre-update-20260930T160432Z in 450ms +2026/09/30 16:04:33 update.go:1365: [INFO] [stacks] update wger: phase starting +2026/09/30 16:04:34 update.go:1365: [INFO] [stacks] update wger: phase verifying +2026/09/30 16:04:54 update.go:997: [INFO] [stacks] update wger: healthy after 20s (the app's health check passed) +2026/09/30 16:04:54 update.go:1033: [INFO] [stacks] update wger: DONE in 46s + +RESULT final_phase=done after={'wger': 'wger/server:2.7'} seed_after=True verdict=proven (46.2 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-box-verdict-zipline.json b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-box-verdict-zipline.json new file mode 100644 index 00000000..ab5d3db0 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-box-verdict-zipline.json @@ -0,0 +1,20 @@ +{ + "app": "zipline", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "failed", + "seed_read_before": true, + "seed_read_after": false, + "healthy_after": true, + "duration_s": 197.9, + "final_phase": "undone", + "measured_at": "2026-09-30T16:25:45Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-prep.txt new file mode 100644 index 00000000..438bce3d --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-prep.txt @@ -0,0 +1,3 @@ +deploy/reuse zipline: True + zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuobajqm000201oas3u7kanf","username":"drillce0217","createdAt":"2026-09-30T16:20:36.333Z","updatedAt":"2026-09-30T16:20:36.333 +C1 seed reads back BEFORE: False diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-step.txt b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-step.txt new file mode 100644 index 00000000..afd1644e --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/attempt1-4.8.0-step.txt @@ -0,0 +1,40 @@ +before: pinned={'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +drill: f85ef9d DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.8.0'} (box proof) + phase +0.0s backing-up | err=None + phase +19.5s safety-dump | err=None + phase +21.5s pulling | err=None + phase +67.7s copying | err=None + phase +81.0s starting | err=None + phase +87.1s verifying | err=None + phase +177.4s undoing | err=None + phase +197.9s undone | err=None +2026/09/30 16:25:47 update.go:536: [INFO] [stacks] update zipline: accepted — guarded update started +2026/09/30 16:25:47 update.go:1365: [INFO] [stacks] update zipline: phase checking +2026/09/30 16:25:47 update.go:786: [INFO] [stacks] update zipline: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 16:25:47 update.go:816: [INFO] [stacks] update zipline: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:19:20Z) (found: none) — backing up first +2026/09/30 16:25:47 update.go:1365: [INFO] [stacks] update zipline: phase backing-up +2026/09/30 16:26:06 update.go:831: [INFO] [stacks] update zipline: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:25:47Z +2026/09/30 16:26:06 update.go:1365: [INFO] [stacks] update zipline: phase safety-dump +2026/09/30 16:26:06 update.go:846: [INFO] [stacks] update zipline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/zipline/db-dumps/pre-restore-20260930T162606Z-zipline-postgres.sql] +2026/09/30 16:26:07 undo.go:287: [INFO] [stacks] update zipline: the undo copy will hold 3 named volume(s), 46.6 MiB +2026/09/30 16:26:07 update.go:1365: [INFO] [stacks] update zipline: phase pinning +2026/09/30 16:26:07 pin.go:373: [INFO] [stacks] update zipline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/zipline/docker-compose.yml (zipline=ghcr.io/diced/zipline:4.8.0, zipline-postgres=postgres:16-alpine) +2026/09/30 16:26:07 update.go:1365: [INFO] [stacks] update zipline: phase pulling +2026/09/30 16:26:54 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 16:27:05 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 16:27:06 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_postgres_data → zipline_zipline_postgres_data.pre-update-20260930T162705Z in 778ms +2026/09/30 16:27:06 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 16:27:06 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_public → zipline_zipline_public.pre-update-20260930T162705Z in 443ms +2026/09/30 16:27:06 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 16:27:07 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_uploads → zipline_zipline_uploads.pre-update-20260930T162705Z in 441ms +2026/09/30 16:27:07 update.go:1365: [INFO] [stacks] update zipline: phase starting +2026/09/30 16:27:13 update.go:1365: [INFO] [stacks] update zipline: phase verifying +2026/09/30 16:28:44 update.go:1066: [ERROR] [stacks] update zipline FAILED after the new version was started: not healthy: not healthy within 1m30s (last: state restarting) +2026/09/30 16:28:44 update.go:1058: [INFO] [stacks] update zipline: kept 22280 bytes of the app's own log at /opt/docker/stacks/zipline/hold-logs/20260930T162844Z/compose-logs.txt before stopping it (R-621) +2026/09/30 16:28:44 update.go:1365: [INFO] [stacks] update zipline: phase undoing +2026/09/30 16:28:44 undo.go:515: [WARN] [stacks] update zipline: UNDO — putting back the previous version and its 3 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: state restarting)) +2026/09/30 16:29:03 unattended.go:511: [INFO] [stacks] update zipline: step zipline=ghcr.io/diced/zipline:4.8.0, zipline-postgres=postgres:16-alpine recorded as undone — the automatic leg will not press it again until the catalog's ladder changes (ladder 6e88ecee0cc09966) +2026/09/30 16:29:04 undo.go:640: [INFO] [stacks] update zipline: event app_update_undone +2026/09/30 16:29:04 undo.go:568: [INFO] [stacks] update zipline: UNDONE in 20s — the previous version is running on the data from before the update (the app's health check passed) + +RESULT final_phase=undone after={'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} seed_after=False verdict=failed (197.9 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/box-verdict-zipline.json b/documentation/audits/more-night-apps-2026-09-30/box/zipline/box-verdict-zipline.json new file mode 100644 index 00000000..8c967f7f --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/box-verdict-zipline.json @@ -0,0 +1,20 @@ +{ + "app": "zipline", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.8.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 32.8, + "final_phase": "done", + "measured_at": "2026-09-30T18:06:14Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/prep.txt b/documentation/audits/more-night-apps-2026-09-30/box/zipline/prep.txt new file mode 100644 index 00000000..7754acea --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/prep.txt @@ -0,0 +1,4 @@ +deploy/reuse zipline: True + zipline: /api/setup http=200 :: {"firstSetup":true,"user":{"id":"cmuoesy6x000201pntcvolrfw","username":"drillf47ff7","createdAt":"2026-09-30T17:58:53.721Z","updatedAt":"2026-09-30T17:58:53.721 + zipline: login as the seeded user http=200 ok=True +C1 seed reads back BEFORE: True diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt new file mode 100644 index 00000000..d807319a --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt @@ -0,0 +1,32 @@ +before: pinned={'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} +drill: 1fa22c5 DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.8.0'} (box proof) + phase +0.0s safety-dump | err=None + phase +2.1s pulling | err=None + phase +3.1s copying | err=None + phase +16.4s starting | err=None + phase +22.6s verifying | err=None + phase +32.8s done | err=None + zipline: login as the seeded user http=200 ok=True +2026/09/30 18:06:16 update.go:536: [INFO] [stacks] update zipline: accepted — guarded update started +2026/09/30 18:06:16 update.go:1365: [INFO] [stacks] update zipline: phase checking +2026/09/30 18:06:16 update.go:786: [INFO] [stacks] update zipline: ladder — the last step (2 of 2) — the catalog's current definition +2026/09/30 18:06:16 update.go:814: [INFO] [stacks] update zipline: precondition met — Tier 2 (second drive) copy from 2026-09-30T17:59:03Z (7m0s old, limit 24h0m0s) +2026/09/30 18:06:16 update.go:1365: [INFO] [stacks] update zipline: phase safety-dump +2026/09/30 18:06:16 update.go:846: [INFO] [stacks] update zipline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/zipline/db-dumps/pre-restore-20260930T180616Z-zipline-postgres.sql] +2026/09/30 18:06:17 undo.go:287: [INFO] [stacks] update zipline: the undo copy will hold 3 named volume(s), 46.9 MiB +2026/09/30 18:06:17 update.go:1365: [INFO] [stacks] update zipline: phase pinning +2026/09/30 18:06:17 pin.go:373: [INFO] [stacks] update zipline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/zipline/docker-compose.yml (zipline=ghcr.io/diced/zipline:4.8.0, zipline-postgres=postgres:16-alpine) +2026/09/30 18:06:17 update.go:1365: [INFO] [stacks] update zipline: phase pulling +2026/09/30 18:06:19 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:06:29 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:06:31 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_postgres_data → zipline_zipline_postgres_data.pre-update-20260930T180629Z in 1.677s +2026/09/30 18:06:31 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:06:31 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_public → zipline_zipline_public.pre-update-20260930T180629Z in 536ms +2026/09/30 18:06:31 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:06:32 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_uploads → zipline_zipline_uploads.pre-update-20260930T180629Z in 452ms +2026/09/30 18:06:32 update.go:1365: [INFO] [stacks] update zipline: phase starting +2026/09/30 18:06:38 update.go:1365: [INFO] [stacks] update zipline: phase verifying +2026/09/30 18:06:48 update.go:997: [INFO] [stacks] update zipline: healthy after 10s (the app's health check passed) +2026/09/30 18:06:48 update.go:1033: [INFO] [stacks] update zipline: DONE in 33s + +RESULT final_phase=done after={'zipline': 'ghcr.io/diced/zipline:4.8.0', 'zipline-postgres': 'postgres:16-alpine'} seed_after=True verdict=proven (32.8 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-box-verdict-zipline.json b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-box-verdict-zipline.json new file mode 100644 index 00000000..b5906ae4 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-box-verdict-zipline.json @@ -0,0 +1,20 @@ +{ + "app": "zipline", + "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": { + "zipline": "ghcr.io/diced/zipline:4.6.1", + "zipline-postgres": "postgres:16-alpine" + }, + "to": { + "zipline": "ghcr.io/diced/zipline:4.7.0", + "zipline-postgres": "postgres:16-alpine" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "duration_s": 103.6, + "final_phase": "done", + "measured_at": "2026-09-30T17:59:01Z", + "evidence": "felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/zipline/step.txt" +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-step.txt b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-step.txt new file mode 100644 index 00000000..45f2c415 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/box/zipline/step1-4.7.0-step.txt @@ -0,0 +1,35 @@ +before: pinned={'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'} +drill: fe5feff DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.7.0'} (box proof) + phase +0.0s backing-up | err=None + phase +19.5s safety-dump | err=None + phase +21.6s pulling | err=None + phase +72.8s copying | err=None + phase +87.2s starting | err=None + phase +92.3s verifying | err=None + phase +103.6s done | err=None + zipline: login as the seeded user http=200 ok=True +2026/09/30 17:59:02 update.go:536: [INFO] [stacks] update zipline: accepted — guarded update started +2026/09/30 17:59:02 update.go:1365: [INFO] [stacks] update zipline: phase checking +2026/09/30 17:59:02 update.go:786: [INFO] [stacks] update zipline: ladder — the last step (1 of 1) — the catalog's current definition +2026/09/30 17:59:02 update.go:816: [INFO] [stacks] update zipline: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T17:58:33Z) (found: none) — backing up first +2026/09/30 17:59:02 update.go:1365: [INFO] [stacks] update zipline: phase backing-up +2026/09/30 17:59:21 update.go:831: [INFO] [stacks] update zipline: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T17:59:03Z +2026/09/30 17:59:21 update.go:1365: [INFO] [stacks] update zipline: phase safety-dump +2026/09/30 17:59:22 update.go:846: [INFO] [stacks] update zipline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/zipline/db-dumps/pre-restore-20260930T175922Z-zipline-postgres.sql] +2026/09/30 17:59:23 undo.go:287: [INFO] [stacks] update zipline: the undo copy will hold 3 named volume(s), 46.5 MiB +2026/09/30 17:59:23 update.go:1365: [INFO] [stacks] update zipline: phase pinning +2026/09/30 17:59:23 pin.go:373: [INFO] [stacks] update zipline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/zipline/docker-compose.yml (zipline=ghcr.io/diced/zipline:4.7.0, zipline-postgres=postgres:16-alpine) +2026/09/30 17:59:23 update.go:1365: [INFO] [stacks] update zipline: phase pulling +2026/09/30 18:00:15 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:00:27 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:00:28 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_postgres_data → zipline_zipline_postgres_data.pre-update-20260930T180027Z in 667ms +2026/09/30 18:00:28 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:00:28 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_public → zipline_zipline_public.pre-update-20260930T180027Z in 453ms +2026/09/30 18:00:28 update.go:1365: [INFO] [stacks] update zipline: phase copying +2026/09/30 18:00:29 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_uploads → zipline_zipline_uploads.pre-update-20260930T180027Z in 473ms +2026/09/30 18:00:29 update.go:1365: [INFO] [stacks] update zipline: phase starting +2026/09/30 18:00:35 update.go:1365: [INFO] [stacks] update zipline: phase verifying +2026/09/30 18:00:45 update.go:997: [INFO] [stacks] update zipline: healthy after 10s (the app's health check passed) +2026/09/30 18:00:45 update.go:1033: [INFO] [stacks] update zipline: DONE in 1m43s + +RESULT final_phase=done after={'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} seed_after=True verdict=proven (103.6 s) diff --git a/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-4c552cf.txt b/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-4c552cf.txt new file mode 100644 index 00000000..cb0f0038 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-4c552cf.txt @@ -0,0 +1,26 @@ +{ + "unique_pins": 67, + "unique_floating_pins": 12, + "images": { + "images": 79, + "exact": 53, + "floating": 24, + "internal": 1, + "unmeasured": 1 + }, + "image_rows_behind_within_major": 29, + "image_rows_behind_across_major": 28, + "apps_behind_within_major_any_image": 25, + "apps_behind_across_major_any_image": 19, + "apps_behind_within_major_exact_pins_only": 24, + "apps_behind_across_major_exact_pins_only": 8, + "apps_behind_within_major_floating_only": 2, + "apps_behind_across_major_floating_only": 14, + "apps_behind_at_all": 37, + "night_a_unconditional": 30, + "night_a_conditional": 2, + "night_b_any_proven": 32 +} +night (a) unconditional 30 ['actualbudget', 'adventurelog', 'audiobookshelf', 'bookstack', 'calcom', 'claper', 'docmost', 'emby', 'ghost', 'grafana', 'home-assistant', 'kimai', 'komga', 'mealie', 'n8n', 'navidrome', 'opengist', 'outline', 'paperless-ngx', 'papra', 'privatebin', 'radarr', 'rallly', 'romm', 'sonarr', 'sparkyfitness', 'tandoor', 'termix', 'vikunja', 'wishlist'] +night (a) conditional 2 ['immich', 'nextcloud'] +night (b) any proven 32 diff --git a/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-fb87030.txt b/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-fb87030.txt new file mode 100644 index 00000000..c9b421a1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/count/04-analyse-fb87030.txt @@ -0,0 +1,26 @@ +{ + "unique_pins": 67, + "unique_floating_pins": 12, + "images": { + "images": 79, + "exact": 53, + "floating": 24, + "internal": 1, + "unmeasured": 1 + }, + "image_rows_behind_within_major": 29, + "image_rows_behind_across_major": 28, + "apps_behind_within_major_any_image": 25, + "apps_behind_across_major_any_image": 19, + "apps_behind_within_major_exact_pins_only": 24, + "apps_behind_across_major_exact_pins_only": 8, + "apps_behind_within_major_floating_only": 2, + "apps_behind_across_major_floating_only": 14, + "apps_behind_at_all": 37, + "night_a_unconditional": 35, + "night_a_conditional": 3, + "night_b_any_proven": 38 +} +night (a) unconditional 35 ['actualbudget', 'adventurelog', 'audiobookshelf', 'bookstack', 'calcom', 'claper', 'crafty-controller', 'docmost', 'emby', 'ghost', 'gitea', 'grafana', 'home-assistant', 'kimai', 'komga', 'mealie', 'n8n', 'navidrome', 'opengist', 'outline', 'paperless-ngx', 'papra', 'privatebin', 'radarr', 'rallly', 'romm', 'sonarr', 'sparkyfitness', 'tandoor', 'termix', 'uptime-kuma', 'vikunja', 'wger', 'wishlist', 'zipline'] +night (a) conditional 3 ['calibre-web', 'immich', 'nextcloud'] +night (b) any proven 38 diff --git a/documentation/audits/more-night-apps-2026-09-30/count/05-summary-4c552cf.json b/documentation/audits/more-night-apps-2026-09-30/count/05-summary-4c552cf.json new file mode 100644 index 00000000..151265c6 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/count/05-summary-4c552cf.json @@ -0,0 +1,239 @@ +{ + "unique_pins": 67, + "unique_floating_pins": [ + "ghcr.io/claperco/claper:2.5", + "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "ghcr.io/thomiceli/opengist:1.15", + "mariadb:11.8", + "mariadb:12.3", + "postgis/postgis:16-3.5-alpine", + "postgres:15-alpine", + "postgres:16-alpine", + "postgres:17-alpine", + "postgres:18-alpine", + "redis:7-alpine", + "wger/server:2.6" + ], + "images": { + "images": 79, + "exact": 53, + "floating": 24, + "internal": 1, + "unmeasured": 1 + }, + "image_rows_behind_within_major": 29, + "image_rows_behind_across_major": 28, + "apps_behind_within_major_any_image": [ + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "code-server", + "crafty-controller", + "emby", + "ghost", + "gitea", + "glance", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "n8n", + "navidrome", + "outline", + "plex", + "rallly", + "uptime-kuma", + "vaultwarden", + "wanderer", + "wger", + "zipline" + ], + "apps_behind_across_major_any_image": [ + "adventurelog", + "bookstack", + "claper", + "docmost", + "gitea", + "gokapi", + "gramps-web", + "homepage", + "immich", + "jellyfin", + "kimai", + "nextcloud", + "outline", + "paperless-ngx", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "zipline" + ], + "apps_behind_within_major_exact_pins_only": [ + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "code-server", + "crafty-controller", + "emby", + "ghost", + "gitea", + "glance", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "n8n", + "navidrome", + "outline", + "plex", + "rallly", + "uptime-kuma", + "vaultwarden", + "wanderer", + "zipline" + ], + "apps_behind_across_major_exact_pins_only": [ + "gitea", + "gokapi", + "gramps-web", + "homepage", + "jellyfin", + "nextcloud", + "paperless-ngx", + "sparkyfitness" + ], + "apps_behind_within_major_floating_only": [ + "immich", + "wger" + ], + "apps_behind_across_major_floating_only": [ + "adventurelog", + "bookstack", + "claper", + "docmost", + "immich", + "kimai", + "nextcloud", + "outline", + "paperless-ngx", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "zipline" + ], + "apps_behind_at_all": [ + "adventurelog", + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "claper", + "code-server", + "crafty-controller", + "docmost", + "emby", + "ghost", + "gitea", + "glance", + "gokapi", + "grafana", + "gramps-web", + "home-assistant", + "homepage", + "immich", + "jellyfin", + "kimai", + "komga", + "n8n", + "navidrome", + "nextcloud", + "outline", + "paperless-ngx", + "plex", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "uptime-kuma", + "vaultwarden", + "wanderer", + "wger", + "zipline" + ], + "night_a_unconditional": [ + "actualbudget", + "adventurelog", + "audiobookshelf", + "bookstack", + "calcom", + "claper", + "docmost", + "emby", + "ghost", + "grafana", + "home-assistant", + "kimai", + "komga", + "mealie", + "n8n", + "navidrome", + "opengist", + "outline", + "paperless-ngx", + "papra", + "privatebin", + "radarr", + "rallly", + "romm", + "sonarr", + "sparkyfitness", + "tandoor", + "termix", + "vikunja", + "wishlist" + ], + "night_a_conditional": [ + "immich", + "nextcloud" + ], + "night_b_any_proven": [ + "actualbudget", + "adventurelog", + "audiobookshelf", + "bookstack", + "calcom", + "claper", + "docmost", + "emby", + "ghost", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "mealie", + "n8n", + "navidrome", + "nextcloud", + "opengist", + "outline", + "paperless-ngx", + "papra", + "privatebin", + "radarr", + "rallly", + "romm", + "sonarr", + "sparkyfitness", + "tandoor", + "termix", + "vikunja", + "wishlist" + ] +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/count/05-summary-fb87030.json b/documentation/audits/more-night-apps-2026-09-30/count/05-summary-fb87030.json new file mode 100644 index 00000000..30e18466 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/count/05-summary-fb87030.json @@ -0,0 +1,251 @@ +{ + "unique_pins": 67, + "unique_floating_pins": [ + "ghcr.io/claperco/claper:2.5", + "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", + "ghcr.io/thomiceli/opengist:1.15", + "mariadb:11.8", + "mariadb:12.3", + "postgis/postgis:16-3.5-alpine", + "postgres:15-alpine", + "postgres:16-alpine", + "postgres:17-alpine", + "postgres:18-alpine", + "redis:7-alpine", + "wger/server:2.6" + ], + "images": { + "images": 79, + "exact": 53, + "floating": 24, + "internal": 1, + "unmeasured": 1 + }, + "image_rows_behind_within_major": 29, + "image_rows_behind_across_major": 28, + "apps_behind_within_major_any_image": [ + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "code-server", + "crafty-controller", + "emby", + "ghost", + "gitea", + "glance", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "n8n", + "navidrome", + "outline", + "plex", + "rallly", + "uptime-kuma", + "vaultwarden", + "wanderer", + "wger", + "zipline" + ], + "apps_behind_across_major_any_image": [ + "adventurelog", + "bookstack", + "claper", + "docmost", + "gitea", + "gokapi", + "gramps-web", + "homepage", + "immich", + "jellyfin", + "kimai", + "nextcloud", + "outline", + "paperless-ngx", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "zipline" + ], + "apps_behind_within_major_exact_pins_only": [ + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "code-server", + "crafty-controller", + "emby", + "ghost", + "gitea", + "glance", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "n8n", + "navidrome", + "outline", + "plex", + "rallly", + "uptime-kuma", + "vaultwarden", + "wanderer", + "zipline" + ], + "apps_behind_across_major_exact_pins_only": [ + "gitea", + "gokapi", + "gramps-web", + "homepage", + "jellyfin", + "nextcloud", + "paperless-ngx", + "sparkyfitness" + ], + "apps_behind_within_major_floating_only": [ + "immich", + "wger" + ], + "apps_behind_across_major_floating_only": [ + "adventurelog", + "bookstack", + "claper", + "docmost", + "immich", + "kimai", + "nextcloud", + "outline", + "paperless-ngx", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "zipline" + ], + "apps_behind_at_all": [ + "adventurelog", + "audiobookshelf", + "bentopdf", + "bookstack", + "calibre-web", + "claper", + "code-server", + "crafty-controller", + "docmost", + "emby", + "ghost", + "gitea", + "glance", + "gokapi", + "grafana", + "gramps-web", + "home-assistant", + "homepage", + "immich", + "jellyfin", + "kimai", + "komga", + "n8n", + "navidrome", + "nextcloud", + "outline", + "paperless-ngx", + "plex", + "rallly", + "romm", + "sparkyfitness", + "tandoor", + "uptime-kuma", + "vaultwarden", + "wanderer", + "wger", + "zipline" + ], + "night_a_unconditional": [ + "actualbudget", + "adventurelog", + "audiobookshelf", + "bookstack", + "calcom", + "claper", + "crafty-controller", + "docmost", + "emby", + "ghost", + "gitea", + "grafana", + "home-assistant", + "kimai", + "komga", + "mealie", + "n8n", + "navidrome", + "opengist", + "outline", + "paperless-ngx", + "papra", + "privatebin", + "radarr", + "rallly", + "romm", + "sonarr", + "sparkyfitness", + "tandoor", + "termix", + "uptime-kuma", + "vikunja", + "wger", + "wishlist", + "zipline" + ], + "night_a_conditional": [ + "calibre-web", + "immich", + "nextcloud" + ], + "night_b_any_proven": [ + "actualbudget", + "adventurelog", + "audiobookshelf", + "bookstack", + "calcom", + "calibre-web", + "claper", + "crafty-controller", + "docmost", + "emby", + "ghost", + "gitea", + "grafana", + "home-assistant", + "immich", + "kimai", + "komga", + "mealie", + "n8n", + "navidrome", + "nextcloud", + "opengist", + "outline", + "paperless-ngx", + "papra", + "privatebin", + "radarr", + "rallly", + "romm", + "sonarr", + "sparkyfitness", + "tandoor", + "termix", + "uptime-kuma", + "vikunja", + "wger", + "wishlist", + "zipline" + ] +} \ No newline at end of file diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/benchq.py b/documentation/audits/more-night-apps-2026-09-30/tools/benchq.py new file mode 100644 index 00000000..7006c064 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/benchq.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +"""benchq.py [,] [ ...] + +Runs `upgrade-test.py --move` on bench LXC 9401 for each app IN ORDER, then copies that edge's +evidence OFF the bench into apps//bench/ before starting the next (R-320: the evidence leaves +the machine at the end of the phase that made it). One line per finished edge in benchq-.txt. +""" +import json, os, subprocess, sys, time +HERE = os.path.dirname(os.path.abspath(__file__)) +BENCH = "/tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/2930eec5-3257-446d-80bf-8921da206cd8/scratchpad/bench.sh" +q = sys.argv[1] +args = sys.argv[2:] +out = open(os.path.join(HERE, "..", os.environ.get("BQ", "bench"), f"benchq-{q}.txt"), "a", buffering=1) +for i in range(0, len(args), 2): + app, moves = args[i], args[i + 1].split(",") + label = app + if "@" in app: # romm@engine: a second edge of one app gets its own folder + app, tag = app.split("@", 1) + label = f"{app}-{tag}" + t0 = time.time() + out.write(f"{time.strftime('%H:%M:%S')} START {app} {moves}\n") + pre = f"cd /opt/upg && [ -d evidence/MV-{app} ] && mv evidence/MV-{app} evidence/MV-{app}-$(date +%s); " + subprocess.run([BENCH], input=pre, capture_output=True, text=True, timeout=120) + cmd = (f"cd /opt/upg && timeout 2400 python3 upgrade-test.py --soak 600 --move {app} {' '.join(moves)} " + f"> /opt/upg/MV-{app}.log 2>&1; echo rc=$?") + r = subprocess.run([BENCH], input=cmd, capture_output=True, text=True, timeout=2700) + dest = os.path.join(HERE, "..", os.environ.get("BQ", "bench"), "apps", label, "bench") + os.makedirs(dest, exist_ok=True) + pull = (f"cd /opt/upg && tar czf /tmp/ev-{app}.tgz MV-{app}.log evidence/MV-{app} 2>/dev/null; " + f"base64 -w0 /tmp/ev-{app}.tgz") + r2 = subprocess.run([BENCH], input=pull, capture_output=True, text=True, timeout=600) + import base64, io, tarfile + try: + tarfile.open(fileobj=io.BytesIO(base64.b64decode(r2.stdout.strip()))).extractall(dest) + except Exception as e: + out.write(f" evidence pull FAILED for {app}: {e}\n") + v = {} + try: + v = json.load(open(os.path.join(dest, "evidence", f"MV-{app}", "verdict.json"))) + except Exception: + pass + mem = v.get("memory") or {} + peaks = {n: c.get("peak_pct") for n, c in (mem.get("containers") or {}).items()} + out.write(f"{time.strftime('%H:%M:%S')} DONE {app} {r.stdout.strip()} verdict={v.get('verdict')} " + f"read_before={v.get('seed_read_before')} read_after={v.get('seed_read_after')} " + f"abort={v.get('abort')} marks={v.get('marks')} peaks={peaks} " + f"detail={str(v.get('abort_detail'))[:160]!r} ({round(time.time()-t0)}s)\n") +out.write(f"{time.strftime('%H:%M:%S')} QUEUE {q} FINISHED\n") diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/benchsync.sh b/documentation/audits/more-night-apps-2026-09-30/tools/benchsync.sh new file mode 100755 index 00000000..a18b4c20 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/benchsync.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# benchsync.sh — copy the catalog's scripts/*.py and templates/ from the DooPlex checkout to /opt/upg on bench 9401. +# The bench always runs the harness and fixtures AS THEY STAND in the checkout (committed or about to be). +set -e +CAT=/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu +T=$(mktemp /tmp/upg-XXXX.tgz) +tar czf $T -C $CAT/scripts $(cd $CAT/scripts && ls *.py) -C $CAT templates +scp -q -o BatchMode=yes $T demo-hp:/tmp/upg-sync.tgz +ssh -o BatchMode=yes demo-hp "export LC_ALL=C; pct push 9401 /tmp/upg-sync.tgz /tmp/upg-sync.tgz && rm -f /tmp/upg-sync.tgz && pct exec 9401 -- bash -c 'mkdir -p /opt/upg && cd /opt/upg && rm -rf templates && tar xzf /tmp/upg-sync.tgz && rm -f /tmp/upg-sync.tgz && ls templates | wc -l && md5sum upgrade-test.py upgrade_fixtures_box.py upgrade_fixtures_box28.py'" +rm -f $T diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/boxmove.py b/documentation/audits/more-night-apps-2026-09-30/tools/boxmove.py new file mode 100644 index 00000000..48fadb98 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/boxmove.py @@ -0,0 +1,58 @@ +"""boxmove.py [ ] — Part B's BOX venue on 9202 (drill catalog): + prep: deploy (reuse if installed), seed through the app's own route, read it back (C1) + move: drill commit with the mark → sync → the guarded Update → engine state + seed read back → box verdict JSON +Evidence: B/apps//box/.""" +import json, os, sys, time, subprocess +import walk as w +sys.path.insert(0, '/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts') +import upgrade_fixtures_box as fixtures, upgrade_fixtures_box28 as _f28 +FX = dict(_f28.FIXTURES28); FX.update(fixtures.FIXTURES) # the box set wins, as upgrade_boxport.get() decides +phase, app, sub = sys.argv[1:4] +EVD = f"{w.EV}/box/{app}"; os.makedirs(EVD, exist_ok=True) +TOK = w.SC + "/seed-tokens-box.json" +log = open(f"{EVD}/{phase}.txt", "a", buffering=1) +def say(*a): + w.say(*a); log.write(" ".join(map(str, a)) + "\n") +w.login() +toks = json.load(open(TOK)) if os.path.exists(TOK) else {} +if phase == "prep": + say(f"deploy/reuse {app}: {w.deploy(app, sub)}") + toks[app] = FX[app].seed(w, sub, say) + if isinstance(toks[app], dict) and w.GENERATED.get(app): + # the deploy secrets THIS run generated (grafana's admin password): kept beside the seed, in the 0600 scratch + # file only, so a LATER process (boxstep/undocase) can read the app back. Found 2026-09-30: grafana's box step + # read back with the default password and got 401 — the instrument, not the product. + toks[app]["__generated"] = w.GENERATED[app] + json.dump(toks, open(TOK, "w"), default=str); os.chmod(TOK, 0o600) + say(f"C1 seed reads back BEFORE: {FX[app].verify(w, sub, toks[app], say)}") +else: + svc, frm, to, fmj, tmj = sys.argv[4:9] + st = w.stack(app); before = (st.get("app_config") or {}).get("pinned_images") + pg = lambda: w.guest(f"docker exec {svc} sh -c 'cat $PGDATA/PG_VERSION' 2>&1").strip() + say(f"before: pinned={before} PG_VERSION={pg()}") + if os.environ.get("SKIPDRILL"): + say("drill: SKIPPED — the drill commit was made by an earlier attempt") + else: + r = subprocess.run([sys.executable, os.path.join(os.path.dirname(__file__), "drillmove.py"), app, svc, frm, to, fmj, tmj], capture_output=True, text=True) + say("drill:", r.stdout.strip().splitlines()[0] if r.stdout else r.stderr[-300:]) + w.sync_rescan(app, to) + since = w.guest("date -u +%Y-%m-%dT%H:%M:%SZ").strip() + res = w.press_update(app, poll=1, cap_s=1800) + for p in res.get("phases", []): + log.write(f" phase +{p['t']}s {p['phase']} | err={p['error']}\n") + time.sleep(10) + after_pg = pg(); read = FX[app].verify(w, sub, toks[app], say) + conv = w.guest(f"docker logs --since {since} felhom-controller 2>&1 | grep -E 'update {app}|CONVERT' | grep -v DEBUG | cut -c1-400") + log.write(conv + "\n") + line = next((l for l in conv.splitlines() if "CONVERTED" in l), "") + st = w.stack(app) + verdict = {"app": app, "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": before, "to": (st.get("app_config") or {}).get("pinned_images"), + "verdict": "proven" if (res.get("final_phase") == "done" and read and after_pg == str(tmj)) else "failed", + "seed_read_before": True, "seed_read_after": read, "healthy_after": st.get("state") == "running", + "engine_conversion": {"service": svc, "engine": "postgres", "from": int(fmj), "to": int(tmj), + "result": "converted" if line else "not-seen", "controller_line": line.split("] ", 2)[-1] if line else ""}, + "duration_s": res.get("duration_s"), "measured_at": since, + "evidence": f"felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/{app}/move.txt"} + json.dump(verdict, open(f"{EVD}/box-verdict-{app}.json", "w"), indent=2) + say(f"RESULT final_phase={res.get('final_phase')} PG_VERSION={after_pg} seed_after={read} verdict={verdict['verdict']}") diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/boxstep.py b/documentation/audits/more-night-apps-2026-09-30/tools/boxstep.py new file mode 100644 index 00000000..68ffbb0c --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/boxstep.py @@ -0,0 +1,76 @@ +"""boxstep.py = [...] — a WITHIN-A-MAJOR step's BOX venue on 9202 (drill catalog), Part F. + + prep is boxmove.py's (deploy, seed through the app's own route, C1); this presses the step: + a DRILL-only commit moves the named services and adds a ladder entry (no conversion mark), sync, rescan, + the product's guarded Update, the seed read back → box verdict JSON beside boxmove's. +The live catalog's entry is written later ONLY by `upgrade-test.py --write-ladder` from both verdicts. +Evidence: box//step.txt + box//box-verdict-.json.""" +import json, os, re, subprocess, sys, time +import walk as w +sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts") +import upgrade_fixtures_box as fixtures, upgrade_fixtures_box28 as _f28 +FX = dict(_f28.FIXTURES28); FX.update(fixtures.FIXTURES) # the box set wins, as upgrade_boxport.get() decides + +app, sub = sys.argv[1:3] +moves = dict(a.split("=", 1) for a in sys.argv[3:]) +EVD = f"{w.EV}/box/{app}"; os.makedirs(EVD, exist_ok=True) +TOK = w.SC + "/seed-tokens-box.json" +log = open(f"{EVD}/step.txt", "a", buffering=1) + + +def say(*a): + w.say(*a); log.write(" ".join(map(str, a)) + "\n") + + +D = "/mnt/5_hdd/felhom.eu/drill/app-catalog-drill" +w.login() +toks = json.load(open(TOK)) +if isinstance(toks.get(app), dict) and toks[app].get("__generated"): + w.GENERATED[app] = toks[app]["__generated"] +st = w.stack(app); before = (st.get("app_config") or {}).get("pinned_images") +say(f"before: pinned={before}") +if not os.environ.get("SKIPDRILL"): + subprocess.run(["git", "-C", D, "pull", "-q", "--rebase", "origin", "main"], check=True) + comp = f"{D}/templates/{app}/docker-compose.yml"; fy = f"{D}/templates/{app}/.felhom.yml" + s = open(comp).read(); pins, cur = {}, None + for line in s.splitlines(): + m = re.match(r"^ ([a-z0-9-]+):\s*$", line) + if m: cur = m.group(1) + m = re.match(r"^\s+image:\s*(\S+)", line) + if m and cur: pins[cur] = m.group(1) + out, cur = [], None + for line in s.splitlines(): + m = re.match(r"^ ([a-z0-9-]+):\s*$", line) + if m: cur = m.group(1) + mi = re.match(r"^(\s+image:\s*)(\S+)\s*$", line) + if mi and cur in moves: + line = mi.group(1) + moves[cur] + out.append(line) + open(comp, "w").write("\n".join(out) + "\n") + top = dict(pins); top.update(moves) + entry = {"from": pins, "to": top, "verdict": "proven", "tested_at": "DRILL", "harness_version": 4, + "evidence": "DRILL (box proof in progress)", "marks": {"files_may_change": False, "needs_person": None, "memory_tight": False}} + f = open(fy).read() + f = f.rstrip("\n") + "\n - " + json.dumps(entry) + "\n" if "update_ladder:" in f else f.rstrip("\n") + "\nupdate_ladder:\n - " + json.dumps(entry) + "\n" + open(fy, "w").write(f) + subprocess.run(["git", "-C", D, "commit", "-q", "-am", f"DRILL {app}: {moves} (box proof)"], check=True) + subprocess.run(["git", "-C", D, "push", "-q", "origin", "main"], check=True, capture_output=True) + say("drill:", subprocess.run(["git", "-C", D, "log", "--oneline", "-1"], capture_output=True, text=True).stdout.strip()) +w.sync_rescan(app, next(iter(moves.values()))) +since = w.guest("date -u +%Y-%m-%dT%H:%M:%SZ").strip() +res = w.press_update(app, poll=1, cap_s=1800) +for p in res.get("phases", []): + log.write(f" phase +{p['t']}s {p['phase']} | err={p['error']}\n") +time.sleep(10) +read = FX[app].verify(w, sub, toks[app], say) +lines = w.guest(f"docker logs --since {since} felhom-controller 2>&1 | grep -E 'update {app}' | grep -v DEBUG | cut -c1-400") +log.write(lines + "\n") +st = w.stack(app); after = (st.get("app_config") or {}).get("pinned_images") +verdict = {"app": app, "venue": "box 9202 (drill catalog, controller 0.283.1), the product's guarded Update", + "from": before, "to": after, + "verdict": "proven" if (res.get("final_phase") == "done" and read and all(after.get(k) == v for k, v in moves.items())) else "failed", + "seed_read_before": True, "seed_read_after": read, "healthy_after": st.get("state") == "running", + "duration_s": res.get("duration_s"), "final_phase": res.get("final_phase"), "measured_at": since, + "evidence": f"felhom.eu/documentation/audits/more-night-apps-2026-09-30/box/{app}/step.txt"} +json.dump(verdict, open(f"{EVD}/box-verdict-{app}.json", "w"), indent=2) +say(f"RESULT final_phase={res.get('final_phase')} after={after} seed_after={read} verdict={verdict['verdict']} ({res.get('duration_s')} s)") diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/digestread.py b/documentation/audits/more-night-apps-2026-09-30/tools/digestread.py new file mode 100644 index 00000000..e6660a01 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/digestread.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +"""digestread.py — READ-ONLY (login + GET only): per deployed app, the catalog's tested digest (catalog_digests, +catalog_tested_at) vs app.yaml installed_images (ref, digest, at), and the badge order the box computes. +GUEST=9201 BASE=https:// for demo-hp's standing guest. Part C (the same-name security fix).""" +import json, os, sys +import walk as w +w.login() +c, d = w.ctl("GET", "/api/stacks") +data = d.get("data") if isinstance(d, dict) else d +stacks = data if isinstance(data, list) else (data or {}).get("stacks", []) +print(f"# guest {w.GUEST} {w.BASE} — read-only") +for s in sorted(stacks, key=lambda x: x.get("name", "")): + if not s.get("deployed"): + continue + st = w.stack(s["name"]) + ac = st.get("app_config") or {} + cd = st.get("catalog_digests") or {} + print(f"{s['name']} | update_order={st.get('update_order')!r} badge={st.get('update_badge') or st.get('badge')!r} catalog_tested_at={st.get('catalog_tested_at')}") + for svc, rec in sorted((ac.get("installed_images") or {}).items()): + ref = rec.get("ref") if isinstance(rec, dict) else rec + dg = (rec.get("digest") if isinstance(rec, dict) else "") or "" + at = rec.get("at") if isinstance(rec, dict) else "" + cat = cd.get(svc, "") + print(f" {svc}: {ref} installed={dg[7:19] or '-'} at={at} catalog={cat[7:19] or '-'} equal={bool(cat) and cat == dg}") diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/floatpush.py b/documentation/audits/more-night-apps-2026-09-30/tools/floatpush.py new file mode 100644 index 00000000..81dce9d1 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/floatpush.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +"""floatpush.py — Part C (2026-09-30): for every FLOATING line in the live catalog (the currency audit's definition: +fewer than three numbers in the tag's first version run), (1) does the registry serve today the digest the newest +ladder entry TESTED for it, and (2) when was the tag last pushed (Docker Hub `tag_last_pushed`; ghcr/lscr have no +anonymous timestamp — said, not guessed). Read-only; the audit's helpers are imported.""" +import importlib.util, json, os, re, sys, datetime, requests +CAT = "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu" +A = "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/catalog-currency-2026-09-30/00-currency.py" +sys.argv = ["x", CAT, "/dev/null"] +s = importlib.util.spec_from_file_location("c", A); c = importlib.util.module_from_spec(s); s.loader.exec_module(c) +sys.path.insert(0, CAT + "/scripts"); import ladder +now = datetime.datetime.now(datetime.timezone.utc) +print(f"# floating lines in the live catalog, read {now.isoformat(timespec='seconds')}") +lines = {} +for app in sorted(os.listdir(CAT + "/templates")): + d = f"{CAT}/templates/{app}" + imgs = ladder.images_in(open(d + "/docker-compose.yml").read()) + entries, _, _ = ladder.parse(open(d + "/.felhom.yml").read()) + for svc, ref in imgs.items(): + repo, tag = c.split_ref(ref) + if not c.is_floating(tag): + continue + tested = None + for e in reversed(entries or []): + if e.get("to", {}).get(svc) == ref: + tested = (e.get("digest") or {}).get(svc); break + lines.setdefault(ref, []).append((app, svc, tested)) +recent = 0 +for ref, uses in sorted(lines.items()): + repo, tag = c.split_ref(ref); host, r = c.host_repo(repo) + try: + now_d = c.digest(host, r, tag) + now_d = now_d[0] if isinstance(now_d, tuple) else now_d + except Exception as e: + now_d = f"ERR {e!r}"[:60] + pushed = "no anonymous timestamp on " + host + if host == "registry-1.docker.io": + try: + j = requests.get(f"https://hub.docker.com/v2/repositories/{r}/tags/{tag}", timeout=30).json() + pushed = j.get("tag_last_pushed") or j.get("last_updated") or "?" + age = (now - datetime.datetime.fromisoformat(pushed.replace("Z", "+00:00"))).days + pushed = f"{pushed} ({age} days ago)" + if age <= 30: recent += 1 + except Exception as e: + pushed = f"ERR {e!r}"[:80] + print(f"\n{ref} last pushed: {pushed}\n registry digest today: {str(now_d)[:19]}") + for app, svc, tested in uses: + st = "no ladder digest" if not tested else ("= tested" if tested == now_d else f"MOVED since the test (tested {tested[:19]})") + print(f" {app}/{svc}: {st}") +print(f"\n# {len(lines)} distinct floating lines; Docker Hub lines pushed within 30 days: {recent}") diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/names.py b/documentation/audits/more-night-apps-2026-09-30/tools/names.py new file mode 100644 index 00000000..b811bebb --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/names.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 +"""names.py — runs ON THE BENCH: calibre-web v4.0.6 -> v4.0.8 once more with --soak 0, ONLY to name the files behind +its files_may_change mark (the harness's files_changed_detail, catalog 5b1972b). Not a ladder input.""" +import importlib.util, sys +sys.argv = ["upgrade-test.py"] +spec = importlib.util.spec_from_file_location("ut", "/opt/upg/upgrade-test.py") +ut = importlib.util.module_from_spec(spec); spec.loader.exec_module(ut) +ut.EDGES["N-calibre-web"] = dict(app="calibre-web", note="names re-run 2026-09-30 (soak 0)", + frm={"calibre-web": "crocodilestick/calibre-web-automated:v4.0.6"}, to={"calibre-web": "crocodilestick/calibre-web-automated:v4.0.8"}) +sys.exit(ut.main(["--soak", "0", "N-calibre-web"])) diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/partd.py b/documentation/audits/more-night-apps-2026-09-30/tools/partd.py new file mode 100644 index 00000000..2e1809c9 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/partd.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +"""partd.py — runs ON THE BENCH (/opt/upg): Part D's re-proof of immich's step 0b8272068aab36bf +(server v3.0.3 -> v3.2.2, ML v3.0.3) on THAT STEP'S OWN DEFINITION with immich-postgres at 768M +(templates/immich@0b82-768, pushed beside the catalog templates). The harness, unchanged, with one added edge.""" +import importlib.util, sys +sys.argv = ["upgrade-test.py"] +spec = importlib.util.spec_from_file_location("ut", "/opt/upg/upgrade-test.py") +ut = importlib.util.module_from_spec(spec); spec.loader.exec_module(ut) +PG, RD = "ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0", "redis:7-alpine" +ML = "ghcr.io/immich-app/immich-machine-learning:v3.0.3" +ut.EDGES["D-immich-0b82-768"] = dict(app="immich", template="immich@0b82-768", + note="Part D 2026-09-30: step 0b8272068aab36bf's own definition, immich-postgres 512M -> 768M (R-732)", + frm={"immich-server": "ghcr.io/immich-app/immich-server:v3.0.3", "immich-machine-learning": ML, "immich-postgres": PG, "immich-redis": RD}, + to={"immich-server": "ghcr.io/immich-app/immich-server:v3.2.2", "immich-machine-learning": ML, "immich-postgres": PG, "immich-redis": RD}) +sys.exit(ut.main(["--soak", "600", "D-immich-0b82-768"])) diff --git a/documentation/audits/more-night-apps-2026-09-30/tools/probe_up.sh b/documentation/audits/more-night-apps-2026-09-30/tools/probe_up.sh new file mode 100755 index 00000000..803cc469 --- /dev/null +++ b/documentation/audits/more-night-apps-2026-09-30/tools/probe_up.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# probe_up.sh — stdin script for bench.sh: render the catalog template with build_env into /opt/probe/ and up -d +A=$1 +cat <