Files
felhom-controller/REPORT.md
T

62 lines
4.1 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.
# REPORT — v0.115.0: version-aware Supports (agent version channel) + DSM-validated NAS guidance
**Date:** 2026-07-11 · **Version:** controller v0.115.0 (from v0.114.0) · **MinAgent:** 0.81.0 (the
version channel FALLS BACK to the probe — agent 0.82 is NOT required). Pairs with agent v0.82.0 +
hub v0.45.0. Part B of the NAS/coupling backlog-clear task (composite AF; this repo = B).
## Baselines → shipped
| Repo | main @ start | → shipped | Version |
|---|---|---|---|
| felhom-controller | `ac6adaaa` (v0.114.0) | `b6842a4` | **v0.115.0** — live on 9201 |
| felhom-agent | `1e60e88` (v0.81.0) | `fa9c7fe` | v0.82.0 — demo-deploy (version channel) |
| felhom.eu | `4eaabb2` | (A findings + hub train) | DSM spike + hub v0.45.0 |
## What shipped (files)
`internal/agentapi/client.go` (`noteAgentVersion` on all four Do sites — passive capture even on
404/errors; strict bare-semver validation; `AgentVersion()`), `internal/agentapi/features.go`
(`featureMinAgent` table + `AgentVersionReporter` + version-first `Supports`, probe fallback
unchanged), NEW `internal/util/version.go` (THE one comparator, moved verbatim from selfupdate which
now aliases it), `internal/selfupdate/version.go` (aliases), `internal/web/templates/storage_network.html`
(DSM-validated NFS guidance from Part A). Tests: `internal/agentapi/features_version_test.go`,
`storage_network_template_test.go` (unchanged content check).
## Tests + red-proofs (mutation → predicted failure → reverted → green)
| Test | Red-proof mutant | Observed failure |
|---|---|---|
| `TestSupports_VersionKnown_ComparesWithoutProbe` (0.82/0.81/1.0/0.100→Yes; 0.79/0.80.9→No, no probe) | version short-circuit dropped | `version-known path must NOT probe (ver=0.82.0, probes=1)` |
| `TestSupports_GarbageOrNoVersion_ProbeFallback` (`""`/dev/`0.82`/rc1/`evil;`… → exactly one probe, cached) | trust unparseable header as "too old" | `unusable version "dev" must fall back to EXACTLY one probe, got 0` |
| `TestSupports_NonReporterProber_Unchanged` | — | (non-reporter probers keep v0.114.0 behavior) |
| `TestVersionComparator_Table` (numeric-not-lexicographic, v-prefix, pre-release rejected) | — | — |
| `TestClient_VersionHeaderWins_WireLevel` / `TestClient_GarbageHeaderIgnored_WireLevel` (real pinned client) | — | header wins over a routeless agent; garbage ignored at capture |
Green gate `go build && go vet && go test ./...` PASS; `template_id_gate.py` + `emoji_gate.py` green.
## Deployed + verified
9201 (golden/bootstrap): `felhom-controller:0.115.0 Up (healthy)`. Live check (real add endpoint,
agent 0.82 = the SUPPORTED branch): a bogus-export add returned the categorized `nfs_export`
failure + full rollback, and the debug log shows `capability gate: netstorage_verify=yes` — the
verdict now sourced from the **version compare** (agent 0.82 header), zero probe calls. The probe
fallback is regression-tested (T3/non-reporter) and is Peti's live path (his agent stays 0.81, no
header → probe).
## Part A (DSM spike) — the guidance edits landed here
Real DSM 7.2 (virtual-dsm) validated the consumer recipes end-to-end through the v0.114 pipeline:
NFS "Map all users to admin" = Route A PASS (hardlink incl.); squash-off = `not_writable` refusal;
plain-user SMB PASS **with working hardlinks** (the Q5 caveat CLOSED for Synology); wrong-password/
wrong-share classify identically (`smb_auth`/`smb_share`). The NFS guidance gained the verified
Synology menu path (File Services → NFS → **NFSv4.1**; NFS Permissions rule; `/volume1/<share>`);
the "útmutató készül" caveat narrowed to **QNAP only** (no emulator — nothing fabricated). Record:
`felhom.eu/documentation/audits/SPIKE-nas-dsm-2026-07-11.md`.
## NOT live-validated
- The `agent_outdated`/held branches on a real <MinAgent agent (no such box exists — test-proven).
- Q1c restart survival: tested in Part E and **FAILED** (empty-dir; not a controller bug) — the fix
is felhom-agent's, spec'd at `felhom.eu/documentation/backlog/FOLLOWUP-nas-automount-guest-reboot-reassert.md`.
A controller follow-on (health cross-check the GUEST-visible mount) is noted there.