Files
felhom.eu/REPORT.md
T

57 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# felhom.eu — task reports
> **Overwrite** this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in [hub/CHANGELOG.md](hub/CHANGELOG.md); the scripts history lives in [scripts/CHANGELOG.md](scripts/CHANGELOG.md).
## Hub v0.45.0 — floor-UI separation + per-box MinAgent conditional floor (+ DSM spike, Q1c FAIL) — 2026-07-11
felhom.eu's parts of the NAS/coupling backlog-clear task (composite AF; agent v0.82.0 +
controller v0.115.0 shipped in their repos). Commits: hub `bbecf05` + manifest `37222d3` + rules
`bbecf05`; DSM findings `37e60b4`; Q1c + follow-up `9b95f88`.
### Hub v0.45.0 (Parts C + D — LIVE, GitOps synced Healthy)
- **Part C — floor-UI separation + effective-floor source:** the global controller-version floor is
its own card with a type-to-confirm dialog that first shows the live blast radius
(`GET /configuration/global-floor/impact``countBoxesBelowFloor`, honoring per-customer
overrides); an effective-floor + source line (`store.ResolveGlobalFloor`) shows the resolved value
and WHICH source won (DB `hub_settings` vs env `DEFAULT_MIN_CONTROLLER_VERSION`, both raw values).
The Day-0 manifest save provably does not touch the floor (the 9-min-skew incident's root cause,
now visible + isolated).
- **Part D — per-box MinAgent conditional floor:** the artifact manifest gains `MinAgent`; at
report-ACK time `store.ResolveManagedFloor(customerID)` HOLDS the controller floor for a box whose
`hosts.agent_version` is below (or unknown vs) MinAgent, flags it on the Hosts dashboard
(`floor held: agent <v> < MinAgent <w>`), and serves it once the agent qualifies. Mechanises
"agent BEFORE controller floor" per box — the manual fleet check is retired (rule 3 updated).
- **THE one comparator:** `web.compareVersions`'s body → leaf `internal/semver` (web delegates,
store reuses; no import cycle, no second comparator).
- Red-proofs (all: mutate → predicted failure → revert → green): DB-wins precedence; manifest-save-
doesn't-touch-floor; impact count with override exclusion; managed-floor hold/serve/uncoupled/
unknown-agent + a fleet discriminator + the report-ACK wire test (held box omits the floor).
- **Deployed:** built 0.45.0 on 180, manifest bumped, ArgoCD hard-refresh + sync → Synced/Healthy,
rollout OK, live image `felhom-hub:0.45.0`. Live state: demo agent 0.82.0, Peti 0.81.0, MinAgent
unset (uncoupled → no holds, as expected), floor 0.113.0 (DB).
### Part A — DSM spike (findings `documentation/audits/SPIKE-nas-dsm-2026-07-11.md`)
Real DSM 7.2 (virtual-dsm on DooPlex, macvlan .199, driven via claude-in-chrome, torn down + ports
dead) validated the consumer recipes E2E through the live add pipeline: NFS "Map all users to admin"
= Route A PASS (hardlink incl.); squash-off = `not_writable` refusal; plain-user SMB PASS **with
working hardlinks** (Q5 caveat CLOSED for Synology); wrong-password/share classify identically. The
copy edits landed in controller v0.115.0; QNAP stays a stated caveat (no emulator — nothing
fabricated).
### Part E — Q1c restart survival: **FAIL** (supervised, operator GO)
`pct reboot 9201` proved a configured NAS automount trigger does NOT survive a guest reboot: the
autofs trigger does not re-propagate into the guest's fresh namespace (shared→slave only carries
post-bind mounts), so an in-guest access sees an **empty directory** and does not trigger the host
mount — the dangerous case for a restarting media app. Apps otherwise recovered healthy. FAIL
protocol honored (nothing repaired live); root cause + fix (agent `ReassertNetworkMounts` on guest
reboot) spec'd at `documentation/backlog/FOLLOWUP-nas-automount-guest-reboot-reassert.md`.
### NOT done / open
- The follow-up NAS-reboot-reassert fix (agent) — new task, evidence attached.
- Held-floor state never fired live (no box below MinAgent, and MinAgent is unset) — test-proven only.
- QNAP appliance pass (no emulator).