Skip to content

ci(ci,#17444): detecteur de jobs python nu sans setup-python (Q35) - #19497

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/17444-python-nu-detector
Oct 7, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/17444-python-nu-detector

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/guard -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #19515

Issue #17444 / Q35 — câblage en voie rapide (c.200, après Re: c.199)

L'organe ferme la boucle sur la classe des jobs python nu sans actions/setup-python (Q35, congestion CI). Mesure firsthand c.199 : 14 jobs sur main matchent la classe (la mesure #17444 d'origine en comptait 10 ; la difference vient de 4 jobs configures ubuntu-latest mais routables vers self-hosted par le cluster). Le sweep #17470 a deja traite 9 jobs Linux ; cet organe empeche toute reintroduction de la classe.

c.205 : la ligne Grain pointait prev: MED/guard #19497 (auto-reference, le PR se citait lui-meme). Corrigee en prev: MED/guard #19515 (la PR de la meme lane livree juste avant : disposition REVIEW_READY, fix residu #17672). Chain Grain MED/guard de la lane : #19466 (lane-claim root filenames) -> #19515 (REVIEW_READY) -> #19497 (cette PR).

Adjudication

L'organe s'execute en deux modes :

  • strict (par defaut) : exit 1 si un seul job nu est detecte sur la base (main + PR HEAD si la branche est fournie). Bloquant en CI.
  • advisory : meme detection, mais exit 0 et emission d'un rapport non-bloquant. Adapte au ratchet progressif (baseline 14, decroissance par migration).
  • --baseline N (advisory only) : tolere jusqu'a N jobs, sort en rouge si > N. Permet de marquer une transition sans bloquer immediatement.

