Skip to content

Feat(ict,#20985): ICT-42f -- la grille de lecture corrigee (aire signee, seuil sur l'aire, sham) - #22767

Merged
jsboige merged 5 commits into
mainfrom
feature/ict42f-reading-grid
Oct 27, 2026
Merged

jsboige merged 5 commits into
mainfrom
feature/ict42f-reading-grid

Conversation

@jsboige

@jsboige jsboige commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-ai-01:CoursIA-2 — prev: DEEP/guard #22755

ICT-42f — la grille de lecture corrigée de l'aire d'hystérésis

Ce carnet reprend l'instrument d'ICT-42d et le corrige sur les trois points que l'audit #17183 a relevés sur lui. Il est GPU-free à la lecture : toutes les traces qu'il charge sont déjà dans traces/.

Ce que ICT-42d tranchait, et pourquoi son verdict ne pouvait pas tenir

ICT-42d mesure l'écart d'histoire à position fixée entre la trace rampée et une trace constante appariée par position (alpha*(t) = étage discret le plus proche de alpha(t)), puis l'aire de cet écart Delta(t) = D_ramp(t) - D_const,alpha*(t)(t).

L'audit a montré que l'instrument ne pouvait pas rendre son verdict :

# Finding de l'audit Conséquence mesurée
1 l'aire calculée est `Aire( Delta
2 le Delta signé était perdu la mesure est en réalité négative aux deux échelles : D_const > D_ramp
3 le seuil était posé sur une statistique ponctuelle (SEM de la divergence à alpha = 0.5), pas sur l'aire la significativité n'était pas évaluée prompt par prompt

Ce que le carnet refait

  1. Aire signée, prompt par prompt : A_p = integrale de [D_ramp,p(s) - D_const,alpha*(s),p(s)] ds, en trapèze sur s = t/T (100 pas), calculée par prompt puis moyennée.
  2. Seuil sur les aires : 1,96 x SEM(A0_p), où A0_p est l'aire du sham const-adjacent — la même paire de traces constantes encadrantes (0,25 et 0,5) soumise au mapping alpha*. Le sham mesure ce que la seule discrétisation de alpha* (erreur <= +/-0,125) fabrique comme aire.
  3. Verdict à trois issues : MEMOIRE si |Abar| dépasse le seuil et que le signe est cohérent entre les deux échelles ; POSITION + bruit si l'aire ne dépasse pas le seuil ou si elle est expliquée par le sham ; INDETERMINE sinon (puissance déclarée).
  4. Quatre contrôles négatifs exécutés dans le carnet, dont un qui lève si la fonction est remutée en aire non signée : sham comme donnée → POSITION + bruit ; aires alternées à moyenne nulle → POSITION + bruit ; sham constant → seuil numériquement nul ; signes opposés → INDETERMINE.

Ce que la correction change — chiffres à l'appui

Les valeurs sont reproduites dans les sorties committées du carnet (cellules 2, 5 et 7) :

| Échelle | Aire |Delta| (42d, ancienne) | Aire signée Abar | Sham A0 | Seuil 1,96 x SEM | Facteur | Verdict |
|---|---|---|---|---|---|---|
| Qwen3-1.7B-Base | 0,6394 | -0,6280 | -0,00136 +/- 0,00138 | 0,00270 | 232 | MEMOIRE (signe négatif) |
| Qwen3.5-2B-Base | 0,1374 | -0,0985 | +0,00021 +/- 0,00117 | 0,00230 | 43 | MEMOIRE (signe négatif) |

Deux conséquences, dont une qui renverse la lecture de 42d :

  • Le verdict survit, mais le signe change. Abar est négatif aux deux échelles : D_const > D_ramp, c'est-à-dire que le clamp constant diverge davantage que la rampe. La grille de lecture de 42d (« Delta positif = mémoire ») était inversée ; c'est le signe qu'il fallait, pas l'aire.
  • La discrétisation n'explique pas l'aire. Le sham vaut ~1e-3 contre une aire de ~6e-1 : deux ordres de grandeur d'écart. La contre-hypothèse « position + bruit » n'est donc pas l'explication de l'aire — mais le carnet ne la tranche pas non plus : c'est l'objet du témoin par isolement de branche.

Les aires signées reproduisent exactement celles de l'audit (-0,6280 / -0,0985), et les aires non signées reproduisent les sorties committées de 42d (0,6394 / 0,1374) : la chaîne de calcul est fidèle à celle de 42d, seule la lecture change.

Qualification par l'échelle

Réponse à la remarque de tiers du 2026-10-26 — monter dans les tailles de modèles pour confirmer les observations jusqu'au 27B si possible, à défaut qualifier les variations selon l'échelle. Avec les traces déjà committées, ce carnet livre la qualification ; la confirmation exige une extraction GPU (ci-dessous).

Ce qui se transporte d'une échelle à l'autre : le verdict qualitatif. L'effet est hors sham aux deux échelles, et le signe est commun et négatif (D_const > D_ramp dans les deux cas).

Ce qui ne se transporte pas : l'amplitude.

Grandeur Qwen3-1.7B-Base Qwen3.5-2B-Base Variation
aire signée |Abar| 0,6280 0,0985 chute d'un facteur x6,4
part de positions où Delta < 0 89,0 % 56,0 % —
marge sur le sham (|Abar| / seuil) x232 x43 rapport x5,4

Une mesure à une seule échelle ne dit pas ce que l'effet vaudra ailleurs : toute reprise sur une autre taille doit re-mesurer, pas transposer le chiffre.

Deux échelles mesurables sur sept. L'instrument (Delta = rampe - const appariée) exige, pour une taille donnée, une trace de rampe et les traces constantes appariées. Sur le registre natif ict.sae_scales.QWEN_SCOPE_SCALES :

  • Qwen3-1.7B-Base et Qwen3.5-2B-Base : paire complète — mesurables (les deux lignes du carnet).
  • Qwen3.5-9B-Base : traces constantes seules (couche 31/32) — la rampe manque, le Delta apparié y est incalculable.
  • Qwen3-8B-Base, Qwen3-30B-A3B-Base, Qwen3.5-27B, Qwen3.5-35B-A3B-Base : aucune trace d'inoculation committée.

Le seul artefact 27B committé est une calibration jlens (calib_jlens_qwen3-5-27b.npz, instrument jlens) : elle ne porte pas la paire rampe/const et ne peut donc pas produire le Delta mesuré ici.

La confirmation à 9B et au-delà demande une extraction GPU de la paire rampe + constantes, pas une relecture des traces existantes. Elle est suivie dans les issues #20299 (stratification par taille de modèle) et #17719 (relance à 9B et au-delà).

Pourquoi ce carnet est ICT-42f et non ICT-42e

Le slot 42e est pris par la PR #22024 (feature/20985-ict42e-witness, lane myia-po-2023:CoursIA), qui livre le témoin par bande : isolement d'une bande de la rampe par passe, avec des traces GPU déjà committées. Ce carnet porte une autre couche — l'instrument de mesure (aire signée, seuil, sham) — et ne rejoue pas le témoin. Les deux se répondent : le témoin de 42e se lit avec la grille de 42f.

La nav-chain est rétablie : ICT-42d pointe désormais vers ICT-42f (cellule 0), et ICT-42f pointe vers ICT-42d. Le garde check_notebook_nav_chain.py --diff-base origin/main passe de 287 à 286 findings, et ICT-42f n'est plus un orphan_entry.

Cellule de témoin

La dernière cellule de mesure cherche les traces d'isolement par branche (traces/inocneg_*, deux échelles) et rend la main proprement en leur absence : elle affiche les candidats trouvés (0 à ce jour) et un message explicite. Le carnet s'exécute de bout en bout sans elles — aucune erreur, aucun raise.

Vérifications de la lane

Vérification Résultat
Exécution papermill 2.6.0, kernel python3, 18 cellules dont 9 de code, 0 erreur, 11,9 s
Sorties execution_count non nul partout, 0 erreur
validate_pr_notebooks.py PASS
check_notebook_navlinks.py OK — 0 lien cassé
check_notebook_nav_chain.py --diff-base origin/main ICT-42f absent des findings (287 → 286)
check_activity_leak.py --diff origin/main...HEAD OK — aucun passage d'activité dense ajouté
check_prose_quantitative_claims.py --diff origin/main...HEAD OK — aucun compteur quantitatif en prose
Hooks pre-commit Passed
Diff cellule par cellule les sorties des cellules non touchées sont byte-identiques à celles de la tête précédente — aucune dérive numérique de la ré-exécution

Limites assumées

  1. Le sham est une interpolation linéaire entre étages constants : c'est un plancher de l'artefact de discrétisation, pas sa borne supérieure — la non-linéarité raide entre deux étages est invisible au sham. Seul le témoin par isolement de branche ferme cette porte.
  2. La significativité est évaluée sur 20 prompts par échelle ; le carnet déclare INDETERMINE plutôt que de conclure quand le signe n'est pas cohérent.
  3. La figure a été inspectée visuellement cette fois (rendu extrait de la cellule de figure) : 4 panneaux — Delta(s) avec bande +/- 1,96 SEM, titres « 89 % de positions < 0 » et « 56 % », annotations 0.6394 / 0.6280 / 0.0014 et 0.1374 / 0.0985 / 0.0002, suptitre « verdict corrige — MEMOIRE (signe negatif, coherent entre echelles) » — aucun débordement.
  4. L'amplitude ne se transpose pas d'une taille de modèle à l'autre (chute x6,4 entre 1.7B et 2B) ; seuls 2 des 7 tailles du registre sont mesurables avec cet instrument. La confirmation à 9B et au-delà demande une extraction GPU de la paire rampe + constantes ([ICT] Stratifier par taille de modèle les expériences sur phénomènes complexes (du plus petit Qwen à 27B / 35B-A3B) #20299, Relancer l'experience onset/SAE sur modeles >= 9B (Qwen 3.5 9B / 27B / 35BA3B) apres merge #17702 #17719).

See #20985 · See #17183 · See #20299 · See #17719 (suites ouvertes, nommées) · PR jumelle sur le même dossier : #22024 (témoin par bande, autre lane).

🤖 Generated with Claude Code

jsboige and others added 2 commits October 26, 2026 19:56
…prompt, seuil SEM des aires sham, temoin inocneg optionnel

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…d'hysteresis

Le carnet ICT-42d (controle apparié par position) trancheait MEMOIRE
sur une aire NON signee : l'aire d'|Delta| est positive par construction,
donc la branche POSITION y etait morte ; le Delta signe y etait perdu et
le seuil y etait pose sur une statistique ponctuelle (audit #17183).

ICT-42f refait l'instrument sur les traces deja presentes (GPU-free) :
aire SIGNEE et calculee prompt par prompt, seuil sur 1,96 x SEM des
AIRES d'un sham const-adjacent, quatre controles negatifs dans le carnet.

Mesures : Abar = -0,6280 (1,7B) et -0,0985 (2B) -- identiques a l'audit ;
le verdict survit a la correction mais avec le SIGNE RENVERSE (D_const >
D_ramp, la grille de lecture de 42d etait inversee) ; le sham vaut
-0,00136 +/- 0,00138 et +0,00021 +/- 0,00117, soit deux ordres de
grandeur sous l'effet reel.

Le carnet est ICT-42f et non ICT-42e : le slot 42e est pris par la PR
#22024 (temoignage par bande, lane myia-po-2023:CoursIA), et ce carnet
porte la couche metrique, distincte du temoin GPU.

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

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 16.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.1s

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

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

[Hermes] — myia-ai-01:hermes-pr-review

VERDICT : APPROVE (deep review, full read du carnet au blob b108b826, rejeu des organes de verdict)

Provenance vérifiée. Les trois findings de l'audit #17183 (c.6316475843, lane po-2027) sont bien ceux que le carnet adresse : branche POSITION morte (aire |Δ|), Δ signé perdu (mesuré −0,6280/−0,0985 par l'audit), seuil = SEM ponctuelle comparée à une aire. Les aires signées du carnet (outputs cellule 2 : -0.6280/-0.0985) reproduisent exactement celles de l'audit, et les aires non signées (0.6394/0.1374) reproduisent les sorties committées d'ICT-42d (4 occurrences chacune dans son blob au head).

Rejeu firsthand (blobs extraits, fonctions ré-exécutées).

  • verdict_histoire + verdict_global extraites de la cellule exec 4 et rejouées : les 4 contrôles négatifs sont de vraies assertions mutation-détectrices (le cas (ii) lève si on remute vers |A_p| — finding 1 de l'audit ; (iii) prouve que le seuil mesure la dispersion du sham). verdict_global rend bien INDETERMINE sur signes contradictoires entre échelles — le protocole à trois issues est cette fois implémenté.
  • Cas réels rejoués : les deux échelles sortent significatif: True avec seuils 0.00270/0.00230 → facteurs 232/43, tels qu'ancrés dans les outputs (cellules 5 et 7).
  • Sham const-adjacent : A0 = −0.00136 ± 0.00138 (1.7B) / +0.00021 ± 0.00117 (2B) dans les outputs — deux ordres de grandeur sous l'effet, conforme au body.

Authenticité de l'exécution. metadata.papermill : durée 9,431291 s (fractionnaire), µs distincts start/end, run 19:05:24→19:05:33Z antérieur au push 19:07:25Z. 8 cellules code, execution_count 1-8 continu, 15 sorties, 0 erreur, 0 exception. PNG de la cellule 7 présent (display_data).

Nav-chain. Arête entrante vérifiée dans le diff de 42d (cellule 0 **Navigation** → ICT-42f-…ipynb) + lien retour 42f → 42d : plus d'orphan_entry. Entrée README riche (corps du carnet, pas des totaux). Le renvoi « pourquoi 42f et non 42e » est exact : #22024 (42e, témoin par bande) est encore open sur l'autre lane — les deux PR se répondent sans se rejouer.

Témoin GPU. Cellule 9 honnête : attend inocneg_* par nom exact, liste les candidats (0), rend la main sans conclure — aucune erreur, aucune affirmation en l'absence des traces. Les 3 exercices suivent la convention (print + resultat_exN = None).

Réserves (non bloquantes, toutes assumées dans le body).

  1. La plupart des check-runs CI étaient encore en cours au moment du POST (verts déjà lus : Pedagogy density orphan guard, Gitleaks, secret egress, quarto freshness, enrich-quality, metadata guards) — la lane merge après passage des gardes.
  2. Le sham à interpolation linéaire est un plancher de l'artefact de discrétisation (limite 1 du body) : le verdict final « mémoire faible vs position » reste suspendu au témoin inocneg_*, que le carnet ne prétend pas livrer.

Scan sécurité du diff : 0 hit.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 20
  • 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)

@jsboigeEPF

Copy link
Copy Markdown

Concern: Attention à bien toujours monter dans les tailles de modèles pour confirmer les observations jusqu'à au 27B si possible, à défaut qualifier les variation selon l'échelle

@github-actions github-actions Bot added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Oct 26, 2026
@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

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-26) :

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.

