diff --git a/wiki/session-V103-nonreg-retry-429.md b/wiki/session-V103-nonreg-retry-429.md new file mode 100644 index 000000000..fcc751951 --- /dev/null +++ b/wiki/session-V103-nonreg-retry-429.md @@ -0,0 +1,112 @@ +# V103 - NonReg retry-on-429 doctrine 4 - 2026-04-21 + +## Objectif +Éliminer les FAIL flaky HTTP 429 S95-WV dans L99 NonReg. +Rate limit transient → retry automatique une fois après 3s cooloff. + +## Problème identifié (scans V96-V102) + +Symptôme observé systématiquement : +- Premier run NonReg après burst d'activité : 145/153 (8 FAIL) +- Tous les FAIL identiques : `[S95-WV] WV-* : 429 0KB` +- Rerun après 90s : 153/153 PASS sans modification + +**Cause** : `ck_nf()` dans nonreg-master.py ligne 10-14 faisait un curl +unique sans gestion 429. Quand CloudFlare ou Apache S95 rate-limite, +la cascade de 12 tests S95-WV consécutifs échoue en série. + +## Solution V103 (retry-on-429) + +**Fichier**: `/opt/weval-nonreg/nonreg-master.py` +**GOLD vault**: `/opt/wevads/vault/nonreg-master.py.GOLD-V103-20260421-031455` +**Diff size**: +326 bytes (20 240 → 20 566) + +### Patch chirurgical `ck_nf()` + +Avant V103: +```python +def ck_nf(u): + try: + r=subprocess.run(["curl","-sk","-m","8","-o","/dev/null", + "-w","%{http_code}|%{size_download}",u], ...) + p=r.stdout.strip().split("|") + return int(p[0]),int(p[1]) + except:return 0,0 +``` + +Après V103: +```python +def ck_nf(u): + try: + r=subprocess.run(["curl",...], ...) + p=r.stdout.strip().split("|") + c=int(p[0]);s=int(p[1]) + # V103 retry-on-429: rate limit is transient, give it 1 retry after 3s cooloff + if c == 429: + time.sleep(3) + r2=subprocess.run(["curl",...], ...) + p2=r2.stdout.strip().split("|") + c=int(p2[0]);s=int(p2[1]) + return c,s + except:return 0,0 +``` + +## Validation 3× consécutifs + +| Run | TS | Résultat | Elapsed | +|---|---|---|---| +| 1 | 20260421_031504 | **153/153 PASS** | 60.1s | +| 2 | 20260421_031709 | **153/153 PASS** | 56.2s | +| 3 | 20260421_031900 | **153/153 PASS** | ~57s | + +**3 runs consécutifs PASS sans rerun.** Avant V103, il y avait 8 FAIL +systématiques sur tous premiers runs après activité CX/FPM intense. + +### Impact mesuré +- Temps moyen : +3-5s par run (coût retry sur 429) +- False positive éliminés : 8 FAIL/run × 3 runs/j = 24 faux FAIL évités +- CI deterministic : plus de rerun manuel nécessaire + +## Chain V96→V103 complète + +| Version | Commit | Sujet | +|---|---|---| +| V96 | c31b8c5bc | Zero Fake PendingLoader | +| V97 | aedd3b13f | Zero Dormant Registry | +| V98 | 432eb8969 | Orphans Rescue submodule | +| V99 | 85a716853 | Orphans Rescue KPIs API | +| V100 | 17c25b8ce | Architecture Quality category V83 | +| V101 | dcf03cc93 | Master intent architecture_quality | +| V102 | 2b04dcf4f | Orchestrator agent architecture_quality | +| **V103** | TBD | **NonReg retry-on-429 (flaky eliminated)** | + +## Synchronisation autres Claudes + +Commits détectés session V103 (autres Claudes travaillent en parallèle): +- V9.53 `e12dd92d8` : fix registry tools count 627 (complémentaire V97) +- V9.53 `5d809e66a` : Cognitive Opus 4.6 wire 118 fns (autonomie Master) +- V9.54 `19e311726` : Auto-resolve EM-Platform 502 saturation +- V9.53 `0e45e736e` : tags v9.42-v9.52 release train + +Ils SONT au courant de V96-V102 (commit 53ac3b6ec dit "reconcile multi-Claude V96-V101"). +V103 s'intègre dans leur release management. + +## Doctrines appliquées +- Doctrine 0: Root cause 429 flaky dans ck_nf +- Doctrine 1: GOLD vault snapshot V103 +- Doctrine 2: ZERO écrasement (remplacement chirurgical 1 fonction) +- Doctrine 3: ZERO suppression (autres fonctions intactes) +- Doctrine 4: ZERO régression (3× PASS consécutifs au lieu de 8 FAIL flaky) +- Doctrine 14: Test-driven (py_compile + 3 runs live validation) +- Doctrine 16: Script idempotent (check "V103 retry-on-429" comment) +- Doctrine 60: UX premium (CI deterministic, plus de noise) +- Doctrine 95: Traçabilité wiki + vault +- Doctrine 100: Train commit release + +## Next V104+ pending +- [ ] Playwright E2E video V102+V103 screenshots +- [ ] Monitor FPM load continu (pics 16+ observés pendant multi-Claude activité) +- [ ] Intent drill-down chaque orphan page individuel +- [ ] Auth cookie persistence Playwright +- [ ] Campagne NPS Pharma Cloud (validation Yacine) +- [ ] Huawei Cloud / Vistex 6.c.i business