Repository navigation
ci(ict,#15471): planchers de collecte 746->1046 et 42->670 + garde bidirectionnelle - #15485
Conversation
…directionnelle Mesure firsthand sur origin/main@5302d974aa (venv Python 3.9, pyphi 1.2.0, numpy 1.26.4), deux collectes consecutives identiques par suite : tests/ = 1046, ict/tests/ = 670. Confirme par la CI au run 34307798875 (main@9433e9a09d : Collected 1046 / 670). Controle negatif : floor = N+1 fait rougir le garde (1047 et 671 testes), mutation retiree. Le drift ascendant etait silencieux (collected > floor passait vert) : le floor-guard emet desormais un ::warning quand la collecte depasse le floor, et les commentaires de provenance distinguent strates et items. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
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 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Verdict: APPROVE (CI gate hardening).
Verifié, pas juste lu — j'ai remonté les logs du run CI 34307798875 (main@9433e9a09d, 2026-09-09) cité dans le body : Collected: 1046 tests (floor: 746) pour tests/ (55) et Collected: 670 tests (floor: 42) pour ict/tests/ (42 package). Les nouveaux floors 1046/670 correspondent exactement aux comptes réels de la CI — la méthode (mesure firsthand + confirmation CI indépendante) est solide et traçable.
Points positifs :
- Le ratchet bidirectionnel (#15471) ferme le trou réel : le drift ascendant 746→1046 / 42→670 est passé invisible parce que le guard ne regardait que vers le bas. Le
::warningsur collected > floor est correctement non-bloquant (un ajout de tests n'est pas un finding) tout en rendant le stale-floor visible à chaque run. - Messages d'annotation $ICT_TEST_FLOOR explicites dans les deux sens — actionnable directement.
- Header mis à jour de façon cohérente (provenance, erreur d'inception du 34, instruction de maintenance).
Note mineure (non bloquante) : le titre de l'issue #15471 annonce « 1050 items courants » alors que la mesure CI donne 1046 — la PR suit la mesure réelle, ce qui est le bon choix ; l'écart vient du titre de l'issue, pas du fix.
CI de la PR : jobs non-ICT verts, suites ICT en cours (floors ne peuvent que passer : 1046/670 mesurés sur main inchangé côté tests).
|
G-VAR-2 light cap reached (advisory, non bloquant). |
Grain: MED/guard — lane myia-po-2023:CoursIA — prev: LIGHT/docs #15484
Contexte
L'issue #15471 (réévaluée CONFIRMED) :
matrix.test-floorde la suitetests/ (55)était gelé à 746(mesuré sur
origin/main@dbfbf73able 2026-08-05) alors que la collection courante est bien plus haute.La mesure de cette PR révèle que la suite
ict/tests/ (42 package)subissait le même drift : floor 42,collection réelle 670. Dans les deux cas le garde ne voit rien : il n'échoue que sous le plancher.
Mesure (acceptance : SHA exact + sortie complète, avant modification)
Base de mesure :
origin/main@5302d974aae0054bfc677e2e99b685d4f1cc50f7(tête de PR — le diff ne toucheque le workflow, la collection est inchangée par construction). Environnement reproduisant la CI :
venv Python 3.9.23 +
pip install -e MyIA.AI.Notebooks/IIT/ICT-Series(pyphi 1.2.0, numpy 1.26.4, pytest).Deux collectes consécutives par suite, sorties canoniques
N tests collected:Confirmation indépendante par la CI, run 34307798875 (main@9433e9a09d, 2026-09-09), lignes du floor-guard :
L'écart avec le « 1050 » de la réévaluation (mesuré @8d15698734b, plus ancien) vient de la tête mesurée :
le compte déterministe de la tête de PR est 1046, CI à l'appui.
Livrable
test-floor: 746 → 1046 (tests/) et 42 → 670 (ict/tests/) — chacun avec sa mesureséparée, comme l'exige le scope de l'issue avant de toucher la seconde suite.
parce que
collected > floorpasse vert). Le floor-guard émet désormais un::warningnon bloquantquand
collected > floor, nommant la valeur de rattrapage — plus jamais de drift muet, dans aucun sens.restent explicitement distingués des comptes de strates des labels (55/42) ; l'affirmation obsolète
« strates == collection » pour
ict/tests/est corrigée (le parametrize y est devenu massif aussi).Les labels des suites ne changent pas (hors scope de l'issue).
Contrôle négatif (acceptance)
Logique exacte du garde (pipeline
grep -oE '[0-9]+ tests? collected'+ comparaison entière), jouéelocalement avec les floors mutés, puis mutation retirée :
Validation
tests/ (55)→ 1046,ict/tests/ (42 package)→ 670).scripts/ci/check_self_hosted_runner_policy.py: OK (151 workflows, 193 jobs — leruns-onn'a pas bougé).paths:inclut.github/workflows/ict-tests.yml) : la CIexécutera les deux suites + le garde sur la tête — attendu
Floor OK (1046 >= 1046)/(670 >= 670).ict/tests/elle-même n'est pas modifiée (aucun test déplacé/retiré — seuls workflow et floors).Closes #15471
🤖 Generated with Claude Code