…ransporte, ce qui ne se transporte pas)

Reponse a la reserve externe posee sur la PR (jsboigeEPF, 2026-10-26T20:43Z) :
"monter dans les tailles de modeles pour confirmer les observations jusqu'au 27B si
possible, a defaut qualifier les variation selon l'echelle".

Mesure (fait, pas suppose) : l'instrument (Delta = rampe - const apparie) exige, pour
une taille donnee, une trace de RAMPE et les traces CONSTantes appariees. Sur le
registre natif Qwen-Scope (ict.sae_scales), 2 tailles sur 7 sont mesurables : Qwen3-1.7B-Base
et Qwen3.5-2B-Base. Qwen3.5-9B-Base n'a que les constantes (couche 31/32) -- la trace de
rampe manque, le Delta apparie y est incalculable ; Qwen3-8B-Base, Qwen3-30B-A3B-Base,
Qwen3.5-27B et Qwen3.5-35B-A3B-Base n'ont aucune trace d'inoculation. Le seul artefact
27B committé est une calibration jlens (instrument jlens, couches 16 et 32) : elle ne
porte pas la paire rampe/const et ne peut donc pas produire le Delta mesure ici.

Ajout d'une cellule de qualification (amplitude |Abar|, marge sur le sham, part des
positions Delta<0) et de sa cellule de lecture. Ce qui se transporte : le verdict
qualitatif -- effet hors sham aux deux echelles, signe commun et negatif. Ce qui ne se
transporte pas : l'amplitude -- |Abar| chute d'un facteur x6.4 de 1.7B a 2B et la part des
positions Delta<0 passe de 89.0 % a 56.0 %. Une limite et un point a retenir en
decoulent : toute reprise sur une autre taille doit re-mesurer, pas transposer le chiffre.

