Repository navigation
feat(ci): ratchet --state- hits outside src/design (V2-ACC1a) - #1494
Conversation
Add a state-token counter for every --state- occurrence in tracked src/ files other than src/design/ (191 today: 44 definitions, 137 var() uses and 10 test assertions). A second state definition now turns the ratchet gate red; the ceiling only goes down via an explicit update. Test-First: scripts/ci/ratchet.test.mjs::a second --state- definition outside src/design turns the check red Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
review-ok bound to head |
Merge Queue Status
This pull request spent 10 minutes 45 seconds in the queue, including 10 minutes 5 seconds running CI. Required conditions to merge
|
Der Ratchet-Check zählt jetzt jedes
--state-außerhalb vonsrc/design/(heute 191 Treffer) und wird rot, sobald eine weitere Definition oder Verwendung dazukommt. Die 164 Zeilen insrc/styles.cssbleiben unangetastet, denn die klassische Oberfläche ist der Rückfallweg für D1. Das Wording für Kriterium 4 ist unten als Vorschlag markiert, die Entscheidung liegt bei Elias.Report
Was geändert wurde (V2-ACC1a, 28 Diff-Zeilen: 24 neu, 4 entfernt; nur
scripts/ci/):scripts/ci/ratchet.mjs: neuer Zählerstate-token(Pfad^src/(?!design/), Regex/--state-/g). Das Ratchet kannte bisher nur fest einprogrammierte Zähler, daher war eine Code-Zeile nötig und reine Konfiguration reichte nicht.scripts/ci/ratchets.json:"state-token": 191(= heute gemessen).scripts/ci/ratchet.test.mjs: Fixture umsrc/styles.cssundstate-tokenergänzt, ein neuer Test, die Zähler-Prüfung um fünften Zähler undsrc/design/-Ausnahme erweitert.gates.sh(Gateratchetführtratchet.test.mjsundratchet.mjs checkbereits inprecommit,prepush,linuxaus),src/design/,src/styles.css, Rust.MESSEN —
--state-insrc/(Standorigin/main85a0c61, nur getrackte Dateien)Methode:
git ls-files src | xargs rg -c -e '--state-'(Zeilen je Datei) undrg -o -e '--state-[a-z0-9-]+\s*:'bzw.var\(--state-(Vorkommen). Der Zähler zählt Vorkommen, nicht Zeilen.--state-…:)src/styles.cssvar(--state-…))src/unstyled-buttons.test.tssrc/components/ChangelogView.test.tsxsrc/ui-attention-tokens.test.tsxsrc/styles-a11y.test.tssrc/design/**Die 44 Definitionen in
src/styles.cssverteilen sich auf 18 Namen:--state-fg10×,--state-bg7×, die übrigen 16 (je Zustand-fg/-bg, dazuneeds-lineunddanger-line) 1–2×. Außerhalb vonsrc/gibt es Treffer nur in Doku/Config (docs/decisions.md1,docs/plan/v2.0/plan.md4,.impeccable/config.json1,.pa/review_prompt_pr27.md1); sie sind nicht Teil des Zählers.Belege
git merge-base --is-ancestor b8546e96 HEADnode --test scripts/ci/ratchet.test.mjsmit neuen Tests gegen altesratchet.mjs(7 von 8 Tests rot, u. a. der neue)node --test scripts/ci/ratchet.test.mjsam Kopf (8 von 8 grün)node scripts/ci/ratchet.mjs checkam Kopf (state-token: 191 = 191):root { --state-foo: x; }ansrc/styles.cssangehängt,node scripts/ci/ratchet.mjs check(state-token: 192 > 191, Fundstellesrc/styles.css:7078:9)git checkout -- src/styles.css),node scripts/ci/ratchet.mjs checkbash scripts/ci/red-first.sh(Merge-Base rot/fehlend, Kopf grün)git diff --check origin/mainbash scripts/ci/gates.sh lane prepush(ungepiped, Kopf 1bad1ad, alle 26 Gates grün, 299 s)Test-First: scripts/ci/ratchet.test.mjs::a second --state- definition outside src/design turns the check red
Architecture drift: kein Befund, nichts auf die Allowlist gesetzt.
Vorschlag Wording Kriterium 4 — Entscheidung Elias
Zwei Hinweise für die Entscheidung:
ratchet.mjs updatelaufen lässt. V2-ACC1b kann dafür einen reinen Definitions-Zähler (Obergrenze 44) ergänzen oder die Grenze senken.update, das nie anhebt. Ein höherer Wert inratchets.jsonist im Diff sichtbar und gehört in die Review.NICHT ABGEDECKT
#[cfg(windows)]-Tests und die Windows-Arme von clippy: Linux-Lauf, die Windows-Bahn läuft in der Merge-Queue. Dieser PR enthält keinen plattformabhängigen Code (Node-Skript, Pfade mit/).linux: lokal nurprepushgelaufen.src/(Doku, Config) und ungetrackte Dateien zählt der Zähler bewusst nicht.Review
Review: ausstehend (Stufe B) — ein Reviewer außerhalb der Anthropic-Familie, vom Orchestrator eingereiht.
🤖 Generated with Claude Code
Review disposition (Root, round 1)
Tier B (scripts/ci gate, author family Anthropic/Claude Sonnet 5.5). Reviewer google/gemini-3.8-flash (Google) at head
1bad1ad1: APPROVE, no findings. The criterion-4 wording stays an open decision for Elias; this ratchet only stops growth and is correct under either wording.