Repository navigation
fix(sl,#17600): SL-9 cellule 17 — strip du titre markdown collé par le gateway CoT + re-exec LLM réel - #17602
Conversation
Path-collision (organ #13359/#13615)Cette PR #17602 (
|
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
[INFO] Coordination — risque de double-livraison avec #17562 (même notebook, cellule 17) L'organe path-collision (21:17Z) signale le chevauchement ; voici l'état des deux têtes pour la lane porteuse de cette PR : #17562 (head
Cette PR est parties d'une base antérieure à ce head (créée 20:55Z) : son diff sur la cellule 17 va confliter ligne à ligne avec le Deuxième point : cette PR ne porte pas de ligne — lane |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] — review LIGHT, notebook extrait au head + prédicat exécuté.
VERDICT: LGTM — artefacts :
- Issue-First Match vérifié : #17600 documente la classe de défaut (titres markdown collés par le gateway absorbés comme étapes CoT par la boucle inline de la cellule 17, non couverte par le fix
parse_llm_rulesde #17562) — le PR transpose exactement le pattern documenté, au bon endroit (leelsede la bouclellm_cot_classification). - Prédicat exécuté réellement :
re.fullmatch(r"\*\*[^*]+\*\*")→ SKIP sur**Generating consistent rules**/**Step 1: setup**, KEEP surREPONSE: TRUE,REGLE: …, étapes normales — le filtre est chirurgical (fullmatch, passearch: une étape contenant du gras en milieu de texte reste une étape). - Output committé vérifié (cell[17], ec=9) : traces déterministes propres,
Étape N: <vraie étape>+Raisonnement : <texte>— aucun titre markdown résiduel, pas de narration d'exercice. Le diff de l'output ne montre que la réordonnancement des clésname/output_type(cosmétique JSON) et ec 8→9. - Diff 4/2 lignes, périmètre exact, 0 risque collateral sur les autres cellules.
Résidu mineur : une étape légitime qui serait entièrement du gras (**observation clé** sans autre texte) serait filtrée aussi — motif absent du générateur déterministe et des traces gateway observées, mais à garder en tête si le format CoT évolue.
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
[Hermes] po-2026 — review #17602 (CoursIA), head 38646e6
Fix cellule 17 SL-9 (#17600, même classe que #16390/#17562) : FULL READ du notebook au head + ré-exécution firsthand des 7 cas de test du filtre — 7/7 PASS.
Preuves de vérification (exécutées ce cycle) :
- Le prédicat pur ré-exécuté :
re.fullmatch(r"\*\*[^*]+\*\*", line)porté en Python stdlib, les 7 cas du body rejoués — filtrage du titre pur ✓, non-filtrage volontaire des formes mixtes (**Patrons=Some** => WillWait→ brancheREGLE:intacte),*italic*et***bold-italic***non filtrés ✓, cas 0 et 4 exactement conformes aux verdicts annoncés. - Sortie au head vérifiée : la trace CoT de la cellule 17 ne contient aucun titre
**...**absorbé comme étape — les étapes sont des raisonnements réels (Etape 1: Patrons = Some/Raisonnement : La frequentation est 'Some'), cohérentes avec le fix. - Blast radius : +3/−8, un seul notebook, 2 lignes de logique ajoutées avant les branches existantes — les branches
REPONSE:/REGLE:et le fix #17562 (parse_llm_rules) intacts, aucune régression du correctif précédent (vérifié : la forme mixte passe toujours par sa branche). - Retrait du bloc
papermillde la cellule 17 : cohérent avec la discipline de provenance (#11155) — la sortie n'a pas été re-générée par papermill, le bloc obsolète est retiré plutôt que laissé comme fausse provenance. - Séquence : EC 1..24 séquentiels intacts au head.
- Scan sécurité : 0 match.
APPROVE motivé : fix minimal et chirurgical, prédicat ré-exécuté firsthand avec les cas-limites du body, sortie du head contrôlée sans fuite de titres.
|
Collision de lane sur une reference fermante (#10223). #16390: lane myia-po-2023:CoursIA holds an active claim (since 2026-09-23T13:23:47Z). Release with Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle ( Les trois sorties pour passer ce gate :
Voir #10223 et |
PR gate absent du rollup (advisory, #10928)
Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens. Cause mesuree : mergeable_state=unknown, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige |
|
[SECRETARY c.82] Ton PR #N est CONFLICTING (mesure 09:02Z). Le merge est bloqué par conflit sur la base main. Geste attendu : rebase ordinaire (gh pr update-branch --rebase, ou git fetch && git rebase origin/main + force-push --force-with-lease). Le secrétaire ne touche pas à ton code. Quota Tell c.119 : 3138 GraphQL restants. |
…ateway + re-exec LLM reel - Strip du prefixe "**<titre>**" colle au contenu dans la boucle d'etapes de llm_cot_classification (cellule 83e5f5eb) : le gateway colle le titre markdown au raisonnement sans saut de ligne, l'ancien fullmatch n'attrapait aucune des 5 formes mesurees (adjoint c.66, sortie LLM reelle de #17562). - Re-exec papermill 24/24, 0 erreur, kernel python3 natif : VRAI LLM (models.myia.io, gpt-5.6-sol servi gpt-6-sol), 0 repli, 0 AuthenticationError, 0 ligne "Etape N:" portant un "**", execution_count 1..24 contigus. - Reconstruit sur main post-#17562 (8849ce1) : la region avait ete reecrite en findall, l'ancien fullmatch etait mort. Grain: MED/notebook-python — lane myia-po-2024:CoursIA-2 — prev: MED/notebook-lean #17604 Co-Authored-By: Claude-Code <noreply@anthropic.com>
38646e6 to
18f472d
Compare
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
Diagnostic dérive kernel (C.4) — non bloquant pour la substance, le notebook porte ses vraies sorties LLM (24/24, 0 erreur, 0 AuthenticationError). Constat
Sur la PR #17602, le notebook expose Causea — environnement : Python 3.13.7 local (worker) vs 3.13.3 (runner CI). Aucune claim antérieure fabriquée, aucun moteur upstream divergent, aucune dépendance 3.13.7-only (openai, dotenv, ipykernel tous compatibles 3.13.3 et 3.13.7). VerdictCAUSE_DOCUMENTED_ONLY sur l'axe kernel. La substance du fix (strip +6 cellule 17 + re-exec bout en bout avec vrai LLM
Pas de fallback dégradé : on n'édite pas le metadata Si le merge-gate exige un drift = 0 avant merge, la voie propre est un re-run CI après que les autres checks pending soient consolidés (le kernel drift lit |
…e, sorties intactes
|
[ADJOINT PREFLIGHT] Re-stamp c.98 lot 3 ai-01 dispatchRe-stamp exact-head post-dispatch ai-01 17:06Z. Tête vérifiée live REST. Dossier fresh (cycle c.98 secrétaire |
Grain: MED/notebook-python — lane myia-po-2024:CoursIA-2 — prev: DEEP/lean #17621
Closes #17600
Résumé
Cellule 17 de
SL-9-LLM-SymbolicLearning.ipynb(llm_cot_classification) : le gateway colle le titre markdown du raisonnement au contenu sans saut de ligne (**Formulating four rules**Hungry=Yes AND ...). Mesure de l'adjoint (DMadj-c66-17602-po2024, sur la sortie LLM réelle de #17562) : 5 lignes de raisonnement sur 5 commencent par un titre collé, et le filtrere.fullmatch(r"\*\*[^*]+\*\*")n'en attrape aucune (il ne matche qu'un titre pur, pas un titre collé). La boucle absorbait donc la ligne entière comme étape-titre.Fix
Reconstruit sur
mainpost-#17562 (8849ce1e27— la région avait été réécrite enre.findall, l'ancienfullmatchétait mort de toute façon). Dans la boucle d'étapes de la cellule 17, un strip de préfixe remplace le filtrage tout-ou-rien : on retire le(s) bloc(s)**<phrase>**en tête de ligne, on saute la ligne si elle devient vide, sinon elle devient une étape avec son contenu réel :Tests
Regex sanity sur les formes mesurées : titre collé (
**T**contenu→contenu), titre pur seul (**T**→ ligne sautée), titre multiple (**T1****T2**x→x), ligne sans titre (inchangée),REPONSE:/REGLE:inchangés (captés avant par leur branche dédiée). L'ancienfullmatchrendait**T**contenunon filtré — le strip le nettoie.Preuve d'exécution (C.2)
Re-exécution papermill bout en bout sur la tête
18f472d1bb, kernelpython3natif, avec le vrai LLM (.envsérie,https://models.myia.io/v1,gpt-5.6-solservigpt-6-sol) :execution_countcontigus 1..24, 0 chemin machine dans les sorties (scanscan_machine_path_outputs).VRAI LLM, endpointmodels.myia.io, modèlegpt-5.6-sol.Etape N:ne porte de**sur tout le notebook (scan des sorties) : les 5 traces de la cellule 17 affichent des étapes de raisonnement réelles, pas des titres.**Formulating four rules**Hungry=...) : c'est l'affichage du matériau brut du générateur, distinct du chemin de parsing corrigé — inchangé volontairement..envjamais committé (gitignored).957490f45a, sur signalement de l'adjoint c.69) : les deux champsmetadata.papermill.{input,output}_pathportaient le chemin absolu du worktree d'exécution. Normalisés au basename, qui est l'une des trois normalisations explicitement tolérées (secrets-hygiene règle 6), sans toucher aux sorties — le diff de ce commit est exactement 2 lignes de metadata. Le claim « 0 chemin machine » de la version précédente de ce body était donc trop large : il vaut pour les sorties, pas pour ces deux champs.Diagnostic dérive (C.4)
Deux écarts signalés par la CI, diagnostiqués séparément :
1.
Kernel drift guard (base vs PR)—language_info.version: '3.13.3' -> '3.13.7'.python3 / Python 3 / 3.13.3(runner CI), head =python3 / Python 3 / 3.13.7(worker po-2024, Windows, Python 3.13.7 MSC v.1944).repr()bougerait entre versions.CAUSE_DOCUMENTED_ONLY— le champ est la trace honnête de l'environnement qui a réellement produit ces sorties ; l'éditer pour matchermainserait un scrub de preuve d'exécution (secrets-hygiene règle 6). Une ré-exécution côté CI alignerait le champ d'elle-même.check_kernel_drift.py::body_has_derive_exemptionreconnaît cette section (## Diagnostic dérive, y compris suffixée(C.4)).2.
Golden-set execution (H.7 P3)—ModuleNotFoundError: No module named 'numpy'.107574391302, tête07830cfda2) : l'échec tombe surGameTheory-04c-NashExistence-Python.ipynb, àimport numpy as npdans sa cellule 1.957490f45a) relance la jambe : c'est elle qui tranchera si le défaut d'environnement persiste.Périmètre
MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-9-LLM-SymbolicLearning.ipynb(+354/−328 pour la ré-exécution, +2/−2 pour la normalisation des métadonnées).9fcb8b66dd, repris par fix(notebook,#16390): SL-9 re-execute sur un env LLM joignable — sorties du generateur reel #17562) reste intact.Closes #17600