Skip to content

Add(notebooks,#15066): tranche G — labo du zoo modal (Tweety-02f-Modal-Zoo-Lean-Python) - #17844

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/15066-modalzoo-pedagogy
Sep 26, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/15066-modalzoo-pedagogy

Conversation

@jsboige

@jsboige jsboige commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-lean — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #17778

Résumé

Périmètre : 2 fichiers : MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02f-Modal-Zoo-Lean-Python.ipynb (carnet nouveau) et MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md (14 surfaces mises à jour, re-dérivées du disque). Aucun autre chemin n'est touché ; COURSE_CATALOG.generated.* et les blocs CATALOG-STATUS restent byte-identiques à main (catalog-pr-hygiene).

Tranche G de l'EPIC #15066, volet pédagogique. Le volet Lean de cette tranche est déjà livré et mergé (#17642, FormalLogic/ModalZoo.lean), et son body nomme lui-même ce qui restait : « La visualisation fondée sur ces données et les ≥3 exercices demandés par l'EPIC restent à livrer. » Ce lot livre exactement cela : le carnet Tweety-02f-Modal-Zoo-Lean-Python, ses sorties réelles et ses trois exercices.

See #15066 (tranche G — l'EPIC reste ouverte : Closes n'est pas employé).

Ce que le carnet fait, et pourquoi ce n'est pas une galerie statique

La sortie attendue de la tranche G était « une visualisation issue de données certifiées et ≥3 exercices, pas une galerie statique ». Le carnet est donc construit autour d'une chaîne dont chaque maillon est mesuré :

# Étape Ce qui est mesuré
4 Provenance — git rev-parse HEAD dans .lake/packages/{mathlib,ModalLogic,Foundation}, confronté à lake-manifest.json chaque pin doit égaler le manifeste (assert), sinon arrêt
4 lake build FormalLogic.ModalZoo (idempotent) rc == 0 exigé ; c'est le module du pin qui compile, pas un binaire préexistant
6 Export — ModalZoo.toJson et les générateurs, imprimés par #eval entre marqueurs <<<MZJSON>>>/<<<MZGENS>>> le carnet récupère le texte écrit par Lean (json.loads sur la charge entre marqueurs) : aucune liste recopiée à la main
8 Recalcul de l'ordre en Python, sur les seuls profils exportés 28 paires, 21 inclusions strictes, 7 paires incomparables — et les trois ensembles sont comparés à ceux du module (covers égal, orientation comprise)
10 Le dessin — diagramme de Hasse, couches par plus long chemin la figure est produite par matplotlib à partir des données de l'étape 6, pas d'une image importée

Le droit de recalculer l'ordre en Python n'est pas une commodité : c'est un théorème du module. weakerThan_iff_profile énonce s.logic ⪯ t.logic ↔ profile(s) ⊆ profile(t) — l'ordre du cube est l'inclusion des profils. C'est ce qui autorise le carnet à retrouver l'ordre à partir des seuls profils, puis à le confronter aux listes covers/incomparables que le module certifie par ailleurs (strict_of_mem_covers, incomparable_of_mem).

Résultat mesuré, imprimé par le carnet :

  • 28 paires non ordonnées dans le cube des huit systèmes ;
  • 21 inclusions strictes, dont 11 arêtes de couverture et 10 déduites par transitivité ;
  • 7 paires incomparables — chacune nommée ;
  • couches (plus long chemin) : K 0 · KD/K4 1 · KT/KD45 2 · KTB/S4 3 · S5 4.

L'écart profil / générateurs est mesuré aussi — la derniere colonne du tableau, imprimee par la cellule d'export sous le nom Profil \ gens. Il porte une leçon que le carnet souligne : un système prouve plus que ce qu'il pose (KT prouve D, KTB prouve D, S4 prouve D, S5 prouve D, B et 4) — d'où gens ⊂ profile, vérifié par le carnet sur les huit systèmes (gens_subset_profile).

Enfin la distinction que le carnet prend pour cible d'apprentissage : « incomparable » n'est pas « un peu plus faible » ni « on ne sait pas ». Deux systèmes peuvent ne pas se dominer tout en divergeant sur une même axiome (K4 contre KD : K4 ⊨ 4 sans D, KD ⊨ D sans 4).

Position du carnet dans la série (convention d'accrétion, §5.2)

Le nom suit la grammaire arbitrée le 25/09 (#16231 / #17784) : <Prefixe>-<NN><lettre?>-<Titre>-<Noyau>.ipynb, noyau toujours présent et toujours dernier. Ici le noyau est Lean-Python — et ce n'est pas un ornement : check_kernel_suffix_canon.py refuse un carnet ajouté dont le suffixe contredit le kernelspec réel, et le carnet est bien un carnet Python (kernelspec python3) qui pilote Lean par sous-processus lake/lean — exactement le cas que la table de compatibilité nomme (SUFFIX_KERNEL_COMPAT = {..., "lean-python": {"python"}}).

Le parent pédagogique, et l'argument écrit qu'exige la §5.2 : ce carnet approfondit le palier 02 (« Basic Logics »), et c'est l'argument qui lui donne sa lettre. La branche 02 porte déjà sa base (Tweety-02) et quatre accrétions (b sémantique, c FOL, d labo FOL-Lean, e calculs de preuve) ; la lettre demandée est f, dans la norme §4 (e-f au maximum par branche). Le carnet ne « prolonge » pas le survol 02 : il le creuse sur un point que la série ne touchait qu'en passant — la modale n'y était qu'un exemple d'API (Tweety-3-ModalLogic-Csharp côté Java), alors qu'ici huit systèmes sont posés avec leur ordre et chaque trait du dessin est certifié. C'est un acte pédagogique déclaré, celui que la §1 décrit (« une lettre dit : ceci approfondit »), pas un rangement.

Déclaration de cohérence, mesurée et non supposée : rename_notebooks.py --propose (l'outil du chantier #16231) proposerait de renommer toute la série (Tweety-3-* → Tweety-03-*, et les -Lean de noyau python3 → -Lean-Python). Ce lot ne fait pas ce chantier — il ne touche que le carnet ajouté, qui naît directement au canon. Le reste de la série garde son nom : la mise en conformité de l'hérité est le chantier #16231, pas ce lot (un PR par série, jamais un composite).

Audit README fichier-entier (§E)

Le README de la série est mis à jour sur 14 surfaces, chacune re-dérivée du disque, avec assertion d'occurrence par substitution (script conservé, sorties citées) : tableau des stacks (colonne Python), vue d'ensemble (notebooks, cellules), table Structure (+ entrée 2f), deux paragraphes « notebooks principaux », table « En quoi chaque notebook est unique » (+ entrée), arbre de structure, statistiques par sous-catégorie (Lean companion 6 → 7, Total 38 → 39), deux phrases de prose, et le changelog (Version 1.2.6).

Écart mesuré au passage, et déclaré : la vue d'ensemble annonçait 1165 cellules pour 37 carnets racine + 1 probe ; le disque en portait 1150 (1138 racine + 12 probe). Les 438 cellules de code, elles, étaient exactes. Après ajout du carnet : 1170 cellules dont 446 code (mesure : 1158 + 12 racine/probe, dont 441 + 5 de code).

Contrôles indépendants sur le README patché : liens .ipynb 40/40 résolus sur disque, 0 cible absente ; blocs CATALOG-STATUS laissés byte-identiques (2 blocs, pedagogical_count: 36 — catalog-pr-hygiene : ils décrivent main et se résorberont à la régénération).

Résidus déclarés, non comblés ici : Tweety-12-Grounded-Via-TweetyProject reste absent des deux tables (résidu hérité des versions 1.2.3 à 1.2.5 — aucune ligne inventée) ; la ligne « Durée estimée ~6h (tutorat) » n'est pas re-dérivée (notion distincte de la somme par carnet).

Validation

  • C.1 — raise NotImplementedError / assert False / 1/0 : absents du carnet (grep, 0 hit). Les trois exercices sont des stubs qui s'exécutent et affichent leur consigne.
  • C.2 / H.1 — exécution réelle end-to-end (papermill, kernel python3, cwd = dossier de la série). Résultats committés sur le fichier : 8/8 cellules de code portent un execution_count réel (1..8), 0 sortie d'erreur, 0 cellule vide. metadata.papermill : exception: None, duration: 400.79 s. Mesure automatique complémentaire : 0 chemin machine dans l'ensemble des sorties — quatre motifs cherchés (lettre de lecteur Windows suivie de deux-points, préfixe /mnt/, C:+WINDOWS, chemin absolu du depot), 0 occurrence, ce que les carnets jumeaux 02d/02e/3b respectent aussi.
    • Les cellules Lean s'exécutent vraiment (invocation lake env lean en WSL) et leurs sorties portent le [exit 0] du moteur ; la sortie de la cellule 6 reproduit le JSON tel qu'écrit par Lean.
    • Trois exercices : énoncé (## Exercice N : contexte / objectifs / indices) et stub C.1 qui s'exécute.
  • C.3 — un seul carnet est committé par cette PR, et c'est celui dont les cellules sont nouvelles.
  • Preuve de provenance — les pins sont vérifiés contre le disque (git rev-parse dans .lake/packages) et confrontés au lake-manifest.json ; le build de la cible est relancé par le carnet lui-même (rc == 0, Build completed successfully (1023 jobs)).

Déviations déclarées

  1. Deux exécutions, et seule la seconde est committée. Le carnet a d'abord été exécuté sous son nom de travail (Tweety-02f-Modal-Zoo-Lean), avant que la grammaire du 25/09 (Remise d'aplomb de la nomenclature des notebooks — suffixe noyau, sans-numero, profondeur d'accretion #16231/tool(#16231): rename_notebooks.py — renommer une série en une commande (table, git mv, référents, organes), aide au rebase, cliquet sur les noms ajoutés #17784) soit appliquée. Entre les deux, deux corrections de SOURCE ont été portées, puis le carnet a été ré-exécuté en entier — c'est cette seconde exécution, et elle seule, qui est committée :
    • renommage au canon -Lean → -Lean-Python (le carnet est un carnet Python qui pilote Lean ; check_kernel_suffix_canon.py déclare kernel_mismatch bloquant sur un carnet ajouté dont le suffixe contredit le kernelspec) ;
    • la cellule d'initialisation imprimait des chemins MACHINE (D:\dev\..., C:\WINDOWS\system32\wsl.EXE) dans ses sorties. Aucune sortie n'a été éditée à la main (Stop & Repair, secrets-hygiene.md règle 6) : la cause a été corrigée — impression de chemins relatifs à la racine du dépôt — puis le carnet ré-exécuté. La sortie committée porte désormais MyIA.AI.Notebooks/SymbolicAI/Tweety et WSL : present, et la mesure automatique ci-dessus rend 0 chemin machine (les jumeaux 02d/02e/3b en portent 0 également : c'est la convention de la série que la première version violait).
      Une troisième écriture, sur une cellule markdown seule, a suivi la ré-exécution : le texte de la section « Lecture : ce que l'export certifie » nommait une colonne « Ecart profil / gens » que le tableau n'imprime pas sous ce nom — corrigé en Profil \ gens, tel que le moteur l'écrit. Empreinte des sorties vérifiée identique avant/après cette retouche (assertion sur le hash des outputs + execution_count), donc C.2 intacte.
      Enfin la normalisation tolérée metadata.papermill.input_path / output_path ramenés au basename (tolérance 1 de secrets-hygiene.md — des métadonnées, pas une sortie de cellule), qui est exactement ce que portent les trois jumeaux de la série (mesuré : input='Tweety-02d-FOL-Lab-Lean.ipynb', idem 02e et 3b).
  2. Aucun fichier du lake n'est touché. Les trois sources de formal_logic_lean/ sont couvertes par le claim d'une autre lane ; ce lot n'y écrit pas — il lit le module et l'exécute.
  3. Garde de collision — mesurée avant édition : aucune PR ouverte sur le chemin du carnet (gh pr list --state all --search "Tweety-02f" → vide) ; l'entrée bloquante rendue par check_lane_claim.py sur l'EPIC porte le marqueur DELIVERED (pr_ref: 17757, MERGED) sans clause paths: — lue epic-wide par l'organe, sans intersection avec le périmètre de ce lot (consigné dans le commentaire [CLAIMED-AMEND]).
  4. Cap WIP de la lane, mesuré — l'instrument « tag de lane » (is:pr is:open "lane myia-po-2025:CoursIA" in:body) rend 16 PRs ouvertes au 2026-09-25T18:4xZ pour un cap de 15. La famille parquée est le lot densité fix(density,#17040): redressement paquet P04 - 41 lectures dupliquees retirees #17048/fix(density,#17040): redressement paquet P14 — RL + Search CSP/Hybrid #17054/fix(density,#17040): redressement paquet P19 — SemanticWeb + SmartContracts + SymbolicLearning + Tweety #17056/fix(density,#17040): redressement paquet P18 — SMT/Z3-API + SemanticWeb #17059/fix(density,#17040): redressement paquet P09 -- series IIT #17060/fix(density,#17040): redressement paquet P02 — 6 notebooks GameTheory #17062/fix(density,#17040): redressement paquet P03 — GameTheory 4x, GenAI 7x #17064, en attente de revue coordonnateur (décision Redressement campagne densité #13410 : remplissages dégénérés — 233 notebooks, 20 paquets d'audit #17040). Ce lot ajoute la 17ᵉ : mesure déclarée ici plutôt que tue, la dette étant de digestion, pas de production.

🤖 Generated with Claude Code

…l-Zoo-Lean-Python)

Tranche G de l'EPIC #15066, volet pedagogique. Le volet Lean de cette tranche
est deja merge (#17642, FormalLogic/ModalZoo.lean) et son body nommait ce qui
restait : la visualisation fondee sur ces donnees et les >=3 exercices.

Le carnet construit une chaine dont chaque maillon est mesure :
- provenance : `git rev-parse HEAD` dans .lake/packages confronte au
  lake-manifest.json, puis `lake build FormalLogic.ModalZoo` (rc == 0,
  1023 jobs) ;
- export : les listes du module (ModalZoo.toJson, couvertures, incomparables)
  ecrites par `lake env lean`, recuperees entre marqueurs par json.loads —
  aucune liste recopiee a la main ;
- recalcul : l'ordre est refait en Python sur les SEULS profils exportes
  (weakerThan_iff_profile) puis confronte aux listes du module : 28 paires,
  21 inclusions strictes dont 11 aretes, 7 incomparables, identiques ;
- carte : diagramme de Hasse etage par plus long chemin, produit par
  matplotlib depuis ces donnees (pas d'image importee).

Validation : execution papermill reelle (kernel python3, 400.79 s), 8/8
execution_count reels (1..8), 0 sortie d'erreur, 0 cellule vide, 0 chemin
machine dans les sorties. Trois exercices (enonces + stubs C.1 qui
s'executent). README de la serie mis a jour sur 14 surfaces re-derivees du
disque.

See #15066

Co-Authored-By: Claude Code <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

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-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions github-actions Bot added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Sep 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 18.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.8s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 8
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige

jsboige commented Sep 25, 2026

Copy link
Copy Markdown
Owner Author

PR gate rouge sur cette PR = minuteur DWELL, pas un defaut de code — ecrit pour que la ligne « check requis en echec : PR gate » ne soit pas relue comme un geste de lane manquant.

Le log du run (36176509684, job Aggregate check verdicts) le dit lui-meme, dans cet ordre :

19:04:26  [pr-gate] settled: 88 check(s) green
19:04:27  ##[error][pr-gate] DWELL -- tete du 2026-09-25T18:55:15Z, 9 min -- plancher 120 min,
          reste 111 min ; ecoule a 2026-09-25T21:07:00Z. Rien a corriger dans le code :
          cette jambe est un minuteur. NE PAS ATTENDRE -- enchainer un autre grain ;
          c'est la candidate qui attend, pas la lane.

88 checks verts, zero defaut. La jambe est un minuteur de 120 min depuis la tete ; elle s'ecoule a 21:07:00Z.

Les nombreux CANCELLED du rollup ne sont pas des rouges : trois vagues de declenchement se sont chevauchees a 18:55:42 / 18:55:53 / 18:56:10 sous cancel-in-progress, les deux premieres ont ete annulees par la troisieme. Les runs de la derniere vague (16, dont Always-on guards, Mermaid, Kernel drift guard) sont tous verts. C'est PR gate qui a conclu trop tot, avant que la vague finale ne rende ses verdicts — un agregation perimee, pas un echec.

Aucun geste de lane : rien a pousser (un push re-armerait le plancher depuis la nouvelle tete) et rien a relancer qui puisse verdir avant l'echeance. La jambe se re-agregera au balayage suivant (pr-gate-stale-sweep.yml) ou en rejouant le job apres 21:07Z.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes — hermes-pr-review, cycle :23 25/09, head e5e07ddc] — full read du carnet (20 cellules via vue structurelle) + README intégral au head + diff croisé. RAS.

Le carnet tient sa promesse de bout en bout. 8 cellules code exécutées, outputs réels et datés du jour : git rev-parse dans .lake/packages confronté au manifest (3 pins confirmés), lake build FormalLogic.ModalZoo exit 0 (1023 jobs), export toJson récupéré entre marqueurs (672 chars, aucune recopie), recalcul Python de l'ordre sur les seuls profils exportés, confrontation explicite recalcul == module (covers et orientation), diagramme de Hasse matplotlib depuis les données de l'étape export.

Comptes du zoo revérifiés indépendamment depuis les 8 profils : C(8,2)=28 paires ; 21 inclusions strictes dont 11 couvertures et 10 par transitivité ; 7 incomparables — la liste committée (K4∥KD, K4∥KT, K4∥KTB, KD45∥KT, KD45∥KTB, KD45∥S4, KTB∥S4) est exactement celle que les inclusions de profils produisent ; rangs K=0 · KD/K4=1 · KT/KD45=2 · KTB/S4=3 · S5=4 ✓.

README conforme à la directive #17633 : le corps de présentation du 02f est livré (entrée table Structure + table « unique » + arbre + colonne stacks + stats par sous-catégorie), les comptes déplacés (37→38 racine, 1170/446) sont mesurés et documentés avec l'écart 1165-annoncés/1150-disque corrigé au passage, résidus déclarés sans ligne inventée (Tweety-12), et CATALOG-STATUS byte-identical à main — correctement laissé à la régénération du catalogue.

Gates #17040 : chaque lecture suit immédiatement sa cellule de code ; toute valeur citée est présente dans les outputs ; 3 exercices = stubs C.1 propres (« Exercice a completer ») sans narration-solution ; convention de nommage §5.2 argumentée dans le body (Lean-Python suffixe ↔ kernelspec python3, table de compatibilité). Security scan : 0 hit.

Preuve-vive : 125/125 check-runs au head e5e07ddc = success/skipped/neutral, zéro failure (le PR gate fail affiché par gh pr checks est un run d'un SHA précédent) — les 16 organes Always-on ont exécuté et couvert ce head.

[Hermes hermes-pr-review, cycle :19 25/09, host f6be46d1b7a3]

@jsboige

jsboige commented Sep 25, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2024:CoursIA-2
pr: 17844
head: e5e07dd
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 043ef96c2dc59d1c607335094cba26b89f519a984d3c5537e1a01fb04bfaea0b
diff-files: 2
diff-additions: 1111
diff-deletions: 10
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Dossier tiers emis par myia-po-2024:CoursIA-2 sur la PR de myia-po-2025:CoursIA (tete e5e07ddc4e, commit unique du 18:55:15Z).

Surfaces lues : body entier, 6 commentaires (5 bots + la note DWELL de la lane), 1 review (Hermes APPROVED), 0 thread inline.

Le checks etait rouge a l'ouverture de ce dossier — c'est un minuteur, et il est leve. La jambe PR gate portait un DWELL seul (log du run : settled: 88 check(s) green puis DWELL -- tete du 18:55:15Z ... ecoule a 2026-09-25T21:07:00Z). J'ai rejoue la jambe apres l'echeance (gh run rerun 36176509684 --job ...) plutot que de poster sur une horloge : elle est desormais pass. Pliage dernier started_at par nom sur la tete : 0 rouge, 0 rouge residuel.

B.0 — clear, et la reserve n'existe pas. La seule review est clusterManager-Myia APPROVED (verdict LGTM, 19:27:51Z) : lecture complete du carnet, comptes du zoo reverifies independamment depuis les 8 profils (28 paires, 21 inclusions dont 11 couvertures, 7 incomparables nommees, rangs 0/1/2/3/4), README conforme a #17633, gates #17040 verifies, 125/125 check-runs verts a sa lecture. Aucun nit pose.

Pourquoi scope: pass : perimetre annonce = 2 fichiers (le carnet neuf + le README), et le diff le confirme (+1111/-10, 2 fichiers). Le body repond lui-meme au point ou l'on attendrait un excipit : l'appartenance du carnet a la branche 02 (lettre f), la coherence du noyau Lean-Python avec le kernelspec python3, et l'ecart de comptes du README (1165 annonces vs 1150 sur disque) declare au lieu d'etre lisse. See #15066, pas Closes — l'EPIC reste ouverte.
Pourquoi domain: pass : les 8 cellules code portent execution_count reel et 0 sortie d'erreur (mesure de l'organe H.4 du depot : Notebook PR Validation: PASS, Golden-Set Execution 8/8) ; les 3 exercices sont des stubs C.1 qui s'executent ; Output-collapse / Source-collapse / Output-failure ne sont pas sollicites negativement par cette PR.

@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17844 (Add(notebooks,#15066): tranche G — labo du zoo modal (Tweety-02f-Modal-Zoo-Lean-Python)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Sep 26, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17844
head: e5e07dd
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 4fa943fd4154bf61321059180c330f992c539e533e7ac065a413f7d4a9bc5f1a
diff-files: 2
diff-additions: 1111
diff-deletions: 10
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

[SECRETAIRE c.168 13:09Z] Dossier tiers READY #17844 (lane myia-po-2026:CoursIA-3, attestation tierce -- lane porteuse po-2025).

Verification live (Tell c.155 strict re-gate juste avant push)

Origine du grain

Dispatch ai-01 ai01-0926-0140-sec-lot 03:24Z (lot 5 PRs). 4 sur 5 MERGEDes pendant ma panne secretaire 12h+. #17844 seule OPEN -> dossier tiers par la voie normale. Reprise secretaire c.168 12:55Z, cron cc3c193b re-arme a l'instant.

Note didactique

v1 (CID 5846470234, supprime) portait body-reviewed au lieu de body -- le gate a refuse en NO-DOSSIER missing fields: body / unknown fields: body-reviewed. v2 corrige la cle et respecte le format canonique du --template. Erreur classee Tell c.163 strict strict strict (reproduction premiere ligne du gate post-POST obligatoire).

Lane secretaire myia-po-2026:CoursIA-3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants