diff --git a/CHANGELOG.md b/CHANGELOG.md index bc6bb12..ecd2405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,29 @@ +## v0.158.0 — the internal data place; partitions as places; add_internal_place (2026-10-16) + +Design: felhom.eu `architecture/16-storage-physical-identity.md` §5, §6, §7, §9 (operator rulings D3–D5; the D3 sizes +ruled 2026-10-16 after the space check, felhom.eu `audits/storage-identity-buildB-2026-10-15/SPACE-CHECK.md`). + +- **The internal data place („Belső tárhely")** (`internal/localapi/internalplace.go`): when the record + `/var/lib/felhom-agent/internal-place.json` names a filesystem, the agent mounts it at `/mnt/belso` by fs-UUID like an + enrolled drive (startup + every 20 s tick) and records it `enrolled`; `GET /disks` reports it with kind `internal`. + It never takes `/mnt/belso` from a household drive, and eject/decommission/format of it are refused (device-mapper on + the system disk). Its identity is the system disk's, so build A never counts a copy to `sys_drive` as a second copy. +- **Root helper `configs/felhom-internal-place`** (new in the bundle): `plan|create ` — the ruled size rule + (reserve max(16 GiB, 10 %) ≤ 48 GiB, made only when ≥ 20 GiB, nothing promised beyond pool − reserve), the only + lvcreate/mkfs of a system-disk volume; formats only a `felhom-belso` with no signature. Run by the installer (1.33.0) + and by the new signed op. +- **Signed op `add_internal_place`** (old one-disk boxes, `16` §9): no parameters (the size is the rule's), destructive + class (operator key). Runs the helper with `create 0`, writes the record, mounts. +- **Partitions as places** (`internal/storage/partitions.go`): `GET /disks/candidates` lists each partition of a free + disk as empty / filesystem / in_use. A data-bearing part's wipe id binds disk id + part number + fs-UUID + (`byid:<…-partN>+fsuuid:`); both must name the same device at format time. +- **`felhom-mkfs-guarded`**: a SIBLING part that is Felhom's own drive (mounted raw at /mnt/ AND under + /mnt/felhom-drives) no longer blocks formatting the free part next to it; every other mount still refuses; an + unlistable disk now refuses (it passed before). First tests of the wrapper: `configs/test_felhom_mkfs_guarded.py`. +- `configs/` changed (sudoers `FELHOM_INTERNALPLACE`, the helper, the wrapper, the bundle list) — **a config-bundle job + is needed** with the agent update. **Not vouched** (the operator's act). +- Released: tag `v0.158.0` (code `912f7c1`), sha256 `a3589d1d…2caba`, bundle `17066273…fb5c76`. + ## v0.157.0 — every storage place knows its physical disk(s); POST /disks/same-disk (2026-10-15) Design: felhom.eu `architecture/16-storage-physical-identity.md` §3, §4, §10 (operator rulings D1–D6, 2026-10-15). Spike: