42bf40bd2c
gates / gates (push) Successful in 29s
- Twelve steps published on both venues (catalog): first ladders for calibre-web, gitea, wger, crafty-controller, uptime-kuma, zipline (two steps); within-major emby, ghost, home-assistant, outline, rallly. immich's step v3.0.3 -> v3.2.2 re-proven at 768M (Part D). - Part C: the night leg skips a digest-only change AND the catalog never records a same-tag re-test, so a same-name upstream fix reaches no box. Row R-740; the decision in STATUS; `09` decision 30 carries a dated note (the decision itself unchanged). - Rows: 369 -> 377. Opened R-735..R-742; closed R-735, R-738, R-742; narrowed R-462, R-624, R-446, R-440, R-734, R-732. The currency audit gains §1b (and corrects its 31+1 to 30+2). Evidence: documentation/audits/more-night-apps-2026-09-30/. Report: REPORT-more-night-apps-2026-09-30.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
20 lines
1.3 KiB
Python
20 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""recheck.py <ref> [...] — newest tag of the same shape: in the same major and at all (the currency audit's method,
|
|
catalog-currency-2026-09-30/00-currency.py, imported, read-only), plus every newer tag of the same shape."""
|
|
import importlib.util, sys, datetime
|
|
A = "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/catalog-currency-2026-09-30/00-currency.py"
|
|
refs = sys.argv[1:]
|
|
sys.argv = ["x", "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu", "/dev/null"]
|
|
s = importlib.util.spec_from_file_location("c", A); c = importlib.util.module_from_spec(s); s.loader.exec_module(c)
|
|
print("# upstream re-check", datetime.datetime.now(datetime.timezone.utc).isoformat(timespec="seconds"))
|
|
for ref in refs:
|
|
try:
|
|
repo, tag = c.split_ref(ref); host, r = c.host_repo(repo)
|
|
tags = c.tags_all(host, r); res = c.newest(tags, tag)
|
|
cur = c.tokenize(tag)
|
|
newer = sorted([t for t in tags if (p := c.tokenize(t)) and p[0] == cur[0] and len(p[1]) == len(cur[1])
|
|
and p[1] > cur[1] and p[1][0] == cur[1][0] and not c.unstable(t)], key=lambda t: c.tokenize(t)[1])
|
|
print(f"{ref}: newest same major = {res['maj'][0] if res['maj'] else None}; newest at all = {res['all'][0] if res['all'] else None}; newer in major: {newer}")
|
|
except Exception as e:
|
|
print(ref, "ERR", repr(e)[:200])
|