test(windows): ruimere marges voor de git-suite, als aanvaarde afweging #970

Merged
brenno merged 1 commit from fix/windows-marges into main 2026-07-29 20:18:15 +00:00
Owner

Sluitstuk na #966 en #968. Die twee namen vier faaloorzaken weg; deze PR gaat
over wat er daarna overbleef, en is bewust een aanvaarde afweging en geen
oplossing.

Wat de twee draaien na #968 lieten zien

Draai Wat erin zat Uitkomst
30479515496 (d26a7912) de app-fix volledig groen, incl. Windows en macOS
30482784440 (84702f39) + de testhulp-fix Windows 7357 groen, 1 rood

Die ene:

❌ native_git_mirror_test.dart: grepDeckDirs NativeGrepShortlister verpakt de
   treffers exhaustief (failed)
GitCliException(git overschreed de tijdslimiet van 120s)
package:ocideck/services/git/git_cli_io.dart 401:7  NativeGitCli._spawn

Dat is een ánder soort fout dan wat we begonnen: mét plaats en stack, in plaats
van drie minuten stilte zonder enige aanwijzing. In die zin doet #968 wat het
moest doen — het maakte de storing benoembaar.

Wat de meting zegt

In diezelfde draai:

  • de dertig git-gevallen duurden samen 5 min 32 s (19:35:24 → 19:40:56);
    lokaal is dat bestand in 4 s klaar;
  • binnen die reeks ging één aanroep over de twee minuten, terwijl zijn
    directe buren ~1 s duurden.

Geen gelijkmatige traagheid dus, maar stilstand met tussenpozen. De hele job
duurde 46 minuten, tegen 56 voor macOS — die leg is dus niet zwaarder belast en
was wél groen. Waar de stilstand vandaan komt is van hieruit niet vast te
stellen; dat vraagt een Windows-machine, precies de grens die #880 al benoemt.

De wijziging

  • per test op Windows: 3 → 8 minuten;
  • de git-aanroep in _rawGit: 120 → 300 seconden.

De testlimiet blijft ruimer dan de git-limiet. Dat is niet toevallig: liep de
git-aanroep af, dan hoort het geval díe fout te kunnen melden — mét plaats en
stack — in plaats van er zelf overheen af te lopen en weer een stille time-out
op te leveren.

De prijs staat erbij, in de code en in de Development log: dit aanvaardt dat
de machine traag is, en een échte vastloper doet er hierdoor acht minuten over
voordat hij opvalt.

De twee alternatieven die niet gekozen zijn

Vastgelegd omdat een stilzwijgend gemaakte afweging over een jaar niet terug te
vinden is:

  1. De virusscanner van de wegwerp-runner buiten de werkmap zetten. De
    standaardremedie voor precies dit beeld — git schrijft veel kleine objecten
    en dat is wat een realtime-scanner het hardst aanpakt. Niet gekozen: het is
    een bewuste versoepeling van diepteverdediging op die machine, ook al raakt
    het onze eigen ketenpoorten (gitleaks, trufflehog, semgrep, trivy) niet.
  2. De gelijktijdigheid halveren (--concurrency=2). Raakt geen enkele
    beveiligingsinstelling, maar verlengt een leg die al 46 minuten duurt, en
    gokt dat contentie de oorzaak is terwijl de macOS-leg zwaarder belast was en
    groen bleef.

Poorten

  • make check — groen (exit 0).
  • flutter test test/native_git_mirror_test.dart — 30 gevallen groen in 4 s.
  • Geen regressietest: er verandert geen gedrag, alleen twee marges. Wat hier te
    bewaken viel — dat de pijp niet meer onbegrensd wordt afgewacht — ligt vast in
    #966.
  • Bewaker niet gehaald: dit raakt geen bestandsformaat, opslag, afhankelijkheid,
    uitgaand verkeer of publieke belofte.
