docs(v0.43.0): REPORT (storage mgmt rebuild) + README agent-delegated storage note

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 20:01:00 +02:00
parent 29a9dcdd8c
commit 2c32c821fe
2 changed files with 74 additions and 37 deletions
+22
View File
@@ -514,6 +514,28 @@ not just those with HDD data. Non-HDD apps can configure destination, method, an
### 4. Storage Management
> **⚠️ Rebuilt on the agent-delegated disk model (v0.43.0).** After the 8C de-privileging, the controller
> holds **no Proxmox/disk credentials and no destructive authority** — disk execution + the data-bearing
> signature gate live entirely in the **host agent**. The controller is now a thin presenter/orchestrator:
> - **Overview** (`settings.html` ← `GET /api/disks`): the agent's live disk view (name/type/state/device/
> mount/class) + the **`data_bearing`** badge + "registered?" cross-reference.
> - **Guided init** (`/settings/storage/init`, `POST /api/storage/init`, `web/storage_handlers.go`): format
> → resolve the new fs UUID from the re-listed disks (`durable_id`, `uuid:`-stripped) → `assign` (mount)
> → register a `StoragePath`. **A data-bearing device is REFUSED by the agent** (`pending_op`); the UI
> surfaces the exact `felhom-opsign -op storage_wipe -host … -durable-id …` command and stops — **there
> is no force-format**. The agent's `data_bearing` verdict (it inspects the device) is ground truth.
> - **Guided attach** (`/settings/storage/attach`, `POST /api/storage/attach`): non-destructive — resolve
> the existing fs UUID → `assign` → register.
> - **Eject** (`POST /api/storage/eject`): benign unmount + deregister, with the agent's dependent-guest warning.
> - **`agentapi`** (`internal/agentapi`) is the pinned client to the agent local API: `Disks`/`AssignDisk`/
> `EjectDisk`/`FormatDisk`; `DiskInfo.FSUUID()` + `FormatResult.PendingOp.OpsignCommand()`.
> - The **`StoragePath` registry** (`settings.go`: `AddStoragePath`/default/schedulable/label) is unchanged —
> init/attach register into it; the existing per-path management handlers stay.
> - **Migration** (drive + per-stack) is **deferred** to its own slice (buttons disabled "Hamarosan").
>
> The privileged controller-side disk subsections **below are historical** (the `internal/storage/*` scan/
> format code was removed in 8C — execution is the agent's now).
The storage subsystem handles the full lifecycle of external storage: detection, initialization, path registration, and data migration.
#### Disk Scanning (`internal/storage/scan.go`)