461eaf42c1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
39 lines
2.3 KiB
Markdown
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.
|