Sluitstuk na #966 en #968. Die twee namen vier faaloorzaken weg; deze PR gaat over wat er daarna overbleef, en is bewust een **aanvaarde afweging** en geen oplossing. ## Wat de twee draaien na #968 lieten zien | Draai | Wat erin zat | Uitkomst | |---|---|---| | 30479515496 (`d26a7912`) | de app-fix | volledig groen, incl. Windows en macOS | | 30482784440 (`84702f39`) | + de testhulp-fix | Windows 7357 groen, 1 rood | Die ene: ``` ❌ native_git_mirror_test.dart: grepDeckDirs NativeGrepShortlister verpakt de treffers exhaustief (failed) GitCliException(git overschreed de tijdslimiet van 120s) package:ocideck/services/git/git_cli_io.dart 401:7 NativeGitCli._spawn ``` Dat is een ánder soort fout dan wat we begonnen: mét plaats en stack, in plaats van drie minuten stilte zonder enige aanwijzing. In die zin doet #968 wat het moest doen — het maakte de storing benoembaar. ## Wat de meting zegt In diezelfde draai: * de dertig git-gevallen duurden samen **5 min 32 s** (19:35:24 → 19:40:56); lokaal is dat bestand in **4 s** klaar; * binnen die reeks ging **één** aanroep over de twee minuten, terwijl zijn directe buren ~1 s duurden. Geen gelijkmatige traagheid dus, maar stilstand met tussenpozen. De hele job duurde 46 minuten, tegen 56 voor macOS — die leg is dus niet zwaarder belast en was wél groen. Waar de stilstand vandaan komt is van hieruit niet vast te stellen; dat vraagt een Windows-machine, precies de grens die #880 al benoemt. ## De wijziging * per test op Windows: 3 → 8 minuten; * de git-aanroep in `_rawGit`: 120 → 300 seconden. De testlimiet blijft ruimer dan de git-limiet. Dat is niet toevallig: liep de git-aanroep af, dan hoort het geval díe fout te kunnen melden — mét plaats en stack — in plaats van er zelf overheen af te lopen en weer een stille time-out op te leveren. **De prijs staat erbij, in de code en in de Development log:** dit aanvaardt dat de machine traag is, en een échte vastloper doet er hierdoor acht minuten over voordat hij opvalt. ## De twee alternatieven die niet gekozen zijn Vastgelegd omdat een stilzwijgend gemaakte afweging over een jaar niet terug te vinden is: 1. **De virusscanner van de wegwerp-runner buiten de werkmap zetten.** De standaardremedie voor precies dit beeld — git schrijft veel kleine objecten en dat is wat een realtime-scanner het hardst aanpakt. Niet gekozen: het is een bewuste versoepeling van diepteverdediging op die machine, ook al raakt het onze eigen ketenpoorten (gitleaks, trufflehog, semgrep, trivy) niet. 2. **De gelijktijdigheid halveren** (`--concurrency=2`). Raakt geen enkele beveiligingsinstelling, maar verlengt een leg die al 46 minuten duurt, en gokt dat contentie de oorzaak is terwijl de macOS-leg zwaarder belast was en groen bleef. ## Poorten * `make check` — groen (exit 0). * `flutter test test/native_git_mirror_test.dart` — 30 gevallen groen in 4 s. * Geen regressietest: er verandert geen gedrag, alleen twee marges. Wat hier te bewaken viel — dat de pijp niet meer onbegrensd wordt afgewacht — ligt vast in #966. * Bewaker niet gehaald: dit raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte.
test(windows): ruimere marges voor de git-suite, als aanvaarde afweging
All checks were successful
scans / scans (pull_request) Successful in 3m16s
806307e923
Na #966 en #968 was één spiegel-draai volledig groen en strandde de volgende
op precies één geval: `GitCliException(git overschreed de tijdslimiet van
120s)` — voor het eerst mét plaats en stack, waar het eerder drie minuten stil
bleef.

Gemeten in diezelfde draai: de dertig git-gevallen deden er samen 5 min 32 s
over (lokaal 4 s), en binnen die reeks ging één enkele aanroep over de twee
minuten terwijl zijn directe buren ~1 s duurden. Geen gelijkmatige traagheid
dus, maar stilstand — en waar die vandaan komt is niet vast te stellen zonder
een Windows-machine (#880).

Marges: per test 3 → 8 min, de git-aanroep in `_rawGit` 120 → 300 s. De
testlimiet blijft ruimer dan de git-limiet, zodat een aflopende git-aanroep
zijn eigen fout kan mélden in plaats van dat het geval eroverheen afloopt.

Dit is bewust geen oplossing maar een aanvaarde afweging, en de prijs staat
erbij: een échte vastloper doet er nu acht minuten over voordat hij opvalt. De
twee alternatieven — de virusscanner van de wegwerp-runner buiten de werkmap
zetten, of de gelijktijdigheid halveren — zijn gewogen en niet gekozen; de
afweging staat in de Development log, zodat ze over een jaar terug te vinden is.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
brenno merged commit 07383008ac into main 2026-07-29 20:18:15 +00:00
Sign in to join this conversation.
No description provided.