Files
felhom-agent/REPORT.md
T
admin 9e3513557f docs(v0.22.0): REPORT for durable_id exposure
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 20:01:02 +02:00

31 lines
2.0 KiB
Markdown

# REPORT — agent v0.22.0: expose durable_id in GET /disks (2026-06-11)
**Repo:** `felhom-agent` · **Version:** 0.22.0 · **Pushed commit:** `4734d4a` · paired with
`felhom-controller` v0.43.0 (the controller-side storage-management rebuild that needs this).
## What shipped (one read-only field)
`internal/localapi/DiskInfo` gains `durable_id` (mapped directly from `StorageTarget.DurableID` — e.g.
`"uuid:<fs-uuid>"` for usb/local-dir, `"path:…"`/`"store:…"` otherwise). That's the entire change.
**Why it's necessary:** the de-privileged controller cannot read a device's filesystem UUID itself, yet
`POST /disks/assign` mounts **strictly by fs UUID** (`EnsureMount``/dev/disk/by-uuid/<UUID>`). Without
the UUID surfaced somewhere the controller can reach, the guided init/attach flows could not complete the
mount. `GET /disks` already carried everything else (name/type/state/device/mount/class/data_bearing) but
dropped the durable id. The controller strips the `uuid:` prefix to get the assign key.
**Security:** no new privilege, no subprocess, no behaviour change to `format`/`assign`/`eject` or the
data-bearing signature gate. The agent still inspects the device itself at format time and refuses a
data-bearing wipe with a `pending_op` (the controller surfaces the `felhom-opsign` command).
## Validation (live, guest 9201)
`GET /disks` (via the controller's `/api/disks` proxy) now returns `durable_id` per disk, e.g.
`felhom-usb``/dev/sdb1`, `data_bearing:true`, `durable_id:uuid:277a2179-a764-4758-b840-9ea741517914`.
The controller's guided init on `sdb` correctly drove the agent to a **data-bearing refusal** (HTTP 403 →
`pending_op{op:storage_wipe, host_scope:demo-felhom-01, durable_id:byid:wwn-0x5000039ddb108568-part1}`),
which the controller surfaced as the operator `felhom-opsign` command — the gate held end-to-end.
## Notes
This pairs with the controller's storage-management rebuild (build-golden default bumped to controller
0.43.0; golden rebaked). No other agent change.