fix(ci): de conventiepoort laten struikelen op één regel is geen poort #1707

Merged
brenno merged 3 commits from fix/linux-gate-conventions-ratchet into main 2026-08-22 00:53:04 +00:00
Owner

Waarom

gate-linux viel tussen 21-08 22:38 en 23:51 vijf keer rood op main, telkens op check-conventions en telkens op één of twee regels:

taak bevinding
2718, 2721 lib/state/tabs_provider.dart: 1017 regels (plafond 1007)
2754, 2755 document_editor_screen.dart: 1211 (plafond 1209) + de State 1213 (plafond 1211)
2761 document_editor_screen.dart: 1212 (plafond 1211) + de State 1214 (plafond 1213)

Geen enkele viel om op een test. Het is ook geen flakiness: de statische poort draait per PR en toetst de voorvertoning van díe samenvoeging met main zoals hij er toen bijstond. Werken twee sessies tegelijk in hetzelfde bestand — en dat deed de hele documentmodus-golf — dan zijn beide PR's groen en is de uitkomst het niet.

Dat het telkens om één regel ging, komt doordat elke verhoging het plafond exact op de toenmalige telling zette. Met nul lucht is de eerstvolgende regel er één te veel. De tip onderaan de poortrun vroeg daar zelf om, en meldde zich ook bij een winst van twee regels.

main is op dit moment rood; deze PR maakt hem groen.

Wat er verandert

1. Eén zoek-/vervangstand voor beide broneditors. De find/replace-staat stond twee keer in de boom — zeven velden en acht methoden, in document_editor_screen.dart én in markdown_deck_editor.dart, tot op de klemregels na gelijk. Nu één FindReplaceSession.

  • document_editor_screen.dart: 1225 → 1113 regels, _DocumentEditorScreenState 1228 → 1115
  • markdown_deck_editor.dart: 993 → 895 — die stond zeven regels onder de harde grens van 1000 en was de volgende in de rij

