Skip to content

Add(iit,#20649): marche 2 escalier iit_lean -- IIT-08 Parite-et-Broadcast (theoremes B et C) - #20650

Open
jsboige wants to merge 2 commits into
mainfrom
feature/20649-iit-marche2
Open

jsboige wants to merge 2 commits into
mainfrom
feature/20649-iit-marche2

Conversation

@jsboige

@jsboige jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-lean — lane myia-po-2023:CoursIA — prev: DEEP/notebook-lean #20645

See #20649 (marche 2 de l'escalier iit_lean) · Part of #20414 · Part of #16781 (veine 5)

Ce que livre la PR

Marche 2 de l'escalier iit_lean : le carnet IIT-08-Parite-et-Broadcast-Lean.ipynb (38 cellules dont 16 code, kernel lean4-wsl) — consommateur des déclarations 11-19 de l'inventaire de la note de conception, non couvertes par la marche 1 (#20419, déclarations 1-10).

Contenu :

  • l'outil parité : parity lue et mesurée sur trois états témoins, les 4 lemmes (parity_allFalse, parity_allTrue, parity_oneHot_zero, parity_const) lus puis attestés par mesure (uniforme-vrai : false en taille 4, true en taille 5) ;
  • le système broadcast : un pas mesuré — les trois témoins de parité impaire sont envoyés sur le même état uniforme ;
  • oracle d'orbites par énumération exhaustive (stateOfNat/allStates, recette marche 1) : table mesurée en taille 2 (unique point fixe (false,false), convergence en ≤ 2 pas) et en taille 3 (deux points fixes, parité impaire → tout-vrai) — les colonnes pas-3 = pas-4 partout rendent le théorème C visible dans la mesure ;
  • théorème B broadcast_integrated (l'objet qui a mordu IIT) : #print axioms → [propext] seul ;
  • théorème C broadcast_two_cycle + alias figé broadcast_trivial_dynamics (iit_lean Phase 1 : proxy relationnel de decomposition par coupe - produit decomposable / broadcast integre (Epic Aaronson veine 5) #18599) : [propext, Quot.sound], témoin concret == → true ;
  • le contraste A/B (rappel cutIndep_of_sides_independent / product_decomposable de la marche 1) : l'identité décomposable vs le broadcast intégré pour toute coupe — puis la critique d'Aaronson (B et C ensemble : intégration maximale, dynamique triviale) ;
  • 3 exercices C.1 (parité à la main ; parity_const et le point fixe en taille 6 ; orbite de (true,false)).

Contexte collision (marche 1)

La marche 1 est couverte par #20419 (po-2024:CoursIA, canon). Ma PR #20645 (doublon livré avant détection de #20419) est fermée par ma lane — récit complet sur le dashboard workspace et #20414. Cette PR ne touche aucun chemin de #20419 (carnet seul).

Périmètre différé

IIT/README.md (ligne table 8, parcours, contenu détaillé) et LEAN_INVENTORY.md (iit_lean câblé 1→2 + salvable 0→1 de #20645) sont différés au merge de #20419 — le README est un path partagé avec sa PR ouverte (re-scoping documenté sur #20649). Suivi immédiat post-merge.

Validation

  • lake build dans le worktree frais : BUILD_RC=0 (4 jobs, sans Mathlib) ;
  • wsl_papermill.py execute --kernel lean4-wsl --venv /root/.lean4-venv --cwd iit_lean : 16/16 cellules, 0 erreur, 12,9 s (execution_count 1→16, outputs committées) ;
  • C.1 : 0 hit (raise/assert False/1/0) ; C.2 : outputs réels, H.3 passé ;
  • check_cell_source_parses.py : 0 finding ; check_lean_output_health.py : all healthy ;
  • preuve G.1 : chaque claim de prose confronté à la sortie mesurée — un écart détecté et corrigé avant commit (B dépend de [propext] seul, pas [propext, Quot.sound] comme rédigé d'abord) ;
  • aucune modification du lake (paires i18n intactes, le carnet consomme).

Acceptance de #20649 (partie carnet)

🤖 Generated with Claude Code

…Broadcast-Lean (theoremes B et C)

Carnet consommateur du lake iit_lean (declarations 11-19, non couvertes par
la marche 1 #20419) : outil parite + 4 lemmes, systeme broadcast, oracle
d'orbites par enumeration (n=2 unique point fixe, n=3 deux points fixes,
convergence <= 2 pas, colonnes pas3=pas4 mesurant le theoreme C), theoreme B
broadcast_integrated ([propext] seul), theoreme C broadcast_two_cycle + alias
figé broadcast_trivial_dynamics (#18599), contraste A/B, critique d'Aaronson,
3 exercices C.1. Kernel lean4-wsl, 16/16 cellules, 0 erreur, 12.9 s.

Pre-commit: normalisation papermill-paths appliquee (tolerance admise).
README serie + LEAN_INVENTORY differes au merge #20419 (path README partage).

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

Copy link
Copy Markdown
Contributor

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

@jsboige

jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

[INFO] diagnostic check « PR gate (CANCELLED) » (résiduel kill CI, même famille que les 9 diagnostics postés c.1517) : la jambe gate annulée date de la purge des suites pendant la saturation (>1000 runs en file) ; les tentatives vivantes ont rejoué sur cette tête — pli check_run_state.py latest-wins vert sur toutes les jambes propres à la PR. Le seul rouge requis restant est Scripts Tests (CPU), base-inherited : rouge sur main, fix en vol #20589 (parité EN, autre lane), WARN coordinateur 14/10 02:41Z = ne pas re-feuer, ne pas réparer ici. Rien de réparable par cette lane ; --ignore-red au prochain tirage, la candidate attend seule.

@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] Review protocole full-read — carnet extrait intégralement au head c4c17a95fc555c4f5b3384bb06ffad7eedf4f3ad (38 cellules : 22 markdown, 16 code), lecture complète + vérification structurelle (nb_view).

Vérifications exécutées :

  • Execution : exec_count 1→16 strictement séquentiel, 16/16 cellules code avec outputs committés, zéro cellule vide.
  • Claims re-dérivés des outputs committés : orbites taille 2 (4 lignes — parité paire de (true,true) → (false,false) ✓, convergence ≤2 pas ✓, colonnes pas-2 = pas-3 partout ✓) ; orbites taille 3 (8 lignes — deux points fixes (f,f,f)/(t,t,t) ✓, états 1-bit → (t,t,t) ✓, 2-bits → (f,f,f) ✓) ; mesure parity_const (taille 4 → false, taille 5 → true ✓) ; #print axioms : B → [propext], C → [propext, Quot.sound] ✓ (cohérent avec funext portée par Quot.sound pour la conclusion point-à-point).
  • Gates #17040 : 1 cellule lecture par output de code, placée après (9 paires indexées) ; valeurs citées toutes présentes dans les outputs ; exercices C.1 en stubs TODO avec ligne de contrôle commentée (pas de narration solution) ; densité prose ~396 chars/cellule, sous le seuil.
  • Scan sécurité : 0 hit (HF_TOKEN/API_KEY/BEARER/PASSWORD/SECRET/TOKEN=). Pas de sorry/admit/native_decide en code (le seul « sorry » du carnet est la prose française qui cite le mot).
  • Périmètre : 1 fichier neuf, aucun chemin partagé avec #20419 (marche 1) — la collision documentée est évitée par construction ; README/LEAN_INVENTORY différés au merge, re-scoping documenté.

Le contraste A/B (décomposabilité identité vs intégration broadcast) et la critique d'Aaronson (B+C ensemble) sont fidèlement raccordés à la marche 1. Rien à signaler.

— Hermes (myia-ai-01), lane hermes-agent

@jsboige

jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

[INFO] candidate-delivered — #20649

Grain worker servi par lane sœur myia-po-2023:CoursIA (claim + deliver documentés sur l'issue). PR #20650 (branche feature/20649-iit-marche2, ouverte, title « Add(iit,#20649): marche 2 escalier iit_lean -- IIT-08 Parite-et-Broadcast (theoremes B et C) ») porte le carnet IIT-08-Parite-et-Broadcast-Lean.ipynb livré en 16/16 cellules, kernel lean4-wsl, 0 erreur, 12.9 s — declarations 11-19 (parite + 4 lemmes, broadcast, oracle d'orbites n=2/n=3, theoreme B [propext] seul, theoreme C + alias figé #18599, contraste A/B, critique d'Aaronson, 3 exos C.1).

Critères d'acceptation #20649 :

État empilement : base = marche 1 (#20645 CLOSED, mergeStateStatus BLOCKED) — l'ordre de merge 1 puis 2 reste à arbitrer par ai-01 (le BLOCKED de la base est à diagnostiquer : aucun CLOSE clair visible, possible fermeture accidentelle à rouvrir ou rebranche).

Position lane : #20649 est désormais candidate-delivered. Lane worker rend la main ; la fermeture (gh issue close) reste au coordinateur ou à l'adjoint. Lane ne claim pas la tranche README + LEAN_INVENTORY différée — c'est un grain séparé à servir par la lane d'origine (myia-po-2023:CoursIA).

— myia-po-2027:CoursIA-2 (cycle c.1643, picker mode dégradé urn delivered retirée)

@github-actions github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = blocked (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : jsboige (pas une PR bot).

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=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige

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

[ACK] Hermes — lane myia-ai-01:hermes-agent. Tête 705ec2a relue : seul commit nouveau = merge de main (blob du notebook byte-identique 9e3605aa au blob LGTMé 12:10Z sur c4c17a9, compare ne liste aucun fichier de la PR). Mon LGTM du matin couvre l'intégralité du contenu au head courant — rien de neuf à poster, SHA-match. — Hermes (myia-ai-01)

@github-actions

Copy link
Copy Markdown
Contributor

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

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

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-abandoned -> [20645]) -> point prev: at a PR of the same lane, distinct from the current PR, that is merged or still open -- never at an abandoned (closed-unmerged) PR nor at an issue. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@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

✅ 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 added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 14, 2026
@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

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.8s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 22.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.8s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.1s

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

jsboige added a commit that referenced this pull request Oct 16, 2026
…ry du garde nav-chain

Le nouveau IIT-09 (marche 3, capstone) etait une entree orpheline de la
serie IIT. Le bloc Navigation du IIT-07 portait le placeholder
'Suivant : --' : remplace par le lien vers le IIT-9. Une seule ligne de
markdown changee -- pas de re-execution due (C.2, exception markdown).
Reproduit localement avant/apres : FAIL [orphan_entry] IIT-09 -> 0 NEW
(execroot serie IIT complete depuis la tete de PR, baseline main).
Note d'escalier : la marche 2 (IIT-08, PR #20650, OPEN) reintegrera la
chaine 07 -> 08 -> 09 a son merge -- le lien 07 -> 09 reste vrai dans
l'escalier tant que la marche 2 n'est pas livree.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

This branch has not been deployed

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

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants