Files
felhom-agent/REPORT.md
T

6.3 KiB
Raw Blame History

REPORT — v0.94.0: serialize per-disk SMART into /disks (2026-07-24)

Part of the disk-health cross-repo train (agent v0.94.0 + controller v0.169.0/.1 + hub v0.73.1). Appended above the previous report (kept below).

Baseline: felhom-agent c230258 (v0.93.0) → committed 21fee69 (v0.94.0). Re-verified clean at start.

Change (additive, backward-compatible; MinAgent floor unchanged): localapi.DiskInfo gains Smart *hub.SmartSummary \json:"smart,omitempty"`, copied from the target's already-computed Observe-time enrichment **only when t.Smart.Health != ""** — a zero-value summary (SMART never read) stays omitted so the controller sees "absent" and renders "Nincs adat". No new smartctl load, endpoint, or sudoers change. Files: internal/localapi/disks.go, internal/localapi/disks_smart_test.go(new),CHANGELOG.md, CONTEXT.md`.

Tests: TestDisks_SmartSerialized (fixture target's SATA counters + temperature present; an absent-SMART target omits the field). Red-proof: drop the di.Smart = &sm copy → "smart not serialized" FAIL (confirmed). Full agent suite: 29 packages pass, 0 fail; build + vet clean.

Deploy + live validation (demo host demo-felhom): the vacation note was stale — the agent is up and reachable (binds 192.168.0.162:8443). Built felhom-agent-0.94.0 (ldflags), scp'd, backed up .bak-0.93.0, install-ed, restarted → active, --version 0.94.0, capabilities 68/68 degraded=0, local-api listening. §13(1) live: the authed /disks payload now carries the smart object — dir-backed targets show smart.health (UNKNOWN on this virtualized demo hardware), the USB (union-path) target omits it. The field is live end-to-end; the controller consumes it (see the controller REPORT). Binary published: image tag on the registry via the publish flow is a follow-up if a fleet-wide agent republish is wanted — the code + live-deployed binary on demo-felhom prove the field.


REPORT — v0.93.0 publish train executed: built, published, vouched, deployed fleet-wide (2026-07-22)

The previous report's "NOT built or deployed" line dies here. v0.93.0 (hyphen-free escrow wordlist, a452dc33, red-proofed 2026-07-21) is now the fleet agent. No code changed this train — this was the build/publish/deploy leg. Full operational record: felhom.eu/documentation/pilot/RUNBOOK-publish-agent-0.93-2026-07-22.md.

Confirmed baselines (re-verified at live source before acting)

  • main = eba040d0 = origin/main, clean tree; v0.93.0 delta vs 0.92.1 = escrow code + tests + docs only, no configs/ change → binary-only deploy (sudoers/wrapper untouched).
  • Both boxes 0.92.1 + active (hub hosts table AND direct --version); Day-0 manifest agent 0.92.1/7424bc1c…; floor 0.156.0; hub 0.70.0; package felhom-agent/0.93.0 = 404 pre-publish.

Artifact

AGENT_VERSION=0.93.0
AGENT_SHA256=a68b2ff73200622ea9e23aed71a0a8ff885808626cab9e9d554a5a5df5ced28f   (13 817 690 bytes)

Built on DooPlex from eba040d0 (CGO_ENABLED=0, ldflags version); published via scripts/publish-agent.sh (pre-delete 404 → PUT 201 → round-trip sha match); sha-chain identical at three independent points incl. an anonymous GET of the package URL.

Tests

Green gate on the exact built HEAD: go build ./... && go vet ./... && go test ./... — green. The formerly-flaky escrow package: -count=10 fresh → 10/10 pass (135.2 s). The ~1/5 flake WAS the hyphenated-word defect (see the 2026-07-21 report), so a clean 10× run is direct evidence the fix is in the built artifact.

Manifest vouch (rule 1 — before any box moved)

Viktor saved Day-0 artifacts (password-gated UI, the train's one STOP); CC verified in the live hub DB before deploying: agent 0.93.0 / a68b2ff7…. Golden, floor and wrapper sha byte-identical before/after (0.153.0 / 0.156.0 / 104db0a4…). Deviation, ruled: MinAgent moved 0.92.1→0.93.0 at the save (spec said do-not-touch); flagged before deploy, ruled leave-as-is — transient held-floor window only, both boxes already ran controller ≥ floor.

Deploys — felhom-pve first, then demo-hp

Channel per the 0.90 train: scp one hop → on-box sha256 verify (= a68b2ff7… both) → .bak-0.92.1install -m0755 → restart. demo-hp reached over the hub-vaulted G1 break-glass (no key baked; secret handled file→file via SSH_ASKPASS, shredded after, never printed).

Per-box clean-restart verification — 5/5 green on both (journal times host-local CEST):

Check felhom-pve (restart 06:56:49Z) demo-hp (restart 06:57:48Z)
active / no restart loop active, NRestarts=0, clean startup version=0.93.0 same
capabilities 68/68 ok, degraded=0, inactive=0 68/68 ok, degraded=0, inactive=0
ReassertGuestBinds only enrolled uuid:47a3361a… (/mnt/hdd_1→9201) only enrolled uuid:91d2dc2d… (/mnt/nvme-1tb→9201)
guestnet sweep watchdog up; sweeps quiet, 0 ERROR/WARN since restart same
hub agent_version 0.93.0 (report at startup, 06:56:52Z) 0.93.0 (06:57:52Z)

Escape hatch not needed; .bak-0.92.1 retained on both boxes. peti-felhom deliberately not deployed to (down; gets 0.93.0 via Friday's reinstall + the vouched manifest — by design).

Explicit statements (per the train spec)

  • Controller floor and MinAgent handling: floor byte-identical before/after (0.156.0); golden entry byte-identical; MinAgent's 0.93.0 value is the one ruled deviation above.
  • No escrow ceremony was run as "verification" — the proof is the generation-path tests + version reporting, per the spec.
  • This train discharges RUNBOOK-onboarding-draft-v4.md §A item 5 (agent ≥ 0.93.0 box-side before the first real tester's escrow ceremony) — annotated there.

Observations (recorded, not acted on)

  • The spec's "ROADMAP wordlist row" does not exist in felhom.eu/documentation/backlog/ROADMAP.md; the gate discharge was annotated at its real home (onboarding runbook §A5) instead.
  • demo-hp's 1TB NVMe is now enrolled (reasserted into 9201) — TASK-H's "unenrolled/NTFS, do not touch" note is outdated.
  • demo-hp remains key-less; break-glass deploy worked cleanly. Tailnet key-expiry toggle still open.
  • CONTEXT.md's stale "agent DOWN at remote site / deployed 0.90.0" bullet superseded this train.