(Getallen na de rebase op #1706, dat er zelf 13 regels bij deed en het plafond wéér exact op de telling zette: 1225 op 1225.)

De oude baseline-regels beweerden dat dit niet kon zonder private-veldtoegang. Wat de methoden aan de State bond was _controller (gaat mee als parameter), _viewMode (blijft daar — alleen de gastheer weet of de cursor in de bron of in Quill staat) en setState (een callback).

2. Plafonds omlaag, mét lucht. 1225 → 1150 voor het bestand, 1228 → 1150 voor de State, bij een werkelijke 1113/1115. Zevenendertig regels lucht in plaats van strak op de telling; beide plafonds staan lager dan ervoor, dus de ratchet ging vooruit. De kop van fileSizeBaseline legt uit waarom strak-pinnen breekbaar is, en de krimp-tip vraagt nu om die lucht in plaats van erom hem weg te halen — en zwijgt bij een winst die te klein is om te verzilveren.

3. static-gate draait ook op een push naar main. Tot nu toe was de dure Linux-poort het eerste dat de échte samenvoeging zag, tientallen minuten later — lang genoeg voor de volgende sessie om eroverheen te mergen en dezelfde rode poort nog eens te melden. Drie van de vijf rode runs waren precies dat. Voorkómen doet dit niet; dat kan alleen door elke PR vlak vóór de merge opnieuw tegen de actuele main te draaien.

Twee gedragsverschillen, beide bewust

  • Een gesloten zoekbalk sleept de weergave niet meer naar een treffer (kon alleen via een aanroepvolgorde die de interface niet maakt).
  • Verse inhoud van buitenaf wist in de presentatie-broneditor de treffers zonder de balk te sluiten — dat was het oude gedrag; de eerste opzet sloot hem, dat is teruggedraaid.

Getoetst

  • make check-static — groen
  • make check-registrations — groen
  • dart run tool/check_conventions.dart — groen, en de tip is nu stil op de vijf ruis-meldingen (2–6 regels winst)
  • 189 tests over de geraakte suites groen (na de rebase op #1706): find_replace_session (nieuw, 13), find_replace_dialog, markdown_deck_editor + _coverage, editor_coverage_extra, document_editor_screen (incl. Bron/Visueel zoeken, vervangen, Escape), app_shell_actions, markdown_source_controller, class_size_ratchet, ratchet_trend_tool, docs_claims_match_code, file_extension, source_patcher
  • De volledige suite draait post-merge in gate-linux; die is hier niet lokaal gedraaid omdat een parallelle sessie de machine met een coverage-run bezet hield.

Bewaker

Overgeslagen, expliciet: deze wijziging raakt geen van de vijf criteria. Geen bestandsformaat, geen opslag, geen afhankelijkheid erbij, geen uitgaand verkeer, geen publieke belofte — het is een interne herschikking, een ratchet-waarde en een CI-trigger. Geen zichtbare tekst erbij, dus ook geen l10n.

## Waarom `gate-linux` viel tussen 21-08 22:38 en 23:51 vijf keer rood op `main`, telkens op `check-conventions` en telkens op één of twee regels: | taak | bevinding | |---|---| | 2718, 2721 | `lib/state/tabs_provider.dart`: 1017 regels (plafond 1007) | | 2754, 2755 | `document_editor_screen.dart`: 1211 (plafond 1209) + de State 1213 (plafond 1211) | | 2761 | `document_editor_screen.dart`: 1212 (plafond 1211) + de State 1214 (plafond 1213) | Geen enkele viel om op een test. Het is ook geen flakiness: de statische poort draait per PR en toetst de *voorvertoning* van díe samenvoeging met `main` zoals hij er toen bijstond. Werken twee sessies tegelijk in hetzelfde bestand — en dat deed de hele documentmodus-golf — dan zijn beide PR's groen en is de uitkomst het niet. Dat het telkens om één regel ging, komt doordat elke verhoging het plafond exact op de toenmalige telling zette. Met nul lucht is de eerstvolgende regel er één te veel. De tip onderaan de poortrun vroeg daar zelf om, en meldde zich ook bij een winst van twee regels. `main` is op dit moment rood; deze PR maakt hem groen. ## Wat er verandert **1. Eén zoek-/vervangstand voor beide broneditors.** De find/replace-staat stond twee keer in de boom — zeven velden en acht methoden, in `document_editor_screen.dart` én in `markdown_deck_editor.dart`, tot op de klemregels na gelijk. Nu één `FindReplaceSession`. - `document_editor_screen.dart`: 1225 → **1113** regels, `_DocumentEditorScreenState` 1228 → **1115** - `markdown_deck_editor.dart`: 993 → **895** — die stond zeven regels onder de harde grens van 1000 en was de volgende in de rij *(Getallen na de rebase op #1706, dat er zelf 13 regels bij deed en het plafond wéér exact op de telling zette: 1225 op 1225.)* De oude baseline-regels beweerden dat dit niet kon zonder private-veldtoegang. Wat de methoden aan de State bond was `_controller` (gaat mee als parameter), `_viewMode` (blijft daar — alleen de gastheer weet of de cursor in de bron of in Quill staat) en `setState` (een callback). **2. Plafonds omlaag, mét lucht.** 1225 → 1150 voor het bestand, 1228 → 1150 voor de State, bij een werkelijke 1113/1115. Zevenendertig regels lucht in plaats van strak op de telling; beide plafonds staan lager dan ervoor, dus de ratchet ging vooruit. De kop van `fileSizeBaseline` legt uit waarom strak-pinnen breekbaar is, en de krimp-tip vraagt nu om die lucht in plaats van erom hem weg te halen — en zwijgt bij een winst die te klein is om te verzilveren. **3. `static-gate` draait ook op een push naar `main`.** Tot nu toe was de dure Linux-poort het eerste dat de échte samenvoeging zag, tientallen minuten later — lang genoeg voor de volgende sessie om eroverheen te mergen en dezelfde rode poort nog eens te melden. Drie van de vijf rode runs waren precies dat. Voorkómen doet dit niet; dat kan alleen door elke PR vlak vóór de merge opnieuw tegen de actuele `main` te draaien. ## Twee gedragsverschillen, beide bewust - Een **gesloten** zoekbalk sleept de weergave niet meer naar een treffer (kon alleen via een aanroepvolgorde die de interface niet maakt). - Verse inhoud van buitenaf wist in de presentatie-broneditor de treffers **zonder de balk te sluiten** — dat was het oude gedrag; de eerste opzet sloot hem, dat is teruggedraaid. ## Getoetst - `make check-static` — groen - `make check-registrations` — groen - `dart run tool/check_conventions.dart` — groen, en de tip is nu stil op de vijf ruis-meldingen (2–6 regels winst) - 189 tests over de geraakte suites groen (na de rebase op #1706): `find_replace_session` (nieuw, 13), `find_replace_dialog`, `markdown_deck_editor` + `_coverage`, `editor_coverage_extra`, `document_editor_screen` (incl. Bron/Visueel zoeken, vervangen, Escape), `app_shell_actions`, `markdown_source_controller`, `class_size_ratchet`, `ratchet_trend_tool`, `docs_claims_match_code`, `file_extension`, `source_patcher` - De volledige suite draait post-merge in `gate-linux`; die is hier niet lokaal gedraaid omdat een parallelle sessie de machine met een coverage-run bezet hield. ## Bewaker Overgeslagen, expliciet: deze wijziging raakt geen van de vijf criteria. Geen bestandsformaat, geen opslag, geen afhankelijkheid erbij, geen uitgaand verkeer, geen publieke belofte — het is een interne herschikking, een ratchet-waarde en een CI-trigger. Geen zichtbare tekst erbij, dus ook geen l10n.
De find/replace-staat stond twee keer in de boom: dezelfde zeven velden en
acht methoden in `document_editor_screen.dart` en in
`markdown_deck_editor.dart`, tot op de klemregels na gelijk. Twee kopieën van
dezelfde logica lopen uit elkaar zodra iemand er één repareert, en ze telden
allebei mee in het regel- en klasseplafond van een scherm dat al aan zijn
grens zat.

Ze delen nu `FindReplaceSession`: een gewone klasse die de controller mee
krijgt en via callbacks vertelt dat er opnieuw opgebouwd moet worden en dat er
een treffer in beeld moet komen. Waar de cursor heen gaat blijft bij de
gastheer — alleen die weet of hij in de bron of in Quill staat.

De baseline-regels beweerden dat dit niet kon zonder private-veldtoegang. Wat
de methoden aan de State bond was `_controller` (gaat mee als parameter),
`_viewMode` (blijft daar) en `setState` (een callback).

- `document_editor_screen.dart` 1212 → 1100 regels, de State 1214 → 1101
- `markdown_deck_editor.dart` 993 → 894, zeven regels onder de harde grens weg

Twee kleine verschillen die eruit voortkwamen, beide bewust: een gesloten balk
sleept de weergave niet meer naar een treffer, en verse inhoud van buitenaf
wist in de presentatie-broneditor de treffers zonder de balk te sluiten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Vijf rode Linux-poorten op rij op `main` (21-08-2026), telkens één of twee
regels over een plafond. De poort deed het goed; de manier waarop we plafonds
verhogen niet. Elke verhoging zette het getal exact op de toenmalige telling,
en met nul lucht is de eerstvolgende regel er één te veel — ook als beide PR's
die hem toevoegden groen waren tegen de `main` die ze zágen.

- de twee plafonds van `document_editor_screen.dart` gaan omláág (1211 → 1150
  voor het bestand, 1213 → 1150 voor de State) maar houden vijftig regels lucht
  boven de werkelijke 1100/1101;
- de kop van `fileSizeBaseline` legt uit waarom een plafond niet strak op de
  telling hoort te staan;
- de krimp-tip vraagt om die lucht in plaats van erom te vragen hem weg te
  halen, en zwijgt bij een winst die te klein is om te verzilveren — hij meldde
  zich ook bij twee regels, en dat is precies wat naar strak-pinnen duwt.

De ratchet houdt zijn tanden: groei voorbij het plafond blijft rood, en beide
plafonds staan lager dan ervoor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ci(static-gate): draai de statische poort ook op een push naar main
All checks were successful
scans / scans (pull_request) Successful in 2m15s
static-gate / static-gate (pull_request) Successful in 5m22s
534ed64bc5
Een PR-run toetst de voorvertoning van díe samenvoeging met `main` zoals hij er
op dat moment bijstond. Lopen er twee PR's in hetzelfde bestand, dan zijn ze
allebei groen en is de uitkomst het niet.

Tot nu toe was `linux-gate.yml` het eerste dat de échte samenvoeging zag — de
dure poort op de serieruimte, tientallen minuten later. Lang genoeg voor de
volgende sessie om eroverheen te mergen en dezelfde rode poort nog eens te
melden: drie van de vijf rode runs waren precies dat.

Voorkómen doet dit niet; dat kan alleen door elke PR vlak vóór de merge opnieuw
tegen de actuele `main` te draaien. Wat verandert is dat een botsing binnen
minuten zichtbaar is in plaats van na de suite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
brenno force-pushed fix/linux-gate-conventions-ratchet from 534ed64bc5
All checks were successful
scans / scans (pull_request) Successful in 2m15s
static-gate / static-gate (pull_request) Successful in 5m22s
to b4c0daca9e
All checks were successful
scans / scans (pull_request) Successful in 3m18s
static-gate / static-gate (pull_request) Successful in 6m46s
2026-08-22 00:45:45 +00:00
Compare
brenno merged commit a0dd65e205 into main 2026-08-22 00:53:04 +00:00
Sign in to join this conversation.
No description provided.