The catalogue side is app-catalog-felhom.eu b7f0f7c. Here: the evidence, the website, the register and the operator's view. Website - Two cards in the Otthon & Eletmod / Home & Lifestyle section of BOTH apps pages, with assets: grocy-logo.svg is grocy's own icon with its single fill made white like the other logos, lubelogger-logo.png is the app's own icon with its dark background dropped and the mark made white (the rule SparkyFitness's PNG follows), and six screenshots of each app's own UI with a household's own data, taken headless on the bench from the published template. - The app count moved 56 -> 58 in 15 places per language set, both languages, and the open-source tile 49 -> 51. Checked by asking the same patterns for the new number afterwards. marketing/facebook/COPY.md still says 56 and is NOT changed: the post it carries is already scheduled. Evidence - documentation/audits/new-apps-2026-10-10/ — FIT.md (checklist group 0 for all three, with the Hungarian-UI column), the bench and box transcripts, the memory samples, the screenshots and the gate runs. Register: 137 -> 139 rows, 2 opened, 0 closed. - R-926 after a remove-keeping-backups and restore, nobody has checked what the app page shows for an after_install app's generated password. Measured here: LubeLogger is safe (its login is derived from the environment at every start, the new password signs in, the data is back); grocy's install password still signs in from the restored database but the deployed environment no longer carries ADMIN_PASSWORD at all. Seven apps are in the class. - R-927 Monica, stopped at checklist 0.2 with the measurements, waiting on the operator. Gate scripts: the same console trap in nineteen of them and in repo_gates.py itself, where it ABORTED THE WHOLE RUNNER at the first gate — printing a non-ASCII character on this workstation's cp1250 console raised UnicodeEncodeError before the gate had decided anything, and reuse_refs_check.py died while printing a NOTE. All now reconfigure their own streams. Red-proof that the remaining script-test failures are not mine: test_due_checks_gate.py fails the same 5 of 42 with the change reverted.
8.8 KiB
REPORT — new apps, 2026-10-10: Grocy and LubeLogger published, Monica stopped
Written as a sibling report, not REPORT.md, because two sessions in this repo would clobber the
shared one (CLAUDE.md § Workflow).
1. The table the brief asked for first
| app | result | why |
|---|---|---|
| Grocy 4.7.1 | published — catalog b7f0f7c |
MIT, alive, SQLite in one volume, no HDD; Hungarian UI 91.6 % |
| LubeLogger v1.7.3 | published — same commit | MIT, 17 releases in 2026, LiteDB in one volume, no HDD |
| Monica | stopped at checklist 0.2 — the operator decides (R-927) | no release of any kind in 17 months, no stable release in 29, the stable branch untouched since 2024-05-04, upstream winding its hosted service down before a rewrite |
Nothing was "not reached": all three were answered.
Why one commit and not two. The brief says each app reaches the catalog in one commit with its
record, and both records travel in that commit. Splitting them would have left REUSE.md's new
healthcheck row and FIRST-ADMIN.md's LubeLogger row pointing at a template that did not exist yet —
the reuse-refs gate refuses a dangling path, and rightly. Each template still carries its own
complete record, which is what the rule protects.
2. The fit table
documentation/audits/new-apps-2026-10-10/FIT.md — licence, last release, image and architectures,
phone-home and its switch, internet at runtime, non-HTTP ports, the client login routes, database,
memory, the Hungarian-UI column, first-admin class and a one-sentence verdict for each.
3. Claims in the brief that turned out wrong
- "Grocy starts with the login
admin/admin(as far as we know)" — right, and now measured rather than assumed: a fresh install'suserstable holds exactly one row and that login signs in. - "LubeLogger may have no login at all until someone turns it on in its settings" — right about the default, wrong about "settings": the switch is a configuration key readable from the environment, which is why the fix needs no post-install step and leaves no window. And the brief understated it: a stranger does not only see the family's car data, a stranger writes it as root. Measured.
- "Monica releases slowly" — too kind. Nothing in 17 months; no stable release in 29; the branch its own README calls the stable one has not moved since 2024-05-04; and the two commits that ended a 13-month silence add a login-page notice saying the hosted instance and all its data will be deleted at the end of December 2026 "ahead of the new Monica version".
- The test machines. 9202 and the bench 9401 are both on demo-hp. felhom-pve carries only
guest 9201. Measured with
pct liston both hosts. - Grocy's image. The brief asks which image upstream recommends. Upstream publishes none:
grocy/grocyon Docker Hub is 404 and grocy's README answers "How to run using Docker" with one link, to linuxserver.io. - A near miss of my own, recorded because the control is the point. My first count of grocy's
Hungarian coverage said 0 % translated. The German control — a language that must be ~100 % —
also read 0 %, which is what exposed the broken
.poparser. A second, independent method gave German 0 untranslated, French 12, Hungarian 62 of 734 → 91.6 %. Without the control the fit table would have carried a false "no" in its newest column.
4. Per published app
Grocy — onboarding/grocy.md, every id answered
- Record: 61 ids, 0 open, 11
n/awith reasons. - Bench (swap 0): peak anon 27.2 MiB = 6.7 % of the 384 M limit, 0 swap, 0 oom_kill, 0 restarts; a 605-second soak of 10 343 requests. Box: 45.7 and 86.6 MiB across two installs.
- Ladder: 4.6.0 → 4.7.1,
provenon the bench andprovenon 9202 through the product's own guarded Update (done in 41 s). - The two faults, found by the walk and fixed before publishing: an
after_installcommand may not contain$(the controller expands every$name); and grocy's persistedconfig.phpdoes not follow the image, so a 4.6 → 4.7 update answered HTTP 500 on every page. Both are in the catalog's REPORT and CHANGELOG with the measurements. - Catalog commit:
b7f0f7c.
LubeLogger — onboarding/lubelogger.md, every id answered
- Record: 61 ids, 0 open, 11
n/awith reasons. - Bench (swap 0): peak anon 66.2 MiB = 12.3 % of the 512 M limit, 0 swap, 0 kills; 605-second soak of 11 988 requests. Box: 22.1, 35.1 and 46.6 MiB across three installs.
- Ladder: v1.7.2 → v1.7.3,
provenon both venues (box done in 25.6 s). - The fault: the image ships no login at all and hands a stranger the root role. Our entrypoint turns the app's own login on from a generated password before the first byte.
- Catalog commit:
b7f0f7c.
5. The website
documentation/audits/new-apps-2026-10-10/site-count.txt.
- Two cards in the „Otthon & Életmód" / "Home & Lifestyle" section of both apps pages.
- Assets:
grocy-logo.svg(grocy's own icon, its single fill made white like the other logos),lubelogger-logo.png(the app's own icon, dark background dropped and the mark made white, the rule SparkyFitness's PNG follows), and six screenshots of each app's own UI with a household's own data. - The count moved 56 → 58 in 15 places per language set, both languages: the apps page title,
meta description, og:title, twitter:title, the JSON-LD
numberOfItems, the page's own sentence and its stats tile; the home page's meta description, feature heading and line; two FAQ answers and their JSON-LD copies; the technology page's bullet. The open-source tile moved 49 → 51. - Not changed, and listed instead, as the brief asked:
marketing/facebook/COPY.md§2 says „56 alkalmazás" in both post drafts, and the post scheduled for 2026-10-12 19:00 carries that number. It is already written and scheduled; the next post should say 58.
6. Register
Before 137 · after 139 · opened 2 · closed 0.
- R-926 (Backup & restore, P3) — after a household removes an
after_installapp keeping its backups and restores it, nobody has checked what the app page then shows for the generated password. Measured here: for LubeLogger the box mints a new password, that new one signs in and the data is back — safe, because its login is derived from the environment at every start. For grocy the install's password still signs in (it is in the restored database) but the deployed environment no longer carriesADMIN_PASSWORDat all. Seven apps are in the same class. - R-927 (Apps & catalog, P4) — Monica, with the measurements, waiting on the operator.
Fixed without a row (the size rule): the after_install $ trap and grocy's config.php, both in
the templates and in REUSE.md; check-onboarding.py's console crash; upgrade-test.py's platform
encoding; and the same console trap in nineteen felhom.eu gate scripts plus repo_gates.py, where it
aborted the whole runner at the first gate.
7. Gates
- Catalog:
catalog_gates.py grocy lubelogger— all twelve green, both runtime gates included, run on bench 9401. Saved per app asbox/<app>/gates.txt. - felhom.eu:
repo_gates.py --fast— after the console fix, 15 of 19 green. Three reds and one INCONCLUSIVE are pre-existing on this workstation and not caused by this session, proven for one of them by reverting the change and seeing the same failures:instructions—E:\git\CLAUDE.mdand the versionedworkspace-CLAUDE.mddiffer by design: the workspace file here is the Windows-adapted copy, and its own first paragraph says not to make them match.script-tests— 13 of 25 suites need a POSIX environment (fcntl, thesqlite3CLI, symlink privilege Windows does not grant).wire-contract— INCONCLUSIVE onagent.HostReport, a felhom-agent question untouched here. CI runs the same entry point on Linux; its result is quoted below.
8. Teardown, three layers
- Machine (9202): both apps removed with their data through the product; the two volumes and the
per-app backups gone; what is left under
/opt/docker/stacks/<app>is the template pair the syncer keeps for all 65, not deployed state. 9202 put back on the live catalog. - Machine (bench 9401): every container and volume this session made removed; the harness's own evidence copied off first (standing rule 5). The bench LXC is left running — it is the standing harness guest, not something this session created.
- Host: nothing created or changed on demo-hp or felhom-pve. The drill catalog repo carries this session's drill commits, as it is meant to.
- Hub: untouched; no record created. DooPlex: a working directory under
git/.work/and one credential read into a 0600 scratch file, both named below.