register shrink 2026-10-10: 13 rows closed with live evidence (138 -> 125); R-903 phone menu without JS; R-910 pictures; R-912 site gate 21
gates / gates (push) Successful in 6m4s

Closed: R-906 R-907 R-909 R-910 R-911 R-815 R-756 R-570 R-896 R-912 R-903 R-338 R-916.
Updated: R-899 (press set up, dated check 2026-10-11), R-243 (the mail is due 2026-10-11 ~16:06Z, dated check),
R-782 (homepage live; glance question to the operator), R-904 (the TLS sentence is in 01 s7).
Website: site.css v=9 (scripting:none menu), eight dashboard pictures retaken. Evidence: audits/register-shrink-2026-10-10/.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-10 15:27:59 +02:00
parent dee4e0aa0c
commit ec5605d42c
56 changed files with 2400 additions and 47 deletions
+24 -1
View File
@@ -31,8 +31,12 @@ Gates (all must pass; non-zero exit on any failure):
19. dash-lang — a page shows dashboard pictures only in its own language (`dashboard-*-hu.webp` / `-en.webp`)
20. viewer — data-gallery openers are <a href> to existing assets; gallery.js (with ?v=) exactly where openers are;
no inline viewer copy
21. app logos — every catalog app (`app-catalog-felhom.eu/templates/*/.felhom.yml`, by its `slug:`) has
website/assets/<slug>-logo.svg or .png — the dashboard asks for exactly that name and shows a grey
placeholder otherwise (R-912: five apps had theirs under other names). The sibling catalog clone
absent → said out loud, not checked
"""
import html as _html, io, json, os, re, sys, unicodedata
import glob, html as _html, io, json, os, re, sys, unicodedata
# A gate's own console must not decide its verdict. These scripts quote back Hungarian copy, file
# paths and arrow characters; a Windows console here is cp1250, and printing one of them raised
@@ -497,6 +501,25 @@ for p, s in pages.items():
fail("%s: an inline copy of the picture viewer — it lives only in assets/gallery.js" % p)
print(" picture viewer: %d openers, every one a link to an existing file" % _open_n)
# gate 21: every catalog app has its logo under its slug (R-912)
_CAT = os.path.join(os.path.dirname(ROOT), "app-catalog-felhom.eu", "templates")
if not os.path.isdir(_CAT):
print(" app logos: NOT CHECKED — no catalog clone at %s" % _CAT)
else:
_slugs = []
for _f in sorted(glob.glob(os.path.join(_CAT, "*", ".felhom.yml"))):
_m = re.search(r'^slug:\s*["\']?([A-Za-z0-9._-]+)', io.open(_f, encoding="utf-8-sig").read(), re.M)
_slugs.append(_m.group(1) if _m else os.path.basename(os.path.dirname(_f)))
if not _slugs:
fail("app logos: the catalog clone at %s holds no templates/*/.felhom.yml — the gate checked nothing" % _CAT)
_missing = [x for x in _slugs if not any(os.path.isfile(os.path.join(W, "assets", "%s-logo.%s" % (x, e)))
for e in ("svg", "png"))]
if _missing:
fail("app logos: no website/assets/<slug>-logo.svg or .png for %s — the dashboard shows a grey placeholder"
% ", ".join(_missing))
else:
print(" app logos: %d catalog apps, each with its <slug>-logo file" % len(_slugs))
if fails:
print("\nSITE GATES FAILED: %d problem(s)" % len(fails))
sys.exit(1)