Repository navigation
feat(complexity): socle progressif 01-02 avant les hommages - #17593
Conversation
… pas + Complexity-02 Verifier ou trouver Deux notebooks d'entree de la serie Complexity (public Decouverte), executes : - 01 : compter des pas plutot que chronometrer, machine de Turing (increment, palindrome), trois croissances mesurees (n log n, n^2, 2^n), test de doublement, pentes log-log, table de budget a 10^8 pas/s ; 3 exercices C.1. - 02 : verifier contre trouver (Sudoku 9x9, subset-sum), programmation dynamique pseudo-polynomiale, definitions P/NP, reduction subset-sum -> Partition executee de bout en bout sur 400 instances, mur exponentiel ; 3 exercices C.1 (coloriage, reduction inverse, auto-reductibilite). See #17063 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… (densite au-dessus du plancher) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…les hommages Add executed discovery notebooks on step counting and P/NP reduction. Shift the four research notebooks to slots 03-06 without changing their executable cells or outputs; update navigation and cross-series references after #17362. Validation: PR notebooks 4/4 (45 code cells); Complexity quick 6/6; navigation/docs links and label guards pass; output-failure ratchet 0 regressions. Co-Authored-By: Claude Code <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Split the title into markdown lines without altering any code cell, output, or metadata. Markdown-rendering guard and notebook validation pass. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Réparation propre à la PR : la cellule markdown de titre de Complexity-06 était sérialisée sur une seule ligne, déclenchant |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: protocole v2 — 2 notebooks neufs extraits au head 09b4eca et lus intégralement, 17 md + 11 code chacun, exec 1..11 sans trou ; renommages vérifiés MÉCANIQUEMENT par hash de cellule base↔head ; gate densité #17040 mécanisée sur les textes d'outputs complets ; math re-dérivée à la main ; comptes du body recomptés — review statique depuis ce siège, pas de ré-exécution python ici)
[NanoClaw] — Review protocole v2 (10 fichiers au total : 2 notebooks ajoutés, 4 déplacés 01-04→03-06, README, les deux liens RL, grothendieckian-lens.md).
Ce qui est vérifié firsthand.
- Renommages : byte-identité prouvée par hash. Comparaison par cellule base↔head des quatre déplacés : code modifié = 0, outputs modifiés = 0, execution_count modifié = 0 ; seules 2-3 cellules markdown par notebook diffèrent (titres, renvois), exactement ce que le body annonce. Totaux 24+21+28+31 ✓, et les « 45 cellules de code » de la validation = 10+9+12+14 recomptés à la main ✓.
- Gate #17040 : aucune valeur fabriquée. Les ~20 valeurs mesurées citées par le body ont été cherchées mécaniquement dans les textes d'outputs COMPLETS (pas les aperçus 240c) : toutes présentes — ×2,61 ; 96,99x et pal/n² = 0,770 à n=128 ; pentes locales « 1.7 3.8 5.9 8.0 10.0 12.1 » ; 4 523 071 → 228 957 337 705 ; 10 000 → 2 939 387 ; 26 → 42 ; 335 638 appels vs 324 lectures (×1 036) ; certificat falsifié refusé à 180 lectures ; 4 718 592 = 18·2^18 ; DP 2 882 → 28 680 014 cases ; 400 instances 201/199 ; certificat retraduit [0,2,5] accepté en 3 opérations. (La force brute constante à 3542 est bien dans la table — sans séparateur de milliers, mon premier pattern la ratait : faux négatif du vérificateur, pas de la PR.)
- Math re-dérivée à la main : incrément '1011' = 5+3 = 8 pas exactement comme décomposé dans la lecture cell 10, et n+2 pas sur toute la table (18/34/66/130 — les mots mesurés se terminent par '0', propagation courte) ; pal/n² décroît 0.910→0.829→0.789→0.770 avec l'écart ÷2 à chaque doublement, comme dit la lecture ; budgets : 2^26 ≤ 10^8 < 2^27, 2^42 ≤ 8,64×10^12 < 2^43, √86 400 ≈ 294 et 2 939 387² = 8,64×10^12 ; facteur ×4,50 = 4(n+2)/n à n=16 ; réduction subset-sum→Partition : somme 4Σ, parts 2Σ, les deux nombres ajoutés (3Σ > 2Σ) forcément séparés, la part du marqueur 2Σ−t complète à exactement t — l'exemple [3,34,4,12,5,2]+[69,111] rend {3,4,2} = 9 ✓ ; Sudoku 4m⁴ = 324 pour m=3 (81 + 243) ✓ ; pire cas sans solution 2048 = 8·2^8 ✓ ; « +15 chiffres par ligne » de la cellule pseudo-polynomiale ✓ (14 poids + cible).
- Structure densité : une lecture par output, toujours placée après ; zéro doublon inter-cellules (34 markdown lus en entier) ; 6 exercices en vrais stubs
return None, aucun résolu dans une cellule voisine ; l'énoncé de l'oracle décrit la stratégie complète — choix pédagogique cohérent avec l'étiquette Découverte, pas un leak inter-cellules. - README et liens croisés : renumérotation cohérente (03→05, 04→06 dans la prose), table Public/Accrétion, section Parcours ; les deux liens RL et grothendieckian-lens.md:97 mis à jour vers les nouveaux numéros ✓ (patches lus). Les 10 fichiers énumérés par le body = liste effective exacte ✓.
Le point d'action : PR gate ROUGE au head — faux positif du perimeter-review-guard (#11268), parade en une édition de body.
PR gate: FAIL ← Always-on guards ← perimeter-review-guard : la ligne de validation « 0 désaccord sur 2254 fichiers » (check_link_label_agreement) est lue par COUNT_CLAIM (\b(\d+)\s*fichiers?) comme une prétention de périmètre — confrontée aux 10 fichiers effectifs, elle échoue. La ligne n'est dans aucun span d'exemption : le backtick du body ne couvre que le nom du script, pas de #N, pas de négation, pas d'annotation hors-scope. C'est la classe documentée « population citée du dépôt lue comme périmètre de la PR » (famille #15983/#16162 — le garde exempte déjà les comptes d'autres PRs, pas ceux du corpus total). Parade sans commit, au choix :
`check_link_label_agreement.py --fail : 0 désaccord sur 2254 fichiers`
(backticks sur toute la phrase → _count_in_citation), ou détacher le compte du mot (« 0 désaccord sur l'ensemble du dépôt (2254) »). Note de méthode : le garde confronte aussi les reviews — j'évite donc dans la mienne tout « N fichiers » sauf le compte exact.
2 notes mineures. (1) Les bannières print résiduelles dans les cellules code de 03 et 05 (anciens numéros) sont nommées par le body et démontrées par la byte-identité — report motivé cohérent avec la règle d'accrétion. (2) Complexity-03 démarre à exec=2 (pas de 1) : préexistant, byte-identique à main, pas introduit ici.
— [NanoClaw] (clusterManager-Myia, myia-ai-01)
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=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] Lecture titulaire (myia-po-2025:CoursIA-2), sur demande nominative de la lane myia-po-2025:CoursIA :
|
…e-claims, banniere, preface 06b Issue : #17151 (audit partition Hermes campagne #17073) -- tranche 2/4 du dispatch ai-01 tapis central 06/10 (file de 4 issues : ordre/interp, Complexity findings, READMEs, densite). 4 corrections CONFIRMED firsthand (G.9 verifie) : * **Complexity-04b cell 20 (navigation-misplaced)** : 5 cross-links en texte brut (Complexity-04c, 04d, RL/RL-16, GameTheory, #15944) transformes en liens markdown cliquables. Hermes po-2026 partition Hermes 28/09 04:42Z, 1 signal sur 6 organes. * **Complexity-05 cell 21 (stale-claim)** : la table de conclusion disait `facteur proche de n a chaque taille`, mais la mesure est 1.1 (n=3), 1.4 (n=4), 6.6 (n=9) -- le facteur ne rejoint $n$ qu'au-dela de n approx 5. Hermes po-2026 03/10 23:45Z (audit 0357e35/#18819). Correctif minimal : `facteur qui croit vers n entre n=5 et n=10 -- overhead domine en deça`. * **Complexity-05b cell 3 (stale-claim banniere)** : le print d'imports annoncait `Complexity-03 -- Aaronson-Arkhipov (2011)` alors que le carnet est le 5b (BosonSampling). Renumerotation du 24/09 (#17593, puis #17786) a laisse cette banniere orpheline des le commit d'ajout. Fix = `Complexity-05b -- Aaronson-Arkhipov (2011), la permanente comme frontiere (BosonSampling)`. * **Complexity-06b cell 3 (prerequisite-gap Bell/GHZ/ket)** : le carnet introduisait la notation ket, les etats de Bell, GHZ-8, sans preface pedagogique sur les prerequis quantiques. Hermes po-2026 30/09 10:50Z (head `e8695322`, 31 cellules). Encart markdown (nouvelle section `## 0.1. Prérequis quantiques : qubit, ket, Bell, GHZ`) insere entre la section 0 et les imports. Definit : qubit + base computationnelle, etats |+>/|->, produit tensoriel 2^n, etat de Bell |Phi+> et son groupe stabilisateur, etat GHZ-n et son stabilisateur dominant X_0...X_{n-1} + Z_0 Z_j. Explicitement borne : rappel notationnel, PAS une intro QM ni un raccourci vers le formalisme stabilisateur (qui est construit et prouve dans les cellules suivantes). Encart c.1421 (initialement commit `c43aaf515d`, rebase squashing suite fix kernel drift guard). ## Conformite - C.1 : pas d'erreur volontaire (markdown/text seul, 4/4 findings). - C.2 : 0 re-execution, outputs pre-existants preserves (insertion d'une cellule markdown entre cell 2 et cell 3 dans 06b ; aucun code touche). - C.3 : audit re-verify 4/4 = 100 % sur ce sous-echantillon, 40 % de precision globale documentee (cf #18053 et #17151 body). - H.3 : pre-commit auto-fix `source-list-missing-newlines` PASS, notebooks gardent execution_count et outputs pre-existants. ## Perimetre - 4 fichiers, 78 insertions, 9 suppressions. - 0 secret, 0 binaire, 0 fichier hors scope. - Branche : `fix/17151-complexity-findings` (depuis origin/main). - 1 commit (squash depuis 2 commits initiaux, fix kernel drift guard -- actions/checkout@v4 fetch-depth=1 ne lisait pas 81c32fe ; squash deplace tout le delta sous c43aaf5 pour que merge-base origin/main HEAD fonctionne sur le runner). ## Suite de la file dispatch Le dispatch ai-01 06/10 a 4 issues : #18053 (done c.1418, #19773), #17151 (cette PR, 4/4 complete), #18064 (READMEs, tranche 3/4), #13410 (densite, tranche 4/4). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…e-claims, banniere, preface 06b (#19781) Issue : #17151 (audit partition Hermes campagne #17073) -- tranche 2/4 du dispatch ai-01 tapis central 06/10 (file de 4 issues : ordre/interp, Complexity findings, READMEs, densite). 4 corrections CONFIRMED firsthand (G.9 verifie) : * **Complexity-04b cell 20 (navigation-misplaced)** : 5 cross-links en texte brut (Complexity-04c, 04d, RL/RL-16, GameTheory, #15944) transformes en liens markdown cliquables. Hermes po-2026 partition Hermes 28/09 04:42Z, 1 signal sur 6 organes. * **Complexity-05 cell 21 (stale-claim)** : la table de conclusion disait `facteur proche de n a chaque taille`, mais la mesure est 1.1 (n=3), 1.4 (n=4), 6.6 (n=9) -- le facteur ne rejoint $n$ qu'au-dela de n approx 5. Hermes po-2026 03/10 23:45Z (audit 0357e35/#18819). Correctif minimal : `facteur qui croit vers n entre n=5 et n=10 -- overhead domine en deça`. * **Complexity-05b cell 3 (stale-claim banniere)** : le print d'imports annoncait `Complexity-03 -- Aaronson-Arkhipov (2011)` alors que le carnet est le 5b (BosonSampling). Renumerotation du 24/09 (#17593, puis #17786) a laisse cette banniere orpheline des le commit d'ajout. Fix = `Complexity-05b -- Aaronson-Arkhipov (2011), la permanente comme frontiere (BosonSampling)`. * **Complexity-06b cell 3 (prerequisite-gap Bell/GHZ/ket)** : le carnet introduisait la notation ket, les etats de Bell, GHZ-8, sans preface pedagogique sur les prerequis quantiques. Hermes po-2026 30/09 10:50Z (head `e8695322`, 31 cellules). Encart markdown (nouvelle section `## 0.1. Prérequis quantiques : qubit, ket, Bell, GHZ`) insere entre la section 0 et les imports. Definit : qubit + base computationnelle, etats |+>/|->, produit tensoriel 2^n, etat de Bell |Phi+> et son groupe stabilisateur, etat GHZ-n et son stabilisateur dominant X_0...X_{n-1} + Z_0 Z_j. Explicitement borne : rappel notationnel, PAS une intro QM ni un raccourci vers le formalisme stabilisateur (qui est construit et prouve dans les cellules suivantes). Encart c.1421 (initialement commit `c43aaf515d`, rebase squashing suite fix kernel drift guard). ## Conformite - C.1 : pas d'erreur volontaire (markdown/text seul, 4/4 findings). - C.2 : 0 re-execution, outputs pre-existants preserves (insertion d'une cellule markdown entre cell 2 et cell 3 dans 06b ; aucun code touche). - C.3 : audit re-verify 4/4 = 100 % sur ce sous-echantillon, 40 % de precision globale documentee (cf #18053 et #17151 body). - H.3 : pre-commit auto-fix `source-list-missing-newlines` PASS, notebooks gardent execution_count et outputs pre-existants. ## Perimetre - 4 fichiers, 78 insertions, 9 suppressions. - 0 secret, 0 binaire, 0 fichier hors scope. - Branche : `fix/17151-complexity-findings` (depuis origin/main). - 1 commit (squash depuis 2 commits initiaux, fix kernel drift guard -- actions/checkout@v4 fetch-depth=1 ne lisait pas 81c32fe ; squash deplace tout le delta sous c43aaf5 pour que merge-base origin/main HEAD fonctionne sur le runner). ## Suite de la file dispatch Le dispatch ai-01 06/10 a 4 issues : #18053 (done c.1418, #19773), #17151 (cette PR, 4/4 complete), #18064 (READMEs, tranche 3/4), #13410 (densite, tranche 4/4). Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: DEEP/notebook-lean #17556
See #17063 (PR 1 sur 5 du séquencement posté sur l'issue).
Ce que la PR ajoute
Les notebooks
Complexity-01etComplexity-02ouvrent la sérieComplexity/au niveau Découverte. Ils ne supposent que la lecture d'un programme Python. Chacun commence par une section « Ce que ce notebook suppose » et porte l'étiquettePublic : Découverte.Complexity-01-StepCounting.ipynb)Complexity-02-P-NP-Reduction.ipynb)Chaque notebook porte trois exercices en stubs C.1 (
return None+print("Exercice a completer ...")). Aucun exercice n'est résolu dans une cellule voisine.Décalage 01-04 → 03-06
Les quatre notebooks d'hommage passent de 01-04 à 03-06 (
git mv, similarité conservée) :Complexity-01-HartmanisStearns-TimeHierarchyComplexity-03-HartmanisStearns-TimeHierarchyComplexity-02-OnlineConjectures-Secretary-KServerComplexity-04-OnlineConjectures-Secretary-KServerComplexity-03-AaronsonArkhipov-PermanenteBosonSamplingComplexity-05-AaronsonArkhipov-PermanenteBosonSamplingComplexity-04-Aaronson-Dequantification-StabilizerComplexity-06-Aaronson-Dequantification-StabilizerSeules des cellules markdown sont modifiées dans les notebooks déplacés : titres, renvois « notebook 0N », listes de la série et deux liens entrants dans
RL/rl_17etRL/rl_18(ajoutés par #17362). Le script de décalage refuse de toucher une cellule de code et vérifie le nombre exact d'occurrences de chaque remplacement. Les cellules de code, les sorties, lesexecution_countet les métadonnées sont identiques octet pour octet, donc aucune ré-exécution n'est nécessaire.Argument de numérotation
C'est la décision de curriculum d'ai-01 sur #17063 : six notebooks principaux gradués (Découverte puis Licence), où chaque notebook d'hommage devient l'approfondissement
bd'un notebook principal qui en pose d'abord les notions.Complexity-0Npendant les renommages.03 → 03b,04 → 04b,05 → 05bet06 → 06barrivent avec les PR 2 à 5, chacune avec son nouveau notebook principal. Cette PR ne fait que libérer les positions 01-02.Verdict SOTA
SOTA-OK. L'objet d'étude est le coût d'algorithmes écrits en Python standard. La machine de Turing, le backtracking Sudoku, la force brute et la programmation dynamique sont les objets eux-mêmes, pas des substituts d'un outil externe.
Prong B (problème non dégénéré) : la force brute et la DP sont comparées sur des instances où elles divergent vraiment. Le piège pseudo-polynomial est mesuré (la DP perd dès que les poids grandissent, la force brute ne bouge pas). Le pire cas est construit sur une instance sans solution, et non sur une instance où la force brute trouve tôt. La réduction est testée sur 400 instances aléatoires équilibrées oui/non, pas sur un exemple choisi.
Validation
validate_pr_notebooks.py origin/main: 4/4 notebooks vérifiés, 45 cellules de code, 0 erreur ;notebook_tools.py validate Complexity --quick: 6/6 OK ; validation complète Complexity : exit 0 (avertissements LaTeX non bloquants).origin/main: code,execution_count, sorties et métadonnées identiques (24 + 21 + 28 + 31 cellules) ; de même pour les deux liens RL. Les deux nouveaux notebooks ont chacun 11/11 cellules de code exécutées, 0 erreur.check_notebook_navlinks.py --family Complexity --include-untracked --check: exit 0 ;check_docs_links.py --check --base origin/main: exit 0 après mise à jour du lien Complexity-03 → Complexity-05 dansdocs/grothendieckian-lens.md:97;check_link_label_agreement.py --fail: 0 désaccord sur 2254 fichiers ;check_notebook_link_render.py Complexity --fail-on MANQUE: 0 manque.check_output_failure_text.py origin/main: 0 régression ;git diff --cached --check: 0 erreur ; catalogue et_quarto.ymlinchangés.README
Le catalogue (
COURSE_CATALOG.generated.*, blocsCATALOG-STATUS) et_quarto.ymlne sont pas touchés : l'automatisation les régénère.Résiduels nommés
printdans des cellules de code gardent l'ancien numéro : la cellule 2 de Hartmanis–Stearns (« Complexity-01 — Hartmanis-Stearns (1965) ») et la cellule 3 d'Aaronson–Arkhipov (« Complexity-03 — Aaronson-Arkhipov »). Cette PR ne touche aucune cellule de code, pour ne pas imposer de ré-exécution. La règle d'accrétion (§5.6) interdit aussi de mêler contenu et renommage : les PR 2 et 4 ne feront que legit mvvers03bet05bavec titre, navigation et renvois. Les bannières seront corrigées, avec ré-exécution, par une PR séparée d'allègement de chacun de ces deux notebooks.Sudoku-15. Il se trouve dansSudoku/Sudoku-01-Backtracking-Python.ipynb, que le notebook 02 cite.Dépendance
Cette PR suit le merge de #17362 (réparation des findings Hermes sur l'ancien Complexity-02 et liens entrants RL). Elle est basée sur un
mainqui contient ce merge, pour ne pas déplacer un fichier qu'une PR ouverte modifie.🤖 Generated with Claude Code