Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
2.3 KiB
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-Versionon 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.versionvia the newlocalapi.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.