Files
felhom-controller/REPORT.md
T

3.1 KiB
Raw Blame History

REPORT — v0.318.0: the internal data place, partitions, an honest whole-box backup offer, sys_drive never offered (2026-10-16)

Written in ASD-STE100 Simplified Technical English. Design read first: felhom.eu architecture/16-storage-physical-identity.md (§4–§6, §9, §13), 07-backup-architecture.md §6, 09-update-architecture.md (MinAgent). Task: storage identity build B (operator rulings D3–D5; sizes ruled 2026-10-16). Agent counterpart: felhom-agent v0.158.1.

1. Baselines

controller 123d2d5 (v0.317.0) → a43d042 + 36da408 = v0.318.0. MinAgent 0.157.0 (no new agent endpoint; the internal place and the partitions appear only when agent ≥ 0.158.1 reports them).

2. What changed

  • web/internal_place.go: an agent row of kind internal → GuestAttach on one tick, register on the next (kind internal, default when the household has none, label in the box's language); refuseInternalLifecycle on eject/decommission/wipe.
  • web/backup_target_offer.go (R-1084): offerRelationFor — proven different → the promise; unproven → backup.target.offer_unproven; same disk → no offer; older agent → today's offer. The internal place is never offered.
  • web/attach_sources.go (R-1082): withoutSystemVolume hides the system data volume by device.
  • web/agent_disk_handlers.go, storage_handlers.go, templates: partitions in the wizards; a disk with a registered part offers only its free parts (format only formattable, use only filesystem parts); deviceBacksRegistered refuses the whole disk (409).
  • Locales: storage.belso_tarhely, storage.belso_tarhely_magyarazat, storage_wizard.resz_n, err.web.belso_tarhely_eletciklus, err.web.meghajto_hasznalatban_formazas, backup.target.offer_unproven.

3. Tests and red-proofs

internal_place_test.go (5), stacks d4 (a media app's HDD_PATH lands on the internal place; the folder is never created so no compose can run), r1084_offer_identity_test.go (6), r1082_sysdrive_hidden_test.go (3), partitions_test.go (5). Each was seen failing by a compiling mutation (a non-compiling mutation was once read as „not caught" and redone). Four i18n parity fixtures refreshed (diff = only the new lines). go test ./... and controller_gates.py --fast: green.

4. Live proof

Method: endpoint level (the dashboard requests) on a fresh one-disk scratch VM (512 GB, installer 1.33.0, golden 0.318.0): the internal place registered as the default drive by itself; Jellyfin deployed with DOMAIN + SUBDOMAIN only → 202, healthy, /media on the place; partitions: part 1 formatted, part 2 used, the whole disk refused (409); the backup offer on a VM without the disk-failure promise; the attach list without /mnt/sys_drive. Tester 1, demo-hp and the N100 run 0.318.0 by the floor. Evidence: felhom.eu audits/storage-identity-buildB-2026-10-15/live/.

11. Observations

  1. FILED: R-1094 — the whole-disk refusal sentence says „Csak a szabad részét formázhatod", untrue while another part is mounted.
  2. FILED: R-1093 — an empty part asks for the typed confirmation (the agent's probe reads the parent's partition table).