Repository navigation
ci(paths): run relevant jobs after lint and verify every skip - #471
Merged
Merged
Conversation
This was referenced Sep 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Symptôme
W1-2 / F12 : les PR de documentation et les PR échouant à Lint lançaient la
matrice complète. Cette PR est empilée sur #470 ; les trois PR temporaires
d'acceptation seront ouvertes contre cette branche et ne seront pas fusionnées.
Cause racine
Aucune classification de chemins ni dépendance à Lint. L'agrégateur autorisait
un skip par nom de job, sans vérifier que sa raison s'appliquait au run.
Changement
changesclasse code/docs/docker/workflows/deps avecdorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d(v4.0.1).Les chemins inconnus sont traités comme du code. Les jobs coûteux dépendent de
changeset de Lint ; une PR documentaire exécute ces deux jobs et CI Green.Les changements de code, dépendances ou workflows exécutent la matrice ; les
changements Docker seuls exécutent les jobs Docker.
Un validateur stdlib vérifie les sorties, le contexte, la couverture exacte des
jobs et la raison de chaque skip. Échecs, annulations et résultats manquants
restent bloquants. Le contrôle statique impose l'agrégateur
always()et lesdépendances. Les PR de forks conservent la garde du postinstall fournisseur.
Une garde refuse les PR dépassant 3 000 fichiers avant la classification, car
l'API GitHub utilisée par dorny est plafonnée.
Elle refuse aussi un compteur absent ou invalide : aucune classification
tronquée n'est acceptée silencieusement. Le filtre de branche des PR est retiré
pour couvrir les PR empilées. Dependabot groupe les mises à jour mineures et
patch par écosystème/répertoire ; les majeures restent séparées.
Preuve
Au SHA
c2f4108b, macOS ARM64 / Python 3.13.7 : gates ordonnés verts,Ruff 1 416 fichiers, craftsmanship, Pyright zéro diagnostic ; couche
scripts 825 passed, 5 skipped, 280 subtests ; suite complète
7 572 passed, 221 skipped, 280 subtests en 145,65 s.
Charge avant : 4,89 pour 10 cœurs ; disque libre avant/après : 66 GiB.
Logs locaux :
/private/tmp/cortex-green-w1-2-final-gates.log.Les tests couvrent documentation, code/documentation mélangés, Docker,
dépendances, workflows, forks, skips inattendus, annulations et sorties invalides.
La garde de liste couvre les frontières 3 000/3 001 et le refus CLI explicite.
Ces trois runs utilisent l'événement réel
pull_request. Le cas code exécute17 jobs, pour 4366 secondes cumulées (72.77 minutes), contre 23 s
pour le cas documentaire. Ces durées observées excluent les skips et l'attente,
et ne sont pas des mesures d'énergie. La CI de cette PR est également
verte, run 34035713474.
Le cas documentaire au SHA
d59bd3cae31851a6b81636d12d384650b20b58bcconfirme exactement trois jobs exécutés et 23 s de durée cumulée de ces jobs,
hors attente en file. Les timestamps des jobs ignorés ne sont pas additionnés.
Relevé brut :
/private/tmp/cortex-green-w1-2-docs-jobs.jsonl.Le cas Lint au SHA
f8ffa159bbf87f616b9ef2b1152c81efcf9baca0échoueuniquement sur l'import
mathinutilisé de la sonde. Tous les jobs coûteuxsont ignorés ; CI Green refuse ce run. Relevés :
/private/tmp/cortex-green-w1-2-lint-jobs.jsonlet/private/tmp/cortex-green-w1-2-lint-failure.log.Conformité
baseline inchangée.
pertinents, et le gate refuse un skip injustifié.
Candidats issues
La protection de main a été migrée le 2026-09-06 après les trois preuves :
CI Green (app GitHub Actions 15368) remplace les contextes CI individuels ;
CodeQL (app Advanced Security 57789) et
strict=falsesont conservés.Lecture avant/après prouve que toutes les autres protections sont identiques.
CodeQL reste indépendant de ci.yml. La taille pré-existante du
workflow n'est pas absorbée par cet item. Une PR de plus de 3 000 fichiers doit
actuellement être scindée pour cette classification exhaustive.
Runbook
Le propriétaire décide de la fusion. Les trois PR temporaires d'acceptation sont
fermées sans fusion, après consignation de leurs résultats. Aucune opération de production.