La confirmation a 9B et au-dela est un travail d'extraction GPU (la paire rampe +
constantes), non une relecture des traces existantes : suivi dans #20299 (stratification
par taille de modele) et #17719 (relance a 9B et au-dela).

Re-execution complete du carnet (papermill 2.6.0, kernel python3) : 9 cellules code,
toutes avec execution_count et sorties, 0 erreur, couches papermill globale et par
cellule regenerees, chemins papermill scrubes. Les sorties des cellules non touchees
sont byte-identiques a celles de la tete precedente : aucune derive numerique.

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

jsboige commented Oct 26, 2026

Copy link
Copy Markdown
Owner Author

Reprise de la remarque de @jsboigeEPF (2026-10-26), reformulée : confirmer les observations en montant dans les tailles de modèles jusqu'au 27B si possible ; à défaut, qualifier les variations selon l'échelle.

Fait en code — nouvelle cellule de code « Qualification par l'ECHELLE » et sa cellule de lecture, dans le commit ea852749360 (PR #22767) ; le corps de la PR porte la section correspondante.

Chiffres mesurés (sorties committées du carnet) :

  • 2 échelles mesurables sur 7 du registre ict.sae_scales.QWEN_SCOPE_SCALES : Qwen3-1.7B-Base et Qwen3.5-2B-Base ;
  • aire signée \|Abar\| : 0,6280 → 0,0985, chute d'un facteur x6,4 ;
  • marge sur le sham : x232 → x43 (rapport x5,4) ;
  • part de positions où Delta < 0 : 89,0 % → 56,0 % ;
  • verdict qualitatif transportable (effet hors sham aux deux échelles, signe commun et négatif) ; amplitude non transportable — toute reprise sur une autre taille re-mesure, elle ne transpose pas le chiffre.

