From 37cb83c16614c2cbc8255116a0f80af116210034 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 18 Oct 2026 14:36:14 +0200 Subject: [PATCH] Estimator: Immich peak 3,290 -> 3,983 MB from the 4,000-photo import (R-1147, operator yes 2026-10-18); Immich alone on 8 GB now 'does not fit' Rebuilt sizing-data.json; data cache-bust v5; SIZING.md table and the pinned test cases moved with it. Before/after: audits/day-2026-10-18/P6-before-after.md. --- .../P4/delivery-signed-jobs.txt | 8 ++ .../P4/delivery-tester1-demofelhom.txt | 10 ++ .../P4/demo-hp-backup-journal.txt | 23 ++++ .../day-2026-10-18/P4/demo-hp-backup.txt | 3 + .../day-2026-10-18/P4/demo-hp-before.txt | 5 + .../day-2026-10-18/P4/demo-hp-signed-jobs.txt | 4 + .../day-2026-10-18/P4/demo-hp-update.txt | 8 ++ .../audits/day-2026-10-18/P4/registry-sha.txt | 2 + .../day-2026-10-18/P4/release-agent.txt | 102 ++++++++++++++++++ .../day-2026-10-18/P5/installer-published.txt | 4 + .../audits/day-2026-10-18/P6-before-after.md | 28 +++++ .../audits/day-2026-10-18/P7/box-walk.txt | 27 +++++ .../P7/floors-global-and-clear.txt | 12 +++ .../audits/day-2026-10-18/P7/floors-set.txt | 9 ++ .../P7/global-floor-readback.txt | 3 + .../audits/day-2026-10-18/P7/https-only.txt | 2 + .../audits/sizing-2026-10-13/SIZING.md | 14 +-- .../audits/sizing-2026-10-13/sizing.json | 12 ++- scripts/test_build_sizing_web.py | 6 +- website/CHANGELOG.md | 10 +- website/assets/sizing-data.json | 4 +- website/en/sizing.html | 2 +- website/gepigeny.html | 2 +- 23 files changed, 285 insertions(+), 15 deletions(-) create mode 100644 documentation/audits/day-2026-10-18/P4/delivery-signed-jobs.txt create mode 100644 documentation/audits/day-2026-10-18/P4/delivery-tester1-demofelhom.txt create mode 100644 documentation/audits/day-2026-10-18/P4/demo-hp-backup-journal.txt create mode 100644 documentation/audits/day-2026-10-18/P4/demo-hp-backup.txt create mode 100644 documentation/audits/day-2026-10-18/P4/demo-hp-before.txt create mode 100644 documentation/audits/day-2026-10-18/P4/demo-hp-signed-jobs.txt create mode 100644 documentation/audits/day-2026-10-18/P4/demo-hp-update.txt create mode 100644 documentation/audits/day-2026-10-18/P4/registry-sha.txt create mode 100644 documentation/audits/day-2026-10-18/P4/release-agent.txt create mode 100644 documentation/audits/day-2026-10-18/P5/installer-published.txt create mode 100644 documentation/audits/day-2026-10-18/P6-before-after.md create mode 100644 documentation/audits/day-2026-10-18/P7/box-walk.txt create mode 100644 documentation/audits/day-2026-10-18/P7/floors-global-and-clear.txt create mode 100644 documentation/audits/day-2026-10-18/P7/floors-set.txt create mode 100644 documentation/audits/day-2026-10-18/P7/global-floor-readback.txt create mode 100644 documentation/audits/day-2026-10-18/P7/https-only.txt diff --git a/documentation/audits/day-2026-10-18/P4/delivery-signed-jobs.txt b/documentation/audits/day-2026-10-18/P4/delivery-signed-jobs.txt new file mode 100644 index 00000000..339586d8 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/delivery-signed-jobs.txt @@ -0,0 +1,8 @@ +tester-1-d70be4 agent_update: +uploaded signed op to the hub jobs queue +tester-1-d70be4 agent_config_update: +uploaded signed op to the hub jobs queue +demo-felhom-8363b5 agent_update: +uploaded signed op to the hub jobs queue +demo-felhom-8363b5 agent_config_update: +uploaded signed op to the hub jobs queue diff --git a/documentation/audits/day-2026-10-18/P4/delivery-tester1-demofelhom.txt b/documentation/audits/day-2026-10-18/P4/delivery-tester1-demofelhom.txt new file mode 100644 index 00000000..ac22bd36 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/delivery-tester1-demofelhom.txt @@ -0,0 +1,10 @@ +tester-1: felhom-agent 0.159.2 | demo-felhom: felhom-agent 0.159.2 | 12:25:17 +Oct 18 14:23:46 felhom felhom-agent[3912599]: time=2026-10-18T14:23:46.774+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=c9b02a094671155e op=agent_update +Oct 18 14:23:48 felhom felhom-agent[3912599]: time=2026-10-18T14:23:48.727+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded="" +Oct 18 14:23:48 felhom felhom-agent[3912599]: time=2026-10-18T14:23:48.728+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=fa2a707792f561ed op=agent_config_update +Oct 18 14:24:52 felhom felhom-agent[1371657]: time=2026-10-18T14:24:52.767+02:00 level=WARN msg="selfupdate: update committed" version=0.159.2 wrapper="" +Oct 18 14:25:00 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:00.552+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=9d4397117eeed3b9 op=agent_update +Oct 18 14:25:01 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:01.930+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded="" +Oct 18 14:25:01 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:01.930+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=63f8321055a65cb8 op=agent_config_update + +[exited with code 0] diff --git a/documentation/audits/day-2026-10-18/P4/demo-hp-backup-journal.txt b/documentation/audits/day-2026-10-18/P4/demo-hp-backup-journal.txt new file mode 100644 index 00000000..d1c6e3b4 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/demo-hp-backup-journal.txt @@ -0,0 +1,23 @@ +Oct 18 13:12:26 demo-hp felhom-agent[3566597]: time=2026-10-18T13:12:26.461+02:00 level=INFO msg="backup: space preflight passed" vmid=9201 target=local last_archive_bytes=6916890749 need_bytes=9719855260 avail_bytes=12123615232 +Oct 18 13:12:27 demo-hp felhom-agent[3566597]: time=2026-10-18T13:12:27.526+02:00 level=INFO msg="local-api: backup reached snapshotted (app may resume)" vmid=9201 target=local job=backup-9201-1792321945880394998 +Oct 18 13:18:22 demo-hp felhom-agent[3566597]: time=2026-10-18T13:18:22.853+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=backup:local +Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.260+02:00 level=INFO msg="backup: completed" vmid=9201 target=local archive=local:backup/vzdump-lxc-9201-2026_10_18-13_12_26.tar.zst size_bytes=6938307162 uncovered_volumes=2 +Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.260+02:00 level=INFO msg="local-api: backup job complete" vmid=9201 target=local job=backup-9201-1792321945880394998 archive=local:backup/vzdump-lxc-9201-2026_10_18-13_12_26.tar.zst +Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.266+02:00 level=INFO msg="local-api: no OS leg after a manual backup — it follows the night's own backup (R-899)" vmid=9201 job=backup-9201-1792321945880394998 +== sudo felhom-thin-check lines since the trigger: +0 +== sudo lines since the trigger (any helper): + 26 COMMAND=/usr/bin/chown + 36 COMMAND=/usr/bin/lsblk + 98 COMMAND=/usr/bin/lxc-info + 78 COMMAND=/usr/bin/mkdir + 8 COMMAND=/usr/bin/wg + 36 COMMAND=/usr/sbin/blkid + 75 COMMAND=/usr/sbin/lvs + 16 COMMAND=/usr/sbin/nft + 57 COMMAND=/usr/sbin/pct + 150 COMMAND=/usr/sbin/smartctl + +[exited with code 0] +== control: the night's backup on agent 0.159.1 (2026-10-18 04:33 local) ran the check: +Oct 18 04:33:15 demo-hp sudo[1664888]: felhom-agent : PWD=/ ; USER=root ; COMMAND=/usr/local/sbin/felhom-thin-check pve data diff --git a/documentation/audits/day-2026-10-18/P4/demo-hp-backup.txt b/documentation/audits/day-2026-10-18/P4/demo-hp-backup.txt new file mode 100644 index 00000000..c8de5991 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/demo-hp-backup.txt @@ -0,0 +1,3 @@ +== trigger 2026-10-18T11:11:36Z (local 2026-10-18 13:11:36) +200 +{"data": {"started": true}, "ok": true} diff --git a/documentation/audits/day-2026-10-18/P4/demo-hp-before.txt b/documentation/audits/day-2026-10-18/P4/demo-hp-before.txt new file mode 100644 index 00000000..12338af9 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/demo-hp-before.txt @@ -0,0 +1,5 @@ +felhom-agent 0.159.1 +Oct 18 04:43:52 demo-hp felhom-agent[3320002]: time=2026-10-18T04:43:52.498+02:00 level=INFO msg="osupdate: wrapper" line="os-apply: DONE rc=0 seconds=0 upgraded=0 (nothing to do)" +Oct 18 04:43:53 demo-hp felhom-agent[3320002]: time=2026-10-18T04:43:53.613+02:00 level=INFO msg="osupdate: DONE" run=20261018T024228Z layer=pve vmid=9201 ring=0 trigger=night outcome=nothing healthy=true reason="" upgraded=0 pending=1 not_covered=0 restart_needed=11 reboot_needed=false wrapper_seconds=16.3 +Oct 18 05:23:06 demo-hp felhom-agent[3320002]: time=2026-10-18T05:23:06.521+02:00 level=INFO msg="backup: restore-test evaluated — nothing due" verdicts="local: no settled archive yet — nothing to prove (newborn or still settling); felhom-pbs: newest settled archive (landed 2026-10-15T20:38:47Z) is already proven" +Oct 18 11:23:06 demo-hp felhom-agent[3320002]: time=2026-10-18T11:23:06.557+02:00 level=INFO msg="backup: restore-test evaluated — nothing due" verdicts="local: no settled archive yet — nothing to prove (newborn or still settling); felhom-pbs: newest settled archive (landed 2026-10-15T20:38:47Z) is already proven" diff --git a/documentation/audits/day-2026-10-18/P4/demo-hp-signed-jobs.txt b/documentation/audits/day-2026-10-18/P4/demo-hp-signed-jobs.txt new file mode 100644 index 00000000..78d5d398 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/demo-hp-signed-jobs.txt @@ -0,0 +1,4 @@ +wrote envelope to /dev/null +uploaded signed op to the hub jobs queue +wrote envelope to /dev/null +uploaded signed op to the hub jobs queue diff --git a/documentation/audits/day-2026-10-18/P4/demo-hp-update.txt b/documentation/audits/day-2026-10-18/P4/demo-hp-update.txt new file mode 100644 index 00000000..d184284b --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/demo-hp-update.txt @@ -0,0 +1,8 @@ +felhom-agent 0.159.2 11:08:30 +Oct 18 13:08:17 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:17.765+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=763e0b8971dff83c op=agent_update +Oct 18 13:08:18 demo-hp felhom-os-apply[3566414]: os-apply: BUNDLE DONE agent=0.159.2 written=0 same=30 self-check=ok signers-created=False +Oct 18 13:08:18 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:18.862+02:00 level=INFO msg="osupdate: wrapper" line="os-apply: BUNDLE DONE agent=0.159.2 written=0 same=30 self-check=ok signers-created=False" +Oct 18 13:08:19 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:19.883+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded="" +Oct 18 13:08:19 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:19.884+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=268dfe26d949094f op=agent_config_update + +[exited with code 0] diff --git a/documentation/audits/day-2026-10-18/P4/registry-sha.txt b/documentation/audits/day-2026-10-18/P4/registry-sha.txt new file mode 100644 index 00000000..84430a6e --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/registry-sha.txt @@ -0,0 +1,2 @@ +felhom-agent sha256 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9 +felhom-config-bundle.json sha256 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9 diff --git a/documentation/audits/day-2026-10-18/P4/release-agent.txt b/documentation/audits/day-2026-10-18/P4/release-agent.txt new file mode 100644 index 00000000..8c62e47e --- /dev/null +++ b/documentation/audits/day-2026-10-18/P4/release-agent.txt @@ -0,0 +1,102 @@ +[release-agent] building 0.159.2 … +[release-agent] built ok: sha256 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9 +[release-agent] config bundle built: sha256 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9 +[release-agent] tagging v0.159.2 at 65c1994 … +[release-agent] publishing … +[publish-agent] publishing /tmp/felhom-agent-bMXfqp (16007752 bytes, sha256 4d98868e922d6c10…) → https://gitea.dooplex.hu/api/packages/admin/generic/felhom-agent/0.159.2/felhom-agent +[publish-agent] pre-delete existing artifact: HTTP 404 (404/204 expected) +[publish-agent] upload OK (HTTP 201) +[publish-agent] round-trip GET verified (sha256 matches) +[publish-agent] DONE. Record in the hub operator UI (Configs → Day-0 artifacts): agent 0.159.2 / 4d98868e922d6c10665a6c0da9323e862AGENT_VERSION=0.159.2 +AGENT_SHA256=4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9 +pre-push [felhom-agent]: running scripts/agent_gates.py --fast ... +agent_gates — 4 gate(s) [--fast] + --fast SKIPPED (deliberate periodic runs, never in a hook): published, gate-decoys + +============================================================================== +== gate: reuse-refs (reuse_refs_check.py /mnt/5_hdd/felhom.eu/git/felhom-agent) +============================================================================== +note [felhom-agent] line 189: localapi/debuglogs_test.go (resolved by suffix → internal/localapi/debuglogs_test.go) +note [felhom-agent] line 205: hub/internal/store/dr_recipe.go (cross-repo → felhom.eu/hub/internal/store/dr_recipe.go) +OK [felhom-agent]: 117 cited paths — exact 115, suffix 1, ambiguous 0, cross-repo 1, FAILED 0 (siblings searched: app-catalog-felhom.eu, cc-secrets, felhom-controller, felhom.eu, felhom.eu-media, felhom.eu-sizing-push, felhom.eu-wt-sizing) + +============================================================================== +== gate: instructions (instructions_gate.py /mnt/5_hdd/felhom.eu/git/felhom-agent) +============================================================================== +instructions_gate: /mnt/5_hdd/felhom.eu/git/felhom-agent + CLAUDE.md effective lines : 108 (ceiling 200) + version literals : 0 + TEMPORARY blocks : 0 + rule files : 6 (5 path-scoped) + workspace file : SYMLINK -> felhom.eu/documentation/runbooks/workspace-CLAUDE.md (resolves to the versioned copy) + memory index : 200 lines (ceiling 200), 24953 bytes (ceiling 25600) + memory index content : 28 version literal(s), 3 host address(es), 0 expired statement(s) [WARN only] + memory topic files : 181 indexed, 4 orphaned, 41 archived + register citations : 6 cited, 1109 register items known + +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:31: version literal '0.14.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - **[restic 0.14.0 `--verify` is size+mtime, NOT content](restic-0140-verify-and-lock-sema +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:89: version literal '0.142.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [Offsite continuity](offsite-continuity-2026-07-17.md) — ctrl 0.142.0 orphan guard + hub +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:89: version literal '0.60.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [Offsite continuity](offsite-continuity-2026-07-17.md) — ctrl 0.142.0 orphan guard + hub +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:96: version literal '0.152.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - **[Hub operator UI: CC uses its token HUB_TOKEN, not the password](hub-operator-ui-basic +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:100: version literal '0.90.1' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [Agent 0.90.1 is wrapper-only](agent-0901-is-wrapper-only.md) — do NOT publish the binar +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:102: version literal '0.144.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [SMB „Megosztás" R-7 slice 1](smb-sharing-r7-slice1-2026-07-18.md) — ctrl 0.144.0 + felh +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md: ... and 22 more version literal(s) — full list from the tally counts above. +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:58: host address '192.168.0.192' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [hub.felhom.eu resolves to the LAN here](hub-resolves-to-lan-on-dooplex-network.md) — 19 +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:77: host address '167.233.158.164' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - [Offsite PBS box RAM ceiling](offsite-pbs-box-ram-ceiling-2026-07-27.md) — **root SSH = +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:185: host address '192.168.0.180' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing. + - **CC runs ON DooPlex** (192.168.0.180) — repos `/mnt/5_hdd/felhom.eu/git/felhom-*`, buil +WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory: 4 top-level topic file(s) are not referenced by MEMORY.md, so nothing will ever read them: f10-demo-hp-offsite-resolved-2026-07-23.md, launcher-v0163-2026-07-24.md, peti-return-p1-stop-2026-07-13.md, stopped-not-fault-v0164-2026-07-24.md + +instructions_gate: OK (11 warning(s)) + +============================================================================== +== gate: release-complete (check-release-complete.py) +============================================================================== +check-release-complete — the newest CHANGELOG version is a complete release + newest CHANGELOG version: v0.159.1 + ok tag v0.159.1 -> 5c3b218822, an ancestor of HEAD + ok package 0.159.1 is downloadable + +check-release-complete: v0.159.1 is tagged, placed and published. + +============================================================================== +== gate: observations (observations_gate.py /mnt/5_hdd/felhom.eu/git/felhom-agent) +============================================================================== +observations gate OK — REPORT.md has no observations section (nothing to check) + +============================================================================== +== summary +============================================================================== + reuse-refs OK (exit 0) + instructions OK (exit 0) + release-complete OK (exit 7ea9c589094e81d27d741e625d9d8f9 +[release-agent] config bundle published (HTTP 201) +[release-agent] pushing v0.159.2 … +remote: . Processing 1 references +remote: Processed 1 references in total +To https://gitea.dooplex.hu0) + observations OK (exit 0) + +all agent gates OK +pre-push [felhom-agent]: gates OK - push proceeding. + + RELEASED — and installable, verified by download, not by this script's own say-so. + + version : 0.159.2 + tag : v0.159.2 + sha256 : 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9 + bundle : 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9 (felhom-config-bundle.json — vouch it with the agent) + + NOT VOUCHED. Vouching is what points machines at this version and stays you/admin/felhom-agent.git + * [new tag] v0.159.2 -> v0.159.2 +[release-agent] verifying by independent download … +r deliberate act: + hub operator UI → Configs → Day-0 artifacts. Until then boxes keep installing the previous one. diff --git a/documentation/audits/day-2026-10-18/P5/installer-published.txt b/documentation/audits/day-2026-10-18/P5/installer-published.txt new file mode 100644 index 00000000..b8991c7d --- /dev/null +++ b/documentation/audits/day-2026-10-18/P5/installer-published.txt @@ -0,0 +1,4 @@ +== published installer read back 2026-10-18T12:32:10Z +SCRIPT_VERSION="1.34.0" # the SINGLE version source (F-1): -h and the run banners follow it. +served sha256 df722ee49f38da595e7c7017aa932b45853696c5282bc408b67a5fb8f141b67a +tag sha256 df722ee49f38da595e7c7017aa932b45853696c5282bc408b67a5fb8f141b67a diff --git a/documentation/audits/day-2026-10-18/P6-before-after.md b/documentation/audits/day-2026-10-18/P6-before-after.md new file mode 100644 index 00000000..73fb9f9c --- /dev/null +++ b/documentation/audits/day-2026-10-18/P6-before-after.md @@ -0,0 +1,28 @@ +# Website calculator — Immich before/after (2026-10-18) + +Immich peak: **3,290 MB → 3,983 MB** (the kernel in-use figure from the 4,000-photo import, all four containers; the heap alone peaked at 2,777 MB). Immich typical: **1,557 MB, unchanged** (rest after the import: 1,230 MB heap — the raise-only rule keeps the higher). Headroom ×1.5, guest rule and platform unchanged. + +## Immich alone — peak with the platform: 3,760 → 4,453 MB + +| Machine | guest memory | before | after | +|---|---|---|---| +| 8 GB | 4,096 MB | fits, but tight | does not fit **(changes)** | +| 12 GB | 7,580 MB | fits well | fits well | +| 16 GB | 11,676 MB | fits well | fits well | +| 24 GB | 19,868 MB | fits well | fits well | +| 32 GB | 28,060 MB | fits well | fits well | +| 48 GB | 44,444 MB | fits well | fits well | +| 64 GB | 60,828 MB | fits well | fits well | + +## Family starter set — peak with the platform: 6,021 → 6,714 MB + +| Machine | guest memory | before | after | +|---|---|---|---| +| 8 GB | 4,096 MB | does not fit | does not fit | +| 12 GB | 7,580 MB | fits, but tight | fits, but tight | +| 16 GB | 11,676 MB | fits well | fits well | +| 24 GB | 19,868 MB | fits well | fits well | +| 32 GB | 28,060 MB | fits well | fits well | +| 48 GB | 44,444 MB | fits well | fits well | +| 64 GB | 60,828 MB | fits well | fits well | + diff --git a/documentation/audits/day-2026-10-18/P7/box-walk.txt b/documentation/audits/day-2026-10-18/P7/box-walk.txt new file mode 100644 index 00000000..08d51777 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P7/box-walk.txt @@ -0,0 +1,27 @@ +=== demo-hp (enkisfelhom.hu) +containers: 24 running; not healthy/running: traefik Up 2 days; +unhealthy: 0 +2026/10/18 11:09:36 updater.go:855: [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0) +allow-list refusals since start: 0 +2026/10/18 11:09:36 sync.go:142: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +installed apps (stacks with app.yaml): 12 +public https://felhom.enkisfelhom.hu/login: 200 +public https://files.enkisfelhom.hu/: 200 +=== demo-felhom (demo-felhom.eu) +containers: 9 running; not healthy/running: traefik Up 2 days; +unhealthy: 0 +2026/10/18 11:09:25 [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0) +allow-list refusals since start: 0 +2026/10/18 11:09:26 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +installed apps (stacks with app.yaml): 5 +public https://felhom.demo-felhom.eu/login: 200 +public https://files.demo-felhom.eu/: 200 +=== tester-1 (enkicsifelhom.hu) +containers: 10 running; not healthy/running: traefik Up 2 days; +unhealthy: 0 +2026/10/18 11:09:35 [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0) +allow-list refusals since start: 0 +2026/10/18 11:09:36 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +installed apps (stacks with app.yaml): 3 +public https://felhom.enkicsifelhom.hu/login: 200 +public https://files.enkicsifelhom.hu/: 200 diff --git a/documentation/audits/day-2026-10-18/P7/floors-global-and-clear.txt b/documentation/audits/day-2026-10-18/P7/floors-global-and-clear.txt new file mode 100644 index 00000000..4bd600b6 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P7/floors-global-and-clear.txt @@ -0,0 +1,12 @@ +== global floor 2026-10-18T11:10:59Z +HTTP/1.1 303 See Other +Location: /configuration?flash=floor_set +clear tester-1: +HTTP/1.1 303 See Other +Location: /customers/tester-1?flash=floor_set +clear demo-hp: +HTTP/1.1 303 See Other +Location: /customers/demo-hp?flash=floor_set +clear demo-felhom: +HTTP/1.1 303 See Other +Location: /customers/demo-felhom?flash=floor_set diff --git a/documentation/audits/day-2026-10-18/P7/floors-set.txt b/documentation/audits/day-2026-10-18/P7/floors-set.txt new file mode 100644 index 00000000..56bcceb7 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P7/floors-set.txt @@ -0,0 +1,9 @@ +set tester-1: +HTTP/1.1 303 See Other +Location: /customers/tester-1?flash=floor_set +set demo-hp: +HTTP/1.1 303 See Other +Location: /customers/demo-hp?flash=floor_set +set demo-felhom: +HTTP/1.1 303 See Other +Location: /customers/demo-felhom?flash=floor_set diff --git a/documentation/audits/day-2026-10-18/P7/global-floor-readback.txt b/documentation/audits/day-2026-10-18/P7/global-floor-readback.txt new file mode 100644 index 00000000..9a7f8e10 --- /dev/null +++ b/documentation/audits/day-2026-10-18/P7/global-floor-readback.txt @@ -0,0 +1,3 @@ +('min_controller_version', '0.330.0') +('min_controller_version_declared_min_agent', '0.330.0=0.158.1') +per-box floors set: 0 diff --git a/documentation/audits/day-2026-10-18/P7/https-only.txt b/documentation/audits/day-2026-10-18/P7/https-only.txt new file mode 100644 index 00000000..132daffa --- /dev/null +++ b/documentation/audits/day-2026-10-18/P7/https-only.txt @@ -0,0 +1,2 @@ + OK http://torrent.demo-felhom.eu/r1033-check?q=1 -> 301 https://torrent.demo-felhom.eu/r1033-check?q=1 +== every public name redirects http -> https diff --git a/documentation/audits/sizing-2026-10-13/SIZING.md b/documentation/audits/sizing-2026-10-13/SIZING.md index ca87745f..5e27cb63 100644 --- a/documentation/audits/sizing-2026-10-13/SIZING.md +++ b/documentation/audits/sizing-2026-10-13/SIZING.md @@ -25,7 +25,7 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: ` | App | Typical MB | Peak MB | Catalog request / limit | CPU class | CPU rest % | Busiest minute % | Source | |---|---|---|---|---|---|---|---| -| Immich (`immich`) | 1,557 | 3,290 | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! | +| Immich (`immich`) | 1,557 | 3,983 (raised 2026-10-18) | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! | | Grimmory (`grimmory`) | 451 | 1,095 | 600 / 1,408 | medium | 0.83 | 22.0 | onboarding ! | | Karakeep (`karakeep`) | 372 | 1,050 | 700 / 2,816 | light | 0.6 | 2.9 | onboarding ! | | Cal.com (`calcom`) | 800 | 950 | 200 / 1,792 | light | 0.14 | 1.8 | onboarding | @@ -95,7 +95,7 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: ` unmeasured = catalog value. `!` = two sources' peaks differ by more than 50 %; the higher is used (all values: `evidence/apps-table.json`). `—` = not installable today (hidden / abandoned), no bench. -**The five largest peaks:** Immich 3,290 · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB. +**The five largest peaks:** Immich 3,983 (3,290 until 2026-10-18) · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB. **Raised with the HP check (2026-10-14, operator ruling A, R-1009):** 23 figures of 64 apps took the second machine's higher figure (HP t740, `audits/sizing-check-2026-10-14/hp-figures.json`); none went down. Each raised figure is named in `sizing.json` → `raised_by_hp` (the figure, what it was, what it is). The table above already holds the raised figures. @@ -184,14 +184,16 @@ a backup at the same time can slow it down · **does not fit:** guest < peak. Pe | Selection | Peak | 8 GB | 16 GB | 24 GB | 32 GB | |---|---|---|---|---|---| -| Household set | 5.9 GB | does not fit | fits well | fits well | fits well | +| Household set | 6.6 GB | does not fit | fits well | fits well | fits well | | Household set without Immich | 2.7 GB | fits, but tight | fits well | fits well | fits well | -| Immich alone | 3.7 GB | fits, but tight | fits well | fits well | fits well | -| All 63 apps | 21.9 GB | does not fit | does not fit | does not fit | fits, but tight | +| Immich alone | 4.3 GB | does not fit | fits well | fits well | fits well | +| All 63 apps | 22.5 GB | does not fit | does not fit | does not fit | fits, but tight | -- **8 GB:** the household set without Immich fits, but tight; Immich alone fits, but tight; the whole household set does not fit. +- **8 GB:** the household set without Immich fits, but tight; Immich alone does not fit (since 2026-10-18); the whole household set does not fit. - **16 GB:** the whole household set fits well. - **32 GB:** the household set fits well; all 63 apps at once fit, but tight. 2026-10-14: raised with the HP check (operator ruling A); one verdict became stricter — household set without Immich on 8 GB, by 0.5 MB. + +2026-10-18 (R-1147, operator yes): **Immich's peak raised 3,290 → 3,983 MB** from a 4,000-photo import on scratch guest 9202 (`audits/night-2026-10-18/P6/`: the four containers' `memory.current` summed — it includes file cache, so it sits above `used`; the heap alone peaked at 2,777 MB, and the server was OOM-killed twice at its old 2 GB limit). Typical unchanged (1,557; rest after the import 1,230 heap). One verdict became stricter: **Immich alone on 8 GB — does not fit** (4.3 GB > the 4.0 GB guest). diff --git a/documentation/audits/sizing-2026-10-13/sizing.json b/documentation/audits/sizing-2026-10-13/sizing.json index 2e2e3328..ed47c13f 100644 --- a/documentation/audits/sizing-2026-10-13/sizing.json +++ b/documentation/audits/sizing-2026-10-13/sizing.json @@ -372,7 +372,7 @@ "slug": "immich", "display_name": "Immich", "mem_typical_mb": 1557, - "mem_peak_mb": 3290, + "mem_peak_mb": 3983, "cpu_class": "heavy-in-bursts", "cpu_note": "only while it reads new photos: thumbnails, face and search indexing (200 photos took about 6 minutes)", "source": "onboarding", @@ -389,6 +389,16 @@ "was": 3061, "now": 3290 } + ], + "raised_by_large_library": [ + { + "field": "peak", + "was": 3290, + "now": 3983, + "date": "2026-10-18", + "why": "a 4,000-photo import on scratch guest 9202 (demo-hp): the four containers' memory.current summed, at its peak (heap alone 2,777 MB); the server was OOM-killed twice at its old 2 GB limit — felhom.eu documentation/audits/night-2026-10-18/P6/; operator yes 2026-10-18 12:16 and again for the before/after table", + "basis": "memory.current (includes file cache) — above `used`, so it leans to the safe side" + } ] }, { diff --git a/scripts/test_build_sizing_web.py b/scripts/test_build_sizing_web.py index f61c8a3e..6e77a988 100644 --- a/scripts/test_build_sizing_web.py +++ b/scripts/test_build_sizing_web.py @@ -108,8 +108,8 @@ class SizingWeb(unittest.TestCase): cases = { "household": (HOUSEHOLD, [N, T, W, W, W, W, W], 16, 12), "household without immich": ([s for s in HOUSEHOLD if s != "immich"], [T, W, W, W, W, W, W], 12, 8), # 2026-10-14 HP raise: 2,731 x 1.5 = 4,096.5 > 4,096 - "immich alone": (["immich"], [T, W, W, W, W, W, W], 12, 8), - "all 63": (self.all, [N, N, N, N, T, W, W], 48, 32), # 24 GB: guest 19,868 < peak 22,377 (22,333 before Prowlarr) + "immich alone": (["immich"], [N, W, W, W, W, W, W], 12, None), # 2026-10-18: Immich peak 3,983 (R-1147) → 4,453 > 4,096 + "all 63": (self.all, [N, N, N, N, T, W, W], 48, 32), # 24 GB: guest 19,868 < peak 23,070 (22,377 before R-1147) "nothing": ([], [W] * 7, 8, None), } for name, (sel, want, rec, tight) in cases.items(): @@ -140,7 +140,7 @@ class SizingWeb(unittest.TestCase): self.assertGreaterEqual(dict(segs)["spare"], 0, name + ": spare negative") # the household preset, by hand: peak 6,021 MiB; the bar holds 6,021 * 1.5 = 9,031.5 in the guest well, segs = segments(self.d, HOUSEHOLD) - self.assertAlmostEqual(dict(segs)["spare"], 6021 * 0.5, delta=1) + self.assertAlmostEqual(dict(segs)["spare"], 6714 * 0.5, delta=1) # household peak 6,714 since R-1147 (6,021 before) self.assertAlmostEqual(dict(segs)["base"], 4708, delta=1) # 4,096 for Proxmox + 612 MemTotal shortfall def test_bar_never_below_the_smallest_named_box(self): diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md index 62da1dec..cb439bcc 100644 --- a/website/CHANGELOG.md +++ b/website/CHANGELOG.md @@ -1,4 +1,12 @@ -## 2026-10-16 — the backup page: one-disk boxes (storage identity build B) +## 2026-10-18 — the machine estimator: Immich's peak 3,290 → 3,983 MB (R-1147, operator yes) + +- `assets/sizing-data.json` rebuilt by `scripts/build_sizing_web.py` from `sizing.json`, whose Immich peak was raised + from a 4,000-photo import (felhom.eu `documentation/audits/night-2026-10-18/P6/`). **The one verdict that changes:** + Immich alone on an 8 GB machine — „fits, but tight" → „does not fit". The family starter set is unchanged. The data + URL's cache-bust `?v=4` → `?v=5` on both pages, so a cached browser fetches the new figures. Before/after table: + `documentation/audits/day-2026-10-18/P6-before-after.md`. + +## 2026-10-16 — the backup page: one-disk boxes (storage identity build B) - `biztonsagimentes.html` / `en/backups.html`: a new paragraph pair „Ha a gépben csak egy lemez van" / „If the machine has only one disk" — the new install's own data area (outside the full system backup), and what protects against a disk failure diff --git a/website/assets/sizing-data.json b/website/assets/sizing-data.json index 41218372..878bcd9f 100644 --- a/website/assets/sizing-data.json +++ b/website/assets/sizing-data.json @@ -5,7 +5,7 @@ "source": { "path": "documentation/audits/sizing-2026-10-13/sizing.json", "commit": "c885b5ac", - "sha256": "d289766cc93cf5d488eeab7567bcbda29297cb673621897bb851cd0b49613b9b" + "sha256": "6c6e43d318d596925accea6ba3516b73f574621bc967c005ba855716282c273d" }, "platform_mb": 470, "headroom": 1.5, @@ -175,7 +175,7 @@ "tagline_en": "A Google Photos alternative", "category": "media", "typical_mb": 1557, - "peak_mb": 3290, + "peak_mb": 3983, "cpu_class": "heavy-in-bursts", "cpu_note_hu": "csak amíg új fotókat dolgoz fel (bélyegképek, arcok, keresés): 200 fotó kb. 6 perc", "cpu_note_en": "only while it processes new photos (thumbnails, faces, search): 200 photos took about 6 minutes", diff --git a/website/en/sizing.html b/website/en/sizing.html index 5cdf2d8e..7f6d34cb 100644 --- a/website/en/sizing.html +++ b/website/en/sizing.html @@ -73,7 +73,7 @@

Tick what you would run on the box, and the page shows how much machine memory it needs. This is an estimate from my own measurements on two machines, an N100 mini PC and an HP t740 (13–14 October 2026), not a promise.

-