Skip to content

feat(ci): ratchet --state- hits outside src/design (V2-ACC1a) - #1494

Merged
mergify[bot] merged 1 commit into
mainfrom
claude/v2-acc1a-state-ratchet
Oct 15, 2026
Merged

mergify[bot] merged 1 commit into
mainfrom
claude/v2-acc1a-state-ratchet

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Der Ratchet-Check zählt jetzt jedes --state- außerhalb von src/design/ (heute 191 Treffer) und wird rot, sobald eine weitere Definition oder Verwendung dazukommt. Die 164 Zeilen in src/styles.css bleiben 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ähler state-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 um src/styles.css und state-token ergänzt, ein neuer Test, die Zähler-Prüfung um fünften Zähler und src/design/-Ausnahme erweitert.
  • Nicht angefasst: gates.sh (Gate ratchet führt ratchet.test.mjs und ratchet.mjs check bereits in precommit, prepush, linux aus), src/design/, src/styles.css, Rust.

MESSEN — --state- in src/ (Stand origin/main 85a0c61, nur getrackte Dateien)

Methode: git ls-files src | xargs rg -c -e '--state-' (Zeilen je Datei) und rg -o -e '--state-[a-z0-9-]+\s*:' bzw. var\(--state- (Vorkommen). Der Zähler zählt Vorkommen, nicht Zeilen.

Datei Zeilen Vorkommen Definitionen (--state-…:) Verwendungen
src/styles.css 164 181 44 137 (var(--state-…))
src/unstyled-buttons.test.ts 4 4 0 4 (Assertions auf CSS-Text)
src/components/ChangelogView.test.tsx 3 3 0 3 (Assertions)
src/ui-attention-tokens.test.tsx 2 2 0 2 (Assertions)
src/styles-a11y.test.ts 1 1 0 1 (Assertion)
src/design/** 0 0 0 0 (ausgenommen)
Summe 174 191 44 147

Die 44 Definitionen in src/styles.css verteilen sich auf 18 Namen: --state-fg 10×, --state-bg 7×, die übrigen 16 (je Zustand -fg/-bg, dazu needs-line und danger-line) 1–2×. Außerhalb von src/ gibt es Treffer nur in Doku/Config (docs/decisions.md 1, docs/plan/v2.0/plan.md 4, .impeccable/config.json 1, .pa/review_prompt_pr27.md 1); sie sind nicht Teil des Zählers.

Belege

Befehl Exit
git merge-base --is-ancestor b8546e96 HEAD 0
rot an der Merge-Base: node --test scripts/ci/ratchet.test.mjs mit neuen Tests gegen altes ratchet.mjs (7 von 8 Tests rot, u. a. der neue) 1
node --test scripts/ci/ratchet.test.mjs am Kopf (8 von 8 grün) 0
node scripts/ci/ratchet.mjs check am Kopf (state-token: 191 = 191) 0
Probe: :root { --state-foo: x; } an src/styles.css angehängt, node scripts/ci/ratchet.mjs check (state-token: 192 > 191, Fundstelle src/styles.css:7078:9) 1
Probe-Zeile zurückgenommen (git checkout -- src/styles.css), node scripts/ci/ratchet.mjs check 0
bash scripts/ci/red-first.sh (Merge-Base rot/fehlend, Kopf grün) 0
git diff --check origin/main 0
bash scripts/ci/gates.sh lane prepush (ungepiped, Kopf 1bad1ad, alle 26 Gates grün, 299 s) 0

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

„Keine zweite Definition der sechs Zustände außerhalb von src/design/, außer den Alias-Definitionen der klassischen Oberfläche, die das Ratchet zählt (state-token, Obergrenze 191, sie darf nur sinken)."

Zwei Hinweise für die Entscheidung:

  1. Der Zähler erfasst Definitionen und Verwendungen (191 = 44 + 147). Das entspricht dem Auftrag („Treffer"), erlaubt aber theoretisch, eine Verwendung zu löschen und dafür eine Definition hinzuzufügen, solange niemand ratchet.mjs update laufen lässt. V2-ACC1b kann dafür einen reinen Definitions-Zähler (Obergrenze 44) ergänzen oder die Grenze senken.
  2. Das Ratchet erzwingt „nur sinken" nur über update, das nie anhebt. Ein höherer Wert in ratchets.json ist 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 /).
  • Browser-Smoke, Frontend-Build und Workflow-Gates der Bahn linux: lokal nur prepush gelaufen.
  • Dateien außerhalb von src/ (Doku, Config) und ungetrackte Dateien zählt der Zähler bewusst nicht.
  • Kein Screenshot, keine Laufzeitmessung nötig: kein App-Verhalten betroffen.

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.

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>
@Cuarroc
Cuarroc marked this pull request as ready for review October 15, 2026 03:11
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-15T03:32:58.459266Z 1bad1ad Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Cuarroc
Cuarroc marked this pull request as draft October 15, 2026 03:32
@Cuarroc
Cuarroc marked this pull request as ready for review October 15, 2026 03:32
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 15, 2026
@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

review-ok bound to head 1bad1ad1 (tier B, google/gemini-3.8-flash APPROVE at this head, all checks green). @Mergifyio queue

@mergify mergify Bot added the queued label Oct 15, 2026
@mergify mergify Bot mentioned this pull request Oct 15, 2026
30 of 46 tasks
@mergify
mergify Bot merged commit b9dfad4 into main Oct 15, 2026
35 of 38 checks passed
@mergify

mergify Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-15 03:42 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1494 on main (564437d) #1496
  • ✅ Merged — 2026-10-15 03:53 UTC · at b9dfad4920ca0a562cdb2b39213e0c171039c176 · merge

This pull request spent 10 minutes 45 seconds in the queue, including 10 minutes 5 seconds running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant