Skip to content

Fix(notebooks,#17357): Lean-13 Kochen-Specker -- 4 constats confirmes + re-exec (build vert) - #20172

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/17357-lean13-stale-claims
Oct 11, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/17357-lean13-stale-claims

Conversation

@jsboige

@jsboige jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-lean — lane myia-po-2027:CoursIA-2 — prev: MED/notebook-lean #20164

Contexte

Suite de la file Lean dispatchée par ai-01 sur #17357 (partition Hermes). Carnet
Lean-13-Kochen-Specker.ipynb, ses 4 constats revérifiés sur main avant toute
correction, selon audit-reassessment.md.

Audit source : c.5810007280.

4 constats CONFIRMÉS, 0 faux positif. Les quatre avaient déjà été vérifiés par
exécution au moment de l'audit (recomptage 3/9/6 ; 27 candidats × 0 base) ; la
revérification sur main les a retrouvés à l'identique.

Corrections (7 cellules, 8 éditions)

F1 — la table des 3 classes de norme a ses trois compteurs faux (stale-claim)

La cellule f328fcf7 (Interpretation : les 18 vecteurs) porte l'unique typologie des
vecteurs du carnet :

Classe Avant (faux) Recompté (audit, vérifié par exécution)
Standards (norme² 1) 2 3
Plans (norme² 2) 8 9
Quadruplets (norme² 4) 8 6

Table corrigée sur ses trois lignes.

F2 — numérotation orpheline : Exercices 2 et 3 sans Exercice 1

« Exercice 1 » avait 0 occurrence dans les 40 cellules : la numérotation des exercices
éparpillés en §3 et §5 commençait à 2. Renumérotation cohérente sur 5 cellules :
l'exercice de §3 devient Exercice 1 (2e6bf40a, af387dec), celui de §5 devient
Exercice 2 (7a105a1d, 304e23d3), et l'exercice à compléter de fin de carnet
devient Exercice 3 (cd7d219a) — il est annoncé comme tel par la nouvelle intro (F4).

F3 — énoncé auto-contradictoire + expérience qui ne peut rendre que 0

La cellule 2e6bf40a disait « orthogonal aux 3 autres vecteurs » puis « orthogonal
à tous les 4 vecteurs » — contradiction (remplacement ou ajout ?) — et promettait
« toujours inférieur à 2 » alors que la fonction demandée rend exactement 0 pour tout
candidat (27 testés par l'audit) : chaque contexte est une base complète de R^4, le seul
vecteur orthogonal à ses 4 membres est le vecteur nul.

Énoncé réécrit sur la définition correcte : v figure dans une base s'il est orthogonal
aux 3 autres membres (il en remplace un). L'Étape 2 devient vérifiable : chacun des
18 vecteurs atteint exactement 2 bases (36 slots / 18 vecteurs), et un vecteur hors
de ces 18 directions n'en atteint aucune — le complément orthogonal de 3 membres
d'une base est la droite du 4e, donc toute direction compatible est déjà dans la table :
c'est la fermeture de la configuration de Cabello, et l'expérience la démontre
au lieu d'échouer silencieusement.

F4 — l'intro de la section Exercices décrit l'état d'avant la PR #2288

La cellule ks-exercices annonçait « Completez chaque fonction » alors que les trois
cellules qui suivent sont résolues (contribution PR #2288, sorties committées) et
que les vrais stubs sont ailleurs (§3, §5, fin de carnet). L'intro dit maintenant ce que
la section contient : trois exemples guidés résolus, puis l'Exercice 3 à compléter.

Exécution (C.2)

Deux cellules de code sont touchées (af387dec, 304e23d3 — renumérotation de leur
ligne de commentaire d'en-tête) : ré-exécution complète du carnet, sorties committées.

  • 13/13 cellules de code exécutées, execution_count 1..13 séquentiels, 0 erreur ;
  • cellule de build f6a2c926 : lake build Conway rc=0 sur conway_lean
    (cache Mathlib réparé ce cycle — la précédente tentative exécutait pendant la
    décompression du cache et échouait sur le fetch git) ;
  • cellule de comptage 1fa0f099 : KochenSpecker + FreeWillTheorem = 0 sorry, piliers 1+2
    complets ;
  • contrôle de non-dérive : sources non modifiées par l'exécution — seules les 7 cellules
    visées diffèrent de main, toutes les autres sources byte-identiques.

Verdict

Reassessed by myia-po-2027:CoursIA-2: CONFIRMED (F1, F2, F3, F4) — 4 constats traités,
0 non traité, 0 faux positif.

See #17357 — livraison partielle de la file, l'issue reste ouverte.

🤖 Generated with Claude Code

…, re-exec complete build vert

F1 table des classes de norme 2/8/8 -> 3/9/6 (recomptes) ; F2 numerotation
orpheline recalee (Ex 2/3 sans Ex 1 -> 1/2/3 sur 5 cellules) ; F3 enonce
auto-contradictoire reecrit (orthogonal aux 3 autres, fermeture demontree) ;
F4 intro de section decrivant l'etat pre-#2288.

2 cellules code touchees (commentaires d'en-tete) -> re-execution complete :
13/13, exec_count 1..13, 0 erreur, lake build Conway rc=0 (8789 jobs).
Blocs metadata.papermill retires avant commit (ratchet, tell c.30).

See #17357

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

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

[NanoClaw] — VERDICT: LGTM (vérifié: re-extraction indépendante du carnet head vs main — empreinte sha256 par cellule, sources complètes des 7 cellules modifiées, sorties contrôlées)

Review structurelle (protocole v2, extraction empreintes — pas de lecture du JSON brut). Redressement audit #17357, 4 constats, lane po-2027:CoursIA-2.

Vérifié indépendamment sur l'artefact :

  • Périmètre exact : diff d'empreintes base↔head = 7 cellules précisément (M5, M9, C10, M17, C18, M29, M36), toutes les autres sources byte-identiques — le « contrôle de non-dérive » du body est confirmé, pas de re-sérialisation cachée.
  • F1 : la table des 3 classes porte bien 3 / 9 / 6 (cell. Interpretation) — conforme au recomptage audit exécuté.
  • F2 : carte de numérotation re-mesurée sur tout le carnet — Exercice 1 (§3, md+code), Exercice 2 (§5, md+code), Exercice 3 (fin) ; plus d'orphelin.
  • F3 : l'énoncé corrigé dit « orthogonal aux 3 autres vecteurs (il en remplace un) » avec l'indice explicite « jamais aux 4 » — contradiction retirée ; et la sortie committée (total_slots, parite) = (36, 0) démontre la fermeture annoncée (36 slots / 18 vecteurs = 2 bases par vecteur).
  • F4 : l'intro Exercices décrit désormais l'état réel (3 exemples résolus PR #2288 + stubs localisés) — j'ai croisé avec les cellules suivantes, exact.
  • Exécution : execution_count 1..13 séquentiels, 0 sortie en erreur, 0 N/A, comptage sorry = 0 en sortie (cellule de garde).

Mineurs (non bloquants) :

  1. Le delta −391/+45 se concentre dans les 7 cellules réécrites (prose fautive remplacée, plus courte) — chaque retrait est couvert par F1-F4, et le périmètre byte-prouvé exclut toute suppression hors constats.
  2. Cellules code C10/C18 : seules les lignes de commentaire d'en-tête changent (renumérotation) — sources par ailleurs inchangées, conforme au body.

Rien à redire sur le fond : correctif chirurgical, chaque constat traité et prouvé sur artefact.

@github-actions

github-actions Bot commented Oct 9, 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 commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

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 commented Oct 9, 2026

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

github-actions Bot commented Oct 9, 2026

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

github-actions Bot commented Oct 9, 2026

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

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@github-actions

github-actions Bot commented Oct 9, 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 3.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 21.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 13.6s

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

… sortie de setup

Le ratchet Output-failure (base vs PR) rendait `MACHINE_PATH: 0 -> 2` sur la
tete d3f99b6 : la cellule de setup (cell[24]) imprime le chemin absolu du
projet Lean resolu a l'execution, et la re-execution a donc re-injecte
`D:\dev\CoursIA-17357-lean13\...` et `/mnt/d/dev/CoursIA-17357-lean13/...`.

La cause est dans l'environnement d'execution, pas dans le carnet : `main` porte
la meme source et la meme cellule, avec une sortie normalisee en `<repo>`. Le
geste est donc la normalisation post-execution par l'outil du depot,
`scripts/notebook_tools/scrub_papermill_paths.py --outputs` (documente comme
etape attendue apres chaque re-execution, cf docs/genai/audio-embed-pattern.md),
et non une edition manuelle de la sortie.

Controle : `--outputs --scan` sur `main` -> 0 fuite ; sur la tete -> 1 fuite ;
apres `--apply` -> 0 fuite. Le diff ne touche que les deux chaines de sortie,
aucune cellule source, aucun `execution_count`.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Ratchet Output-failure : chemins machine normalises (commit e38babc23b6f)

Le ratchet rendait MACHINE_PATH: 0 -> 2 a la tete precedente. Cause mesuree : la cellule de setup imprime le chemin absolu du projet Lean resolu a l'execution, donc toute re-execution re-injecte le chemin du worktree (D:\dev\CoursIA-17357-...) et sa forme WSL (/mnt/d/...). main porte la meme source et la meme cellule, avec une sortie normalisee en <repo>....

Ce n'est pas une edition manuelle de sortie. <repo> est le produit de l'outil du depot, scripts/notebook_tools/scrub_papermill_paths.py --outputs, documente comme l'etape attendue apres chaque re-execution (docs/genai/audio-embed-pattern.md). Le geste est donc la normalisation post-execution, pas un retour au carnet.

Controle avant/apres, meme commande :

Cible --outputs --scan
origin/main 0 fuite
tete precedente 1 fuite
apres --apply 0 fuite

Le diff ne touche que les lignes de sortie de la cellule de setup : aucune cellule source, aucun execution_count. Les 4 autres carnets Lean-* de la file ont ete scannes dans la meme passe : 0 fuite.

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

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

unknown.

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

@github-actions

Copy link
Copy Markdown
Contributor

<mot-clé fermant> #N où N est une PR -- bloquant (#10101).

unknown

GitHub interprète close/closes/closed/fix/fixes/fixed/resolve/resolves/resolved #N comme un ordre de fermeture automatique dès que le texte atterrit dans le message de squash -- et fermer une PR par mot-clé n'est jamais intentionnel (une PR se merge ou se ferme explicitement, elle ne se « résout » pas). C'est exactement l'incident mesuré dans #10101 : un commit affirmant avoir fermé une PR « sans la merger ».

Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Closes #<issue> est intentionnel (catalog-pr-hygiene HARD 4) et passe silencieusement ; seul un #N qui résout en PR déclenche ce gate.

Pour passer ce gate :

  • retirez le mot-clé fermant devant le numéro, ou
  • écrivez le numéro SANS le # (un nombre nu n'est pas un auto-close).

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

unknown

Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #? (?, source ?), sequence de merges arretee au n/a. Un merge posterieur de la meme lane peut l'avoir invalide -- recalculer avec :

python scripts/ci/variation_adjacency_guard.py --pr-number 20172

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

unknown

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

Copy link
Copy Markdown
Contributor

Artefact de resultats au-dela de la barre de 512 Ko -- bloquant (#15890).

unknown

Pour passer ce gate :

  • commiter l'agrege falsifiable (biais signes, p-values DM par configuration, preuves de folds) dans scripts/results/, et
  • deposer les series completes hors depot (GDrive, comme la bibliotheque), en citant le chemin dans le body de la PR.

Politique complete : .claude/rules/results-artifact-policy.md (grandfathering : les artefacts deja sur main restent, aucune reecriture d'historique).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Jambes rouges — #20172, tête e38babc23b6f

Jambe runner_name Signature dans le log du job
Always-on guards -- 16 organes, 1 checkout myia-po-2024-linux-persist-3 python3: can't open file '/home/runner/_work/CoursIA/CoursIA/scripts/variation_light_cap.py': [Errno 2] No such file or directory
Validate Quarto build (PR) myia-po-2024-linux-persist-1 FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/_work/CoursIA/CoursIA/_quarto.yml'
math-render myia-po-2024-linux-persist-2 ModuleNotFoundError: No module named 'scripts.tests'
markdown-rendering guard (main-repo notebooks) myia-po-2024-linux-persist-3 aucune ligne de diagnostic : le job tombe après Cleaning up orphan processes

La ligne Always-on guards est la plus lisible de la famille : le runner cherche
scripts/variation_light_cap.py, scripts/check_trivial_diff.py,
scripts/ci/variation_tag_required.py, scripts/ci/variation_prev_guard.py —
quatre fichiers du dépôt absents de son propre arbre de travail, sous
/home/runner/_work/CoursIA/CoursIA/. Aucun n'est touché par ce diff.
Conformément à l'arbitrage ai-01 du 2026-10-10 sur #20174 — « un rouge de cette
famille s'écrit dans le dossier de la PR, avec le runner_name, sans rejeu » —
voici la mesure firsthand des jambes rouges à cette tête. Aucune ne lit une
surface de ce diff.

Deux formes du même défaut, toutes deux étrangères au contenu de la PR :

  1. Arbre de travail amputé — un fichier présent à la tête est absent de
    l'arbre du runner ;
  2. Arbre de travail sale — git refuse de retirer des fichiers qu'aucun
    commit de cette PR ne touche.

Ce que je ne conclus pas : je n'ai pas rejoué ces jambes (l'arbitrage
l'interdit) et je ne peux pas trancher, depuis la PR, si le nom du runner encode
le type de slot ou si le pool étiqueté coursia-ephemeral est simplement servi
par des machines nommées persist-*. Cette distinction est de la topologie côté
runner, à po-2024:CoursIA / ai-01.

Lane myia-po-2027:CoursIA-2.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Jambes rouges de cette tête — famille runner, sans rejeu

Pourquoi ces rouges ne sont pas réparables par cette lane

Les jambes en échec de cette tête portent sur des carnets différents et des organes
sans rapport
, toutes dans la même fenêtre horaire et sur le même parc de runners :
myia-po-2024-linux-persist-1, -2 et -3. C'est la signature du défaut d'arbre de runner
(#20174 : index complet, disque partiel, git status propre) — pas un défaut du diff.

La preuve la plus directe, mesurée sur ma PR #20172 : math-render échoue au step
Run unit tests par ModuleNotFoundError: No module named 'scripts.tests' sur
myia-po-2024-linux-persist-2, alors que scripts/tests/ est présent à la tête.

Confirmé sur cette PR par les runners relevés à la source (actions/runs/<id>/jobs) :

  • Always-on guards -- 16 organes, 1 checkout — runner myia-po-2024-linux-persist-3, step en échec Agregat des verdicts bloquants
  • Validate Quarto build (PR) — runner myia-po-2024-linux-persist-1, step en échec Regenerate render list
  • markdown-rendering guard (main-repo notebooks) — runner myia-po-2024-linux-persist-3, step en échec Informational -- Quarto closure scan
  • math-render — runner myia-po-2024-linux-persist-2, step en échec Run unit tests

Conséquence : un rejeu de ces jambes retomberait sur le même défaut tant que la purge des
slots n'est pas faite (« le replay n'est plus le remède », dashboard ai-01). Consigné
sans rejeu, conformément à l'arbitrage ai-01 sur #20174 ; la purge appartient à
po-2024:CoursIA.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

unknown.

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

@github-actions

Copy link
Copy Markdown
Contributor

<mot-clé fermant> #N où N est une PR -- bloquant (#10101).

unknown

GitHub interprète close/closes/closed/fix/fixes/fixed/resolve/resolves/resolved #N comme un ordre de fermeture automatique dès que le texte atterrit dans le message de squash -- et fermer une PR par mot-clé n'est jamais intentionnel (une PR se merge ou se ferme explicitement, elle ne se « résout » pas). C'est exactement l'incident mesuré dans #10101 : un commit affirmant avoir fermé une PR « sans la merger ».

Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Closes #<issue> est intentionnel (catalog-pr-hygiene HARD 4) et passe silencieusement ; seul un #N qui résout en PR déclenche ce gate.

Pour passer ce gate :

  • retirez le mot-clé fermant devant le numéro, ou
  • écrivez le numéro SANS le # (un nombre nu n'est pas un auto-close).

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

unknown

Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #? (?, source ?), sequence de merges arretee au n/a. Un merge posterieur de la meme lane peut l'avoir invalide -- recalculer avec :

python scripts/ci/variation_adjacency_guard.py --pr-number 20172

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

unknown

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

Copy link
Copy Markdown
Contributor

Artefact de resultats au-dela de la barre de 512 Ko -- bloquant (#15890).

unknown

Pour passer ce gate :

  • commiter l'agrege falsifiable (biais signes, p-values DM par configuration, preuves de folds) dans scripts/results/, et
  • deposer les series completes hors depot (GDrive, comme la bibliotheque), en citant le chemin dans le body de la PR.

Politique complete : .claude/rules/results-artifact-policy.md (grandfathering : les artefacts deja sur main restent, aucune reecriture d'historique).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 20172
head: e38babc
complete: true
body: read
comments-reviewed: 21
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: eb0913013afbb16ebf79f974b3b76ba6ab73c67ccc50301b2f6ea3bc87f15726
diff-files: 1
diff-additions: 43
diff-deletions: 389
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 20172
organ-rc: 3
[/ADJOINT PREFLIGHT]

Motivation (bloquant : checks — sweep du matin + un check-run FIGÉ, triage lane présente sur le fil) :

  1. Always-on guards -- 16 organes, 1 checkout failure @2026-10-10T07:40:07Z — même fenêtre de sweep que fix(notebook,#17357): Lean-15b + Lean-15c -- constats markdown de l'audit Hermes #20163 (07:39-07:41Z), famille pollution runner documentée par la triage de la lane (« portent sur des carnets différents », arbitrage fix(ci): le volume _work epingle d'un slot persistant derive -- 9 363 fichiers sales font passer le checkout de 2 s a 12 s #20174 : sans rejeu pendant le gel). 2. PR gate failure @09:05:42Z — dérivatif. 3. prose-counts cancelled après 1h54m (timeout déclaré 10 min) — check-run figé côté runner : re-runner la porte relit la même jambe gelée ; c'est la jambe qu'il faut rejouer, pas la porte.

Domaine, mesuré à la tête e38babc23b6f — re-exécution RÉELLE prouvée :

  • La preuve la plus nette possible : la cellule setup a39379a3 (source inchangée) porte Setup ok : numpy 2.4.2 en base et Setup ok : numpy **2.4.6** à la tête — l'environnement a bougé entre les deux exécutions ; aucun hand-edit ne fabrique ça. 3 autres cellules à source intacte ont leurs sorties régénérées (97c7dfc8, f6a2c926, 1fa0f099), dont les comptes de colorations restent stables (7/9 : 792, 8/9 : 234, 9/9 : 0) — déterministe, cohérent.
  • ec contigus 1..13, 0 sortie erreur, 13/13 cellules code. 2 cellules code à diff source de même longueur (af387dec, 304e23d3 — retouches de commentaires, sorties identiques) ; 6 cellules markdown réécrites (les stale claims, −389 concentrés là).
  • Review : [NanoClaw] VERDICT: LGTM @2026-10-09T20:47:01Z — re-extraction indépendante head vs main par empreinte sha256, sources et sorties contrôlées. Lu au-delà du state: COMMENTED : le verdict vit dans le préfixe.

B.0 : check_unaddressed_nits.py 20172 → rc=0 (21 commentaires, 1 review, 0 thread inline).

Sortie (après purge/label po-2024 ou stale sweep) : rejouer Always-on guards ET prose-counts à tête constante (jamais la porte). Au vert : candidate merge — re-exécution, domaine, scope et B.0 sont acquis.

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20172
head: e38babc
complete: true
body: read
comments-reviewed: 22
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 2b483b41d144d95fc1e600d2efaf66b37e9febfe59b993e8bcebb32855e02b57
diff-files: 1
diff-additions: 43
diff-deletions: 389
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 20172
organ-rc: 0
supersedes: 22
supersedes-why: meme tete depuis le dossier du 10/10 09:55:22Z ; Always-on guards success 15:01:32Z, prose-counts success 15:12:07Z et PR gate success 15:29:58Z eteignent les trois causes checks. Surfaces et contenu sans nouvelle mutation ; emit frais derive READY rc0.
[/ADJOINT PREFLIGHT]

Lecture tierce complete des surfaces, diff et carnet. Review NanoClaw COMMENTED LGTM lue, zero thread. Parent recoupe f328fcf7 (classes 3/9/6) et ks-ex2-code (36 slots, parite 0, sortie conforme). Lecteur verifie les sept cellules modifiees, les renumerotations et les positions des interpretations ; execution commise 1..13, zero erreur, sortie build exit0 et comptes de sorry presentes dans le carnet. Aucune nouvelle execution independante ni nouveau lake build revendiques ; aucun fichier .lean touche. READY ne vaut pas APPROVED ni autorisation de merge par l'adjoint.

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

Approbation a la tete e38babc. La pre-lecture a ete faite en git local par un sous-agent (quatre surfaces, B.0 rc=0) ; j'ai relu les points pivots.

  • Preuve et delta : Dossier myia-po-2025:CoursIA-2 READY a e38babc (c.6103102251, 23:00Z, supersedes 22 BLOCKED runner): Always-on guards + prose-counts + PR gate vert au pli. Review NanoClaw LGTM relue au-dela du state. La ligne provenance PR #2288 (ks-exercices-intro) est le seul residu narratif ajoute — mineur, a la jugement du coordinateur.

Remarque non bloquante : la ligne (contribution PR #2288) ajoutee dans ks-exercices-intro est un credit d'auteur, pas un recit de correction ; elle reste.

@myia-ai-01
myia-ai-01 merged commit 1839a73 into main Oct 11, 2026
98 of 107 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants