b389e73fff
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
3.9 KiB
3.9 KiB
REPORT — v0.117.0: consuming-namespace NAS verification + deploy-view truth (RCA fixes 2+4)
Date: 2026-07-11 · Version: controller v0.117.0 (from v0.116.1) · MinAgent: 0.81.0
UNCHANGED (all checks controller-namespace-local; no new agent API) · Deployed: guest 9201
(0.117.0 healthy) · NOT published/vouched — Peti stays 0.113.0. Pairs with agent v0.84.0
(RCA fix 1). Commits: c0f3e12 + 4a9c54a (linux-suite test pin).
Source: felhom.eu/documentation/audits/AUDIT-nas-cwa-rca-2026-07-11.md.
What shipped
internal/system/fsclass*.go— statfs f_type classifier for THIS process's namespace:network(nfs/cifs/smb2) |autofs(healthy idle trigger, NEVER force-mounted) |stub|unknown(error/3 s timeout → fail open). Seams:statfsFn,netProbeFSClass,Server.classifyFSPath,Router.classifyFSPath.- Fix 2a — probe assertion:
--netprobechild creates the probe file first (legitimately triggers the automount), then REQUIRES a mounted network fs → exit 5 → categorynot_network_fs, new §3.2 Hungarian message, full rollback, nothing registered. - Fix 2b — deploy refusal:
POST /api/stacks/{name}/deploy→refuseNetworkStubDeploy: a registered networkHDD_PATHclassifying as stub refuses 409; idle autofs / live / unknown / local / unregistered / empty all proceed. - Fix 2c — stub badge:
networkStorageWarnings→ (warnings, stubs); stub leg runs even when the agent is unreachable; dashboard + stacks cards render "Hálózati tárhely hibás — az alkalmazás nem a NAS-t látja"; stub WINS over unreachable; the unreachable line stays byte-identical (template-asserted). Pure corenetworkStorageWarningsIn+stubNetworkPaths. - Fix 4 — deploy-view truth (the RCA S-C symptom): deployed-app storage select marks
selectedby the STOREDHDD_PATH; absent stored path → extra disabled<path> (nem elérhető)option;IsDefaultselects only for NEW deploys.
Tests + red-proofs
| Test | Result | Red-proof |
|---|---|---|
| magic table + seam + real-local-dir-is-stub (linux) | PASS | — |
TestNetProbeChild_StubRefused / _AutofsAfterCreateRefused / _RealLocalDirRefused (linux) |
PASS | assertion disabled → the stub VERIFIED (exit 0) → FAIL |
TestNetAdd_StubProbe_RollsBackNotRegistered (rollback + not registered + Hungarian) |
PASS | same mutation → job phase done → FAIL |
TestRefuseNetworkStubDeploy_Table (7 rows) |
PASS | mounted-only gate → idle-autofs + unknown rows FAIL (over-refusal) |
TestNetworkStorageWarningsIn_StubWins / _UnreachableAloneUnchanged |
PASS | — |
TestNetworkBadgeTemplates_DistinctStrings (unreachable line byte-identical) |
PASS | — |
TestDeployPage_DeployedSelectShowsStoredHDDPath (real Manager + real template render) |
PASS | IsDefault-only revert → default drive selected → FAIL (both assertions) |
TestDeployPage_MissingStoredPathRendersTruthOption |
PASS | — |
Full suite green on Windows AND on 180 (linux); the linux run caught the pre-existing C5 child-body
suite needing the classifier pinned to network (fixed in 4a9c54a — the real statfs correctly
refuses a tempdir). Gates: template_id_gate.py + emoji_gate.py OK.
Deploy + live validation
- Image
0.117.0built+pushed on 180, deployed to 9201 via the bootstrap mechanism; healthy. - Q1c reboot validation (operator GO, with agent 0.84.0): post-reboot, no manual action —
CWA auto-started healthy on the NAS, health
status=okon the first cycle, dashboard renders NO stub badge (grep count 0 against the live page). - NOT live-validated (test-level only, by design): the stub refusal branches — producing a live stub post-fix would require breaking a healthy guest (the agent now heals it at start). Covered by the red-proven unit/render tests above.
Follow-ups
RCA fixes 3/5/6 queued as separate tasks. Peti publish train: 0.84.0 + 0.117.0.