Skip to content

Doublon instruments audit paths-filters : le cron CI (05:37) appelle l'instrument sans reconnaissance exemptions (#15165/#15417), l'autoritaire est orphelin #15962

Description

@jsboige

Défaut

Deux instruments quasi-homonymes audient les filtres paths des workflows, et le câblé en CI est le périmé :

scripts/audit_workflow_paths_filters.py (autoritaire) scripts/notebook_tools/audit_workflow_path_filters.py (câblé CI)
Reconnaissance branches-ignore: [main] / branches excluant main oui (has_pr_target_filter_excluding_main, #15165) non
Exemptions documentées (6, #15417) oui non (set codé dur de 4-5 gates uniquement)
Verdict mesuré main 2026-09-13T11:05Z sans-filtre eligible: 0 « Unfiltered: 6 » dont 2 « optional à investiguer » = faux positifs (orphaned-delivery-scan.yml, notebook-plan-loss-gate.yml — tous deux exemptés par design, commentaires dans les yml)
Appelé par personne (hors ses tests) workflow-path-filter-audit.yml (cron quotidien 05:37, advisory anti-régression #10600) + docs/README
Features uniques recensement census/fan-out checkout hygiene (#12385 : 11 nonconforming / 33 clone machines)

Mesuré firsthand 2026-09-13 : lancer l'instrument câblé régénère docs/audit/workflow-path-filters/latest.{json,md} dans l'ancien schéma, écrasant le recensement #15417 (nouveau schéma) committé — une exécution locale suffit à faire diverger le rapport tracké du recensement de référence.

Risques

  1. Le cron quotidien advise sur un instrument qui contredit le recensement autoritaire — un futur mainteneur lisant « 2 optional à investiguer » rouvrirait du travail livré (classe candidate-delivered).
  2. La comparaison anti-régression du cron compare vraisemblablement des schémas hétérogènes (référence fix(guards,#12773): audit reconnait les exemptions documentees de paths (unfiltered eligible = 0) #15417 en nouveau schéma vs sortie instrument en ancien).
  3. La duplication est exactement l'anti-pattern « Pas de duplication » du CLAUDE.md.

Travail proposé (consolidation, pas suppression)

  1. Porter has_pr_target_filter_excluding_main() + la table des 6 exemptions documentées de l'autoritaire vers le câblé (ou l'inverse : recâbler workflow-path-filter-audit.yml vers l'autoritaire) — en citant les numéros de ligne comme preuve de préservation (consolidation 3 étapes).
  2. La feature checkout-hygiene (ci(organe,#11860): l audit quotidien des workflows ignore l hygiene de checkout — 40 workflows PR clonent 2,12 Gio sans clone partiel #12385) vit dans le câblé : elle doit survivre à la consolidation.
  3. Aligner le schéma du rapport tracké (latest.json) sur un seul schéma.
  4. Unifier les deux fichiers de tests (test_audit_workflow_path_filters.py / test_audit_workflow_paths_filters.py).

Contexte

Découvert en résolvant #12773 (voir le [RELEASED] du même cycle) : le résidu « 13 unfiltered » de l'issue est livré (eligible=0 sur l'autoritaire), mais l'instrument câblé le dément. Ne pas traiter ce défaut = laisser l'advisory quotidien contredire le recensement de référence.

Grain: MED/guard pressenti pour la PR de consolidation.

Activity

  1. jsboige commented on Sep 13, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/guard — lane myia-po-2024:CoursIA — prev: MED/notebook-python #15961

    [CLAIMED] lane myia-po-2024:CoursIA — #15962 : consolider les deux instruments d'audit paths-filters (le câblé CI scripts/notebook_tools/audit_workflow_path_filters.py sans reconnaissance exemptions vs l'autoritaire orphelin scripts/audit_workflow_paths_filters.py) — paths: scripts/notebook_tools/audit_workflow_path_filters.py, scripts/audit_workflow_paths_filters.py, scripts/tests/test_audit_workflow_path_filters.py, scripts/tests/test_audit_workflow_paths_filters.py, .github/workflows/workflow-path-filter-audit.yml

    Consolidation 3 étapes (analyser/porter avec preuves de lignes/archiver après vérification) — pas une suppression sèche.

  2. jsboige commented on Sep 13, 2026

    @jsboige
    OwnerAuthor

    Consolidation livree en #15967 — les 3 defauts de l'issue sont traites (faux positifs reconnus, schema latest.json unifie avec ratchet fail-closed, branche regression du cron schedule reveillee), preuves de preservation par numeros de ligne dans le body de la PR. Validation : 24 tests pass, eligible=0 mesure sur le repo reel, rc=1 verifie end-to-end sur l'ancien schema. La fermeture reste au coordinateur.

  3. added a commit that references this issue on Sep 14, 2026
  4. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 14, 2026
  5. jsboige commented on Sep 18, 2026

    @jsboige
    OwnerAuthor

    [ADJOINT CLOSE] Adjugée CLOSE_OK — campagne de consolidation du 2026-09-18 (mandat ai-01 2026-09-18T03:12Z, fermeture déléguée pour CLOSE_OK certains). Lot vérifié en haiku (calibration ai-01), spot-check G.1 adjoint.

    Acceptance vérifiée firsthand contre main (3 défauts couverts) :

    Spot-check adjoint : fichier présent au path exact + PR MERGED à la date citée.

    Réouvrir en citant le critère manquant si contestation.

  6. added 6 commits that reference this issue on Oct 5, 2026
  7. added a commit that references this issue on Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions