Skip to content

docs(ci,#15770): name the sweep's measured trigger roles -- push heartbeat nominal, cron backstop - #16077

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/15770-sweep-routing
Sep 16, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/15770-sweep-routing

Conversation

@jsboige

@jsboige jsboige commented Sep 14, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/tooling — lane myia-po-2026:CoursIA — prev: DEEP/notebook-dotnet #16071

Objet

#15770 mesure (2026-09-12, en incident) trois faits : le schedule horaire servi ~1 fois sur 5, 25 runners sur un seul hote, et le sweep en file 12+ min sur le pool le plus contendu. Le claim de depart visait les pistes 1+2. La mesure d'aujourd'hui refute la piste 1 : la file s'est resorbee sans changement de routage. Ce qui reste livrable en code est la seconde moitie de la piste 2, que l'issue formule elle-meme : « accepter que le dispatch manuel coordinateur soit le chemin nominal et le dire dans le fichier ». La mesure precise ce que « nominal » veut vraiment dire — ce n'est ni le cron ni le dispatch, c'est le heartbeat push.

Mesures (fresh, 2026-09-14T00:20Z)

Fenetre 24 h, 100 runs du workflow (gh run list --workflow pr-gate-stale-sweep.yml --limit 100) :

declencheur tirs role mesure
push (heartbeat main) 89 chemin nominal
schedule (24 declares) 5 backstop best-effort (ecarts servis : 341 / 268 / 194 / 178 min)
workflow_dispatch 6 echappatoire coordinateur
  • 54 sweeps reussis en 24 h, ecart median 11 min entre succes (min 0, max 145).
  • 4 ecarts > 60 min : le residuel des heures creuses, que le backstop cron et le dispatch manuel existent pour absorber.
  • File (created -> started) sur les 4 derniers succes : 25 / 34 / 62 / 136 s, exec 350-540 s. Le « encore queued 12 minutes plus tard » du 2026-09-12 etait le regime d'incident, pas le regime courant.

Ce que fait la PR (et ce qu'elle ne fait pas)

+18/-1, un seul fichier (pr-gate-stale-sweep.yml), commentaire uniquement dans le bloc on: : le bloc nomme le role mesure de chaque declencheur (push = nominal, cron = backstop heures creuses, dispatch = echappatoire), enregistre les chiffres ci-dessus, et documente pourquoi aucun re-routage n'est justifie aujourd'hui :

Aucun changement comportemental : cron: '7 * * * *', push: branches: [main], runs-on, timeout-minutes et le bloc jobs sont byte-identiques (verifie par relecture du YAML parse : triggers schedule/push/workflow_dispatch, runs-on: [self-hosted, coursia-ephemeral, coursia-linux], timeout-minutes: 15).

Pourquoi la piste 1 est retiree plutot que livree

Le claim promettait de valider la candidate GitHub-hosted « contre les besoins reels du job avant ecriture ». La validation l'a tuee deux fois : le mandat de cout l'interdit, et la file qu'elle devait reparer n'existe plus (25-136 s). Re-router vers un pool sain un job qui n'attend plus serait du geste speculatif sur du CI partage — le meme type de geste que l'issue elle-meme condamne quand elle refuse de « ralentir la production ».

Acceptance de l'issue, etat rendu

  1. « Gate annule re-agrege en < 1 h sans geste manuel » — tenu en periode chargee (54 succes/24 h, median 11 min) ; non garanti en heures creuses (4 ecarts > 60 min) — c'est le role declare du backstop cron et du dispatch.
  2. « Mesure = ecart created_at -> started_at » — rendu : 25-136 s sur les 4 derniers succes.
  3. « Cadence effective du schedule mesuree sur 24 h vs 24 tirs declares » — rendu : 5/24, ecarts 178-341 min.

Piste 3 (repartir les runners sur un second hote) reste ouverte et materielle — hors de la portee de cette PR, avec l'utilisateur/coordinateur.

Perimetre

Cette PR touche un seul fichier : .github/workflows/pr-gate-stale-sweep.yml (workflow « PR gate stale-verdict sweep »). Aucun autre chemin, aucun autre workflow.

See #15770

🤖 Generated with Claude Code

…tbeat nominal, cron backstop

24h measurement (100 runs): push heartbeat 89/100 fires, 54 successes,
median 11 min between successes; schedule served 5/24 (gaps 178-341 min);
queue 25-136 s on the last four successes. Comment-only change: cron,
push, runs-on and the job block are byte-identical.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16077 (docs(ci,#15770): name the sweep's measured trigger roles -- push heartbeat nominal, cron backstop) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[stale-guard-red] Scripts Tests (CPU) -- rouge date de la base 63ae8b07c123, ANTERIEURE au fix df5b2ebccc47 du garde sur main (garde vert a sa version courante).
Remede : gh pr update-branch 16077 (recalcule la base). NE PAS gh run rerun : gh run rerun rejouerait la base gelee 63ae8b0 (le fix df5b2eb n'y est PAS) et rendrait le meme rouge ; seul gh pr update-branch recalcule la base.

@myia-ai-01 myia-ai-01 added the stale-guard-red Rouge datant d'une base anterieure au fix du garde (sweep #13321) label Sep 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-14) :

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@myia-ai-01
myia-ai-01 merged commit fcf0e6a into main Sep 16, 2026
24 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-guard-red Rouge datant d'une base anterieure au fix du garde (sweep #13321)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants