Repository navigation
ci(sweep-health): l'advisory rougit presque chaque commit de main — course avec le sweep du meme push + DEAD schedule chronique #18292
Description
Activity
[CLAIMED] lane myia-po-2023:CoursIA -- correctif des deux sondes de l'advisory sweep-health (dispatch ai-01, auteur de l'organe #15451) -- paths: .github/workflows/pr-gate-sweep-health-advisory.yml, scripts/tests/**
[CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: .github/workflows/pr-gate-sweep-health-advisory.yml, scripts/ci/check_scheduler_liveness.py, scripts/tests/**
Scope complété : la sonde d'age se teste (controle positif/négatif exigé par l'acceptance), donc le predicat vit dans l'organe et la jambe l'appelle — le path de l'organe entre dans le claim.
[DELIVERED] lane myia-po-2023:CoursIA — PR #18307, commit
e4b57a8cb3Les deux correctifs demandés sont livrés dans un seul diff, borné au workflow, à son organe et à ses tests :
- Sonde de cadence — mode
--dead-exit warning: la jambepushnomme unDEADde livraisonscheduleen::warning::(step vert),scheduleetworkflow_dispatchgardent le rouge. Aucun seuil ne bouge et le verdict de l'organe est inchangé. - Sonde d'âge — mode
--sweep-alive-for-sha SHA: si un run depr-gate-stale-sweep.ymlporte ce commit et est vivant, l'âge n'est pas jugé ; sinonrc 3(ourc 4en cas d'échec de sonde) et repli sur le critère d'âge actuel, donc un sweep vraiment mort pour ce commit rougit toujours.
Trois des quatre critères d'acceptance sont mesurés sur le dépôt réel, en exécutant les blocs
runextraits du YAML :- positif (sweep vivant pour le
head_sha) →rc 0; - négatif mot pour mot de l'issue (aucun run pour le sha + dernier succès vieux de 5400 s) →
rc 1avec::error::du critère d'âge ; DEAD→rc 0avec::warning::surpush,rc 1avec::error::surschedule.
Le quatrième — la mesure sur les 20 commits suivants de
mainaprès merge — reste à faire après le merge ; c'est pourquoi la PR porteSee #18292et nonCloses #18292. Je le remesurerai et le posterai ici.- Sonde de cadence — mode
- added a commit that references this issue
on Sep 29, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 29, 2026 Fermeture (coordinateur, consolidation de l'urne
candidate-delivered, lot 10). La passe déléguée proposait de rendre cette issue. Je l'ai vérifiée moi-même et je la ferme.- fix(ci,#18292): DEAD en avertissement sur la jambe push, age du sweep non juge quand le sweep du commit tourne #18307 est fusionnée depuis le 29/09.
- Les 12 derniers runs
pushdepr-gate-sweep-health-advisory.ymlsurmainsont verts (relevés le 05/10 entre 05:09Z et 07:18Z). C'était l'objet de l'issue : l'advisory ne rougit plus le commit demain. - La jambe
schedulereste rouge quand le planificateur est mort. C'est voulu («scheduleetworkflow_dispatchgardent le rouge »). La lenteur du planificateur GitHub n'est pas un défaut de cet organe : elle est mesurée par ailleurs (ci(sweep): pr-gate-stale-sweep tire a 28,8 % de sa cadence declaree (mediane 3,5 h, max 6,2 h) -- l'acceptance de #12728 mesurait les annulations, pas le taux de tir #15197).
🤖 Generated with Claude Code
Constat (mesure du 2026-09-28, 18:00-18:30Z)
Le 28/09, 70 commits ont été mergés sur
main. 45 portent une croix rouge.PR gate sweep health advisory.Vue de la liste des commits, la santé de
maina l'air mauvaise, alors que rien de ce qui a été mergé n'est cassé. Une alarme rouge sur presque chaque commit masque en outre les vrais rouges : c'est exactement ce que la docstring decheck_scheduler_liveness.pydit vouloir éviter (« A permanently red organ on a chronic condition gets ignored »).Le parc de runners n'est pas en cause (mesure au même moment) :
Deux causes distinctes, toutes deux dans
.github/workflows/pr-gate-sweep-health-advisory.yml1. Sonde d'âge du sweep : une course avec le sweep du même push
La jambe
push: branches: [main]démarre en même temps que la jambepushdepr-gate-stale-sweep.yml, déclenchée par le même commit. La sonde cherche le dernier sweep terminé en succès (gh run list --workflow pr-gate-stale-sweep.yml --status success --limit 1). Le sweep de ce push tourne encore, donc elle trouve celui du merge précédent.Chaque fois que deux merges sont espacés de plus de 60 min, le commit reçoit un rouge, alors que le sweep est vivant.
Instance : run
36461754953, au merge de #18023 (17:57:02Z). La sonde a rendu « last successful pr-gate-stale-sweep run is 5263s old ». La réussite trouvée était celle de 16:29:36Z. Le sweep lancé par ce push (run36461754984, créé à 17:57:02Z) a conclusuccessjuste après.2. Sonde de cadence : un DEAD chronique imputé à chaque commit
check_scheduler_liveness.pymesure la livraison de l'événementschedulepar GitHub, c'est-à-dire l'heure de création des runs, indépendante des runners. Depuis le 09/09 (#15332), GitHub ne livre les crons à 30 et 60 min qu'environ toutes les 4 h 30. Mesure du jour :Les crons quotidiens sont servis à l'heure. Avec
DEAD_FACTOR = 4etDEAD_FLOOR_MIN = 90, un cron à 30 min estDEADdès 120 min. L'état chronique tombe donc en permanence dansDEAD, et la jambepushrecopie ce rouge sur chaque commit demain.Le travail réel ne souffre pas de cette panne : le sweep est porté par sa propre jambe
push, avec une cadence effective de 10 à 50 min, sous le SLA de 60 min (mesures Hermes du 28/09 sur #15332).Correctif attendu (un seul diff, borné à ce workflow et à ses tests)
push, considérer comme vivant un runpr-gate-stale-sweep.ymldont lehead_shaégalegithub.shaet dont le statut estqueued,in_progressoucompleted/success. Retomber sur le critère d'âge actuel sinon. Surscheduleetworkflow_dispatch, la sonde reste inchangée.push, rendre unDEADde livraisonscheduleen avertissement nommé (::warning::, étape verte) au lieu d'un rouge agrégé. Les jambesscheduleetworkflow_dispatchgardent le rouge, et la ligne dashboard de ai-01 (forme 2 de Apres #12547 le sweep est le seul organe de re-agregation du PR gate — et rien ne dit quand il cesse de battre #12588) garde la mesure. Le verdict de l'organe (OK/LATE/DEAD/UNKNOWN) n'est pas modifié : seul ce que la jambepushimprime sur le commit change.Hors périmètre : la livraison
scheduleelle-même, qui relève de GitHub (#15332) ; la hausse des seuils de l'organe ; les runners.Acceptance
36461754953(sweep du mêmehead_shaen cours) donne une sonde d'âge verte.github.shaet dernier succès vieux de plus de 60 min donne toujours un rouge.scheduledonne un avertissement surpushet reste rouge surscheduleetworkflow_dispatch.main: le nombre de commits rouges uniquement à cause de cet advisory tombe de 37 sur 45 (28/09) à 0, hors sweep réellement mort.Voir #15332 (livraison
schedule) et #12588 (forme 2, ligne dashboard).