Files
felhom-agent/REPORT.md
T

39 lines
2.3 KiB
Markdown

# REPORT — agent v0.82.0: local-API version channel (X-Felhom-Agent-Version) — DEPLOYED
**Date:** 2026-07-11 · **Class:** implementation (agent slice of the NAS/coupling backlog-clear
task, Part B). Baseline v0.81.0 (`1e60e88`) → **v0.82.0** (`fa9c7fe`), live on felhom-pve.
Pairs with controller v0.115.0 (version-aware Supports) + hub v0.45.0.
## What shipped
- **`X-Felhom-Agent-Version` on EVERY local-API response** (`localapi/server.go`: the mux is wrapped
so the header is set on all routes + all statuses, INCLUDING auth failures and 404s — the
controller learns the agent version passively from ordinary traffic). Value = `main.version` via
the new `localapi.Options.AgentVersion`. No new routes, no envelope changes, **no sudoers changes**.
- The controller (v0.115.0) reads it and capability-gates by version comparison; header-less
(≤0.81.0) agents keep working — the controller falls back to the v0.114.0 route probe unchanged.
## Tests + red-proof
`TestVersionHeader_OnEveryResponse` (authed / unauthed / 404 all carry the header) +
`TestVersionHeader_OmittedWhenUnset`. Red-proof: dropping the Handler() wrap (return the bare mux) →
every row fails with an empty header (observed: `X-Felhom-Agent-Version = "", want "9.9.9-test"`),
reverted → green. Full `go build && go vet && go test ./...` PASS (the known
TestGenerateRecoveryCode wordlist flake did not recur this run).
## Deployed + verified
felhom-pve: `.bak-0.81.0` kept → `install -m0755` → restart; `felhom-agent --version` → 0.82.0;
clean start journal (enrolled drive re-bound, local-api listening). Wire proof: an authed
`GET /storage` to the live agent returns `x-felhom-agent-version: 0.82.0`. **NOT published**
demo-deploy only; Peti stays 0.81.0 (the live probe-fallback path). Hub now shows demo agent 0.82.0,
Peti 0.81.0.
## Observations (documented, NOT acted on)
- **Q1c FAIL surfaced during this task's Part E** (supervised, agent 0.82.0 live): a NAS automount
trigger does NOT survive a guest reboot — the guest sees an empty dir; the agent has no
network-mount reassert on guest reboot (unlike drive `ReassertGuestBinds`). Follow-up spec'd:
`felhom.eu/documentation/backlog/FOLLOWUP-nas-automount-guest-reboot-reassert.md`. NOT this
release — a distinct agent task.