Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
6.6 KiB
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 theseverity-criticalcount 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.py → OK [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.serviceenabled, container healthy) — the OLD controller CLAUDE.md still documented the pre-re-platform/opt/dockercompose 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}+~/gitclones; Go present. - Design tokens confirmed byte-identical across website site.css / hub style.css / controller
style.css
:rootblocks (values inlined in the ui-design skill). - Hub GitOps flow re-verified by executing it (this deploy). Red-proof citation
(
dispatcher_test.go~L27–49) 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/--crittokens — 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.yamlinline 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-internalhost_disk_critical/storage_fill_criticalalready flow at critical severity — they bypass ingest).