Skip to content

test(notebooks,#19478): couvrir l'exclusion *_output.ipynb isole - #19530

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/19478-series-finish
Oct 8, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/19478-series-finish

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 #19531

Couverture du point 2 de #19478 : un *_output.ipynb isole hors dossier _output n'est pas comptabilise comme carnet de la serie.

Re-verification firsthand du code sur main (1778966) :

  • Le code scripts/notebook_tools/check_series_finish.py ligne 130 inclut deja le filtre par suffixe de fichier :
    if p.name.endswith("_output.ipynb"):
        continue
    (Livre par feat(tools,#19297): organe check_series_finish -- finition de série mesurable #19303 ; reference explicite dans la docstring l.17-18 de l'organe et dans le commentaire l.125-129 de l'exclusion.)
  • Le commentaire l.127-129 precise : "Le matching est strict (_output.ipynb en suffixe exact), pas un sous-match (_output au milieu) -- _output_archive.ipynb est conserve".
  • La docstring l.14-18 dit deja "Le chemin principal est defini recursivement" et exclut *_output.ipynb (point 1 de l'issue, deja corrige dans la PR initiale).

Ce qui manquait : un test qui couvre le cas isole. La couverture actuelle (test_serie_exclut_archive_et_output l.435-467) ne teste que l'exclusion par dossier. Le nouveau test test_serie_exclut_fichier_output_isole couvre les 3 cas :

  • C-2-Python_output.ipynb isole a la racine de la serie : exclu (non compte)
  • C-3-Python_output_archive.ipynb : compte (suffixe exact, pas un sous-match)
  • C-1-Python.ipynb canonique : compte

Validation : 32/32 tests verts (pytest scripts/tests/test_check_series_finish.py -v au commit 9541b67). pre-commit H.3 N/A (pas de notebook), gitleaks Passed.

Critere de fermeture #19478 :

🤖 Generated with Claude Code

L'organe `check_series_finish` exclut par dossier (`_archive`, `_output`,
`.ipynb_checkpoints`) ET par suffixe de fichier (`*_output.ipynb`, ligne
130 de check_series_finish.py -- deja livre par #19303).

Le test manquant : un `X_output.ipynb` isole hors dossier `_output`
n'est pas comptabilise comme carnet de la serie. Couverture ajoutee
dans `test_serie_exclut_fichier_output_isole`, qui verifie aussi le
non-match strict du suffixe (`_output_archive.ipynb` compte).

32/32 tests verts (`pytest scripts/tests/test_check_series_finish.py -v`
au commit 1778966 + ce commit).

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

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).

@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 19530
head: 9541b67
complete: REPLACE_WITH_true
body: REPLACE_WITH_read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 020b2b5fa1acf050b8ecd38348e6afa910a6829d5cf01be505d90527e9770c33
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: REPLACE_WITH_pass_OR_fail
domain: REPLACE_WITH_pass_OR_not-applicable_OR_fail
verdict: BLOCKED
organ: REPLACE_WITH_check_adjoint_prevalidation.py
organ-command: REPLACE_WITH_python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 19530
head: 9541b67
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d2782a39f263deaeee537c273f97c8b3741011a0f9ced62e0e1d5361229ebbb1
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 3
[/ADJOINT PREFLIGHT]

@github-actions github-actions Bot added variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) and removed variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) labels Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 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) : #19384 (MED/test, merge a 2026-10-07T01:36:52Z), #19497 (MED/guard, merge a 2026-10-07T03:17:18Z), #19392 (MED/docs, merge a 2026-10-07T10:36:50Z), #19652 (MED/guard, merge a 2026-10-07T14:45:11Z)).
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-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 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-07) :

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

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 Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 30 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.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 19530
head: 9541b67
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f7328155012f075c0eae04c10b251fa1a5e611babdb7f2d87a7968d24f6db23b
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 49837d53e0cedf8cc00ca42db68b0b3b0e284e46e567ee07c152aabbb0f23eed
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0a87ee2e89ad05215b4b9a799a525cc0cc964de7ab7c1c9510e046d3c5c6a2fb
diff-files: 1
diff-additions: 30
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 19530
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5f1c8ec1865bd99a6934f6549726af294d604f4655cfbdfc161282b6446b58c7
diff-files: 1
diff-additions: 30
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 19530
organ-rc: 0
[/ADJOINT PREFLIGHT]

1 similar comment
@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5f1c8ec1865bd99a6934f6549726af294d604f4655cfbdfc161282b6446b58c7
diff-files: 1
diff-additions: 30
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 19530
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5f1c8ec1865bd99a6934f6549726af294d604f4655cfbdfc161282b6446b58c7
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
supersedes: 9
supersedes-why: le dossier BLOCKED antérieur (c.6044643322, 2026-10-07T18:52:45Z, po-2026:CoursIA-3) portait checks=BLOCKED a la meme tete d1e29a0. La pile workflows est depuis passee au vert sur tous les checks requis (passe c567 04:45Z, latest-wins-green confirme a l'instant), les surfaces-sha256 ne bougent plus, et le test isole (_output hors _output) est exactement ce que le body annonce. Re-stamp READY licite (item 27.5, nouveau commentaire).
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19530
head: d1e29a0
complete: true
body: read
comments-reviewed: 13
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: dd4e25c3223a76032504fdd132e651e26146c5839a7ae843e77f043b32bc362d
diff-files: 1
diff-additions: 30
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
supersedes: 9
supersedes-why: le dossier BLOCKED anterieur (c.6044643322, 2026-10-07T18:52:45Z) portait checks=BLOCKED a la meme tete d1e29a0; la pile workflows est passee au vert depuis (latest-wins-green re-mesure a l'instant par le gate, organ-rc 0), le diff reste 1 fichier +30/-0 (ajout pur du test *_output isole). Re-stamp stabilisateur apres deux posts courses par la race post/snapshot (c.6052453963, c.6052498901) — celui-ci est genere par --emit au compte courant.
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19530
organ-rc: 0
[/ADJOINT PREFLIGHT]

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-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