v0.117.0: consuming-namespace NAS verification + deploy-view truth (RCA fixes 2+4)

statfs fsclass helper (network/autofs/stub/unknown, fail-open); probe not_network_fs
assertion (stub can never verify — red-proven); deploy-time stub refusal (idle autofs
proceeds — red-proven); distinct stub badge, stub wins over unreachable (unreachable line
byte-identical); deployed select shows stored HDD_PATH (red-proven vs IsDefault-only).
MinAgent unchanged 0.81.0. Gates green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
This commit is contained in:
2026-07-11 21:12:48 +02:00
parent 6e9dd1bfa1
commit c0f3e12483
21 changed files with 767 additions and 38 deletions
+30
View File
@@ -1,5 +1,35 @@
## Changelog
### v0.117.0 — consuming-namespace NAS verification + deploy-view truth (RCA fixes 2+4) (2026-07-11) — MinAgent: 0.81.0
Controller half of the RCA fix pair (agent v0.84.0 ReassertNetworkMounts). Source:
`felhom.eu/documentation/audits/AUDIT-nas-cwa-rca-2026-07-11.md`. MinAgent UNCHANGED (0.81.0) —
every new check is controller-namespace-local; no new agent API is consumed.
- **`internal/system/fsclass*.go`** — statfs f_type classifier for THIS process's namespace:
`network` (NFS 0x6969 / CIFS 0xFF534D42 / SMB2 0xFE534D42) | `autofs` (0x0187 — the HEALTHY idle
trigger; NEVER force-mounted) | `stub` (anything local — the RCA's silent guest-reboot state) |
`unknown` (statfs error/3 s timeout — fail open). Seams: `statfsFn` + per-caller injectables.
- **Probe fstype assertion (fix 2a):** the `--netprobe` child creates the probe file FIRST (the
create legitimately triggers the automount), THEN requires a MOUNTED network fs — exit 5 →
category `not_network_fs` (new §3.2 Hungarian message), full rollback, nothing registered. A
writable local stub can never verify again. Red-proof: assertion disabled → the stub VERIFIED
(exit 0 / job phase `done`) → FAIL.
- **Deploy-time refusal (fix 2b):** `POST /api/stacks/{name}/deploy` refuses (409, Hungarian) when
`HDD_PATH` is a registered network path classifying as a stub (`Router.refuseNetworkStubDeploy`,
`classifyFSPath` seam). Idle autofs / live / unknown / local / unregistered / empty all proceed.
Red-proof: a mounted-only gate wrongly refuses the healthy idle trigger → FAIL.
- **Stub badge (fix 2c):** `networkStorageWarnings` returns (warnings, stubs); the controller-side
classification runs even when the agent is unreachable. Dashboard + stacks cards render the new
distinct badge "Hálózati tárhely hibás — az alkalmazás nem a NAS-t látja"; stub WINS over the
recoverable unreachable badge (never both); the unreachable line stays byte-identical
(template-asserted). Pure mapping core `networkStorageWarningsIn` (appsUsingPathIn pattern).
- **Deploy-view truth (fix 4, the RCA S-C symptom):** the deployed-app storage select marks
`selected` by the STORED `HDD_PATH` (`CurrentHDDPath`); a stored path absent from the schedulable
list renders an extra disabled `<path> (nem elérhető)` option; `IsDefault` selects only for NEW
deploys. Red-proof: IsDefault-only revert → the default drive shows selected → FAIL.
- Gates: template_id_gate + emoji_gate OK; full `go build/vet/test ./...` green.
### v0.116.1 — debug surface ungated from logging.level (2026-07-11) — MinAgent: 0.81.0
Live validation of v0.116.0 caught the last blind spot: `/debug` + `/api/debug/*` (and the nav