Files
felhom.eu/REPORT.md
T

80 lines
4.9 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 — `felhom-app-catalog` skill (4th) + SparkyFitness finalized as its worked example (2026-07-03)
Companion half in `app-catalog-felhom.eu/REPORT.md` (the template changes + live-deploy evidence).
## Baselines
| Repo | Base → head |
|---|---|
| felhom.eu | `7ad111c` → this push (`skills/felhom-app-catalog/SKILL.md` NEW + docs) |
| app-catalog-felhom.eu | `15cdf7b``c7490f7` (sparkyfitness finalized + REUSE.md probe-naming row) |
| felhom-controller | READ-ONLY (sync.go + healthprobe.go consulted to state consumer behavior accurately) |
## The skill
- **Workflow, not reference:** research → inspect-the-image healthcheck choice → compose →
`.felhom.yml` → live UI deploy on demo → verify healthy → reconcile count → finish. Every field
table is a POINTER to app-catalog `REUSE.md` §12 / `README.md` §format — the shipped SKILL.md
contains no field tables at all (checked); the one new fact it teaches (probe-container naming)
was placed in REUSE.md and is referenced from the skill.
- **Installer:** no change needed — `install_skills.py` auto-discovers `skills/*/SKILL.md` dirs
(line 69). Ran it: `felhom-app-catalog junction -> E:\git\felhom.eu\skills\felhom-app-catalog`.
- **Fresh-session discovery:** `claude -p "List your custom skills…"` → all 4 listed
(`felhom-app-catalog`, `felhom-build-deploy`, `felhom-testing`, `felhom-ui-design`).
## Two verified facts the exercise added to the knowledge base
1. **Probe-container naming (REUSE.md row, new):** the controller-side `healthcheck.checks[]`
probe dials the container named EXACTLY like the stack dir; fallback = first running
prefix-match — in a multi-container stack that can be the DB. Convention: exposed service's
`container_name` = stack name (vaultwarden/rallly already comply; sparkyfitness now does).
2. **BusyBox `ash` `command -v` takes ONE argument**`command -v wget curl node python3`
reported "wget only" in both SparkyFitness images while per-tool runs showed curl (and node in
the server) present. The skill's inspect command is a per-tool loop for this reason.
## SparkyFitness — markers resolved by inspection (no more VERIFY-BEFORE-FINALIZE)
| Image (both tags RESOLVE) | wget | curl | node | python3 | Family chosen |
|---|---|---|---|---|---|
| `codewithcj/sparkyfitness:v0.17.2` (nginx SPA) | /usr/bin/wget | /usr/bin/curl | no | no | BusyBox-wget `--spider :80/` (kept — most common family) |
| `codewithcj/sparkyfitness_server:v0.17.2` (Node) | /usr/bin/wget | /usr/bin/curl | /usr/local/bin/node v24.17.0 | no | node-exec HTTP GET `:3010/api/health` status<400 (real status check, kept) |
`/api/health` existence proven live: `{"status":"UP"}`. `mem_limit` arithmetic verified:
512 (db) + 1024 (server) + 256 (frontend) = **1792M** = the `.felhom.yml` value (comment added).
## Live validation (method stated per claim)
SparkyFitness was ALREADY deployed on demo from the draft (4 h prior, three containers healthy) —
so the live action was applying the FINALIZED template: "Sablonok frissítése" then the card's
"Frissítés", both clicked in the real dashboard via the browser bridge (claude-in-chrome).
Compose recreated only the renamed frontend (`sparkyfitness`, healthy in 21 s); server + db
untouched (Up 4 h) → the two `data_key` secrets were NOT regenerated, as required. Verifications:
git-sync file content, `docker ps`, `/api/health`, traefik Host-header curl (200), and
`GET /api/stacks/sparkyfitness` (the endpoint the UI polls) — controller probe verdict
`healthy: true, http :80/ → 200 (6ms)` against the renamed container. Kept deployed (7.3 option A;
expendable demo box, real catalog app).
## App-count reconciliation (recorded, NOT fixed)
Real catalog: **53** templates. Website `gyik.html` claims "több mint 45" (true but lagging);
`alkalmazasok.html` per-category `app-count` spans sum **49** ≠ 53. Website fixes are
`felhom-ui-design` + `site_gates.py` territory — separate task.
## Observations (not acted on)
- The controller UI card and `docker ps` agreed throughout; the probe's DEBUG-level per-stack log
lines are invisible at INFO — the `GET /api/stacks/<name>` endpoint is the reliable verdict
source for validation.
- `paperless-ngx`'s containers (`paperless-webserver`…) match NEITHER the exact-name nor the
prefix fallback of its stack name `paperless-ngx` — its controller-side probe likely never runs
(silently "skipped no container"). Candidate follow-up: rename or add a probe-container hint;
NOT touched here.
- The pre-rename fallback DID probe the right container on demo (probe was green before the
update) — the rename converts order-dependent luck into the deterministic convention.