Files
felhom.eu/REPORT.md
T

6.6 KiB
Raw Blame History

felhom.eu — task reports

Overwrite this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in hub/CHANGELOG.md; the scripts history lives in scripts/CHANGELOG.md.


REPORT — hub v0.31.0 critical-severity fix + Felhom skills + CLAUDE.md refresh (consolidated)

Date: 2026-07-03 · Class: implementation (hub v0.31.0, deployed) + docs/skills across all repos

1. Baselines & commits

All four repos matched the task's expected baselines (pulled clean).

Repo Baseline Commits pushed to main
felhom.eu d331eb26d1 b5f0050 (fix+tests+REUSE), 4a18306 (manifest→0.31.0), ad61e96 (render test), + the docs/skills commit carrying this REPORT
felhom-controller eda33400da a518023 (CLAUDE.md refresh)
felhom-agent 2a024b6039 3e760a5 (CLAUDE.md refresh)
app-catalog-felhom.eu c5a3d1b15b 15cdf7b (CLAUDE.md expansion)

2. Part 1 — hub v0.31.0 (the critical-severity fix)

Change: handleEvent severity switch gains "critical" (unknown values still coerce to "info", exact-match lowercase); severityLabels["critical"] = "Kritikus hiba" added; dashboard consumer gains EventCriticals; critical badge renders FIRST in dashboard + customer-page count chains; style.css defines the previously-referenced-but-undefined .severity-critical (--crit tokens) and .severity-ok (neutral). Frozen legacy /notify path and allowedEventTypes untouched.

Tests (new hub/internal/api/event_test.go — first tests on /event):

  • A: critical preserved to store — companion red-proof run: with the one-line fix reverted the test FAILED with stored severity = "info", want "critical"; fix restored → PASS.
  • B: severity "banana" → stored "info". C: unknown event_type → 400 + store empty. Auth: 401.
  • D: TestTemplates_DashboardCriticalBadge (render_test.go) asserts the rendered HTML contains the severity-critical count badge ordered before the error badge. Method note: UI verification used the Go render test — Chrome verification stopped at the operator login (password entry is out of CC's scope).
  • Green gate: go build ./... && go vet ./... && go test ./... — all green.

Deploy (GitOps): image felhom-hub:0.31.0 built+pushed on 180; manifests/hub.yaml bumped; ArgoCD app felhom hard-refresh + sync → Synced/Healthy, rollout complete, pod image ...felhom-hub:0.31.0, clean startup logs.

Live probe (real pipeline): POSTed one event_type:"test", severity:"critical" event from guest 9201 using its own controller.yaml credentials (key never echoed — length-only). Result: HTTP 200; hub log Event from demo-felhom: test (critical) (stored severity critical, not info); dispatcher sent the operator email (Test email sent to nagyfenyvesi.viktor@gmail.com).

REUSE.md §1 gotcha + §3 trap row updated in the same commit as the fix; reuse_refs_check.pyOK [felhom.eu]: 31 cited paths, all exist.

3. Part 2 — skills

Three skills authored in felhom.eu/skills/ (each SKILL.md ≤160 lines, pushy trigger descriptions): felhom-build-deploy, felhom-ui-design, felhom-testing. Content verified against live source/infra before writing (see §5). New scripts/install_skills.py: idempotent, junction-first (mklink /J) with copy fallback + re-run reminder.

Install mode: JUNCTION — created for all three; second run detected them and no-op'd. Discovery (Scenario E): fresh claude -p session listed all three:

felhom-build-deploy
felhom-testing
felhom-ui-design

Bonus trigger probe: "which skill to deploy a new hub version?" → answered felhom-build-deploy with the correct first command (./build.sh <VER> --push on 180).

4. Part 3 — CLAUDE.md refresh

Standing rule adopted everywhere: CLAUDE.md carries no version-pinned current state (that lives in CONTEXT/CHANGELOG/REUSE); deep runbooks live in the skills, CLAUDE.md keeps a summary table + pointer.

File Diffstat Headlines
felhom-controller/CLAUDE.md +119/294 (338→~160 lines) full 30-package map (was 7); stale /opt/docker demo deploy replaced with verified 9201 bootstrap flow; hub build section deleted; patterns pruned to 6 invariants
felhom-agent/CLAUDE.md +86/71 "Current: v0.31.0" narrative + slice history deleted (30 versions stale); layout completed (+8 packages, opsign); deploy facts re-verified on felhom-pve
felhom.eu/CLAUDE.md +73/58 "Hub — current state (v0.7.x)" (23 versions stale) → version-free architecture section; GitOps rules kept incl. live-image-lag note; skills section added
app-catalog CLAUDE.md +26/5 stub → ~30-line proper file (purpose, deploy contract, pointers)
E:\git\CLAUDE.md (local) +8 Skills section only

5. Commands/facts re-verified against live infra (stale findings)

  • Guest 9201 deploy mechanism confirmed live (/etc/felhom-controller-image = 0.98.3 tag, felhom-controller-bootstrap.service enabled, container healthy) — the OLD controller CLAUDE.md still documented the pre-re-platform /opt/docker compose deploy for node 1: stale, replaced.
  • Agent service confirmed on felhom-pve: User=felhom-agent, ExecStart=/usr/local/bin/felhom-agent --config /etc/felhom-agent/agent.json, live 0.61.0 — the OLD agent CLAUDE.md claimed v0.31.0 current: stale, removed.
  • Build dirs on 180 confirmed: ~/build/{felhom-agent,felhom-controller,felhom-hub} + ~/git clones; Go present.
  • Design tokens confirmed byte-identical across website site.css / hub style.css / controller style.css :root blocks (values inlined in the ui-design skill).
  • Hub GitOps flow re-verified by executing it (this deploy). Red-proof citation (dispatcher_test.go ~L2749) verified in source.
  • Website displays no hub version anywhere (checked) — no website change needed.

6. Observations (noticed, NOT acted on)

  • The hub severity badge classes predating this task (.severity-error/-warning/-info) use legacy raw hexes, not the v2 --warn/--crit tokens — left alone per the no-restyle rule; a token migration is a candidate D-series follow-up.
  • The hub login page appears unstyled relative to the v2 design system (default-blue button, white background) — pre-existing, out of scope.
  • manifests/felhom.secret.yaml inline credentials (from the REUSE report) remain an open operator follow-up.
  • The controller currently emits no critical-severity events; the fix future-proofs the channel (hub-internal host_disk_critical/storage_fill_critical already flow at critical severity — they bypass ingest).