docs: v0.141.0 REPORT + CONTEXT + README (F6 detached init job + format-status poll, F7; live-validated on demo scratch USB; security-review TOCTOU acknowledged)

This commit is contained in:
2026-07-17 09:49:45 +02:00
parent 0515d153db
commit 1452dd2b17
3 changed files with 88 additions and 51 deletions
+9 -1
View File
@@ -1081,11 +1081,19 @@ not just those with HDD data. Non-HDD apps can configure destination, method, an
> name is typed exactly**. Wipe (`POST /api/storage/wipe`): eject (unmount + deregister) → server-side
> two-step customer-confirmed format (learn the agent's durable id, then re-submit `confirmed:true` bound
> to it). The agent refuses a protected device regardless of what the controller sends.
> - **Guided init** (`/settings/storage/init`, `POST /api/storage/init`, `web/storage_handlers.go`): format
> - **Guided init** (`/storage/init`, `POST /api/storage/init`, `web/storage_handlers.go`): format
> → resolve the new fs UUID → `assign` → register. The selector lists **only user-data** targets. A
> data-bearing user-data device now uses the **customer-confirmation** flow (type-to-confirm → re-submit
> `confirmed:true` + durable id), NOT the `felhom-opsign` command. The opsign surface remains a fallback
> only if a protected device somehow reaches init.
> **F6 (v0.141.0):** the chain runs as a DETACHED single-flight job (`web/storage_init_job.go`,
> `context.Background()`) the wizard polls via `GET /api/storage/init/status` (3-step progress:
> formatting → mounting → registering) — a closed tab / lost connection no longer aborts the
> post-mkfs mount+register. `register` is the LAST step (marker-last crash-safety). A slow mkfs that
> outruns the agentapi client's 15 s timeout is followed by polling the agent's
> `GET /disks/format/status` (`agentapi.Client.FormatStatus` → `awaitAgentFormat`) before
> continuing. Live-validated on a 64 GB USB (mkfs ~27 s → done, mounted+registered at
> `/mnt/felhom-drives/scratch1`).
> - **Guided attach** (`/settings/storage/attach`, `POST /api/storage/attach`): non-destructive — resolve
> the existing fs UUID → `assign` → register. Selector restyled to cards (user-data only).
> - **Eject** (`POST /api/storage/eject`): benign unmount + deregister, with the agent's dependent-guest