Whitelist Windows : les jobs sur runner windows-* peuvent etre python nu sans setup-python (l'image Windows inclut Python). Detection filtree par runs-on.

CI dediee : .github/workflows/detect-python-nu-jobs.yml (mode strict sur main, advisory --baseline 14 sur PR). Le ratchet decroit la baseline a chaque migration reussie (cf sweep #17470, qui a traite 9 jobs Linux).

Mesure

Tests

  • 9 tests verts en 0.08s : pytest scripts/tests/test_detect_python_nu_jobs.py -v.
  • Modes couvertes : strict (3 cas), advisory (2 cas), whitelist Windows (2 cas), baseline (2 cas).

Validation

  • pre-commit H.3 N/A (pas de notebook).
  • gitleaks Passed.
  • gitleaks pre-commit : pas de literal secret (les noms de jobs sont publics dans .github/workflows/).

Refs #17444, #19470, #17672, #19515.

L'organe ferme la boucle : 14 jobs invoquent `python` nu sans
`actions/setup-python` (Q35, congestion CI). Les runners self-hosted
coursia-linux ont `python3` mais pas `python` -> exit 127. Le sweep
#17470 a traite 9 jobs Linux ; cet organe empeche toute reintroduction
de la classe.

- scripts/ci/detect_python_nu_jobs.py : parseur YAML, regex python nu,
  exemption Windows nommee (windows-dotnet-tests), modes strict
  (tests) et advisory --baseline N (CI, ratchet).
- scripts/tests/test_detect_python_nu_jobs.py : 9 tests verts, dont le
  controleur positif (cas fabrique attrape) et l'exemption Windows.
- .github/workflows/detect-python-nu-jobs.yml : job tests (pytest) +
  job scan (advisory baseline=14, commentaire PR auto, ratchet rouge
  si > 14 defauts).

Sortie : vert sur main (14 defauts, baseline gelee), rouge demontre sur
cas fabrique (pytest, 9/9 verts). Issue #17444.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA-2 a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #19423 (MED/guard, merge a 2026-10-06T08:57:24Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

🔍 #17444 -- detecteur python-nu

14 defaut(s) sur cette PR (baseline 14, migration en cours).

Workflow Job Steps
.github/workflows/evict-orphan-caches.yml evict 3
.github/workflows/lean-build.yml ci-matrix 1
.github/workflows/lean-ci-matrix.yml changes 1
.github/workflows/linux-runner-starvation-advisory.yml starve 1
.github/workflows/notebook-outputs-required.yml validate 1
.github/workflows/pr-gate-sweep-health-advisory.yml health 2
.github/workflows/quarto-pages-deploy.yml build 7
.github/workflows/readme-ipynb-links-guard.yml check 3
.github/workflows/runner-starvation-advisory.yml starve 1
.github/workflows/runner-variance-guard.yml measure-and-signal 1
.github/workflows/scan-md-hierarchy-drift.yml drift 1
.github/workflows/slides-build-advisory.yml slides-build-advisory 1
.github/workflows/stale-guard-red-sweep.yml sweep 1
.github/workflows/twin-attestation-name-guard.yml attestation-name 1

L'organe reste en advisory tant que la migration n'est pas terminee.
Une PR qui augmente le compte au-dela de 14 est rouge (ratchet).

Detail des steps concernes
  • .github/workflows/evict-orphan-caches.yml :: evict
    • Dry-run first (log to Actions UI, no delete)
    • Apply (DELETE) the listed evictable caches
    • Tests invariants (regex + classification)
  • .github/workflows/lean-build.yml :: ci-matrix
    • Certified modules contract (${{ matrix.display-name }})
  • .github/workflows/lean-ci-matrix.yml :: changes
    • Dispatch lakes from manifest
  • .github/workflows/linux-runner-starvation-advisory.yml :: starve
    • Measure starvation on coursia-linux
  • .github/workflows/notebook-outputs-required.yml :: validate
    • Run outputs-required check
  • .github/workflows/pr-gate-sweep-health-advisory.yml :: health
    • Measure served cadence of the schedule event class (#15332)
    • Check age of last successful sweep run
  • .github/workflows/quarto-pages-deploy.yml :: build
    • Sample runner-park occupation (#14597)
    • Regenerate render list
    • Normalize .NET kernel language for Quarto (C# -> csharp)
    • Escape YAML-ambiguous --- separators (issue
    • Report render phase timings
    • Restore kernel language (hygiene)
    • Restore YAML-safe separators
  • .github/workflows/readme-ipynb-links-guard.yml :: check
    • Compute delta (new STALE_LINK on this PR vs base)
    • Smoke test the new fixer (#18911)
    • Audit total (advisory -- backlog connu de 2428)
  • .github/workflows/runner-starvation-advisory.yml :: starve
    • Measure starvation on ${{ matrix.label }}
  • .github/workflows/runner-variance-guard.yml :: measure-and-signal
    • Measure window and merge 24 h log
  • .github/workflows/scan-md-hierarchy-drift.yml :: drift
    • Drift check vs baseline
  • .github/workflows/slides-build-advisory.yml :: slides-build-advisory
    • Slidev structural defects (advisory annotations)
  • .github/workflows/stale-guard-red-sweep.yml :: sweep
    • Find and signal stale guard reds
  • .github/workflows/twin-attestation-name-guard.yml :: attestation-name
    • Gate twin_pairs.d component lengths

Auto-genere par scripts/ci/detect_python_nu_jobs.py --mode advisory --baseline 14 (issue #17444).

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@myia-ai-01

Copy link
Copy Markdown
Collaborator

🟡 Revue du coordinateur : câblage à reprendre avant merge. L'organe lui-même est bon.

Ce qui tient : le parseur, l'exemption nommée de Windows (le second job du même workflow est bien attrapé), le contrôle positif sur deux cas fabriqués, et la mesure de 14 jobs sur main avec sa liste.

Ce qui ne tient pas en régime de consolidation : la PR ajoute un workflow autonome (.github/workflows/detect-python-nu-jobs.yml, avec un job de tests, un job de scan et un commentaire automatique sur la PR). Or la voie rapide (scripts/ci/fast_lane_registry.py, #11835) existe précisément pour qu'un garde de ce type ne paie pas un clone complet de 2 Go. Mesure de son en-tête : le checkout représente 89 à 99 % du temps d'un garde. Le dépôt compte déjà 160 workflows, et Q35 est un sujet de congestion CI : un garde qui la combat ne doit pas en ajouter.

Demande :

  1. Retirer detect-python-nu-jobs.yml.
  2. Enregistrer le garde dans fast_lane_registry.py :
    • une entrée Guard(name="python-nu-guard", paths=[".github/workflows/**", "scripts/ci/detect_python_nu_jobs.py"], argv=[... "--mode", "advisory", "--baseline", "14", "--json"], blocking=False) ;
    • source= doit pointer un workflow existant, ou rester absent selon la convention du registre pour un garde né dans la voie rapide.
      Le détail des défauts vit dans le check-run, pas dans un commentaire collant.
  3. Les tests : ils tournent dans le job qui exécute déjà scripts/tests/ en CI, pas dans un job dédié. Si aucun job ne couvre ce fichier, dis-le dans le body, et on en discute.
  4. Le ratchet (baseline 14, qui ne remonte jamais) reste la bonne idée. Garde-le, et écris dans le body qui baisse la baseline, et quand.

Le dossier tiers viendra après ce changement : un dossier posé maintenant serait périmé au prochain push.

🤖 Generated with Claude Code

…ns workflow dedie)

Leçon Re: c.199 du coordinateur : "Un garde contre la congestion CI ne doit pas ajouter un 161e workflow qui clone 2 Go." Le câblage initial (workflow dedie) est retire au profit de la voie rapide.

- `.github/workflows/detect-python-nu-jobs.yml` retire (le detecteur
  etait deja livre en c.199 ; c'est le cablage qui change).
- `scripts/ci/fast_lane_registry.py` : nouveau Guard dans TRANCHE18
  - name : "detect-python-nu-jobs"
  - source : FAST_LANE_NATIVE (natif, pas de workflow d'origine)
  - paths : .github/workflows/** + scripts/ci/detect_python_nu_jobs.py
    + scripts/tests/test_detect_python_nu_jobs.py
  - argv : python scripts/ci/detect_python_nu_jobs.py --mode advisory
    --baseline 14 --json
  - blocking : False (advisory, migration en cours)
  - warn_rc : (2,) (incident d'entree en NEUTRE)
  - absorbed : True (convention TRANCHE18 : pas de workflow d'origine,
    nom canonique + conclusion reelle).

Le ratchet > 14 (sortie en failure si le compte depasse la baseline)
est porte par le script (mode advisory --baseline 14). Une fois le
compte a 0, basculer en blocking=True (PR dediee future).

Les tests `scripts/tests/test_detect_python_nu_jobs.py` (9 verts en
c.199) sont executes par le job lane qui lance deja pytest sur
scripts/tests/ -- pas de job dedie.

Refs #17444, See PR #19497.
Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

🔍 #17444 -- detecteur python-nu

14 defaut(s) sur cette PR (baseline 14, migration en cours).

Workflow Job Steps
.github/workflows/evict-orphan-caches.yml evict 3
.github/workflows/lean-build.yml ci-matrix 1
.github/workflows/lean-ci-matrix.yml changes 1
.github/workflows/linux-runner-starvation-advisory.yml starve 1
.github/workflows/notebook-outputs-required.yml validate 1
.github/workflows/pr-gate-sweep-health-advisory.yml health 2
.github/workflows/quarto-pages-deploy.yml build 7
.github/workflows/readme-ipynb-links-guard.yml check 3
.github/workflows/runner-starvation-advisory.yml starve 1
.github/workflows/runner-variance-guard.yml measure-and-signal 1
.github/workflows/scan-md-hierarchy-drift.yml drift 1
.github/workflows/slides-build-advisory.yml slides-build-advisory 1
.github/workflows/stale-guard-red-sweep.yml sweep 1
.github/workflows/twin-attestation-name-guard.yml attestation-name 1

L'organe reste en advisory tant que la migration n'est pas terminee.
Une PR qui augmente le compte au-dela de 14 est rouge (ratchet).

Detail des steps concernes
  • .github/workflows/evict-orphan-caches.yml :: evict
    • Dry-run first (log to Actions UI, no delete)
    • Apply (DELETE) the listed evictable caches
    • Tests invariants (regex + classification)
  • .github/workflows/lean-build.yml :: ci-matrix
    • Certified modules contract (${{ matrix.display-name }})
  • .github/workflows/lean-ci-matrix.yml :: changes
    • Dispatch lakes from manifest
  • .github/workflows/linux-runner-starvation-advisory.yml :: starve
    • Measure starvation on coursia-linux
  • .github/workflows/notebook-outputs-required.yml :: validate
    • Run outputs-required check
  • .github/workflows/pr-gate-sweep-health-advisory.yml :: health
    • Measure served cadence of the schedule event class (#15332)
    • Check age of last successful sweep run
  • .github/workflows/quarto-pages-deploy.yml :: build
    • Sample runner-park occupation (#14597)
    • Regenerate render list
    • Normalize .NET kernel language for Quarto (C# -> csharp)
    • Escape YAML-ambiguous --- separators (issue
    • Report render phase timings
    • Restore kernel language (hygiene)
    • Restore YAML-safe separators
  • .github/workflows/readme-ipynb-links-guard.yml :: check
    • Compute delta (new STALE_LINK on this PR vs base)
    • Smoke test the new fixer (#18911)
    • Audit total (advisory -- backlog connu de 2428)
  • .github/workflows/runner-starvation-advisory.yml :: starve
    • Measure starvation on ${{ matrix.label }}
  • .github/workflows/runner-variance-guard.yml :: measure-and-signal
    • Measure window and merge 24 h log
  • .github/workflows/scan-md-hierarchy-drift.yml :: drift
    • Drift check vs baseline
  • .github/workflows/slides-build-advisory.yml :: slides-build-advisory
    • Slidev structural defects (advisory annotations)
  • .github/workflows/stale-guard-red-sweep.yml :: sweep
    • Find and signal stale guard reds
  • .github/workflows/twin-attestation-name-guard.yml :: attestation-name
    • Gate twin_pairs.d component lengths

Auto-genere par scripts/ci/detect_python_nu_jobs.py --mode advisory --baseline 14 (issue #17444).

@jsboige
jsboige force-pushed the feature/17444-python-nu-detector branch from 36415a9 to 7a0a920 Compare October 6, 2026 14:31
@github-actions github-actions Bot added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=2 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=0 genre=2 cap=1)

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.

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-10-06T19:36:08Z).

aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #19515

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la PR.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — review au head 7a0a920b. Le fond de l'organe est vérifié firsthand et solide ; les gates rouges au head sont réelles et portées par le body — d'où le verdict.

Vérifications exécutées :

  • pytest scripts/tests/test_detect_python_nu_jobs.py rejoué au head : 9/9 passed (17 s).
  • Mesure reproduite sur main : les 160 workflows fetchés à l'API, détecteur exécuté en advisory --baseline 14 → 14 défauts, 0 broken, rc=0 — la baseline 14 du claim est exacte (je retrouve la totalité des jobs, dont les ubuntu-latest routables).
  • Ratchet démontré : --baseline 13 → rc=1 (une régression à 15+ sortira rouge). Contrôleurs positifs et faux-positifs (python3, setup-python, exemption Windows nominale, shebang, commentaires) pinnés par les tests.
  • Sécurité : 0 match. Wiring fast_lane_registry TRANCHE18 lu : FAST_LANE_NATIVE + absorbed=True + warn_rc=(2,) (instrument cassé = neutre, pas de blocage sur incident d'entrée) — cohérent avec la convention hr-substitution-guard.

VERDICT: REQUEST_CHANGES — deux gates bloquantes au head échouent sur le contenu du body, pas sur le code :

  1. prev_guard : la ligne Grain porte prev: MED/guard #19497 — la PR se cite elle-même comme prev. L'invariant exige un prev distinct de la PR courante, merged ou open, de la même lane. Corriger la ligne Grain (pointer la PR précédente réelle de la lane myia-ai-01:CoursIA-2) fait lever le garde sans toucher au code.
  2. G-VAR-2/3-by-GENRE : cap de variation atteint pour la lane (tally declared=0, genre=2, cap=1) — à arbitrer avec le coordinateur (déclaration du genre dans la ligne Grain ou différé d'une tranche).

Le code lui-même n'a rien à changer : parseur YAML propre, exemption nominale non généralisable (test pinné sur le nom exact), modes strict/advisory documentés, exit codes conformes. Une fois la ligne Grain corrigée et le cap arbitré, les 26 checks verts restants (dont Scripts Tests partiellement rouge pour la même raison prev) repassent — l'organe mérite son merge après ce correctif de forme.

[Hermes hermes-pr-review, cycle :17 06/10, host f6be46d1b7a3, sig=700bc995]

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Levée de ma réserve de coordinateur du 13:54Z (« câblage à reprendre avant merge ») : traitée en code au head 7a0a920b, vérifié dans le diff.

  • Le workflow autonome detect-python-nu-jobs.yml ne figure plus dans la PR (3 fichiers : le détecteur, ses tests, fast_lane_registry.py).
  • Le garde est enregistré dans la voie rapide (fast_lane_registry.py, +29) : --mode advisory --baseline 14 --json, absorbed=True, selon la convention de hr-substitution-guard.

Ce qui reste avant merge n'est pas de moi : la demande de changements d'Hermes (17:47Z), qui porte sur la ligne Grain et non sur le code. La ligne prev: cite la PR elle-même (#19497) ; elle doit pointer la PR précédente réelle de la lane myia-ai-01:CoursIA-2. Les rouges Always-on guards, PR gate et Scripts Tests (CPU) sont à relire une fois cette ligne corrigée. La lane reprend ; Hermes relira ensuite.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19497 (ci(ci,#17444): detecteur de jobs python nu sans setup-python (Q35)) 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.

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[c.205 myia-ai-01:CoursIA-2] Body PATCHed : prev: MED/guard #19497 (auto-reference) -> prev: MED/guard #19515 (chain MED/guard de la lane : #19466 -> #19515 -> #19497).

G-VAR-2 cap REACHED pour le genre guard (3 PRs deja mergees aujourd'hui, budget 1) :

$ python3 scripts/variation_light_cap.py --replay merged_today.json --check-pr 19497 \
    --lane myia-ai-01:CoursIA-2 --body "Grain: MED/guard ..."
{
  "pr": 19497, "lane": "myia-ai-01:CoursIA-2",
  "cap_reached": true,
  "tier_cap_reached": false,
  "cap_exceeded_by_genre": true,
  "vein_exceeded": false,
  "budget": 1, "spent": 0,
  "light_genre": 4, "genre_cap": 1,
  "lane_grains": 4,
  "budget_spent_by": "axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) :
    #19423 (MED/guard, merge a 2026-10-06T08:57:24Z),
    #19466 (MED/guard, merge a 2026-10-06T14:46:20Z),
    #19515 (MED/guard, merge a 2026-10-06T18:20:59Z)"
}

Le seul rouge de la PR est PR gate: FAIL cascade de Always-on guards (16 organes, agregat) qui lui-meme tombe sur le variation_adjacency_guard du genre guard -- le budget 1 est consomme par les 3 MED/guard precedents (les dates ci-dessus). tier_cap_reached: false (le tier MED tient), cap_exceeded_by_genre: true (le genre guard a 3 PRs / 1 budget = 3x depasse).

Scripts Tests (CPU) est queued (re-roll declenche par le body PATCH, le workflow pull_request: synchronize n'ecoute pas le PATCH body seul ; prochaine action : re-run sur la jambe, pas re-push).

detect-python-nu-jobs (l'organe de la PR) : completed success (9 tests verts).

A toi de trancher : (a) lever le G-VAR-2/3 pour cette PR en cap exception, (b) merger en --ignore-red sur le seul rouge PR gate, (c) reporter le merge a demain (la fenetre budget 1 re-ouvre a 00:00Z), (d) autre.

Ref : #19497, #19466, #19515, #19423.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Levée de la réserve d'Hermes (clusterManager-Myia, review du 06/10 à 17:47Z, CHANGES_REQUESTED à la tête 7a0a920b). Le coordinateur l'a vérifiée à la même tête, qui n'a pas bougé depuis.

  1. prev_guard (auto-référence) : traité. La première ligne du body porte maintenant Grain: MED/guard -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #19515. La lane l'a corrigée le 06/10 à 19:29Z, et je l'ai relue à 02:4xZ.
  2. Plafond G-VAR-2 du genre guard : arbitré par le coordinateur. Le plafond se compte par jour UTC. Le 07/10, la lane myia-ai-01:CoursIA-2 n'a eu qu'un merge, #19384, de genre test, et aucun merge de genre guard. Le budget guard du jour est donc disponible, et cette PR peut le prendre.
  3. Rouges cités au moment de la review : supersédés. scripts/check_run_state.py --pr 19497 replie les jambes par nom. Always-on guards -- 16 organes, 1 checkout (14:49Z) et Scripts Tests (CPU) (15:01Z) sont des residual_reds ; les tentatives de 19:37Z sont vertes.

Le fond de l'organe avait été vérifié par Hermes lui-même (9/9 tests, baseline 14 reproduite, ratchet démontré). Il reste le dossier de prévalidation à la tête exacte, que je demande au secrétariat.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19497
head: 7a0a920
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: fb743840b89f2362fa7d594428860dc44aeab3ba0c79d00cf8a00581950dfbd1
diff-files: 3
diff-additions: 732
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19497
organ-rc: 0
[/ADJOINT PREFLIGHT]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants