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
+17
View File
@@ -824,6 +824,23 @@ not just those with HDD data. Non-HDD apps can configure destination, method, an
> every state). Convention: every future coupled feature adds a `featureProbes` row + a gate call at
> its entry point and declares `MinAgent` in its CHANGELOG header — see
> `felhom.eu/documentation/runbooks/publish-train-rules.md`.
> - **Consuming-namespace verification (v0.117.0, RCA AUDIT-nas-cwa-rca-2026-07-11 fix 2):** a guest
> reboot silently replaces an idle NAS trigger with a plain local STUB dir in the app namespace while
> host-side (agent) health stays green — so the controller now verifies where the apps consume:
> `internal/system/fsclass*.go` classifies a path by **statfs f_type** in THIS process's namespace
> (`network` nfs/cifs/smb2 | `autofs` idle trigger = HEALTHY, never force-mounted | `stub` | `unknown`
> = fail-open). Three consumers: (1) the `--netprobe` child now REQUIRES a mounted network fs after
> its create (exit 5 → category `not_network_fs`, full rollback — a writable stub can never verify);
> (2) `POST /api/stacks/{name}/deploy` refuses (409) a registered network `HDD_PATH` that classifies
> as a stub (`refuseNetworkStubDeploy`; idle autofs deploys fine — first app access mounts it);
> (3) the dashboard/stacks app cards gain a distinct **stub badge** ("Hálózati tárhely hibás — az
> alkalmazás nem a NAS-t látja", `NetworkStubs`) that WINS over the recoverable `unreachable` badge.
> The agent pair (v0.84.0 `ReassertNetworkMounts`) re-arms triggers on guest start; this layer is the
> detection net beneath it.
> - **Deploy view truth (v0.117.0, RCA fix 4):** a deployed app's read-only storage select now marks
> `selected` by the app's STORED `HDD_PATH` (extra disabled `<path> (nem elérhető)` option when the
> stored path left the schedulable list) — `IsDefault` selects only for NEW deploys. Pre-fix the view
> showed the default drive regardless of app.yaml (the RCA's S-C symptom).
> - **Limits (v1):** a share's `+100000` uid mapping is fixed at add-time (one app / same-uid apps); for
> write apps on a soft NFS mount, an in-flight file can truncate if the NAS vanishes mid-write (prefer
> atomic-write apps / SSD-staging).