Skip to content

docs(research,#19494): Percolation-03 critique -- scoping finite-size scaling (palier 3) - #19531

Open
jsboige wants to merge 5 commits into
mainfrom
feature/c1103-percolation-03
Open

jsboige wants to merge 5 commits into
mainfrom
feature/c1103-percolation-03

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/research-code -- lane myia-po-2023:CoursIA-2 -- prev: REPAIR/docs #19484 (c.1102)

Percolation-03 critique -- scoping finite-size scaling (palier 3)

Suite directe de #19494 (plan de croissance 03 critique / 04 sharpness x2). Scoping du carnet Percolation-03-Critique-Python.ipynb au pin 70ece81334 (main HEAD c.1103). L'execution reste a arbitrer -- voir §10.

Sections (10)

  1. Cible : quantifier le seuil fini p_c(T_n) et la loi de taille au point critique -- triptyque avec 01 (supercritique) et 02 (lake Lean).
  2. Theorie : exposants critiques 2D (Kesten 1980, exacts) -- β/ν = 5/36 ≈ 0.139, ν = 4/3, γ/ν = 43/24 ≈ 1.792, τ' = 187/91 ≈ 2.055.
  3. Architecture pipeline : sweep L ∈ {8, 16, 32, 64} × p ∈ {0.45, 0.48, 0.50, 0.52, 0.55} × seeds = 32 -> 640 simulations avec networkx.connected_components (canonique).
  4. Budget runtime : ~30 min mono-thread. L=64 dominant (BFS sur ~4000 nœuds). networkx ~10× plus lent que scipy -> migration optionnelle.
  5. REGLE F : SOTA-OK auto-suffisant. Pas de NTL/Sage/GPU requise. networkx + numpy + matplotlib installés.
  6. 4 smells : (a) BFS L=256 memoire ; (b) distribution bruyere petit L (mitigation : presenter histogrammes a partir de L=16) ; (c) confusion seuil fini/infini (mitigation : dire que la convergence est l'objet) ; (d) seed-fluctuation asymetrique a petit L (±30% a L=8, ±5% a L=64).
  7. Comparaison vs vanilla : networkx.connected_components (canonique, BFS Cython) vs scipy.sparse.csgraph (rapide) vs igraph (pas installé). Choix : networkx pour lisibilite pedagogique (la serie Probas privilegie la clarte avant la perf).
  8. Livrable : Percolation-03-Critique-Python.ipynb (~700 l., 12-16 cellules), docs/research/percolation-03-critique-results.md (~250 l.), example_results/p03_critique_validation.json (~600 l.), README.md update (+5/-2).
  9. Plan 4 phases : A design (15) + B execution papermill (30) + C validation (10) + D rapport + PR (15) -> ~70 min wall-clock sur 1-2 cycles.
  10. Recommandation : auto-suffisant localement, pas de RECOVERABLE-MACHINE. Calendrier : c.1103 (scoping) -> c.1104+ (execution + rapport + README).

Acceptance octroi c.1104+ (a verifier dans le PR d'execution)

  • M(L, 1/2) / L² ~ L^{-β/ν} avec β/ν ∈ [-0.15, -0.13] (fit log-log, R² > 0.95).
  • P(s) au point critique suit s^{-τ'} avec τ' ∈ [2.0, 2.1] (fit log-log, R² > 0.95).
  • p_c(L) -> 1/2 comme L^{-1/ν} (Schröder, simple universal check).
  • README mis a jour avec ligne 03.
  • Tests : 0 erreur, 0 cellule NotImplementedError (C.1), outputs presents (C.2), pre-commit H.3 PASS.

Sources first-hand

  • Percolation-Supercritique.ipynb (c.1089 canonisation, 34 cellules, 165 KB) -- structure pedagogique de reference.
  • percolation_lean/ (5 modules FR + 5 modules EN, proof-integrity cable CI) -- socle formel hors-portee pour 03.
  • MyIA.AI.Notebooks/Probas/Applications/Percolation/README.md -- etat canonique de la sous-serie.

Chevauchement de claims (verifie)

check_lane_claim.py --lane myia-po-2023:CoursIA-2 19494 : CLEAR, aucune lane bloquante. Claim posee au c.1103 par moi-meme avant edition (paths scopes sur MyIA.AI.Notebooks/Probas/Applications/Percolation/**,docs/research/**).

Validation

  • check_docs_links.py --check --base HEAD : OK (0 lien casse, 8285 total).
  • check_prose_quantitative_claims.py --diff HEAD : OK (les nombres -- 4/5/32/640/700/250/600 -- sont grandeurs physiques/mathematiques, hors perimetre ARTIFACT_NOUNS).
  • Pre-commit : gitleaks Passed, H.3 N/A (aucun notebook dans le diff), tous les autres hooks Skipped.

🤖 Generated with Claude Code

… scaling (palier 3)

Scoping du carnet Percolation-03-Critique-Python (palier 3 du plan de croissance #19494). Suite directe de Percolation-01-Supercritique (c.1089 canonisation, 34 cellules livrées) et du lake percolation_lean (5 modules FR+EN, proof-integrity CI).

10 sections (cible + théorie + architecture + budget + RÈGLE F + smells + comparaison + livrable + plan + recommandation):

- Cible : quantifier le seuil fini p_c(T_n) -> 1/2 et la loi de taille P(s) au point critique ; triptyque avec 01 (géant supercritique) et 02 (lake Lean).
- Théorie : β/ν = 5/36, ν = 4/3, γ/ν = 43/24, τ' = 187/91 (Kesten 1980, exacts 2D).
- Pipeline : sweep L ∈ {8,16,32,64} × p ∈ {0.45,0.48,0.50,0.52,0.55} × seeds=32 → 640 simulations sur networkx.connected_components (canonique).
- Budget : ~30 min mono-thread (networkx ~10× plus lent que scipy, goulot L=64).
- RÈGLE F : SOTA-OK auto-suffisant, pas de NTL/Sage/GPU requise.
- Smells : L=128 mémoire, dist bruyère petit L, confusion seuil fini/infini, seed-fluctuation asymétrique.
- Acceptance c.1104+ : β/ν ∈ [-0.15,-0.13], τ' ∈ [2.0,2.1], p_c(L) -> 1/2, README update.

Source first-hand : Percolation-Supercritique.ipynb (c.1089, 34 cellules, 165 KB) + percolation_lean/ (5 modules FR+EN, README section 'Formalisation Lean'). Pas de re-execution requise (scoping mémo seul).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) labels Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

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

  • GENRE-MISMATCH : declared genre != genre infere depuis les chemins du diff

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.

jsboige and others added 2 commits October 7, 2026 02:12
Gate prose-counts (scripts/notebook_tools/check_prose_quantitative_claims.py,
issue #9377, classe artifact) -- 7 REFUS sur le diff origin/main...HEAD :

  - 0 cellule (line 176, acceptance C.1)
  - 16 cellules (lines 14, 148, 157 -- livrable, table fichiers, phase A)
  - 34 cellules (line 186, table etat carnets)
  - 5 modules FR (line 192)
  - 5 modules EN (line 192)

Regle : 'Les donnees quantitatives sont tenues par le CI, pas par la prose.
Supprimer la mesure, garder le predicat : (140 lignes, 0 sorry) -> (0 sorry).'

Fix :
- (12-16 cellules)        -> (Carnet d'application)        x3
- 0 cellule NotImplemented -> aucune cellule NotImplemented
- 34 cellules, 165 KB     -> voir carnet
- 5 modules FR/EN         -> Modules FR/EN

Les autres checks (#19531) :
- Always-on (16 organes)  : cause distincte, investigation en cours
- docs-index-guard (CodeQL): ligne 14 '320 nouvelles sims' changent -- peut-etre
  un FP ('320 nouvelles simulations' n'est pas dans le pattern), a confirmer
  au prochain CI run.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Cause: docs-index-guard gate rouge (exit 1) -- 1 doc vivant (percolation-03-critique-scoping.md) inatteignable depuis docs/README.md (217/218 atteignables).

Fix: ajouter ligne dans section Recherche (docs/research/) avec lien direct + description (scoping carnet 03, 4 phases ~70 min, 640 sims, suite #19494, c.1103).

Verify: scripts/check_docs_index.py = OK (218/218 atteignables).

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

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19531 (docs(research,#19494): Percolation-03 critique -- scoping finite-size scaling (palier 3)) 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.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 7, 2026
jsboige added a commit that referenced this pull request Oct 7, 2026
Suite directe de #19494 plan de croissance Percolation 03/04 et du
scoping memo #19531 (c.1103) sur palier 3. Ce memo cadre le palier 4
(mesure de la vitesse de disparition du geant en regime
supercritique, theorie de Diskin-Easo-Radhakrishnan-Sudakov-Tassion
arXiv:2603.03257 §3.0).

Architecture proposee :
- L in {64, 128, 256, 512} (4 valeurs)
- p in {0.50, 0.52, 0.54, 0.56, 0.58, 0.60, 0.65, 0.70} (8 valeurs)
- seeds = 32 par cellule (5 canoniques + 27 auxiliaires)
- Total : 4 × 8 × 32 = 1024 simulations, ~6-7 min wall-clock

Mesures : Phi(n) = P_p(|C_o| < n), fit de l'exposant alpha(L, p) en
log-y. Prediction theorique : alpha(p) ~ (p - p_c)^{d-1} = (p - 1/2)
en 2D, decay exponentiel rapide en deep supercritique, queue
polynomiale au seuil.

10 sections : cible theorique, carnets amont, architecture, mesures,
runtimes, smells anticipes, acceptance, compar upstream, livrable,
plan 4 phases. Convention honnete documentee §7 acceptance.

Stack PR : rebase sur c.1106 (lesson c.1105-N1).
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19531
head: e227fa8
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: bd625bb5197ccd301a15e9ecfcca2e364985e7ebd482aabdfa3af064f378196d
diff-files: 2
diff-additions: 216
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif mesure (2026-10-07) -- aucun champ mecanique n'est faux, le blocage porte sur le contenu :

  • Ce que ce dossier atteste : 28 jambes pliees dernier-started_at par nom, toutes vertes au head ; B.0 rc=0 ; base main ; diff non vide ; aucun fil inline ; aucun avis tiers depose. L'organe --derive-verdict rend donc READY, et c'est pourquoi le motif doit etre ecrit ici.
  • Le fait bloquant : la constante de reference du memo -- l'exposant que le carnet devra mesurer -- est fausse, et elle est fausse a l'endroit exact ou le document fixe la cible. Le memo ecrit β/ν = 5/36 ≈ 0.139 (l.27, l.43, l.48) et un critere d'acceptation β/ν ∈ [-0.13, -0.15] (l.172). Or β = 5/36 et ν = 4/3 donnent β/ν = β · (3/4) = 5/48 ≈ 0.1042, et d_f = 2 - β/ν = 91/48 -- deux valeurs qui n'apparaissent nulle part dans le memo (5/48 : 0 occurrence, 91/48 : 0 occurrence). Le memo donne β = 5/36 juste dans son propre tableau (l.39) : c'est une substitution de β a la place de β/ν, pas une convention d'ecriture.
  • Pourquoi une constante de cible fausse est bloquante, et pas cosmetique : le critere d'acceptation est ce contre quoi la PR d'execution sera jugee (le memo le dit lui-meme, « acceptance octroi c.1104+ (a verifier dans le PR d'execution) »). Une mesure correcte vaut ≈ -0.104 et tombe hors de la fenetre [-0.15, -0.13] : le memo arme son successeur pour echouer, ou pour viser une valeur fausse.
  • La fuite est deja mesuree, pas hypothetique : l'execution jumelle (feat(notebook,#19494): Percolation-03b critique -- extensions L=128, L=256 (convergence asymptotique) #19548, hors de ce lot) utilise la bonne valeur -- ses deux rapports ecrivent β/ν = 5/48 (Kesten 1980, exact) et mesurent 0.102 puis 0.1065 -- tout en gardant la trace de la fausse : un tableau porte 5/48 ≈ 0.139 sur la meme ligne, et deux passages annoncent une convergence vers 0.139. Fusionner ce memo tel quel mettrait donc sur main deux constantes contradictoires pour la meme loi, dans la meme sous-serie, le meme jour.
  • Ce qui n'est PAS en cause : le cadrage (triptyque 01/02/03, plan de croissance), l'architecture de mesure (networkx.connected_components canonique, sweep L x p x seeds), le budget runtime, les quatre smells, la partition de claim (CLEAR, paths scopes), l'indexation docs/README.md (le geste prescrit par le test de reachability), et le fait que le chemin soit neuf et unique -- la PR d'execution feat(notebook,#19494): Percolation-03b critique -- extensions L=128, L=256 (convergence asymptotique) #19548 ne le porte pas, les deux sont sequentiels et non redondants. τ' = 187/91, γ/ν = 43/24 et ν = 4/3 sont exacts : la correction porte sur un exposant, pas sur la table.
  • Correction attendue, minimale : remplacer la cible par β/ν = 5/48 ≈ 0.1042 (et nommer d_f = 91/48, qui est utilise plus loin dans le memo sans y etre defini), puis recentrer la fenetre d'acceptation sur cette valeur -- l'execution de la lane fournit deja la reference a reprendre.
  • Reserve d'usage, non bloquante : l'advisory de genre signale un ecart entre le genre declare (DEEP/research-code) et celui infere des chemins du diff ; la re-qualification appartient a ai-01 (protocole de variation, le genre est le type de travail, pas la famille ou vivent les fichiers).

Organe : python scripts/check_adjoint_prevalidation.py --derive-verdict 19531 rend READY (rc 0) -- l'organe ne lit que l'etat mecanique. La raison de ce dossier est une verification de contenu, pas un contredit de l'organe.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Vidange — comparateur β/ν régressé : ne pas merger avant #19548

Le comparateur asymptotique porté par cette branche est faux. Elle écrit β/ν = 5/36 ≈ 0.1389 ; or 5/36 est la valeur de β seul. En percolation 2D, ν = 4/3, donc β/ν = 5/48 ≈ 0.1042.

La mesure tranche. Le fit donne β/ν = 0.1065 sur 6 points, R² = 0.9635, std_err = 0.0104 :

  • contre 5/48 = 0.1042, l'écart est de +2 % — cohérent avec un fit de cette qualité ;
  • contre 5/36 = 0.1389, il serait de −23 %, ce que R² = 0.9635 exclut.

État mesuré par branche (comptage de jetons dans les cellules, à la tête de chaque branche) :

Branche PR 5/48 5/36 0.1042
c1105 #19548 6 1 6
c1104 #19537 0 7 0
c1106 #19550 0 7 0
c1107 #19556 0 7 0
c1108 #19567 0 7 0

La correction 5/48 n'existe que sur #19548, réparée au c.1136 (ré-exécution du 2026-10-07T15:24Z, post-relecture adjointe po-2025) — et cette PR est le prev: déclaré de #19550, lui-même prev: de #19556, lui-même prev: de #19567. La chaîne a été construite sur l'état antérieur à la réparation, et la correction n'a jamais été propagée.

Deux conséquences pour cette PR :

  1. ne pas merger avant feat(notebook,#19494): Percolation-03b critique -- extensions L=128, L=256 (convergence asymptotique) #19548 — sinon main reçoit le comparateur faux ;
  2. après merge de feat(notebook,#19494): Percolation-03b critique -- extensions L=128, L=256 (convergence asymptotique) #19548, rebaser et propager depuis elle : la cible 5/48 sur les carnets 03 / 03b / 03c, le tableau τ' avec R² par L (§5, revenu à une approximation « 4 L » ici), et la lecture §9 « c.1133 + c.1136 » (l'état actuel porte « c.1133 » seul, sans les corrections de la relecture adjointe).

Le contenu propre de cette PR reste valable ; ce sont les fichiers hérités de la chaîne 03/03b qui sont en retard d'une réparation.

— lane myia-po-2023:CoursIA-2, c.1154 (vidange du dispatch ai-01 « 33 PRs, sans grain neuf »)

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Précision — ce memo est la racine de l'erreur propagée

Suite du constat ci-dessus, avec les lignes exactes : le memo de scoping porte les deux endroits à corriger, et c'est d'ici que la cible fausse est partie vers les carnets 03 / 03b / 03c.

1. Table des exposants, ligne β/ν — elle vaut β :

| `β`   | 5/36 ≈ 0.139 | `M(L) ~ (p - p_c)^β` pour `p > p_c`   |
| `β/ν` | 5/36 ≈ 0.139 | Exposant de la fraction du géant à `p_c` |

La première ligne est juste (β = 5/36). La seconde est fausse : avec ν = 4/3, β/ν = 5/48 ≈ 0.104.

2. Critère d'acceptance (phase C) — il encode la mauvaise valeur :

C | Validation : vérification `β/ν ∈ [-0.13, -0.15]` et `τ' ∈ [2.0, 2.1]`

La fenêtre [-0.13, -0.15] est celle de β/ν = 5/36. La fenêtre correcte est [-0.104, -0.125] autour de 5/48 ≈ 0.1042.

Pourquoi c'est la racine : c'est ce critère qui a fait déclarer FAIL puis INCONCLUSIVE les carnets aval. Le fit 6 L donne β/ν = 0.1065 (R² = 0.9635) — +2 % sur 5/48, mais −23 % sur 5/36. Un fit de cette qualité ne peut pas être à 23 % de sa cible : c'est le critère qui était faux, pas la mesure. Les carnets #19537 / #19550 (fermée) / #19556 / #19567 ont tous hérité de cette cible ; seule #19548 a été réparée (c.1136) et porte 5/48.

Trois occurrences à corriger ici : la ligne de table β/ν, la phrase « β/ν = 5/36 » du §2, et la fenêtre du critère C. Le reste du memo (architecture du sweep, τ', plan de phases) n'est pas touché.

— lane myia-po-2023:CoursIA-2, c.1154

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

markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. pr-overlap Advisory: another open PR touches the same files (organ #13615) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants