# catalog_gates.py sparkyfitness — full clone (not shallow) on bench 9401 (demo-hp, swap 0), catalog 9b3b859, 2026-10-01T19:58:42Z
catalog_gates — apps: sparkyfitness

==============================================================================
== gate: image-pins   (check-image-pins.py)
==============================================================================
image-pin gate OK — 56 templates, 0 unpinned images

==============================================================================
== gate: image-resolvable   (check-image-resolvable.py sparkyfitness)
==============================================================================
resolving 3 unique image pin(s)…
image-resolvability gate OK — 3 unique pins, all resolve

==============================================================================
== gate: volume-persistence   (check-volume-persistence.py sparkyfitness)
==============================================================================
self-testing the prober (both directions)…
  prober flags the R-156 signature and clears a correct template — trustworthy
sparkyfitness        CLEAN         sparkyfitness-server: this container's mounts are all empty while it created entries in ['/app/SparkyFitnessServer'] — benign when a sibling container

1 clean · 0 broken · 0 undetermined (of 1 in scope)
volume-persistence gate OK

==============================================================================
== gate: engine-major   (check-engine-major.py)
==============================================================================
engine-major gate — range origin/main..HEAD: 0 compose file(s) changed, 0 engine pin(s) compared
engine-major gate OK — no forbidden engine major, and no engine major bundled with another image move (rule: CLAUDE.md, amended by R-469 2026-09-21)

==============================================================================
== gate: catalog-since   (check-catalog-since.py)
==============================================================================
catalog-since gate — range origin/main..HEAD: 0 compose file(s) changed, 0 image move(s) dated
catalog-since gate OK — every image move in the range carries a catalog_since on or after its commit day

==============================================================================
== gate: copy-i18n   (check-copy-i18n.py sparkyfitness)
==============================================================================
copy-i18n: matcher controls OK (positive „Jelentkezz be…" convicts, negative „Encrypted notes…" does not)
copy-i18n: 56 apps · 1112 Hungarian copy strings frozen · 1111 with English
copy-i18n: translated so far — actualbudget 15/15, adventurelog 18/18, audiobookshelf 21/21, bentopdf 14/14, bookstack 21/21, calcom 22/22, calibre-web 27/27, claper 20/20, code-server 20/20, crafty-controller 24/24, dawarich 21/21, docmost 19/19, emby 22/22, ghost 16/16, gitea 17/17, glance 15/15, gokapi 19/19, grafana 19/19, gramps-web 17/17, home-assistant 18/18, homebox 17/17, homepage 15/15, immich 24/24, jellyfin 22/22, karakeep 19/19, kimai 20/20, komga 21/21, mealie 19/19, n8n 17/17, navidrome 21/21, nextcloud 28/28, onlyoffice 24/24, opengist 16/16, outline 21/21, paperless-ngx 33/33, papra 14/15, plant-it 16/16, plex 25/25, privatebin 14/14, radarr 22/22, radicale 19/19, rallly 17/17, recipe-importer 19/19, romm 41/41, seerr 18/18, sonarr 22/22, sparkyfitness 21/21, tandoor 18/18, termix 12/12, uptime-kuma 16/16, vaultwarden 23/23, vikunja 18/18, wanderer 20/20, wger 20/20, wishlist 16/16, zipline 18/18
copy-i18n: OK

==============================================================================
== gate: probe-matches-compose   (check-probe-matches-compose.py sparkyfitness)
==============================================================================
probe-matches-compose: 1 app(s), mode: full

probe-matches-compose: OK — every probe dials the port (and, where it can fail, the path) that the app's own compose healthcheck dials

==============================================================================
== gate: probe-measured   (check-probe-measured.py sparkyfitness)
==============================================================================
probe-measured: OK — 0 probes, each with a measured before/after

==============================================================================
== gate: test-record   (check-test-record.py sparkyfitness)
==============================================================================
test-record gate — 1 template(s) read, 1 carry a ladder, 0 convicted

==============================================================================
== gate: test-record-move   (check-test-record-move.py)
==============================================================================
test-record-move gate — range origin/main..HEAD: 0 compose file(s) changed

==============================================================================
== gate: onboarding   (check-onboarding.py)
==============================================================================
onboarding gate — 61 checklist ids; 56 template dirs: 53 exempt (published before 2026-10-01), 3 new; 1 exempt app(s) with a record (shape-checked): wger
  NOT CHECKED here (sibling repository absent — the pre-push hook on DooPlex checks them): 181 path(s)
    felhom.eu/documentation/audits/new-apps-2026-10-01/A/A1-github-facts.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/A/A1-github-facts.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/FIT.md
    felhom.eu/documentation/audits/new-apps-2026-10-01/box/dawarich/checks.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/shots/dawarich/1.png
    felhom.eu/documentation/audits/new-apps-2026-10-01/box/dawarich/install.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/box/dawarich/install.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/bench/dawarich/evidence/MV-dawarich/verdict.json
    felhom.eu/documentation/audits/new-apps-2026-10-01/G/gates-dawarich.txt
    felhom.eu/documentation/audits/new-apps-2026-10-01/A/compose/dawarich.yml
onboarding gate OK

==============================================================================
== summary
==============================================================================
  image-pins           OK            (exit 0)
  image-resolvable     OK            (exit 0)
  volume-persistence   OK            (exit 0)
  engine-major         OK            (exit 0)
  catalog-since        OK            (exit 0)
  copy-i18n            OK            (exit 0)
  probe-matches-compose OK            (exit 0)
  probe-measured       OK            (exit 0)
  test-record          OK            (exit 0)
  test-record-move     OK            (exit 0)
  onboarding           OK            (exit 0)

all catalog gates OK
runner exit code = 0