Pourquoi le 27B n'est pas atteignable avec les artefacts committés. L'instrument (Delta = rampe - const appariée) exige, pour une taille donnée, une trace de rampe et les traces constantes appariées. À 9B (Qwen3.5-9B-Base), seules les constantes (couche 31/32) sont committées — la rampe manque, le Delta apparié y est incalculable. À 27B, le seul artefact committé est une calibration jlens (calib_jlens_qwen3-5-27b.npz, instrument différent) : elle ne porte pas la paire rampe/const. Qwen3-8B-Base, Qwen3-30B-A3B-Base et Qwen3.5-35B-A3B-Base n'ont, eux, aucune trace d'inoculation. La confirmation à 9B et au-delà est donc une extraction GPU de la paire rampe + constantes, pas une relecture des traces existantes.

Suivis ouverts, nommés avant le merge : #20299 (stratification par taille de modèle) · #17719 (relance à 9B et au-delà).

Sur la clôture du point : la remarque émane d'un tiers, et une réponse d'auteur sous le login partagé jsboige ne clôt pas un point posé par autrui — c'est le rôle de l'arbitrage coordinateur. L'arbitrage [OVERRIDE] lane myia-ai-01:CoursIA est demandé au coordinateur ; la lane n'attend pas de réponse et poursuit son cycle.

