Skip to content

fix(ci,#15545): exempter la fixture de contrôle positif du piège symétrique du denominator check - #15870

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/15545-slides-control-fixture-exemption
Sep 13, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/15545-slides-control-fixture-exemption

Conversation

@jsboige

@jsboige jsboige commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-ai-01:CoursIA — prev: MED/guard #15761

Le défaut : deux organes, une fixture, un rouge permanent

Shebang + dry-run advisory échoue sur main lui-même, et donc sur chaque PR ouverte, depuis 6c903ed6af. Ce n'est pas une régression d'une lane : ce sont deux organes dont les contrats se contredisent sur le même fichier.

Organe Ce qu'il exige de slides/_composition-control/slides.md
slides-composition-advisory.yml (#15545) qu'il existe à exactement ce chemin — CTRL_DIR=slides/_composition-control, copie slides.md → dev.md pour armer un défaut HORS_CANVAS déterministe. Il l'exclut de sa propre découverte par son nom (-not -path '*/_composition-control/*', grep -v '^slides/_composition-control/')
build_advisory.sh check (#8929) qu'aucun dir hors convention NN/SN ne porte de slides.md — le piège symétrique, qui attrape le deck invisible à la découverte

Le contrôle positif d'un organe était le rouge permanent de l'autre. Aucun des deux n'a tort isolément ; il manquait la réciproque de l'exclusion que #15545 s'accorde déjà à lui-même.

Le correctif, et pourquoi il est étroit

Une exemption nommée par basename exact, jamais un glob _*. Un dir préfixé _ qui porterait un vrai deck doit continuer à rougir — c'est précisément le trou que #8929 a fermé, et un glob le rouvrirait gratuitement.

Mesure — le contrôle négatif, pas seulement le vert

Un motif de détection se valide par ses faux négatifs. Trois passes sur un arbre jetable via SLIDES_DIR, plus le dépôt réel :

Cas Attendu Mesuré
fixture _composition-control seule PASS rc=0, Denominator check: PASS
+ un autre dir non-convention portant un deck FAIL rc=1, ERROR: '_zz-vrai-deck-cache' porte un deck ... #8929
dépôt réel, après correctif PASS rc=0, 17 dirs / 20 decks, 17/17 couverts

La deuxième ligne est celle qui compte : elle prouve que l'exemption n'a pas désarmé le piège, elle l'a rendu compatible avec la fixture d'un autre organe.

Portée

Shebang + dry-run advisory est non bloquant : ce correctif ne débloque mécaniquement aucune PR. Il retire un rouge permanent que trois lanes ont déjà cité ce cycle comme « rouge imputé à la base » dans leur justification de --ignore-red. Un advisory rouge en permanence n'est plus un signal : c'est du bruit qui apprend à ignorer la colonne.

Genre : guard (le script porte son propre statut d'échec, consommé par un job) — classe META, ce grain ne tient pas le plancher G-VAR-1 de mon cycle, et je le déclare comme tel.

See #15545, #8929, #8817

🤖 Generated with Claude Code

…trique

`Shebang + dry-run advisory` echoue sur `main` lui-meme, et donc sur chaque
PR, depuis 6c903ed. La cause n'est pas une regression : ce sont deux
organes dont les contrats se contredisent sur un meme fichier.

- `slides-composition-advisory.yml` EXIGE la fixture a exactement
  `slides/_composition-control/slides.md` (CTRL_DIR, copie slides.md -> dev.md
  pour armer un defaut HORS_CANVAS deterministe) et l'exclut de sa propre
  decouverte par son nom (`-not -path '*/_composition-control/*'`).
- `build_advisory.sh check` a un piege symetrique (#8929) qui refuse qu'un dir
  hors convention NN/SN porte un `slides.md` -- invisible a la decouverte.

Le controle positif d'un organe etait donc le rouge permanent de l'autre.
L'exemption est reciproque et NOMMEE : un basename exact, pas un glob `_*`.
Un dir prefixe `_` portant un VRAI deck doit continuer a rougir -- c'est le
trou que #8929 a ferme, et un glob le rouvrirait gratuitement.

Mesure, controle negatif inclus (SLIDES_DIR sur un arbre jetable) :
- fixture seule exemptee                       -> rc 0 (PASS)
- + un autre dir non-convention portant un deck -> rc 1 (FAIL, #8929 tenu)
- depot reel apres correctif                    -> rc 0, 17 dirs / 20 decks

See #15545, #8929, #8817

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

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #15214 (MED/guard, merge a 2026-09-12T00:12:43Z), #15454 (LIGHT/docs, merge a 2026-09-12T00:17:28Z), #15727 (MED/docs, merge a 2026-09-12T17:28:53Z), #15761 (MED/guard, merge a 2026-09-12T22:38:28Z), #15732 (LIGHT/guard, merge a 2026-09-12T22:38:35Z)).
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 added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Sep 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=2 genre=5 cap=3)
  • GENRE-RUN : run consecutif d'un genre LIGHT (voir signals.runs dans le log du job)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=2 genre=5 cap=3)

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 added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 24 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@myia-ai-01
myia-ai-01 merged commit d0f73ab into main Sep 13, 2026
19 of 23 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 13, 2026
…'extraction aussi (#15873)

_extract_line_candidates cherchait le mot de portee en sous-chaine, alors que
_has_strong_scope() fait le meme test en mot entier depuis #11800 (frontiere
\b, pour « inchanges ») et #12718 (lookbehind, pour « out-of-scope »). Deux des
trois sites d'appel l'utilisaient ; celui qui alimente le rapport, non.

Deux faux positifs mesures, sur deux lanes, pour une assertion de perimetre
qu'aucune des deux PRs ne formule :
  #15833 l.45 -- 'scope' dans « loadscope »  (marqueur « uniquement »)
  #15846 l.44 -- 'change' dans « changer »   (marqueur « seulement »)

Apres correctif : 0 et 0, et #15846 conserve sa vraie declaration de perimetre
(l.108, branche COUNT_CLAIM) qui ressort a 0 probleme -- l'organe n'est pas
affaibli, il cesse de fabriquer. #15870 est le controle negatif : 0 avant
comme apres.

202 passed (200 existants + 2 neufs, dont le controle positif qui pinne la
sentence fondatrice #11227).

See #15833, #15846.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#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.

2 participants