From 45c95e8c45ef1dcbf4e9467e51e5c09f6184b019 Mon Sep 17 00:00:00 2001 From: Denis_Drobyshev Date: Fri, 18 Sep 2026 23:41:06 +0300 Subject: [PATCH 1/3] Keep the checks page current with what is now checked Two guarantees have become real since the page shipped this afternoon, and a page whose value is its accuracy cannot lag behind them by a day. Every Python package here type-checks: praxis was the exception and had no mypy at all, while the organisation profile said "open source, typed, and tested". And no workflow runs an action taken from a moving tag any more -- all nine repositories pin by commit, and the weekly triage reports anything that drifts back, or says it could not read the workflows rather than calling them fine. --- checks/index.html | 15 +++++++++++++++ ru/checks/index.html | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/checks/index.html b/checks/index.html index c52219a..0905fa8 100644 --- a/checks/index.html +++ b/checks/index.html @@ -160,6 +160,16 @@

Numbers pinned to code

pyproject.toml extras tests/test_packaging.py + + Every Python package here type-checks + the organisation profile — "open source, typed, and tested" + mypy in each repository's CI + + + No workflow runs an action it took from a moving tag + implied by every badge above, which those workflows produce + scripts/org_triage.py, weekly + This site makes no third-party request of any kind the legal page @@ -220,6 +230,11 @@

What runs on a schedule

weekly one standing issue names the page, what it says, and what the source says + + Actions that have gone back to a moving tag + weekly, across every repository + the triage names the repository and the references — and says unknown rather than fine when it could not read the workflows + Organisation-wide maintenance triage weekly diff --git a/ru/checks/index.html b/ru/checks/index.html index 284a0d3..97e8cab 100644 --- a/ru/checks/index.html +++ b/ru/checks/index.html @@ -161,6 +161,16 @@

Числа, прибитые к коду

extras в pyproject.toml tests/test_packaging.py + + Каждый Python-пакет здесь проходит проверку типов + профиль организации — «open source, typed, and tested» + mypy в CI каждого репозитория + + + Ни один воркфлоу не запускает action, взятый с подвижного тега + подразумевается каждым бейджем выше — их делают эти воркфлоу + scripts/org_triage.py, еженедельно + Этот сайт не делает ни одного запроса к сторонним доменам юридическая страница @@ -221,6 +231,11 @@

Что работает по расписанию

еженедельно одна стоячая issue называет страницу, её версию и версию источника + + Actions, вернувшиеся на подвижный тег + еженедельно, по всем репозиториям + триаж называет репозиторий и ссылки — и говорит неизвестно, а не в порядке, если не смог прочитать воркфлоу + Триаж обслуживания по всей организации еженедельно From 3a7009e0be01b3c62fc0e8cec10e4303875f2656 Mon Sep 17 00:00:00 2001 From: Denis_Drobyshev Date: Fri, 18 Sep 2026 23:44:39 +0300 Subject: [PATCH 2/3] Check the counts the organisation profile spells out in words Every correction to those figures today changed digits: badges, CITATION.cff, .zenodo.json, pyproject, this site. The organisation profile says "Thirty-one algorithms and twenty-two environments" in words, and so came through all of it untouched -- the fifth surface carrying the stale pair, and the only one no check could see. The check reads the word in front of the noun rather than asking whether the right word appears somewhere: "thirty-two algorithms and twenty-four environments" contains both words, and presence alone cannot say which belongs to which. The recall entry is reworded while it is here. praxis states 0.92 and 0.94 in prose, the offline column of the same table is now pinned by a test, and the two should not be reported as one thing. --- scripts/check_figures.py | 45 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/scripts/check_figures.py b/scripts/check_figures.py index 7a4b747..ff0579b 100644 --- a/scripts/check_figures.py +++ b/scripts/check_figures.py @@ -12,7 +12,10 @@ Each figure here names its source and is checked against it: algorithms / environments decisionrl's CITATION.cff, which decisionrl's own - test suite pins to the package it ships + test suite pins to the package it ships -- checked + on this site and in the organisation profile, which + spells the same figures out in words and so escaped + every check that looked for digits required dependencies glia's pyproject.toml, read directly line coverage Codecov, the run that produced it @@ -41,6 +44,16 @@ PAGES = ("index.html", "ru/index.html") +# The organisation profile states the same counts in words. That is how "thirty-one +# algorithms and twenty-two environments" survived every correction made to the +# digits elsewhere. +PROFILE = f"{RAW}/.github/master/profile/README.md" +WORDS = { + 22: "twenty-two", 23: "twenty-three", 24: "twenty-four", 25: "twenty-five", + 29: "twenty-nine", 30: "thirty", 31: "thirty-one", 32: "thirty-two", + 33: "thirty-three", 34: "thirty-four", 35: "thirty-five", +} + def fetch(url: str) -> str | None: try: @@ -147,7 +160,35 @@ def main(root: Path) -> int: f"{name}: coverage says {stated}, Codecov measures {coverage:.1f}%" ) - unchecked.append("recall@5 — praxis states it in prose, with no eval run pinning it") + if counts is not None: + algorithms, environments, _ = counts + profile = fetch(PROFILE) + if profile is None: + unchecked.append("the organisation profile could not be read") + else: + lowered = profile.lower() + for value, label in ((algorithms, "algorithms"), (environments, "environments")): + word = WORDS.get(value) + if word is None: + unchecked.append(f"no word for {value} {label} in the profile check") + continue + # Read the word actually in front of the noun, rather than asking + # whether the right word appears anywhere: "thirty-two algorithms + # and twenty-four environments" contains both, and a check that + # only looks for presence cannot tell which belongs to which. + stated = re.search(rf"([a-z]+(?:-[a-z]+)?) {label}\b", lowered) + if stated is None: + problems.append(f"organisation profile: no longer states a count of {label}") + elif stated.group(1) != word: + problems.append( + f"organisation profile: says {stated.group(1)} {label}, " + f"decisionrl ships {word} ({value})" + ) + + unchecked.append( + "praxis on real models — the offline column of its quality table is pinned by a " + "test; recall@5 0.92 and MRR 0.94 need a GPU CI does not have" + ) for problem in problems: print(f" DRIFTED {problem}") From 684205f50df43bd9202eea83f799bf76cf4fbbd9 Mon Sep 17 00:00:00 2001 From: Denis_Drobyshev Date: Fri, 18 Sep 2026 23:45:52 +0300 Subject: [PATCH 3/3] Note that the raw endpoint serves from a cache Reading a source through raw.githubusercontent.com can lag a merge by minutes. A weekly run never notices; someone running this by hand straight after fixing a figure sees the old value and starts debugging the wrong thing. --- scripts/check_figures.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/check_figures.py b/scripts/check_figures.py index ff0579b..48da015 100644 --- a/scripts/check_figures.py +++ b/scripts/check_figures.py @@ -26,6 +26,11 @@ Standard library only. Needs network, which is why this runs in its own weekly workflow rather than in the required CI check. +Sources are read through raw.githubusercontent.com, which serves from a cache +that can lag a commit by a few minutes. That is invisible to a weekly run and +confusing to anyone running this by hand right after a merge: if it reports a +figure you have just corrected, check the commit landed before believing it. + Usage: python scripts/check_figures.py [site_root] """