@myia-ai-01 myia-ai-01 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.

[APPROVE myia-ai-01] — levée de la remarque de jsboigeEPF (commentaire du 26/10 sur la PR : « monter dans les tailles de modèles jusqu'au 27B si possible, à défaut qualifier les variations selon l'échelle »), sur la tête exacte ea85274.

Traitement vérifié par moi dans le diff de cette tête :

  • le carnet ICT-42f-ReadingGrid-SignedArea-Sham-Python.ipynb existe : 18 cellules, dont 9 cellules de code, 9 execution_count renseignés, 0 sortie d'erreur ;
  • une cellule de code dédiée « Qualification par l'ECHELLE » (cellule 9) calcule, pour chaque échelle mesurée, l'aire signée, le seuil du sham, la marge, la part des positions Delta<0 et le signe du verdict ;
  • la cellule de lecture (cellule 10) porte la qualification demandée : le verdict qualitatif se transporte d'une échelle à l'autre, l'amplitude chute d'un facteur x6.4 (aire signée |Abar| 0.6280 -> 0.0985) ;
  • la section « Limites du carnet » (cellule 12) énonce les 2 échelles mesurées sur les 7 du registre QWEN_SCOPE_SCALES et l'état du témoin GPU des branches isolées ; la cellule 11 liste les fichiers attendus ;
  • la réponse de la lane au commentaire de jsboigeEPF est dans le fil de la PR.

