controller v0.48.0: slice 10 P2C — enroll passes the drive into the guest

agentapi GuestAttach(where) → POST /disks/guest-attach; runStorageInit/Attach +
handleStorageRegister call attachIntoGuest after register (best-effort, P3 heals).
Closes Branch A: enrolled drives become usable in the guest, banner clears.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-12 15:42:52 +02:00
parent 04bacbddfd
commit ee5b6304a7
4 changed files with 53 additions and 0 deletions
+17
View File
@@ -1,5 +1,22 @@
## Changelog
### v0.48.0 — slice 10 P2C: enroll passes the drive into the guest (passthrough) (2026-06-12)
Pairs with felhom-agent v0.25.0 (`POST /disks/guest-attach`) + the golden's `/mnt:rslave` controller
bind. Closes the diagnosed Branch-A gap: enrolling an external drive now makes it actually usable in
the guest, not just mounted on the host.
- **agentapi:** new `GuestAttach(where)``POST /disks/guest-attach` (idempotent on the agent side).
- **Enroll triggers attach:** `runStorageInit`, `runStorageAttach`, and `handleStorageRegister` call
`attachIntoGuest` after recording the StoragePath. Best-effort (logged, non-fatal) — the registration
is the durable intent; a transient attach failure is healed by P3 self-heal (next slice). Test:
`TestRunStorageInit_Success` now asserts the drive is guest-attached.
- Note: app data on these drives is written via `HDD_PATH` (the registered `/mnt/<name>`), which Model A
binds to the drive's `felhom-data` namespace — so app bytes land on the external drive, and the
controller's storage probe (os.Stat + IsMountPoint) sees a real mount → the "nem elérhető" banner
clears. (The controller's own backup-path helpers' `felhom-data` level is reconciled when app-data
backup-to-drive is wired; not P2.)
### v0.47.0 — backups page: whole-guest backup visibility + manual trigger (agent-sourced) (2026-06-12)
The backups page previously showed only the app-data (DB-dump) tier and had **zero** view of the