Repository navigation
Fix(tooling,#19937): check_run_state -- head resolu par REST, repli GraphQL - #19938
Conversation
…raphQL `gh pr view --json headRefOid` est GraphQL : sous throttle l'instrument mourait entierement (`instrument error`) alors que `core` etait ouvert (5000/5000) et que REST sert le meme champ. Consequence mesuree : `pick_idle_grain.py`, qui appelle cet organe, classait trois PR de la lane en « organe non lisible -- pas pu trancher, le rouge RESTE a la lane ». Une panne de transport devenait une categorie de diagnostic sur la PR. REST en tete, GraphQL en repli -- meme SHA, redondance de transport. Mesure apres correctif : #19912/#19913/#19917 passent de `instrument error` a 101/4/20 jambes lues, et le rouge REEL de #19912 (`Always-on guards` failure 12:10:46Z) etait invisible tant que l'organe etait mort. 3 tests : le fondateur (GraphQL throttle, REST debout), son inverse, et un controle negatif (les deux chemins tombes doivent lever, pas rendre vide). 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: |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lecture finale ai-01 : body, commentaires, reviews, threads et diff lus ; B.0 rc=0. Correctif REST puis repli GraphQL valide a cette tete : 219 tests passes et py_compile exit 0, controle negatif des deux transports indisponibles inclus. Aucun catalogue ni harnais modifie.
Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: DEEP/notebook-python #19933
Le defaut
scripts/check_run_state.pyresout le head d'une PR pargh pr view --json headRefOid— GraphQL. Sous throttle GraphQL l'instrument entier meurt, alors quecoreest ouvert et que le meme champ est servi par REST :Pourquoi ce n'est pas cosmetique : la panne devient un diagnostic sur la PR
scripts/pick_idle_grain.pyappelle cet organe. Le 2026-10-08 il a classe trois PR de la lane en :Une panne de transport y est lue comme une categorie de diagnostic de la PR. Cout double : le picker ne classe plus, et la lane lit « le rouge reste a la lane » la ou il n'y a aucun rouge a lire.
Ce que le correctif retablit — et ce qu'il a immediatement rendu visible
instrument error[RED] Always-on guards -- 16 organes, 1 checkout: failure @2026-10-08T12:10:46Zinstrument errorinstrument errorLe correctif s'est paye au premier run : le rouge reel de #19912 etait invisible tant que l'organe etait mort. Un instrument qui tombe ne dit pas seulement « je ne sais pas » — il retire ce qu'il aurait vu.
Portee
Les deux chemins rendent le meme SHA : REST en tete parce que c'est le transport qui survit au throttle qui a produit le defaut ; GraphQL garde en repli pour le cas inverse (endpoint
pullsindisponible, jeton sans scope). Ce n'est pas un choix de source, c'est une redondance de transport — et elle est documentee comme telle dans la docstring, pour qu'un futur lecteur ne la lise pas comme une preference.Validation
python -m pytest scripts/tests/test_check_run_state.py -q→ 15 passed (12 existants + 3 ajoutes).test_pick_idle_grain.py+test_check_run_state.py→ 219 passed.Fichiers
scripts/check_run_state.py—_head_sha(): REST puis repliscripts/tests/test_check_run_state.py— 3 testsCloses #19937
🤖 Generated with Claude Code