Repository navigation
Fix(picker,#23025): le verdict UNREADABLE du gate GPU porte un marqueur nomme - #23027
Conversation
…ur nomme Le transport git du registre (#22755) rend UNREADABLE routinier sur un siege sans remote `gpu-ledger`. Le picker ecarte bien le grain, mais le motif tombait dans le repli `unknown-verdict` -- un motif qui pretend qu'on ignore un verdict que le ledger nomme et documente. - UNREADABLE a un marqueur nomme dans GPU_VERDICT_MARKER ; - son motif porte le geste de siege (`git remote add gpu-ledger ...`) ; - les trois lectures 'gate illisible' nomment le remote AVANT le cache local, avec un texte vrai avant et apres #22755 (le cache est l'autorite tant que le transport n'est pas en vigueur, et cesse de l'etre quand il l'est). Co-Authored-By: Claude Haiku 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 |
… page La page enumere les marqueurs que le picker peut rendre. Le marqueur nomme du verdict UNREADABLE y est ajoute, pour que la page ne contredise pas le code -- le defaut que #22939 portait sur sa propre page avant son merge. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review — tête df45c2a1 (slot récence, éligible : 0 review/commentaire non-auteur ; PR de lane locale CoursIA-2).
Rejeux exécutés firsthand
- Suite dédiée :
test_pick_idle_grain_gpu_gate.py→ 35 passed au head exact (organes + dépendances extraites par blobs,conftest.pyinclus). - Témoin inverse A (retrait de la ligne
"UNREADABLE"dansGPU_VERDICT_MARKER, la brisure déclarée du body) : 2 failed / 33 passed — exactement le compte du body. - Témoin inverse B (remède « cache local » réordonné avant le remote) : 3 failed / 32 passed — exactement le compte du body.
- Restauration → 35 passed. Les deux brisures déclarées sont reproduites au compte près : les tests portent bien le comportement, pas un silence de complaisance.
- Suites voisines (6 suites du picker) : mon labo d'extraction partielle rend 113 failed / 360 passed — mais le MÊME labo avec
pick_idle_grain.pyde la base (merge-base2b7b2a56) rend exactement les mêmes 113 failed : aucun échec introduit par la PR, les échecs sont l'artefact du labo (arbre partiel sans.git). Le compte « 508 passed » du body (environnement dépôt complet) n'est pas re-mesurable ici, je ne l'endosse pas au numeral près — mais l'invariance base↔head est prouvée là où elle compte. - Doc : la ligne ajoutée dans
docs/coordination/gpu-reservation.mdinsère le marqueur[DEFER gpu-reservation unreadable]dans l'énumération existante — cohérente avec le code (le marqueur du diff = le marqueur de la table), 1 ligne, rien d'autre. - Portée : 3 fichiers exacts (+52/0 tests, +37/−7 picker, +1/−1 doc). Aucun notebook.
mergeable: true. - Sécurité : 0 hit sur le diff (HF_TOKEN/API_KEY/BEARER/PASSWORD/SECRET/TOKEN=).
CI
29 checks success ; Scripts Tests (CPU) = cancelled pendant setup-python (job 122546307794, étape 4 annulée avant tout test — infra, non imputable au head) ; 2 advisory neutral. Pas de rouge porteur.
Verdict
Fix de nommage/motif inerte tant que #22755 n'est pas en vigueur (le body le dit), fail-CLOSED inchangé, témoins inverses reproduits au compte exact. APPROVE.
Path-collision (organ #13359/#13615)Cette PR #23027 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lu a la tete df45c2a (diff complet, 3 fichiers, +90/-8) : UNREADABLE recoit son marqueur [DEFER gpu-reservation unreadable] au lieu du repli unknown-verdict. Le remede nomme le geste de siege (git remote add gpu-ledger) et les trois lectures « gate illisible » partagent un remede vrai avant comme apres #22755. La doc du protocole liste le nouveau marqueur, et les tests couvrent le verdict et les trois lecteurs. Dossier de l'adjoint 6464430922 a cette tete. Approuve.
Grain: MED/tooling -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #22931
Fix(picker,#23025): le verdict
UNREADABLEdu gate GPU porte un marqueur nommeCloses #23025 · Cousin de #22747 (dont #22939 a livre la consultation du gate) · Part of #22456
Le defaut
Le picker consulte
debt_ledger.py check_pendingavant de proposer un grain GPU-bound. Le gate peut rendre le verdictUNREADABLE— un verdict quecheck_pendingnomme et documente (« NO source was readable : branche injoignable sur une ref perimee, remote injoignable, ou aucun snapshot local »).Le picker le traite par
GPU_VERDICT_MARKER.get(verdict, "[DEFER gpu-reservation unknown-verdict]"). Le grain est bien ecarte — le fail-CLOSED est juste — mais le motif affiche dit « unknown-verdict » pour un verdict que le ledger vient de nommer. Le lecteur voit un motif qui pretend qu'on ignore le verdict.Pourquoi ce verdict devient routinier
#22755 livre le transport git du registre. Apres ce merge,
check_pending --source auto= source primaire git : un siege sans remotegpu-ledgerne peut pas lire la brancheops/gpu-ledger, et le gate rendUNREADABLE— fail-CLOSED, parce qu'un cache local anterieur n'a pas le droit d'autoriser un lancement sur un device tenu par une autre machine.C'est exactement la situation que le dispatch de #22755 traite siege par siege (DM a po-2024, po-2027, po-2028 :
git remote add gpu-ledger ...). Tant que le motif ne nomme pas le geste, le siege ne sait pas quoi faire.Le correctif
UNREADABLEa un marqueur nomme dansGPU_VERDICT_MARKER:[DEFER gpu-reservation unreadable].git remote add gpu-ledger <url>), via une tableGPU_VERDICT_REMEDYindexee par verdict — un remede ne se deduit plus de la redaction du motif.docs/coordination/gpu-reservation.mdenumere les marqueurs que le picker peut rendre : le nouveau marqueur y est ajoute, pour que la page ne contredise pas le code (le defaut que Fix(tooling,#22747): le picker consulte le gate GPU avant de proposer un grain GPU-bound #22939 portait encore sur sa propre page avant son merge).Aucun changement de comportement de selection : le grain reste ecarte dans tous les cas.
La question
--sourcede #22939 (reponse)#22939 n'a pas a passer
--sourceexplicitement, et ne doit surtout pas passer--source local.--sourcen'existe que sur la branche Feat(coordination,#22456): le ledger GPU se publie par git et la garde porte la reservation #22755 (c'est elle qui ajoute le transport). Surmain, ou vit Fix(tooling,#22747): le picker consulte le gate GPU avant de proposer un grain GPU-bound #22939,check_pendingn'a pas ce parametre : il lit le snapshot local. L'appel de Fix(tooling,#22747): le picker consulte le gate GPU avant de proposer un grain GPU-bound #22939 est donc correct contremain, et il le reste apres le merge — le defaut de--sourceestauto, etauto= git = la source primaire.--source localexplicitement serait une regression : le cache local n'est plus une autorite (coordination(gpu-reservation): le spool ne rejoint jamais le dashboard -- 43 observations en attente, et check_pending rend un verdict perime #22456), et un verdict reduit depuis le cache est aveugle a un hold vivant ecrit par une autre machine — c'est le double-reservation exact que le transport empeche.autoporte deja le repli juste : git d'abord ; le cache local seulement si la branche n'existe nulle part (rien n'a donc jamais ete publie) ; fetch en echec = fail-CLOSED.Le point reellement actionnable n'est donc pas
--source, mais le geste de siege — c'est lui que le dispatch porte.Tests
scripts/tests/test_pick_idle_grain_gpu_gate.pytest_pick_idle_grain,_gpu_gate,_belt,test_pick_admissibility,test_pick_filters,test_pick_claim_filter,test_pick_delivered_gate)Tests ajoutes :
test_verdict_unreadable_nomme_le_geste_de_siegeUNREADABLEporte son marqueur et le geste ; il ne retombe pas dansunknown-verdicttest_gate_illisible_nomme_le_remote_avant_le_cache(3 lectures)Le second test est parametre sur les trois lectures « gate illisible » : un remede qui n'ouvrirait qu'une des deux portes echouerait.
Preuve anti-faux-positif
Brisures restaurees par copie (jamais par
git checkout --) :UNREADABLEdansGPU_VERDICT_MARKERCe qui n'est pas etabli
UNREADABLE, et le test du picker ne fait que verifier que le verdict recu est nomme. Le chemin bout-en-bout (fetch git en echec ->UNREADABLE-> marqueur) sera observe sur les sieges au premier tirage reel apres le merge de Feat(coordination,#22456): le ledger GPU se publie par git et la garde porte la reservation #22755.🤖 Generated with Claude Code