Files
felhom.eu/REPORT.md
T

110 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](hub/CHANGELOG.md); the scripts history lives in [scripts/CHANGELOG.md](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.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.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).