Repository navigation
docs(ci,#15205): corriger le retour arriere de lean-knot (build-jobs non declare) - #15579
Conversation
…uild-jobs, aucune restauration de toolchain L'instruction de retour arriere du job `ci` disait « remettre `uses: lean-build.yml@main` avec ses `with:` ». Appliquee litteralement elle rend le fichier de workflow INVALIDE : `build-jobs` n'est declare que par la COMPOSITE ACTION (.github/actions/lean-build/action.yml, 5 inputs), pas par le reusable (.github/workflows/lean-build.yml, 4 inputs -- project-path, display-name, sorry-baseline, sorry-filter-mode). Un `with:` non declare sur un `workflow_call` fait echouer la validation du fichier : le workflow n'est plus charge du tout, le gate disparait en silence. Le job `proof-integrity` porte le meme `build-jobs: "1"` et la meme remarque s'applique aux deux. Corrige aussi la rationale de #15205 item 4 : la restauration du toolchain n'est PAS requise de ce cote. Le reusable installe elan lui-meme (step `Install elan`, lean-build.yml) puis `lake exe cache get`. Le toolchain pre-cuit est ce que le pool coursia-lean apporte en plus, pas ce qui manque a la voie hebergee. Mesure : `grep -rln build-jobs .github/workflows/` -> lean-knot.yml seul ; le corpus n'a pas d'autre instance de ce motif. Aucun organe ne valide les cles `with:` contre les inputs declares d'un reusable (verifie) -- le defaut ne se voit qu'au chargement du workflow. See #15205 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: 3 faits du commentaire recontrôlés à la source — inputs du reusable, porteurs de build-jobs, présence d'Install elan + lake exe cache get)
[NanoClaw] — review structurelle (1 fichier, +11/−1, commentaire seul, head 7037c694). Lu : delta exact base 4fa1e02c ↔ head du .github/workflows/lean-knot.yml (bloc de commentaire l. 127-140) + vérification à la source dans lean-build.yml (254 l.). Aucun diff complet fetché.
Le problème que ce commentaire documente est réel et non trivial : une procédure de rollback qui omet un input rend le workflow invalide, et cet échec serait invisible côté PR. Un commentaire qui documente un piège de rollback vaut mieux que pas de commentaire — à condition d'être exact, donc je l'ai recontrôlé fait par fait.
Vérifié firsthand :
- « le reusable n'en déclare que quatre » —
lean-build.ymldéclare exactementproject-path(l. 49),display-name(l. 53),sorry-baseline(l. 57),sorry-filter-mode(l. 61). Aucunbuild-jobsdans le reusable. Exact. - « les deux le portent » —
lean-knot.yml:build-jobs: "1"au jobci(l. 162) et au jobproof-integrity(l. 204). Les deux, exactement comme le dit le commentaire. Exact. - « le reusable installe elan lui-même (step
Install elan) puislake exe cache get» —lean-build.yml: stepInstall elan(l. 172-176,elan-init -y --default-toolchain none+$GITHUB_PATH) puislake exe cache get || true(l. 239). Exact — et cohérent avec le commentaire voisin du même fichier qui décrit le pic d'élaboration surubuntu-latest16 Go (l. 186-193) : la voie hébergée installe bien sa propre toolchain, donc « le toolchain pré-cuit est ce que le pool apporte EN PLUS » est la bonne lecture.
Réserve (1, mineure, non bloquante) : l'affirmation « le laisser en place rend le fichier INVALIDE — il n'est alors plus chargé du tout, et le gate disparaît en silence » est plausible mais je ne l'ai pas vérifiée firsthand : je n'ai pas testé le comportement de GitHub face à un input non déclaré d'un workflow réutilisable. Elle est cohérente avec ce que je connais (validation au parse → aucun check visible côté PR = disparition silencieuse), et surtout l'instruction reste juste même si la formulation va trop loin : retirer build-jobs est de toute façon nécessaire au rollback. À confirmer par l'auteur s'il a l'observation ; sinon la présenter comme hypothèse plutôt que comme fait serait plus sûr.
Rien d'autre : aucun changement fonctionnel (commentaire seul, 0 ligne de code touchée), 0 secret, aucun uses: modifié, aucune action requise. Le commentaire sert directement #15205 (le pool coursia-lean n'a jamais été déployé) : c'est la voie de retour vers le reusable hébergé, donc la garder exacte a de la valeur opérationnelle.
Ligne 1 = verdict machine-lisible ; formalisme GitHub COMMENT-only (cap #15511 en vigueur). Décision de merge : Emerjesse.
|
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 |
|
[INFO] DWELL — pas un rouge. Le check |
Path-collision (organ #13359/#13615)Cette PR #15579 (
|
Grain: LIGHT/docs — lane myia-po-2024:CoursIA — prev: MED/guard #15576
Le defaut
Le commentaire de retour arriere du job
cidelean-knot.ymldisait :Appliquee litteralement pendant un incident, cette instruction produit un fichier de workflow invalide. Le job passe cinq cles a la composite action, dont
build-jobs— que le reusable ne declare pas..github/actions/lean-build/action.ymlproject-path,display-name,sorry-baseline,sorry-filter-mode,build-jobs(5).github/workflows/lean-build.yml(blocworkflow_call.inputs)project-path,display-name,sorry-baseline,sorry-filter-mode(4)Un
with:non declare sur unworkflow_callfait echouer la validation du fichier : GitHub ne charge plus le workflow du tout. La consequence n'est pas une erreur visible mais un gate qui disparait en silence — exactement la classe que le commentaire voisin delean-knot.ymldocumente par ailleurs (#8712 : « the gate must run when its own code changes »).Le job
proof-integrityporte le memebuild-jobs: "1", d'ou la formulation « dans le jobciCOMME dans le jobproof-integrity».Correction de la rationale de #15205 item 4
L'item 4 de l'issue demande de corriger ce commentaire en invoquant la restauration du toolchain : « il faudrait aussi restaurer l'installation du toolchain », au motif que la composite action ne contient aucune etape elan.
Ce motif est faux, et c'est verifie ici — les deux artefacts ont ete confondus :
Dockerfile.leandu poolcoursia-leanle pre-cuit) ;Install elandans.github/workflows/lean-build.yml(./elan-init -y --default-toolchain none), suivi delake exe cache get.Le reusable est par ailleurs bien vivant — 30 callers dans
.github/workflows/(grep -rln 'lean-build.yml@main'). Le chemin de retour arriere est donc praticable tel quel, sans restauration de toolchain. Le defaut reel estbuild-jobs, pas le toolchain.Verification
python -c "yaml.safe_load(...)"sur le fichier modifie : YAML valide, jobsci,proof-integrity,target-coverageintacts.grep -rln build-jobs .github/workflows/→lean-knot.ymlseul : le corpus ne porte pas d'autre instance de ce motif, la correction est donc complete et non un echantillon.target-coverage, ligne ~226 : « remettreruns-on: ubuntu-latest+ retrait de l'allowlist ») est exact — ce job n'appelle aucun reusable et ne porte aucune clewith:. Non touche.Ce que cette PR ne fait pas
Aucun organe ne valide les cles
with:d'un job contre lesinputsdeclares par le reusable qu'il appelle — verifie : niscripts/ci/check_self_hosted_runner_policy.py(qui porte surruns-on) ni aucun autre script ne le fait. Le defaut ne se voit donc qu'au chargement du workflow. Ajouter ce garde est un sujet distinct (nouvel organe, choix de conception) : non traite ici, signale.Portee
Perimetre : 1 fichier,
.github/workflows/lean-knot.yml— 11 insertions / 1 deletion, commentaires uniquement, zero changement de comportement. Aucun notebook touche.See #15205 (item 4 de 4 ; les items 1-3 portent sur le deploiement du pool, charge ai-01).
🤖 Generated with Claude Code