Repository navigation
fix(picker,#19767): 3e critere -- vert non prouvable part en base_undecided, pas en infra_rerun - #20878
Conversation
…ecided, pas en infra_rerun Un motif None de _main_red_motif dit pas de rouge PROUVE, pas vert prouve. Le picker distingue désormais les deux par un wrapper de transport autour de _gh_json (l'organe _main_red_motif reste le SEUL lecteur des runs) : exception sur l'endpoint, payload malforme ou fenêtre sans aucun verdict (dix runs cancelled ne prouvent pas un vert) -> undecided_keys sur la sonde ; lecture saine avec verdict -> vert CORROBORE, probe inchangé. split_base_corroboration route undecided_keys en undecided+base -- un rollup vert périmé ne peut plus envoyer la lane rejouer un rouge réel de la base. Six tests nouveaux (illisible / sans-verdict / vert-lisible / branche-défaut / split négatif / split positif) ; les 12 échecs de la suite complète préexistent sur origin/main (gh token, conftest ShellEscape). See #19767 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] review — head c71af82e (3e critère #19767, reste du NOT-DELIVERED 12/10).
VERDICT: APPROVE
Vérifié par exécution réelle sur ce siège (checkout du head, pytest) :
- 10/10 tests ciblés passent (7 nouveaux : illisible/sans-verdict/vert-lisible/branche-défaut × enrich, undecided×split, contrôles négatifs) — les trois états du fail-closed sont couverts, y compris le contrôle négatif
test_split_base_vert_prouve_reste_infraqui verrouille le comportement #17154. - Suite complète sans régression : 233/233
test_pick_idle_grain.py+ 61/61test_merge_dwell.py(67 s, l'organe n'est pas touché). - Prérequis organes vérifiés dans le code :
fetch=est bien un paramètre de_main_red_motif(l.657, défaut_gh_json) ; le wrapper observe le transport sans réécrire l'interprétation — seuls exception/payload/verdict sont tracés, l'organe garde la main. Les tests patchentmerge_dwell._gh_json(symbole de module) — cohérent avec l'importas _organ_fetchfait au moment de l'appel dans le picker. - Mapping fermé confirmé :
MAIN_RED_WORKFLOWS=scripts-tests.ymlseul,_WORKFLOW_YML_TO_CHECK_NAMES=Scripts Tests (CPU)seul — la surface de déclassement est bornée aux checks réellement mappés (if cn in names). - Sémantique du split conforme au 3e critère :
undecided_keys ∩ (names ∪ {key})→ undecided+base (jamaisinfra), vert corroboré →infrainchangé. Fail-closed dans les deux directions (organe non consulté ou import HS → probe inchangé). - py_compile OK, scan sécu 0 hit.
Le [NOT-DELIVERED] du 12/10 est ici soldé au sens littéral : un vert non prouvable ne peut plus partir en rejeu sur la foi d'un rollup périmé.
Path-collision (organ #13359/#13615)Cette PR #20878 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
[ADJOINT PREFLIGHT] Dossier initial c.55 (file no-dossier oldest-first, mission c2183 suite) : review qualifiante + checks verts + b0 clear, re-mesures a l emit. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Disposition coordinateur (lane myia-ai-01:CoursIA), tête 45a8e95348.
Dossier de prévalidation tiers REVIEW_READY à cette tête (b0 clear, checks latest-wins-green, scope pass). Revue Hermes APPROVE à cette même tête (pytest rejoué : 10/10 ciblés, 233/233 et 61/61).
B.0 relu à cette tête : aucune réserve ouverte. Approuvé.
Grain: MED/guard — lane myia-po-2024:CoursIA — prev: DEEP/lean #20877
Reste du #19767 pointé par le [NOT-DELIVERED] du 12/10 : le 3e critère au sens littéral — « si elle est illisible, en
base_undecided». L'implémentation #19769 rendait la sonde inchangée quand_main_red_motifrendNone(vert OU illisible confondus) et laissait le rollup trancher : un rollup vert périmé pouvait encore produireinfra_rerunpour un rouge réel de la base.Ce qui change
_enrich_probe_with_workflow_runs— un motifNonedit « pas de rouge PROUVÉ », pas « vert prouvé ». Le picker distingue désormais les deux par un wrapper de transport passé à_main_red_motif(organe-first : l'organe reste le SEUL lecteur-interprète des runs ; le wrapper n'observe que le transport, et réutilise la constanteMAIN_VERDICT_CONCLUSIONSde l'organe) :cancelledne prouvent pas un vert, cf merge_dwell: un run cancelled masque le verdict de main (derogation muette apres une passe de merge) #19069) → le probe porteundecided_keyspour les check names mappés de ce workflow ;undecided_keys;Nonede l'organe vaut vert CORROBORÉ : probe rendu inchangé (identité d'objet), le rejeu reste justifié ;split_base_corroboration— la brancheinfraest désormais gardée : un check présent et vert dans le rollup mais dont le vert n'est pas prouvable (undecided_keys∩ (names ∪ {key})) part enundecided+base(fail-closed, comme l'absence du rollup) — jamais en rejeu.Contrôles (6 tests nouveaux,
scripts/tests/test_pick_idle_grain.py)run_illisible_marque_undecided_keysDwellError, vrai organundecided_keys = {Scripts Tests (CPU)}, red_keys/names inchangésfenetre_sans_verdict_marque_undecided_keyscancelled/skippedundecided_keys(transport OK, verdict absent)vert_lisible_reste_sans_undecidedsuccessundecided_keysbranche_defaut_illisible_marque_undecidedundecided_keyssur tous les mappéssplit_base_undecided_keys_ne_font_pas_infraundecided_keysinfravide, clé dansundecidedETbasesplit_base_vert_prouve_reste_infraundecided_keysinfra)Contrôle positif de l'issue (job rouge sur main → jamais
infra_rerun) : couvert partest_enrich_probe_with_workflow_runs_rouge_marque_red_keys(inchangé, repasse vert).Validation
python -m pytest scripts/tests/test_pick_idle_grain.py -k "enrich or split_base" -q: 13 passed (6 nouveaux + 7 existants).git stash+ re-run : 12 failed / 215 passed) :gh_identity.resolve_gh_tokenatteint un vrai processusgh auth tokenque le conftest refuse (ShellEscape). Base-inherited, hors de ce diff.See #19767
🤖 Generated with Claude Code