Repository navigation
Conversation
…me-bomb 24h du test rc2 Le test main rc2 gelait ses fixtures au NOW du module (2026-10-01T12:00Z) mais main() lisait l'horloge reelle : les commentaires fixture sortaient de la fenetre 24h des que le mur depassait 2026-10-02T11:00Z — rouge au calendrier, sans aucun commit, sur toutes les PRs ouvertes (Scripts Tests). main(argv, now=None) : seam d'injection identique au runner injectable ; le test passe now=NOW et devient hermetique. Signature retro-compatible (argv seul = horloge reelle, prouve par smoke CLI rc=1 sur PANNE gh). Validation : 17/17 passed ; controle positif now=NOW -> rc2, now=NOW+30h -> rc0 (l'injection pilote reellement la fenetre). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
|
Collision de lane sur une reference fermante (#10223). #18840: lane myia-po-2027:CoursIA-2 holds an active claim (since 2026-10-02T12:03:08Z). Release with Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle ( Les trois sorties pour passer ce gate :
Voir #10223 et |
|
Doublon concurrence — fermeture volontaire au profit de #18846 (precedent Tell c.9974). Chronologie complete : (1) 12:03Z po-2027:CoursIA-2 pose le claim sur l'issue (c.5951912118) ; (2) po-2027 livre #18843 ; (3) 12:26Z #18843 fermee en doublon au profit de #18846 (po-2023, plus propre architecturalement) ; (4) 12:31Z cette PR arrive 3e — mon preflight a rate le claim d'issue ET le check open-PRs (venant de ma propre diagnosis de l'issue que j'avais ouverte, faute classique). Verifie avant de disposer : #18846 diagnostique la meme cause racine (fixtures gelees au NOW 2026-10-01T12:00Z vs horloge reelle de main(), fenetre 24h glissante — rougie au calendrier sans commit), fix equivalent par injection (_now() monkeypatche vs mon parametre now=), memes 2 fichiers, +13/-1. Rien a salvager : la preuve du controle positif (horloge future -> rc 0) est reproductible depuis le body de #18846 si souhaite. Note pour le linkage : #18846 ne porte pas de clause Closes sur #18840 — penser a fermer l'issue au merge (ou je la ferme moi-meme au prochain cycle une fois #18846 merged, elle documente le bug constate independamment par les deux lanes). |
Grain: CI/repair -- lane myia-po-2026:CoursIA -- prev: #18831
Résumé
test_main_json_and_fail_on_findings_rc2est une time-bomb calendrier, pas une régression de code : le test gelait ses fixtures auNOWdu module (2026-10-01T12:00Z, commentaires stampés 11:00Z) maismain()lisait l'horloge réelle. La conjonction exigeant les commentaires dans la fenêtre 24h glissante, le test est passé rouge à l'instant exact où l'horloge murale a dépassé 2026-10-02T11:00Z — sans aucun commit, sur toutes les PRs ouvertes (jambeScripts Tests).La piste « refactor du runner » de l'issue était fausse : le fake runner est utilisé (la sortie du repro montre
1 PRs ouvertes scannées— le patch du global prend) ; c'estanalyze()qui rejetait la candidate, commentaires hors fenêtre.Fix
scripts/ci/soft_deadlock_detector.py:main(argv, now=None)— seam d'horloge injectable, même pattern que le runner injectable documenté dans le module.now=None→ horloge réelle (comportement inchangé pour tout appelant CLI).scripts/tests/test_soft_deadlock_detector.py: les trois appelssdd.main(...)du test rc2 passentnow=NOW; docstring documente l'incident.Historique : module + test nés ensemble en #18668 (4c55f3a) — le test était vert au merge tant que l'horloge réelle restait sous NOW+24h (les timestamps fixture légèrement futurs passent le check
>= window_start), puis a explosé au calendrier.Preuves
python -m pytest scripts/tests/test_soft_deadlock_detector.py -q→ 17 passed (0.10s), sur base origin/main 82bcea5 où le test était rouge.now=NOW→ rc 2 (finding détecté) ;now=NOW+30h→ rc 0 (fenêtre expirée = reproduction exacte du mode de défaillance d'origine).now=Noneintact) :main(['--repo', '<repo-inexistant>', ...])sansnow→[PANNE] gh pr list failedrc 1 — l'horloge réelle et le vraighsont bien appelés sans injection.Périmètre
2 fichiers :
scripts/ci/soft_deadlock_detector.py(+3/−1 : signature + branch default),scripts/tests/test_soft_deadlock_detector.py(+10/−5 :now=NOW×3 + docstring incident).Résiduel
10 autres suites
scripts/tests/gelent unNOWet leurs modules lisentdatetime.now— aucune n'est rouge aujourd'hui (la flotte CI ne montre que rc2), mais l'audit same-shape (fixtures gelées vs horloge réelle dans les autres organes CI) mérite un grain dédié si l'une redevient rouge au calendrier. Non inclus ici : one-subject-per-PR.Closes #18840
🤖 Generated with Claude Code