From 3eca98f1353f0fab2dcc556e5a49d4ca44bce225 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Thu, 15 Oct 2026 22:51:03 +0200 Subject: [PATCH] storage identity build B, Part 1: the D3 space check (proposal, waits for the operator); R-1087, R-1088 Measured four boxes, the hub's five host reports, every catalog image's registry size and one whole-box copy's thin-pool use. Proposal: mp0 50/100/130 GiB, reserve max(16 GiB, 10 %) capped at 48 GiB -> the internal place about 42/182/590/1,510 GB for 256 GB/512 GB/1 TB/2 TB. STATUS D10 asks for the operator's ok. Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb --- STATUS.md | 2 + .../SPACE-CHECK.md | 84 ++++++++++++ .../space/catalog-images.txt | 7 + .../space/demo-hp-9201.txt | 61 +++++++++ .../space/demo-hp-9202.txt | 58 ++++++++ .../space/felhom-pve-9201.txt | 59 ++++++++ .../space/hub-fleet-storage.txt | 6 + .../space/root@192.168.0.154-9201.txt | 61 +++++++++ .../tester1-pool-during-wholebox-copy.txt | 126 ++++++++++++++++++ .../space/tier1-units.txt | 20 +++ documentation/backlog/OPEN-ITEMS.md | 6 +- 11 files changed, 488 insertions(+), 2 deletions(-) create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/catalog-images.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9201.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9202.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/felhom-pve-9201.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/hub-fleet-storage.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/root@192.168.0.154-9201.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/tester1-pool-during-wholebox-copy.txt create mode 100644 documentation/audits/storage-identity-buildB-2026-10-15/space/tier1-units.txt diff --git a/STATUS.md b/STATUS.md index 3522a636..e695ae66 100644 --- a/STATUS.md +++ b/STATUS.md @@ -46,8 +46,10 @@ | D7 | R-990, R-989 | Rule yes / no / later on the forum ideas (`audits/forum-research-2026-10-12/FELHOM.md` §5) and the selfh.st ideas (`audits/selfhst-survey-2026-10-12/FELHOM.md` §6) | — | — | nothing changes; the research ages | — | | D8 | R-206 | Install DooPlex's Docker settings from git (restarts Docker), and prune the build cache weekly: yes or no? | **Yes, in a quiet window** | — | a rebuild of DooPlex still has the settings in git | — | | D9 | R-1062 | The N100's USB drive is also its whole-box backup drive. Split it in two anyway? | **No — keep one drive**; the lived-in box keeps its nightly whole-box backup | Split: the box loses its local whole-box backup (or add a second drive first) | it stays one drive; multi-drive tests stay on Tester 1 | — | +| D10 | R-1079 | Build B space check (`audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md` §4): data volume 50 / 100 / 130 GiB, reserve max(16 GiB, 10 %) capped at 48 GiB → the household's own data area ≈ 42 GB (256 GB disk), 182 (512), 590 (1 TB), 1,510 (2 TB) | **ok** | The design's numbers: 22 / 152 / 438 / 1,266 GB | the installer part of build B waits | build B | ## Waiting on you — do +- **Rotate CC's hub token and restore CC's credentials file (R-1088).** A session overwrote the file with the token at 22:03; all other keys are gone, and the token was printed once into a transcript. If not: CC cannot log in to any box dashboard, and a printed token stays valid. - **Vouch agent 0.157.0 and its config bundle** (hub → Configuration → Artifacts). Then CC raises the global floor to controller 0.317.0 with MinAgent 0.157.0 and clears the three per-box floors. If not: households stay on 0.314.0 and keep counting a same-disk copy as a second copy; the three test boxes keep their own floor. - **Rule on R-1082:** the drives page still offers `/mnt/sys_drive` to attach, but the design you accepted says household data must not go there. Pick: **hide it** (my pick — films there would ride in every whole-box backup) or keep it until build B gives one-disk boxes their own place. If not: a household can still put films into the whole-box backup. - **Nézd meg az AdventureLog és a Plex oldalát a demo-hp-n, a rendes címén** (`felhom.enkisfelhom.hu`). A túl nagy keret javítva: a tartalom most 32 képpontra van a bal oszloptól és 36-ra a tetejétől (előtte 80 és 64 volt). Az alkalmazás oldala mostantól egy hasábban van: egy szélesség, vékony vonalak a szakaszok között, aláhúzott fül, és doboz csak ott, ahol az alkalmazás vár rád (kék) vagy ahol valami kockázatos (sárga). A „sikeres frissítés" sáv kis szürke sorrá vált a név alatt. Ha nem nézed meg: a felület él, csak senki nem látta még böngészőben. diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md b/documentation/audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md new file mode 100644 index 00000000..53184597 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md @@ -0,0 +1,84 @@ +# Storage identity build B, Part 1 — the D3 space check (2026-10-15) + +Design: `architecture/16-storage-physical-identity.md` §5, §7 (D3 ruled „as recommended, check the space"). +Question: how big must the guest's data volume (`mp0`) and the thin-pool reserve be, so that the one-disk internal data +place („Belső tárhely") gets as much as is safe? **Status: PROPOSAL — waits for the operator's „ok" or other numbers.** +Method: read-only measurement on every box we can read (`space/*.txt`), the registry manifests of every catalog image +(`space/catalog-images.txt`), the hub's latest host reports (`space/hub-fleet-storage.txt`, database copied with its WAL), +and one whole-box copy on Tester 1 with the thin pool sampled every 2 s (`space/tester1-pool-during-wholebox-copy.txt`). + +## 1. What the boxes really use + +| Box | Disk | Thin pool | `mp0` size | `mp0` used | of which images | volumes | Tier-1 in `mp0` | Apps | +|---|---|---|---|---|---|---|---|---| +| demo-hp | 128 GB SATA | 54 GiB | 70 GiB | **18.2 GB** | 14.8 GB (4.2 GB old, reclaimable) | 1.4 GB | 1.1 GB | 21 | +| Tester 1 (VM) | 200 GB virtual | 113 GiB | 70 GiB | 7.9 GB | 7.0 GB | 0.6 GB | 0.2 GB | 17 | +| 9202 scratch | file on NVMe | — | 70 GiB | 10.6 GB | 9.1 GB | 1.3 GB | 0.1 GB | 10 | +| N100 | 512 GB SATA | 349 GiB | 250 GiB | 2.4 GB | 2.3 GB | 0.07 GB | 0 | 9 | +| Tester 2 (hub) | 512 GB | 349 GiB | 250 GiB | pool 7.2 GiB used | — | — | — | — | +| Tester4 OMV VM (hub) | VM disk | 113 GiB | — | pool 6.1 GiB used | — | — | — | — | + +The guest root (`rootfs`, 32 GiB) uses **1.1–1.3 GB** on every box. + +**Full catalog:** 63 installable apps (plant-it and wger are not offered), 84 images. Distinct layers, compressed: **22.6 GB**. +On disk an image takes **2.43×** its compressed size (17 installed images: 3.1 GB → 7.5 GB; range 1.6–3.4×). +So **the whole catalog's images ≈ 55 GB on disk.** Largest: gramps-web 2.6 GB compressed, cal.com 1.8, OnlyOffice 1.3, +Immich 1.2. Running all 63 apps at once needs ≈ 22 GB of memory (`audits/sizing-2026-10-13/SIZING.md`), so only a +32 GB box can — a 256 GB box (8 GB memory) runs roughly 10–15 apps. + +**`mp0` for the whole catalog:** images 55 + volumes ≈ 5 + Tier-1 of apps with no drive ≈ 3 + an update (old and new +image of the largest app side by side) ≈ 6 + old images not yet cleaned ≈ 5 → **≈ 74 GB**. +**For a heavy real household (demo-hp, 21 apps): 18 GB.** + +## 2. What the reserve is for (measured) + +- **A whole-box copy's snapshot:** Tester 1, apps running, 8.7 GiB copied in 2 min → the pool went 12.05 % → 12.06 % + (≈ 12 MB). The snapshot costs almost nothing. +- **An update's image pull** lands inside `mp0` — `mp0`'s size covers it, not the reserve. +- **The restore test** restores a whole guest into the pool: it needs free ≈ the guest's used size (3.5–19.5 GB + measured; ≈ 75 GB for a full-catalog box). It sizes itself and refuses what does not fit (A19) — a too-small reserve + costs a skipped proof, never a full pool. +- **Why the reserve must exist at all:** thin volumes are promised more than the pool holds (demo-hp today: 102 GiB + promised on a 54 GiB pool). That is safe only while use stays low. The internal place will hold films and **will** be + filled, so the sizes below never promise more than pool − reserve. A pool at 100 % stops every volume on the box. + +## 3. The host root (Proxmox `local`) + +The Proxmox installer sets it (the public ISO has no answer file); measured 39.5 GiB on a 128 GB disk, 59.8 on 200 GB, +96 on 512 GB. Proxmox itself uses ≈ 13 GB (`/usr` 7, logs 4). The local whole-box copies are **0.3–0.4 × the guest's +used size** (5.4 GB for demo-hp's 18 GB; 3.1 GB for Tester 1's 8 GB), three kept plus one while a new one is written. +They do **not** grow with the internal place (a host mount, outside the copy — to be shown live in Part 2). +**Can the root be smaller on a one-disk box? No change proposed:** the Felhom installer runs after Proxmox and cannot +shrink an ext4 root; a realistic household needs ≈ 13 + 4 × 7 ≈ 41 GB, which fits all three measured sizes; a heavy box +already meets R-548 (the copy is skipped by name, R-685). Shrinking it would only bring R-548 to more boxes. + +## 4. The proposal + +Rules: `rootfs` 32 GiB (the golden's; unchanged). **`mp0`: 50 GiB (pool < 300), 100 GiB (300–800), 130 GiB (≥ 800).** +**Reserve: max(16 GiB, 10 % of the pool), at most 48 GiB.** Internal place = pool − 32 − `mp0` − reserve, made only when +≥ 20 GiB. Nothing promised beyond pool − reserve. + +| Disk | Thin pool (GiB) | `mp0` today / design / **proposed** | Reserve design / **proposed** | Internal place design / **proposed** | +|---|---|---|---|---| +| 256 GB | ≈ 140 (estimate from 128 GB and 200 GB measured) | 70 / 70 / **50** | 16 / **16** | 22 / **≈ 42** | +| 512 GB | **349** (N100, Tester 2 measured) | 250 / 130 / **100** | 35 / **35** | 152 / **≈ 182** | +| 1 TB | ≈ 800 (estimate) | 250 / 250 / **130** | 80 / **48** | 438 / **≈ 590** | +| 2 TB | ≈ 1,720 (estimate) | 250 / 250 / **130** | 172 / **48** | 1,266 / **≈ 1,510** | + +**Why each number:** +- `mp0` 50 on a 256 GB box: 2.7× the heaviest measured household (18 GB); the whole catalog (74 GB) does not fit, but an + 8 GB box cannot run it either. 100 on 512 GB: the whole catalog with ≈ 35 % spare. 130 from 1 TB: the same plus room + for the catalog to grow. The design's 250 is 3× the whole catalog — space a household never reaches. +- **`mp0` is the number to be careful with:** a full `mp0` refuses app backups and stops Docker (C15), and growing it + later means shrinking the internal place, which ext4 cannot do online. So `mp0` errs high; the reserve does not need to. +- Reserve cap 48 GiB: it covers a restore test of every measured box twice over; beyond it the reserve only withholds + the household's space (172 GiB on 2 TB for a 12 MB snapshot). + +**Not decided here:** the guest root's 32 GiB (uses ≈ 1.3) is the golden's; shrinking it is a golden change, not this task. + +## 5. Also found (filed) + +- R-1087 — the N100's host root still holds three whole-box copies from 2026-07-28 (≈ 16.8 GB); its copies go to the USB + disk since then, and nothing prunes the old target. +- R-1088 — CC's credentials file was overwritten during this session (by another session's credential-reader call), and + this session printed the hub token once while checking the file's shape. diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/catalog-images.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/catalog-images.txt new file mode 100644 index 00000000..ac11e346 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/catalog-images.txt @@ -0,0 +1,7 @@ +apps total 65 available 63 not available ['plant-it', 'wger'] +missing manifests [] +catalog compressed, distinct layers: 22.6 GB (sum per app without sharing 24.1 GB) +ratio on-disk/compressed over 17 installed images: min 1.61 median 2.41 max 3.43 +weighted ratio 2.43 (3.1 GB compressed -> 7.5 GB on disk) +catalog on disk estimate: 55.1 GB (weighted ratio) +largest apps (compressed GB): gramps-web 2.56, calcom 1.76, onlyoffice 1.27, immich 1.18, dawarich 0.97, karakeep 0.77, jellyfin 0.69, crafty-controller 0.67, claper 0.65, home-assistant 0.65, paperless-ngx 0.64, nextcloud 0.64 diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9201.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9201.txt new file mode 100644 index 00000000..5111d211 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9201.txt @@ -0,0 +1,61 @@ +### host demo-hp guest 9201 2026-10-15T20:22:45Z +## host root + local dump +/dev/mapper/pve-root 39506M 23634M 13834M 64% / +6688 /var/lib/vz/dump +-rw-r--r-- 1 root root 5438M Oct 15 04:39 vzdump-lxc-9201-2026_10_15-04_33_37.tar.zst +5003 /var/lib/vz/template +1 /var/lib/vz/images +6860 /usr +3960 /var/log +5 /var/lib/pve-cluster +162 /var/cache +## pool + data 55164.00m 50.75 2.50 + root 40444.00m + swap 8192.00m + vm-9201-disk-0 32768.00m 9.58 + vm-9201-disk-1 71680.00m 34.68 +## guest mounts +mp0: local-lvm:vm-9201-disk-1,mp=/var/lib/felhom,backup=1,size=70G +mp8: /mnt/felhom-drives,mp=/mnt/felhom-drives +mp9: /var/lib/felhom-agent/guests/9201/bootstrap,mp=/etc/felhom-bootstrap,ro=1 +rootfs: local-lvm:vm-9201-disk-0,size=32G +/dev/mapper/pve-vm--9201--disk--0 31950M 1300M 28997M 5% / +/dev/mapper/pve-vm--9201--disk--1 70376M 18215M 48561M 28% /var/lib/felhom +## docker system df +TYPE TOTAL ACTIVE SIZE RECLAIMABLE +Images 33 19 14.81GB 4.213GB (28%) +Containers 21 21 106.6MB 0B (0%) +Local Volumes 1157 21 1.375GB 526.5MB (38%) +Build Cache 0 0 0B 0B +## /var/lib/felhom top +17067 /var/lib/felhom/docker +1147 /var/lib/felhom/sys_drive +1 /var/lib/felhom/lost+found +## sys_drive depth 2 +1147 /var/lib/felhom/sys_drive/felhom-data/ +## docker dir +15629 /var/lib/felhom/docker/overlay2 +1367 /var/lib/felhom/docker/volumes +65 /var/lib/felhom/docker/image +7 /var/lib/felhom/docker/containers +1 /var/lib/felhom/docker/tmp +1 /var/lib/felhom/docker/swarm +1 /var/lib/felhom/docker/runtimes +1 /var/lib/felhom/docker/plugins +## volumes top +255 /var/lib/docker/volumes/adventurelog_adventurelog_postgres_data/ +166 /var/lib/docker/volumes/bookstack_bookstack_db_data/ +157 /var/lib/docker/volumes/romm_romm_db_data/ +155 /var/lib/docker/volumes/kimai_kimai_db_data/ +132 /var/lib/docker/volumes/felhom-controller-data/ +69 /var/lib/docker/volumes/paperless-ngx_paperless_postgres_data/ +67 /var/lib/docker/volumes/romm_romm_redis_data/ +66 /var/lib/docker/volumes/docmost_docmost_postgres_data/ +59 /var/lib/docker/volumes/romm_romm_redis_data.pre-aof-fix-20260924T135937Z/ +46 /var/lib/docker/volumes/adventurelog_adventurelog_media/ +sort: write failed: 'standard output': Broken pipe +sort: write error +## image count +26 +21 diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9202.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9202.txt new file mode 100644 index 00000000..ba075393 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/demo-hp-9202.txt @@ -0,0 +1,58 @@ +### host demo-hp guest 9202 2026-10-15T20:23:03Z +## host root + local dump +/dev/mapper/pve-root 39506M 23634M 13834M 64% / +6688 /var/lib/vz/dump +5003 /var/lib/vz/template +1 /var/lib/vz/images +6860 /usr +3960 /var/log +5 /var/lib/pve-cluster +162 /var/cache +## pool + data 55164.00m 50.75 2.50 + root 40444.00m + swap 8192.00m + vm-9201-disk-0 32768.00m 9.58 + vm-9201-disk-1 71680.00m 34.68 +## guest mounts +mp0: nvme-scratch:9202/vm-9202-disk-3.raw,mp=/var/lib/felhom,backup=1,size=70G +mp8: /mnt/hdd_1/scratch-drives/scratch_hdd,mp=/mnt/felhom-drives/scratch_hdd +mp9: /var/lib/felhom-agent/guests/9202/bootstrap,mp=/etc/felhom-bootstrap,ro=1 +rootfs: nvme-scratch:9202/vm-9202-disk-2.raw,size=32G +/dev/loop0 31950M 2887M 27410M 10% / +/dev/loop1 69992M 10601M 55791M 16% /var/lib/felhom +## docker system df +TYPE TOTAL ACTIVE SIZE RECLAIMABLE +Images 19 9 9.054GB 3.059GB (33%) +Containers 10 10 28.82MB 0B (0%) +Local Volumes 273 9 1.319GB 15.98kB (0%) +Build Cache 4 0 262B 262B +## /var/lib/felhom top +10508 /var/lib/felhom/docker +92 /var/lib/felhom/sys_drive +1 /var/lib/felhom/lost+found +## sys_drive depth 2 +92 /var/lib/felhom/sys_drive/felhom-data/ +## docker dir +9197 /var/lib/felhom/docker/overlay2 +1268 /var/lib/felhom/docker/volumes +31 /var/lib/felhom/docker/image +13 /var/lib/felhom/docker/containers +1 /var/lib/felhom/docker/tmp +1 /var/lib/felhom/docker/swarm +1 /var/lib/felhom/docker/runtimes +1 /var/lib/felhom/docker/plugins +## volumes top +786 /var/lib/docker/volumes/immich_immich_ml_cache/ +326 /var/lib/docker/volumes/immich_immich_postgres_data/ +68 /var/lib/docker/volumes/paperless-ngx_paperless_postgres_data/ +45 /var/lib/docker/volumes/felhom-controller-data/ +14 /var/lib/docker/volumes/paperless-ngx_paperless_redis_data/ +12 /var/lib/docker/volumes/immich_immich_redis_data/ +11 /var/lib/docker/volumes/paperless-ngx_paperless_data/ +1 /var/lib/docker/volumes/privatebin_privatebin_data/ +1 /var/lib/docker/volumes/filebrowser_filebrowser_data/ +1 /var/lib/docker/volumes/fe503d3e9a34b113d4c56b59c5986e13c44b6e401b6e6681eb62712d24368329/ +## image count +14 +10 diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/felhom-pve-9201.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/felhom-pve-9201.txt new file mode 100644 index 00000000..edab87b8 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/felhom-pve-9201.txt @@ -0,0 +1,59 @@ +### host demo-felhom guest 9201 2026-10-15T20:23:08Z +## host root + local dump +/dev/mapper/pve-root 96190M 31681M 59578M 35% / +19219 /var/lib/vz/dump +-rw-r--r-- 1 root root 5552M Jul 28 01:32 vzdump-lxc-9201-2026_07_28-01_27_56.tar.zst +-rw-r--r-- 1 root root 5571M Jul 28 06:49 vzdump-lxc-9201-2026_07_28-06_44_22.tar.zst +-rw-r--r-- 1 root root 5656M Jul 28 17:58 vzdump-lxc-9201-2026_07_28-17_53_26.tar.zst +124 /var/lib/vz/template +1 /var/lib/vz/images +7087 /usr +4067 /var/log +5 /var/lib/pve-cluster +162 /var/cache +## pool + data 357188.00m 2.75 0.57 + root 98304.00m + swap 8192.00m + vm-9201-disk-2 32768.00m 6.76 + vm-9201-disk-3 256000.00m 2.97 +## guest mounts +mp0: local-lvm:vm-9201-disk-3,mp=/var/lib/felhom,backup=1,size=250G +mp8: /mnt/felhom-drives,mp=/mnt/felhom-drives +mp9: /var/lib/felhom-agent/guests/9201/bootstrap,mp=/etc/felhom-bootstrap,ro=1 +rootfs: local-lvm:vm-9201-disk-2,size=32G +/dev/mapper/pve-vm--9201--disk--2 31950M 1139M 29158M 4% / +/dev/mapper/pve-vm--9201--disk--3 250899M 2359M 235724M 1% /var/lib/felhom +## docker system df +TYPE TOTAL ACTIVE SIZE RECLAIMABLE +Images 16 9 2.291GB 605.3MB (26%) +Containers 9 9 299.5kB 0B (0%) +Local Volumes 8 7 67.63MB 0B (0%) +Build Cache 0 0 0B 0B +## /var/lib/felhom top +2357 /var/lib/felhom/docker +1 /var/lib/felhom/sys_drive +1 /var/lib/felhom/lost+found +## sys_drive depth 2 +1 /var/lib/felhom/sys_drive/felhom-data/ +## docker dir +2263 /var/lib/felhom/docker/overlay2 +74 /var/lib/felhom/docker/volumes +14 /var/lib/felhom/docker/image +6 /var/lib/felhom/docker/containers +1 /var/lib/felhom/docker/tmp +1 /var/lib/felhom/docker/swarm +1 /var/lib/felhom/docker/runtimes +1 /var/lib/felhom/docker/plugins +## volumes top +53 /var/lib/docker/volumes/felhom-controller-data/ +9 /var/lib/docker/volumes/qbittorrent_qbittorrent_config/ +6 /var/lib/docker/volumes/prowlarr_prowlarr_config/ +5 /var/lib/docker/volumes/sonarr_sonarr_config/ +3 /var/lib/docker/volumes/radarr_radarr_config/ +1 /var/lib/docker/volumes/opengist_opengist_data/ +1 /var/lib/docker/volumes/filebrowser_filebrowser_data/ +1 /var/lib/docker/volumes/b8a3eb602356720f6ff7b34b1a1c46d9964e031d26b0f7313ec1b6812b28b562/ +## image count +11 +9 diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/hub-fleet-storage.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/hub-fleet-storage.txt new file mode 100644 index 00000000..888c7a3a --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/hub-fleet-storage.txt @@ -0,0 +1,6 @@ +Tester-2-be8404 2026-10-04 18:05:48 agent 0.142.0 [('felhom-pbs', 'pbs', 0.0, 0.0), ('local', 'local', 5.4, 93.9), ('local-lvm', 'lvmthin', 7.2, 348.8)] +Tester4-68d1d8 2026-10-15 17:15:03 agent 0.156.1 [('local-lvm', 'lvmthin', 6.1, 112.9), ('local', 'local', 5.4, 58.5)] +demo-felhom-8363b5 2026-10-15 20:34:52 agent 0.157.0 [('felhom-pbs', 'pbs', 0.0, 0.0), ('local-lvm', 'lvmthin', 9.6, 348.8), ('felhom-backup', 'local-dir', 6.1, 915.8), ('local', 'local', 30.9, 93.9)] +demo-hp-bb76ea 2026-10-15 20:41:16 agent 0.157.0 [('nvme-scratch', 'local-dir', 224.7, 937.8), ('felhom-pbs', 'pbs', 0.0, 0.0), ('local', 'local', 23.1, 38.6), ('local-lvm', 'lvmthin', 27.6, 53.9)] +tester-1-d70be4 2026-10-15 20:32:13 agent 0.157.0 [('local-lvm', 'lvmthin', 13.6, 113.2), ('local', 'local', 14.5, 58.6), ('felhom-pbs', 'pbs', 0.0, 0.0)] +tables ['reports', 'app_telemetry', 'host_reports', 'os_reports'] diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/root@192.168.0.154-9201.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/root@192.168.0.154-9201.txt new file mode 100644 index 00000000..b71c9fa1 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/root@192.168.0.154-9201.txt @@ -0,0 +1,61 @@ +### host felhom guest 9201 2026-10-15T20:23:19Z +## host root + local dump +/dev/mapper/pve-root 59990M 14846M 42066M 27% / +6622 /var/lib/vz/dump +-rw-r--r-- 1 root root 1502M Oct 13 04:40 vzdump-lxc-9201-2026_10_13-04_38_03.tar.zst +-rw-r--r-- 1 root root 1503M Oct 14 04:44 vzdump-lxc-9201-2026_10_14-04_42_22.tar.zst +-rw-r--r-- 1 root root 3000M Oct 15 04:49 vzdump-lxc-9201-2026_10_15-04_47_11.tar.zst +1 /var/lib/vz/template +1 /var/lib/vz/images +5810 /usr +1616 /var/log +5 /var/lib/pve-cluster +162 /var/cache +## pool + data 115892.00m 12.05 1.79 + root 61260.00m + swap 7872.00m + vm-9201-disk-0 32768.00m 6.08 + vm-9201-disk-1 71680.00m 16.70 +## guest mounts +mp0: local-lvm:vm-9201-disk-1,mp=/var/lib/felhom,backup=1,size=70G +mp8: /mnt/felhom-drives,mp=/mnt/felhom-drives +mp9: /var/lib/felhom-agent/guests/9201/bootstrap,mp=/etc/felhom-bootstrap,ro=1 +rootfs: local-lvm:vm-9201-disk-0,size=32G +/dev/mapper/pve-vm--9201--disk--0 31950M 1126M 29170M 4% / +/dev/mapper/pve-vm--9201--disk--1 70376M 7891M 58885M 12% /var/lib/felhom +## docker system df +TYPE TOTAL ACTIVE SIZE RECLAIMABLE +Images 32 17 6.978GB 815.3MB (11%) +Containers 17 17 28.9MB 0B (0%) +Local Volumes 132 20 628.2MB 12.58kB (0%) +Build Cache 0 0 0B 0B +## /var/lib/felhom top +7648 /var/lib/felhom/docker +242 /var/lib/felhom/sys_drive +1 /var/lib/felhom/lost+found +## sys_drive depth 2 +242 /var/lib/felhom/sys_drive/felhom-data/ +## docker dir +7016 /var/lib/felhom/docker/overlay2 +614 /var/lib/felhom/docker/volumes +14 /var/lib/felhom/docker/image +4 /var/lib/felhom/docker/containers +1 /var/lib/felhom/docker/tmp +1 /var/lib/felhom/docker/swarm +1 /var/lib/felhom/docker/runtimes +1 /var/lib/felhom/docker/plugins +## volumes top +166 /var/lib/docker/volumes/bookstack_bookstack_db_data/ +153 /var/lib/docker/volumes/plex_plex_config/ +111 /var/lib/docker/volumes/jellyfin_jellyfin_config/ +69 /var/lib/docker/volumes/paperless-ngx_paperless_postgres_data/ +40 /var/lib/docker/volumes/felhom-controller-data/ +28 /var/lib/docker/volumes/sonarr_sonarr_config/ +14 /var/lib/docker/volumes/radarr_radarr_config/ +9 /var/lib/docker/volumes/qbittorrent_qbittorrent_config/ +7 /var/lib/docker/volumes/prowlarr_prowlarr_config/ +7 /var/lib/docker/volumes/paperless-ngx_paperless_redis_data/ +## image count +22 +17 diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/tester1-pool-during-wholebox-copy.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/tester1-pool-during-wholebox-copy.txt new file mode 100644 index 00000000..58809ca6 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/tester1-pool-during-wholebox-copy.txt @@ -0,0 +1,126 @@ +20:42:22 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:24 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:26 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:28 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:30 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:32 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:34 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:36 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:38 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:40 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:42 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:44 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:46 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:48 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:50 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:52 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:54 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:56 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:42:58 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:00 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:02 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:04 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:07 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:09 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:11 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:13 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:15 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:17 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:19 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:21 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:23 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:25 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:27 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:29 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:31 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:33 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:35 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:37 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:39 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:41 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:43 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:45 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:47 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:49 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:51 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:53 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:55 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:57 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:43:59 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:01 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:03 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:06 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:08 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:10 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:12 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:14 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:16 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:18 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:20 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:22 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:24 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:26 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:28 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:30 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:32 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:34 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:36 data 12.05 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:38 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:40 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:42 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:44 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:46 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:48 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:50 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:52 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:54 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:56 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:44:58 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:00 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:03 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:05 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:07 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:09 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:11 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:13 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:15 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:17 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:19 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:21 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:23 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:25 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:27 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:29 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:31 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:33 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:35 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:37 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:39 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:41 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:43 data 12.06 115892.00m| root 61260.00m| snap_vm-9201-disk-0_vzdump 6.08 32768.00m| snap_vm-9201-disk-1_vzdump 16.70 71680.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:45 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:47 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:49 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:51 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:53 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:55 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:57 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:45:59 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:02 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:04 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:06 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:08 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:10 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:12 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:14 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:16 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:18 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:20 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +20:46:22 data 12.05 115892.00m| root 61260.00m| swap 7872.00m| vm-9201-disk-0 6.08 32768.00m| vm-9201-disk-1 16.70 71680.00m| +2026-10-15 22:43:40 INFO: backup mode: snapshot +2026-10-15 22:43:40 INFO: suspend vm to make snapshot +2026-10-15 22:43:40 INFO: create storage snapshot 'vzdump' +2026-10-15 22:43:41 INFO: creating vzdump archive '/var/lib/vz/dump/vzdump-lxc-9201-2026_10_15-22_43_40.tar.zst' +2026-10-15 22:45:43 INFO: Total bytes written: 9320007680 (8.7GiB, 73MiB/s) +2026-10-15 22:45:43 INFO: archive file size: 3.13GB +2026-10-15 22:45:43 INFO: cleanup temporary 'vzdump' snapshot diff --git a/documentation/audits/storage-identity-buildB-2026-10-15/space/tier1-units.txt b/documentation/audits/storage-identity-buildB-2026-10-15/space/tier1-units.txt new file mode 100644 index 00000000..4b9c4be5 --- /dev/null +++ b/documentation/audits/storage-identity-buildB-2026-10-15/space/tier1-units.txt @@ -0,0 +1,20 @@ +== demo-hp 9201 +1113 MB tier1 /mnt/felhom-drives/hdd_1/ +29 MB appdata /mnt/felhom-drives/hdd_1/ +1147 MB tier1 /var/lib/felhom/sys_drive/felhom-data/ +hdd_1 +== felhom-pve 9201 +3141 MB tier1 /mnt/felhom-drives/hdd_1/ +422 MB appdata /mnt/felhom-drives/hdd_1/ +1 MB tier1 /var/lib/felhom/sys_drive/felhom-data/ +hdd_1 +== root@192.168.0.154 9201 +28990 MB tier1 /mnt/felhom-drives/adatlemez/ +1 MB appdata /mnt/felhom-drives/adatlemez/ +383 MB tier1 /mnt/felhom-drives/media_a/ +242 MB tier1 /var/lib/felhom/sys_drive/felhom-data/ +adatlemez +media_a +media_b +media_c +media_d diff --git a/documentation/backlog/OPEN-ITEMS.md b/documentation/backlog/OPEN-ITEMS.md index 95441dfd..1eb27ce8 100644 --- a/documentation/backlog/OPEN-ITEMS.md +++ b/documentation/backlog/OPEN-ITEMS.md @@ -156,7 +156,7 @@ stopping line that lies. | **R-683** | App updates | P3 | **[P3-LOW] Watch: after a power cut during an update's health check, the hold named an HOUR-OLD second-drive copy, not the one the update's own backup should have just made.** 2026-09-24 chaos round 3 (nextcloud, `backup_max_age: 1m`): no `backing-up` phase was seen and the hold named Tier 2 at 13:04 for an update pressed at 14:04; the pre-cut controller log was lost with the container (the runner now saves it at arm time — R-320). Round 11, the same action without a power cut, named a fresh 14:34 copy and logged the Tier-2 copy. The sentence was TRUE (it named the copy it offered); the question is why the update did not back up first. Not reproduced; watch the next power-cut drill. `audits/night-2026-09-24/E/round-03*.json`, `E/round-11-controller-pre.log` | **OPEN — P3; owner: CC (watch)** | — | — | CC | | **R-785** | App updates | P3 | **[P3-LOW] SparkyFitness is pinned 11 releases and a major behind upstream (v0.17.3; upstream v1.7.3, v1.6.0 dated 2026-07-24).** READ 2026-10-01 (`audits/visitors-2026-10-01/C/bench/C1-previous-tag.txt`). **Needs:** an update walk 0.17 → 1.x through the ladder (bench + box), after R-784 is decided. | **OPEN — rank P3-LOW; owner: CC (after R-784)** | — | — | CC | -## Backup & restore — 31 rows (P2 3, P3 18, P4 10) +## Backup & restore — 32 rows (P2 3, P3 18, P4 11) | ID | Category | Sev | What | State | Blocked on | Next action | Owner | |---|---|---|---|---|---|---|---| @@ -191,6 +191,7 @@ stopping line that lies. | **R-832** | Backup & restore | P4 | **ep0's copy in a place outside both Hetzner and the operator's home (roadmap).** Today DooPlex (the operator's home) holds it (decision 71). A Hetzner Storage Box would share a provider with ep0 and with every household's file backups, and cannot run PBS, so the copy could not be verified or restored from directly. | **DEFERRED — later, if the product grows** | — | — | operator | | **R-878** | Backup & restore | P4 | **A catch-up (R-871) runs the database-dump leg in the DAY, and that leg stops an app with a volume for its copy — the household may notice the stop, and a large volume makes it longer.** MEASURED 2026-10-05 on demo-felhom: the catch-up at 08:25:02 stopped opengist, copied 182.5 KB, started it again — about 1 s, then a few seconds of `health: starting`; the night does exactly the same, unseen. Nothing measured for a large volume. Fix direction (if it matters): skip the volume copy of a running app in a DAYTIME catch-up and leave it to the next night, or warn. `audits/catchup-2026-10-05/partA/live-demo-felhom.txt` | **READY — owner: CC** **2026-10-05 (burn-down night): NEEDS A LIVE MEASUREMENT** — a timed catch-up on 9202 for an app with a multi-GB volume, then the skip-or-warn choice. | — | measure a large volume first | CC | | **R-32** | Backup & restore | P4 | **[P2-HIGH] RESET must purge the customer base dir; the orphan card must stay honest; unattributed bytes must be visible.** The rehearsal's S7 said in advance that an orphan card would BE a finding — and one appeared (16:58:14). Cause: RESET's `"hetzner":"ok"` leg destroys the sub-account, but **a Hetzner sub-account is an access-control object, not a data object** — its directory survives, so re-enabling offsite recreated an account over the previous lifecycle's ciphertext, encrypted under a key that same RESET had destroyed. **MIGRATED FROM `ROADMAP.md` 2026-08-22 (R-369) — originally filed 2026-07-21, size M, roadmap state `idea`.** Moved verbatim; nothing added or reinterpreted. The roadmap keeps its copy as history, marked moved. | **OPEN — migrated from ROADMAP 2026-08-22, rank unchanged** **2026-10-06 night: design written** (`audits/night-burndown-2026-10-06/design-R-32.md`) — pick A: purge the repo + set-aside copies through the sub-account's own password login BEFORE deleting it (no main-account credential); the „repo data destroyed" comment at `hub/internal/offsite/offsite.go:276-280` is false for the shared tier; part (3) waits on a read-only measurement (`du` on port 23). Operator: agree to route A. **2026-10-07 07:58: `09` §3 decision 167 — option A yes, and delete the old RESET leftovers once.** **2026-10-07 (Part D step 2, read only):** the hub shows bx11 holding 3.3 GB of data while the four live customers account for ~0.6 GB → **~2.7 GB belongs to no live customer**; no live customer shows a set-aside folder, so the leftovers are in homes whose sub-account is gone, reachable only by the pool box's MAIN account. **The one-time clean-up is STOPPED:** no main-account login for bx11 is held on DooPlex (the API token in the credentials file sees no box). Needs: the main-account login, or the operator lists and deletes in the Hetzner console (`audits/day-2026-10-07/D/D2-listing-readonly.txt`). **2026-10-07: option A DELIVERED (hub 0.142.0):** RESET purges the repo and every `.orphaned-*` through the sub-account's own login before deleting it, and keeps the sub-account if the purge fails (red-proved, `audits/day-2026-10-07/D/`). Not yet seen live (no scratch RESET today). **The one-time clean-up of the ~2.7 GB of leftovers is STOPPED:** it needs the pool box's main-account login (see above). **2026-10-07 14:43 — `09` §3 decision 173: leave the ~2.7 GB of old leftovers for now; re-ranked P2 → P4.** Option A itself is delivered (hub 0.142.0). What stays open is ONLY the leftovers: they were computed (box total minus live customers), never listed, and deleting them needs the pool box's MAIN login, which reaches every customer's data. **Blocker: a safe main-account path.** | — | **Ruling from the run (three parts, deliberately separate):** (1) because RESET destroys custody, the ciphertext it leaves behind is unrecoverable **BY DESIGN** → RESET gains a **main-account purge of the customer base dir** (the existing operator ack already covers it); (2) the **move-aside guard STAYS** for reinstall-*without*-RESET — there custody survives and the card's "history recoverable" promise is true (R-26 depends on exactly that); (3) the operator **Restic tab shows per-customer directory bytes vs attributed snapshot bytes**, so dead data cannot hide. Measured on the pool box that night: **49 M attributed** (2 snapshots, 48.717 MiB) against **1.4 G + 3.0 M unattributed** across TWO `.orphaned-*` dirs. Evidence `restic-and-pool.txt` | CC | +| **R-1087** | Backup & restore | P4 | **Whole-box copies left on the OLD local target are never pruned after the target moves.** MEASURED 2026-10-15 (storage-identity build B space check): the N100's host root (`local`) holds three copies from 2026-07-28 (5.5–5.7 GB each, ≈ 16.8 GB); its agent's `local_backup_target` is now `felhom-backup` (the USB disk, retention 3), and retention prunes only the current target. On a small-root box such leftovers would starve the local copies (R-548). Evidence: `audits/storage-identity-buildB-2026-10-15/space/felhom-pve-9201.txt`. | OPEN | — | Decide whether the agent prunes its own `vzdump-lxc--*` files on a former target (after a newer copy exists on the new one), or the target move asks; until then, the N100's three July files can be removed by hand with the operator's word. | CC | ## Storage & devices — 13 rows (P2 1, P3 7, P4 5) @@ -210,11 +211,12 @@ stopping line that lies. | **R-1076** | Storage & devices | P4 | **A cheap SSD reports a vendor-less WWN, so a WWN-first disk key may not be unique.** MEASURED 2026-10-15 on the N100's system SSD (AirDisk 512 GB): `ID_WWN=0x5000000123456f1f` — NAA-5 with OUI `000000`, a pattern that looks like a placeholder; its serial `QDF922W009654S30EX` looks real. The agent's wipe binding prefers `wwn-` links (A/internal/storage/durable_device.go:32). Not known whether two units share the WWN. Evidence: `audits/storage-identity-2026-10-15/B-n100.txt`. | OPEN | — | Check a second unit of the same model (or vendor data); if shared, make the agent skip OUI-000000 WWNs (the design already keys on model+serial, `architecture/16-storage-physical-identity.md` §3). | CC | | **R-1077** | Storage & devices | P4 | **No USB enclosure that hides or fakes a disk's serial has been measured.** The storage-identity spike (2026-10-15) had none at hand and found none in earlier evidence; the design's `usb_bridge` unknown rule (`architecture/16-storage-physical-identity.md` §3) is therefore an assumption. Cheap single- and dual-bay bridges are known to report one bridge serial for any disk. Evidence: `audits/storage-identity-2026-10-15/README.md` case 4b. | OPEN | — | Buy or borrow one cheap USB enclosure (single and dual bay), run `tools/physdisk_probe.py` against it, and set the rule from what it reports. | Operator (a device) then CC | -## Security & access — 21 rows (P1 2, P2 3, P3 10, P4 6) +## Security & access — 22 rows (P1 2, P2 4, P3 10, P4 6) | ID | Category | Sev | What | State | Blocked on | Next action | Owner | |---|---|---|---|---|---|---|---| | **R-1033** | Security & access | P1 | **Every box answers its public names over plain `http://` — login pages included.** MEASURED 2026-10-14 from DooPlex over the public path (Cloudflare `Server: cloudflare`, `CF-RAY`): `http://felhom.enkicsifelhom.hu/login` → 200, `http://felhom.enkisfelhom.hu/login` (demo-hp) → 200, `http://torrent.enkicsifelhom.hu/` → 200; no redirect to https and no `Strict-Transport-Security`. Sonarr, Radarr and Prowlarr make it worse: their sign-in redirect is ABSOLUTE `http:///login`, so a household that opened the https address lands on the plain page and sends its password unencrypted between the browser and Cloudflare (`audits/media-all-drives-2026-10-14/H-indexer-sync-ncore.txt`). On an untrusted network (café Wi-Fi) that password can be read. The operator may raise this to P1. | **NARROWED** — filed 2026-10-14; **P1 by the operator 2026-10-14 22:13 (`09` §3 decision 244)**. FIXED in controller v0.312.0 (traefik sends every `http://` to `https://`, 301, path and query kept; HSTS one day; decision 246) and PROVEN on Tester 1, demo-hp and demo-felhom (29 public names, `scripts/https_only_check.py`; https answers unchanged), delivered by hand. Open: the fleet delivery — vouch 0.312.0 and the floor (morning); Tester 2 (`sajatfelhom.hu`, 0.292.0, off) gets it with the floor | the operator's vouch + floor | Vouch controller 0.312.0, raise the floor; then run `scripts/https_only_check.py` on every box and close | CC | +| **R-1088** | Security & access | P2 | **CC's credentials file was overwritten with one token, and that token was printed once into a session transcript.** 2026-10-15 22:03 (local): a CC session called `scripts/read_credential.py HUB_TOKEN ~/.config/credentials` — the second argument is the OUTPUT file, so the reader wrote the hub token over the whole file; every other key (dashboard passwords, the box passwords) is gone from DooPlex. At 20:43 UTC the storage-identity build B session listed the file's „key names" with `sed 's/=.*//'`; the file had no `=`, so the token itself was printed into that session's transcript. The token is CC's scoped hub token (floor only; no secrets, no deletes). | OPEN | Operator: rotate CC's hub token; restore `~/.config/credentials` from the password manager. | Rotate the hub token (`05` §17); restore the file; make `read_credential.py` refuse an output path equal to its credentials file (a red-proved test in `scripts/test_read_credential.py`). | Operator | | **R-985** | Security & access | P3 | **Our zero-knowledge wording is stronger than the product: on a live box the operator can reach the off-site backup key (through the vaulted root credential and the operator tunnel) without the customer's recovery code.** Design-shaped; decision for the operator in `STATUS.md`. Fix options: change the wording, or remove operator root reach to the key. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | WAITING-ON-OPERATOR — design-proposal | operator decision | Decide the wording or the change | operator | | **R-983** | Security & access | P3 | **Seven small dashboard weaknesses: after sign-in the browser can be sent to another site; the server-reboot route acts on a GET, so a link can reboot the guest (**FIXED 2026-10-13 in controller v0.310.0, R-998 session: POST only, `TestServerReboot_PostOnly` — six remain**); no anti-framing headers; parallel sign-in attempts get past the limiter; the settings page allows 8-character passwords; reset-code requests have no limit on the box; logout can be triggered from another site.** Fix each with a test, in one controller release. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | OPEN | — | One hardening release | CC | | **R-977** | Security & access | P3 | **FileBrowser's default password can come back if its data volume is ever re-created, because the box checks it only once; and the tunnel can start before the box is claimed.** Static; needs a live check on 9202. Fix: check at every start, and do not start the tunnel before the claim. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | OPEN | — | Measure on 9202; then fix | CC |