La remarque reçoit donc son traitement par la qualification selon l'échelle, avec les mesures à l'appui.

Le merge est fait par ai-01 (Q131).

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22767 (Feat(ict,#20985): ICT-42f -- la grille de lecture corrigee (aire signee, seuil sur l'aire, sham)) 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.

@jsboige

jsboige commented Oct 27, 2026

Copy link
Copy Markdown
Owner Author

Mise a jour de base (lot lane myia-ai-01:CoursIA-2, passe 2). Le rouge d'origine de cette PR etait la garde Pedagogy density baseline orphan guard, cassee sur main depuis le merge 46e5a48 (#21733, 2026-10-26T20:10Z) : la baseline regeneree y porte 29 cles 03-DeepLearning (sans tiret) alors que l'arbre porte le dossier 03-Deep-Learning (avec tiret). Mesure sur main : garde verte a 19:49:42Z (927d3a1), rouge des 20:10:14Z (46e5a48) et a chaque push depuis. Ce rouge parvient a la PR via le merge-ref (branche + main courant) : il est herite, pas un defaut de contenu de cette PR.

Geste : fusion de origin/main dans la branche (gh pr update-branch, sans conflit, sans force). Tete : ea85274 -> 109d37f.

Ce que la fusion change : la base est homogeneisee -- la paire de jumeaux App-15 rebasinee par #21733 est desormais dans la branche, et aucun fichier de cette PR ne touche le registre de jumeaux ni un carnet membre (intersection verifiee, vide) : drift_introduced = 0 attendu pour Twin parity audit. Ce qu'elle ne change pas : la garde orphan pedagogy rejouera rouge tant que main porte les 29 cles mal orthographiees -- la correction attend sur main, pas dans cette PR.

Note coordinateur : le changement de tete perime tout dossier exact-head anterieur sur cette PR (empreintes a refaire ou a invalider).

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

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 unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@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 pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 27, 2026
@jsboige
jsboige merged commit 347d639 into main Oct 27, 2026
100 of 102 checks passed
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. pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants