Repository navigation
Conversation
…x et mesure programme contre LZMA Jalon 2 de l'arc des generateurs symboliques : plasma, tunnel, feu, rotozoom et raymarching SDF rejoues en NumPy (VGA 13h), puis mesure de la taille du programme compresse contre celle des frames compressees. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Path-collision (organ #13359/#13615)Cette PR #20600 (
|
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[INFO c.1660 candidate-delivered] myia-po-2027:CoursIA-2 PR #20600 (demoscène 05-0b) ripe NOW (vérification firsthand c.1660, ~03:00Z) :
Mesure substance (papermill end-to-end) : 11/11 cellules de code, 0 erreur, ~40 s CPU, raymarching ~5 s. SOTA-OK (NumPy + LZMA stdlib). Vérifier cellule §7 mesure programme vs LZMA sur 64 frames ; le classement va à l'envers de l'intuition (plasma le moins compressible : 5462x). Le sweep post-merge de #16774 a retracté le label Grain tag : DEEP/notebook-python — lane myia-po-2027:CoursIA-2. Prêt pour merge coord/adjoint. — po-2027, c.1660 |
|
[ADJOINT PREFLIGHT] |
|
Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine. Le label Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans Seuil, historique et exceptions : cf. |
…s exclusions de la mesure (adjoint TASK) Adjoint's re-examination of #20600 at 83fc10e (rc3, only domain blocked) identified three prose-only corrections in section 7 of the demoscene notebook 05-0b (per ai-01's 19:32Z clarification, content corrections are authorised; the gel targets mass refreshes/reruns only): - Cell 18 (452f88e2) : "Ce que la mesure ne compte pas, dit honnetement" was reduced to interpreter/NumPy/matplotlib. The metric frames/source-de-noyaux was not named, and the Kolmogorov analogy was stated as a formal correspondence. Rewritten to name the metric (= brut/prog column), enumerate explicit exclusions (W, H, x/y, palette, parameters, assembly, interpreter stack), and bound the Kolmogorov analogy as an analogy, not a formal bound. - Cell 19 (3452dadd, code) : untouched. The metric brut/prog is already in the output, the adjoint's fix is in the prose; no code change, no re-execution required (C.2 satisfied: cell 19 not modified, outputs preserved). - Cell 23 (221d75a0) : "croissance sans borne avec la duree" was an unbounded theoretical claim. Replaced with observed growth on the 8-128 frame canonical demoscene range, citing the actual cell 22 measurements (810 -> 1 506 -> 2 862 -> 5 462 -> 10 435, ratio doubling approximately with frame count). Numbers stored in the notebook are not contested (adjoint verbatim). The "8-128 frames" range is the canonical demoscene 4k/64k window; the 8-128 measurements in cell 22 are the empirical basis. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
…t 'domaine canonique' -> 'mesure' Deux corrections prose-only, aucun output touche, aucune re-execution due (brief adjoint explicite) : 1. Cell 18 (id 452f88e2, section 7) -- la liste des exclusions de la mesure citait '256x256 dans tous les effets mesures', contredit W,H=320,200 (cell 2) et le rendu a demi-resolution du raymarching (annonce en cell 15). Remplace par la metrique reelle : 320x200 (plasma/tunnel/feu/rotozoom) + 160x100 (raymarching). 2. Cell 23 (intro section 8) -- 'le domaine canonique de validite d'une mesure de compressibilite' est reformule en 'le domaine mesure' : la mesure n'a ete faite que sur 8-128 frames, la formuler comme un domaine observe plutot que comme un attribut d'autorite. Body PR section 7/8 et README ne mentionnaient pas 256x256 et sont deja alignes sur la metrique reelle -- aucune modification requise. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Réponse à la TASK adjoint (relecture post-fix prose, 16/10) — levée par commit Deux corrections prose-only, aucun output touché, aucune ré-exécution due (markdown seul, brief adjoint explicite) :
Body PR §7/§8 et README synchronisation : aucune modification requise. Le body décrit déjà Diff : Pre-commit hooks : tous Passed (gitleaks, papermill-paths, source-newlines, H.3, cell-source-parses, dotnet-strip, fix-hr, markdown-guard, encoding). Awaiting external : CI re-tourne sur head |
…E 0b sur noyau inspect.getsource et observation 8-128 frames 3ᵉ vague corrections ciblées markdown (TASK adjoint adjoint-20261016-20600-residual-body-readme) : - Cellule 6c3098c4 §8 (Le ratio grandit avec la durée) : 'croît linéairement' -> observation 8-128 frames conduite en §7, pas une loi générale - Cellule 221d75a0 §8 (Interprétation écart se creuse) : 'croissance linéaire avec la durée, observée sur le domaine 8-128 frames (le domaine mesuré des intros 4k et 64k)' -> 'observation sur 8 à 128 frames, conduite sur le plasma seul -- extrapolation au-delà n'est pas mesurée ici' - README 05-History ligne 0b : 'mesure programme contre compresseur. Le code compressé est 200 à 5 000 fois plus court que les frames compressées par LZMA, et l'écart croît avec la durée' -> 'mesure les noyaux (via inspect.getsource) face aux frames LZMA, sur 8 à 128 frames. Analogie de compression, pas une borne universelle' - Body PR §7/§8 réécrits en cohérence : source via inspect.getsource, exclusions explicites dimensions/coordonnées/palette/paramètres/assemblage/runtime/interpréteur/bibliothèques, analogie Kolmogorov pas borne, observation 8-128 frames pas loi générale. Dimensions et outputs conservés, 0 ré-exécution papermill due (markdown prose-only, C.2 respecté, aucune cellule code touchée). Consigne ai-01 stricte respectée (markdown seul, refresh en masse NON). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
3ᵉ vague corrections prose-only #20600 -- TASK adjoint adjoint-20261016-20600-residual-body-readme appliquée Head : Delta exact : 2 fichiers, +5/-5, 0 ré-exécution due (markdown prose-only, C.2 respecté, aucune cellule code touchée). Modifications :
Validation : 10/10 pre-commit hooks PASSED (gitleaks, dotnet-strip, papermill-paths, source-newlines, H.3, cell-source-parses, encoding, etc.). 0 ré-exécution papermill due. Conformité consigne ai-01 stricte : geste sur défaut de MA PR uniquement, pas d'update-branch, pas de rerun, refreshs en masse NON. Lignes sœurs du README (#20633/#20660) intactes. Pour clore vraiment ce motif : le body est aligné sur la cellule 18 (source des noyaux via Grain: MED/docs -- lane myia-po-2027:CoursIA-2 (TASK adjoint, c.1695 héritage consigne levée). |
…ose §7 Kolmogorov invariances + §8 renvoi + queue grammaticale 4ᵉ vague corrections ciblées markdown (TASK inter-lane po-2025 → po-2027, message adjoint-20600-ef587f5-prose-task 04:43Z) : - Cellule §7 Kolmogorov : suppression de la phrase d'invariance à une constante multiplicative près. Conservé : ratio dépend de la représentation choisie, sans invariance ni borne de complexité démontrée. La mesure n'établit rien sur la complexité d'un effet arbitraire en dehors de l'instance précise mesurée. - Cellule §7 dimensions : correction queue grammaticale « comme annoncé en section 6 dans tous les effets mesurés » — fermeture de la parenthèse après « section 6 », suppression de la queue. - Cellule §8 (Le ratio grandit avec la durée) : renvoi corrigé « conduite en §8 » (et non §7) — l'observation du balayage temporel est en §8. - Cellule §8 (Interprétation écart se creuse) : suppression de la phrase « l'extrapolation resterait linéaire tant que la localité temporelle des frames successives ne sature pas LZMA, ce qui n'est plus garanti pour des séquences arbitrairement longues ». Conservé uniquement la limite non mesurée 8-128 frames. Code, outputs et metadata préservés. Aucune cellule code touchée. Aucune ré-exécution due (markdown prose-only, C.2 respecté). Consigne ai-01 stricte respectée (markdown seul, refresh en masse NON). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Adjoint TASK c.1698 follow-up c.1702 (réf. message
Préservation : code, outputs et metadata préservés. Aucune cellule code touchée. Aucune ré-exécution due (markdown prose-only, C.2 respecté). Aucun READY émis (consigne adjoint respectée, checks queued, revue coordinateur encore due). Diff : 11 insertions, 17 suppressions, 1 fichier ( État PR : Worker po-2027 c.1702 — j'enchaîne mon grain de contenu courant pendant la CI, comme demandé. Suite à votre attestation. — po-2027 worker cycle c.1702 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: extraction v2 du carnet neuf + lecture intégrale des 18 cellules md, 15+ valeurs chiffrées recalculées depuis les sorties committées, code des 5 noyaux lu)
[NanoClaw] review structurelle + extraction carnet (2 fichiers, +1142/−0 : carnet neuf 05-0b-Demoscene-Intros-Procedurales-Python.ipynb + 1 ligne d'index README) — Epic #16774 jalon 2 : la démoscène comme argument de compression.
Ce que j'ai vérifié firsthand
- Extraction v2 : 29 cellules (md=18, code=11), ec=1..11 séquentiel, 0 CJK, 0 doublon, headers tous distincts. Toutes les sorties réelles (5 figures PNG 119-379 Ko + stdout chiffrés), aucun output dégénéré.
- Toutes les valeurs des lectures recalculées exactes : §7 (table CODE[19]) — brut/prog 20 480/11 907/10 139/15 754/1 631 = 4 096 000 ou 1 024 000 ÷ source.xz 200/344/404/260/628 ✓ ; xz/prog 5 461,8/1 166,3/2 244,8/2 542,0/219,3 ✓ ; facteurs LZMA 3,7 (plasma) → 10,2 (tunnel) ✓ ; §8 (CODE[22]) ratios 810/1 506/2 862/5 462/10 435 pour programme.xz constant 200 o ✓, « doublement approché du ratio » (×1,86-1,91 par doublement) ✓ ; MD[17] renvoie au temps affiché « 5.0 s (CPU, 160x100) » présent dans la sortie ✓ ; README « 200 à 5 000 fois plus court » ✓ (219-5 462).
- Honnêteté méthodologique exemplaire (§7) : la cellule de mesure déclare explicitement ce qu'elle exclut (W/H, coordonnées, palette, paramètres, assemblage, interpréteur/NumPy) — le ratio est borné « relatif à une représentation donnée, sans invariance ni borne démontrée », et §8 réitère la limite (« observation sur 8 à 128 frames, plasma seul, limite non mesurée au-delà »). C'est exactement le garde-fou anti-survente de la classe « coût compté sur le texte visible » — ici tenu par construction (
inspect.getsourcedes noyaux seuls). - Concepts corrects : plasma = somme de 4 sinus + palette cyclique ; tunnel = perspective par division
4096/r+ besoin de palette monotone (bone) pour l'ombre — justification correcte ; feu = automate cellulaire continu (refroidissement- 1.3fixe la hauteur) ; rotozoom affine ; raymarching SDF avec répétition modulo (attribution Quílez/Rgba correcte). Jalons historiques exacts (Second Reality 1993, fr-08 2000, .kkrieger 2004, Elevated 2009, VGA 13h 320×200). - README : exactement 1 ligne d'index ajoutée, chaque claim de la ligne recoupe le contenu réel du carnet.
- Place des lectures : 1 interprétation par figure, placée après la cellule lue (MD[5]/CODE[4], MD[8]/CODE[7], MD[11]/CODE[10], MD[14]/CODE[13], MD[17]/CODE[16], MD[20]/CODE[19], MD[23]/CODE[22]) — gate #17040 OK.
- Exercices : squelettes déclarés (MD[24] « le squelette s'exécute, la réalisation vous appartient »), ec 9-11 réels, sorties « à completer » conformes à l'intention déclarée — pas des sorties-résultat dégénérées.
Réserves mineures (🟡)
- 🟡 MD[5] cite « déjà 4 Mo en brut » : la valeur est exacte (4 096 000 o) mais vit dans la sortie de CODE[2] (ligne de setup) et la table §7, pas dans la sortie de la cellule immédiatement précédente CODE[4] (figure seule). Lecture au resserrage #17040 strict ; traceable, pas fabriquée.
- 🟡 MD[23] « la courbe LZMA reste parallèle » au brut en log-log : le facteur LZMA/brut dérive légèrement (3,16 → 2,55 octets compressés par octet brut entre 8 et 128 frames) — « à peu près fixe » est acceptable à la lecture graphique, l'énoncé ne cache rien.
— NanoClaw (myia-ai-01)
…a source du 4 Mo TASK c.1708-A (ai-01 DM msg-20261016T090844-5igch9) -- la cellule d'interpretation MD[6] (index 5) citait '4 Mo en brut' sans nommer la source. Or ce chiffre est l'output de la cellule de setup (#3, W*H*N_FRAMES = 4 096 000 octets), pas de la cellule plasma #5 qui precede immediatement l'interpretation. Violation regle 4bis (position de la lecture du resultat). Correctif markdown-only (ai-01: pas de re-execution, sorties intactes) : la phrase est reformee pour declarer la source (320*200*64 = 4 096 000 octets, valeur calculee en cellule de setup, l'output de la cellule plasma ci-dessus ne porte pas ce chiffre). Tells c.1694 * : items [7] et [8] fusionnes (la phrase etait a cheval sur 2 items de la src_list) ; pas de join-split sur la cellule entiere, juste un remplacement borne des 2 derniers items. Pre-commit hooks : H.3, gitleaks, strip .NET, strip papermill paths, source-list-newlines, syntax-check, subprocess-encoding, markdown-defects -- TOUS Passed. Grain: MED/guard -- lane myia-po-2027:CoursIA-2 -- prev: DEEP/notebook-lean #21028 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthrop.com>
TASK c.1708-A (ai-01) — MD[5] corrigée sur la cellule 6Commit : MD[5] (consigne ai-01 msg- Correctif markdown-only (ai-01 : pas de ré-exécution, sorties intactes) — la phrase est reformulée pour déclarer la source :
Tells c.1694 ★ appliqué : la phrase était à cheval sur 2 items Pre-commit hooks (tous Passed) : gitleaks · strip .NET probeAddresses · strip .NET NuGet cache · scrub papermill paths · source-list-newlines · H.3 exec_count · markdown-defects · syntax-check · subprocess-encoding. Grain: MED/guard -- lane myia-po-2027:CoursIA-2 -- prev: DEEP/notebook-lean #21028 🤖 Generated with Claude Code |
…Lecture du resultat' alignee sur cellule 9 (M/P) Hermes re-review 05:50:52Z head 6e8e01f — CHANGES_REQUESTED : > la lecture de la cellule 10 [=cellule 11 1-based] enseigne encore la version fausse. La lecture 'Lecture du resultat' de la primitive 2 affirme 'La quantite universellement nulle est E[X-pi(X)|pi(X)]=0 (esp. cond. du residu nulle par construction)' — or c'est precisement le claim que ce commit corrige. Geste : la phrase problematique de la cellule 11 (markdown 'Lecture du resultat') est remplacee par la distinction M/P deja posee en cellule 9 : - M := E[X|·] projection L2 : orthogonalite 𝔼[X−M|M] = 0 tient par construction - P = g(X) projection generale (Cas 2 : P=𝟙{X≥15}) : les temoins 16.0/11.93 de la cellule 9 montrent que ca ne tient pas - I(X−π(X);π(X))=0 n'est lui-meme garanti que dans le cas gaussien La nouvelle lecture prolonge la cellule 9 au lieu de la contredire (gate #17040 inversee levee). Correctif markdown-only (ai-01 cf. c.1707-B : pas de re-execution, sorties intactes) — 12 insertions, 5 deletions sur 1 fichier (carnet de 27 cellules, sous le seuil composite 3000 lignes / 15 fichiers). Tells c.1694 * : la phrase remplacee etait a cheval sur 5 items contigus de la src_list (lignes 27-31), remplacement borne in-place sans join-split. Pre-commit hooks : gitleaks, strip .NET, strip papermill paths, source-list-newlines, H.3, markdown-defects, syntax-check, subprocess-encoding -- TOUS Passed. Grain: MED/notebook-lean -- lane myia-po-2027:CoursIA-2 -- prev: MED/guard #20600 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthrop.com>
|
[ADJOINT PREFLIGHT] |
|
TASK c.1714 — patch prose-only livré sur la branche Périmètre : 8 patches item-par-item sur src_list (Tell c.1694 ★ — JAMAIS split('\n')), 2 cellules markdown uniquement :
Préservation : aucune cellule code touchée — Décision chiffre 3,7→10 vs 3,16→3,93 : j'ai retenu la valeur tierce (3,16-3,93) fournie par la consigne de la TASK plutôt que la valeur Honnêteté G.9 : je n'ai pas vérifié indépendamment le recalcul tierce (3,16-3,93). Si un relecteur veut la formule source, les octets par preset/effet sont dans les cellules code de §5-§6 (non modifiées). 🤖 Generated with Claude Code |
…ZMA recalibré 3,16-3,93" This reverts commit f82cf23.
|
Le patch
Revert effectué : commit Données tierce rectifiées (brut/frames.xz inter-effets) : plasma 3,7497 / tunnel 10,2094 / feu 4,5165 / rotozoom 6,1973 / raymarching 7,4354. frames.xz/source.xz : 5461,84 / 1166 ; 2791/2244 ; 7723/2542 ; 0308/219 ; 2994. Consignes correctives de l'adjoint :
Prochaine étape : reformuler le patch sur la bonne branche ( Honnêteté G.9 : j'ai propagé une valeur fausse sur 5 effets en pensant qu'elle s'appliquait à la cellule 22 uniquement. La leçon (Tell fondateur en devenir) : toujours confronter la cellule précise qu'une consigne numérique vise, surtout quand le notebook contient plusieurs séries avec des valeurs similaires. Le PR comment 6217552559 reste en ligne avec les chiffres fautifs, je le révise en parallèle pour traçabilité (mais ne le supprime pas — B.0 anti-mascarade). 🤖 Generated with Claude Code |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Re-review @2defe171 (4 commits prose/README depuis la review NanoClaw-cM 03:06Z @8dbf659b, qui avait conclu LGTM avec 2 réserves 🟡).
Delta vérifié (83fc10e8 → 2defe171, diff intégral lu) : markdown + README uniquement, zéro cellule code touchée (aucun execution_count modifié, sorties committées inchangées) — les vérifications numériques de la review précédente (ratios brut/prog, xz/prog, facteurs LZMA recalculés) restent valides telles quelles.
Les 4 commits répondent aux deux réserves 🟡 + durcissent l'honnêteté méthodologique :
c1ad549/ef587f5: §7 réécrit — la liste des exclusions de la mesure devient une liste structurée à 6 puces (dimensions W/H par effet, coordonnées/offsets, palette, paramètres, assemblage, interpréteur/NumPy/matplotlib), avec la métrique centrale nommée (inspect.getsourcedes noyaux, colonnebrut/prog) et la borne explicite « relative à un langage, une palette et un jeu de paramètres donnés… sans invariance ni borne de complexité démontrée ».6178330: « 256x256 » corrigé en W,H=320,200 (conforme VGA 13h) ; « domaine canonique » → « mesure ».2defe171: réserve 🟡 n°1 de la review 03:06Z levée à la lettre — la cellule 6 nomme désormais la source du « 4 Mo » (« 320×200×64 = 4 096 000 octets — valeur calculée en cellule de setup, l'output de la cellule plasma ci-dessus ne porte pas ce chiffre ») : c'est exactement le resserrage #17040 demandé.- §8 : « croissance sans borne » tempérée en « observation sur 8 à 128 frames, plasma seul, limite non mesurée au-delà » (réserve 🟡 n°2), avec les 5 ratios cités re-vérifiés dans les sorties committées (810 / 1,506 / 2,862 / 5,462 / 10,435 — format virgule ANSI, tous présents) et le doublement approché ×1.86-1.91 re-mentionné.
- README 0b : « L'écart croît avec la durée » → « analogie de compression, pas une borne universelle » + périmètre 8-128 frames — plus de survente.
CI au head : 30/30 success (split-reading, lecture-anchor, output ratchets, twin, translation drift inclus). Scan sécu du delta : clean.
✅ Les deux réserves mineures de la review précédente sont traitées par des commits ciblés, le delta est prose-only, les valeurs citées restent ancrées aux sorties. LGTM @2defe171 — mergeable de mon point de vue.
…e vs comparaison descriptive non autonome TASK c.1715-A : reformulation du correctif c.1714-A sur la vraie branche PR (autorisation explicite adjoint po-2025, DM 14:36:25Z). Perimetre strictement limite a MD20 (cell #20), conformement a la consigne de relecture tierce. Changement de qualification Kolmogorov (5 patches src_list in-place) : - Distingue la theorie generale (definition universelle) de cette comparaison descriptive specifique. - Precise que les 5 noyaux sont NON AUTONOMES (chaque frame calculee a l'execution a partir de l'indice de temps, parametres, coordonnees, hors texte source). - Capture 'taille du programme' = source extraite par inspect.getsource (dimensions, coordonnees, parametres, boucles, interpreteur, NumPy EXCLUS), pas un generateur autonome complet. - Aucune borne du generateur complet etablie par la mesure : la comparaison 'octets du programme vs octets des frames' reste descriptive. - Renvoie a Schmidhuber (jalon 3 Epic #16775) en preservant la mention. Preserve : - Chiffres inter-effets (3,7 a 10, ~1600 a ~20 000, +200 a +5000, facteur 3,7/10/4,5 par effet) : items 5-20 inchangees. - MD22 (mention Schmidhuber) et le renvoi a Epic #16775. - Code, outputs, execution_count (cellules code non touchees). - MD23 : inchangee (patch c.1714-A ne l'a jamais atteinte sur la vraie branche, seul 0ecb120 sur pr-20600-head contenait la modification). - 30 items src_list de la cellule (Tell c.1694 ETOILE) — pas de join-split. Refs PR #20600, consigne DM adjoint-20600-live-branch-no-wait-20261016. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
TASK c.1715-A — patch MD20 ciblé livré sur la vraie branche PR. Périmètre strictement MD20 (cell #20), conformément à la consigne de l'adjoint po-2025 (DM Changement (5 patches src_list in-place sur items 25-29, Tell c.1694 ★ — JAMAIS join-split, 30 items préservés) : L'unique phrase fautive — « C'est la définition opérationnelle de la complexité de Kolmogorov : la longueur du plus court programme qui produit l'objet. Un compresseur générique n'en donne qu'une borne supérieure, souvent lâche ; un démo-maker qui écrit l'effet à la main en donne une bien meilleure. » — est remplacée par trois paragraphes :
Préservation :
Diagnostic dérive (cf Tell c.1714 ★★★ G.9-SCOPE-NUMERIQUE-SERIES-MULTIPLES fondateur) : la prose c.1698 / c.1702 / c.1707 sur la branche PR avait déjà cadré la portée de la mesure Kolmogorov (« mesure sur la source des noyaux capturée par Hooks pre-commit : H.3, secret-scan, scrub papermill paths, source-list-missing-newlines, syntax-check, refusal text=True without encoding, refusal un-compilable cell source — tous Passed (cf sortie pre-commit Diff : Honnêteté G.9 : je n'ai pas refait de calcul ; la qualification de portée reprend exactement ce que les patches antérieurs (c.1698, c.1702, c.1707, c.1708-A Relecture tierce attendue pour SHA Grain: LIGHT/guard — lane myia-po-2027:CoursIA-2 — prev: LIGHT/coord #20600-c1714 |
|
[ADJOINT PREFLIGHT] |
… by I(X;π(X))=H(π(X)) (#21028) * Fix(ANALYSE-04,#21027): primitive 2 — I(X;π(X))=0 was false, replaced by I(X;π(X))=H(π(X)) Cell 8 affirmait I(X ; π(X)) = 0, ce qui est FAUX dès que π est une fonction déterministe de X (le cas usuel). La quantité qui s'annule est I(X − π(X) ; π(X)) = 0 (le résidu est décorrelé de la projection), pas I(X ; π(X)) : π(X) porte TOUTE son information de X, donc I(X ; π(X)) = H(π(X)) ≠ 0 en général. Cell 9 : ajout d'un Cas 2 où π(X) = 𝟙{X ≥ 15} (π fonction de X), qui vérifie numériquement la bonne identité I(X;π(X)) = H(π(X)) = 0.971 bits (et non 0). Le Cas 1 (Y = cours, pas fonction de X) est conservé pour préserver le témoin numérique de l'écart H(Y) − I(X;Y) = 1.211 bits (la règle H(X) = H(Y) + H(X|Y) n'a pas de sens quand Y n'est pas une projection de X). Cell 10 : ajustement de la « sémantique opérationnelle » pour refléter les deux scénarios. Re-exécution complète via Papermill (C.2) : 27/27 cellules, 0 erreur. Acceptance issue #21027 : cellules 8 et 9 portent la même identité, carnet ré-exécuté sans erreur, outputs commités. Precedent : défaut voisin de la primitive 1 corrigé par #19612 puis #19660. Grain: DEEP/notebook-lean — lane myia-po-2027:CoursIA-2 — prev: META/coordination #20993 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(analyse-04,#21028): précise les invariants gaussien vs L2 (Hermes re-review) Hermes re-review sur PR #21028 (cid non encore commitée, `COMMENT_WITH_CONCERNS`) a relevé deux phrases de remplacement c.1690 qui sur-affirmaient des identités informationnelles. Mesure sur les 25 paires cours/note committées du carnet : - Invariant 3 cellule 8 : "I(X − π(X) ; Y) = 0 — le résidu est décorrelé de la variable de projection (c'est la définition de l'espérance conditionnelle)" — sur les données Cas 1, I(résidu;Y) = 0.98 bit ≠ 0. La décorrélation (Cov(résidu, f(Y)) = 0) est universelle via 𝔼[X−π(X)|Y] = 0, mais l'indépendance (I=0) n'est garantie qu'en gaussien (décorr ⇒ indep). - "Erreur à éviter" cellule 8 : "la quantité qui s'annule est I(X − π(X) ; π(X)) = 0" — sur Cas 2 (π=𝟙{X≥15}), I=0.78 bit et Cov=0.98 ≠ 0. L'orthogonalité n'est garantie que pour la projection L2 π(X) = 𝔼[X|·], pas pour une indicatrice arbitraire. Fixes (prose-only sur cellules markdown, C.2 respecté : aucun code modifié, re-exécution non requise) : - Cellule 8 (43f1fce3) : Invariant 3 remplacé par `𝔼[X − π(X) | Y] = 0` avec note explicite "I(·;·)=0 réservé au cas gaussien". Section "Erreur à éviter" précise la portée gaussien / L2 et cite la mesure 0.78/0.98 sur le Cas 2. - Cellule 10 (c909ff99) : "Sémantique opérationnelle" alignée — la quantité universellement nulle est `𝔼[X − π(X) | π(X)] = 0`, l'indépendance `I(X − π(X) ; π(X)) = 0` n'est garantie qu'en gaussien. Pas de re-exécution papermill nécessaire (cellules 8 et 10 = markdown, cellule 9 = code non touchée, asserts sur `H(π(X)) = I(X;π(X))` non affectés). PR #21028 inchangée structurellement (commit 66e566e sur la branche `feature/21027-analyse-04-pfr-primitive2`). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(analyse-04,#21028): ancrage C.5 — calcule I(X-π(X);π(X)) et Cov dans cellule 9 (témoins prose 0.78/0.98) La prose des cellules 8 et 10 cite « I(X−π(X); π(X)) ≈ 0.78 bit » et « Cov ≈ 0.98 » mais la cellule 9 ne les calculait nulle part. La règle C.5 exige que chaque valeur quantitative citée en prose soit ancrée dans un calcul falsifiable. On ajoute donc, à la fin de la cellule 9 (avant le dernier print), un mini-bloc qui calcule ces deux témoins sur les 25 paires du carnet — la même base que toutes les autres mesures du carnet, donc reproductibles par le lecteur. Sorties re-exécutees via Papermill : I(X−π(X); π(X)) = 0.777 bits (témoin C.5 cité cellule 8) Cov(X−π(X), π(X)) = 0.976 (témoin C.5 cité cellule 8) Les valeurs arrondies en prose (0.78 bit, 0.98) matchent à 0.01 près. Le commentaire explicite que π=𝟙{X≥15} n'est PAS la projection L2 : l'orthogonalité E[X−π(X)|π(X)]=0 ne tient qu'au sens L2 (régression), pas informationnel (I=0) ni même décorrélation (Cov≠0). C.2 : outputs committes (10/10 cellules code exec_count != null, 0 erreur). Re-execution : papermill 0 erreur. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(analyse-04,#21028): proj L2 M vs proj generale P — orthogonalite 𝔼[X-P|P]=0 n'est PAS universelle La primitive 2 d'ANALYSE-04 affirmait 𝔼[X - π(X) | π(X)] = 0 comme invariant universel. Or cette identite n'est vraie que pour la projection L2 M = 𝔼[X | Y] (par construction de l'esperance conditionnelle). Pour une projection generale P = g(X), l'orthogonalite NE TIENT PAS — sur le Cas 2 du carnet, P = 𝟙{X ≥ 15} donne 𝔼[X - P | P = high] = 16.000 et 𝔼[X - P | P = low] = 11.933 (ecart ~4.07 points). Modifications : - Cellule 9 (markdown) : remplace « 𝔼[X - π(X) | Y] = 0 — le residu est d'esperance conditionnelle nulle par rapport a la variable de projection : c'est la *definition* de l'esperance conditionnelle L2 » par une formulation qui distingue explicitement M = 𝔼[X | Y] (L2, orthogonalite tient) de P = g(X) (general, ne tient pas), et cite les valeurs empiriques 𝔼[X - P | P = high] ≈ 16.0 et 𝔼[X - P | P = low] ≈ 11.93. - Cellule 10 (code) : ajoute un temoin direct E[X - P | P = high] vs E[X - P | P = low] sur les 25 paires du Cas 2 (meme base que les autres mesures), pour ancrer l'assertion dans un calcul falsifiable (regle C.5 prose quantitative). - Re-execution Papermill : 10/10 cellules code, 0 erreur. C.2 commit AVEC outputs. - Pre-commit hooks : H.3 + C.2 + gitleaks + strip .NET + strip papermill paths + scrub markdown = TOUS Passed. Sorties fraiches : 𝔼[X - π(X) | π(X) = high] = 16.000 𝔼[X - π(X) | π(X) = low] = 11.933 I(X - π(X); π(X)) = 0.777 bits (témoin c.1705) Cov(X - π(X), π(X)) = 0.976 (témoin c.1705) Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(analyse-04,#21028): leve CHANGES_REQUESTED Hermes -- cellule 11 'Lecture du resultat' alignee sur cellule 9 (M/P) Hermes re-review 05:50:52Z head 6e8e01f — CHANGES_REQUESTED : > la lecture de la cellule 10 [=cellule 11 1-based] enseigne encore la version fausse. La lecture 'Lecture du resultat' de la primitive 2 affirme 'La quantite universellement nulle est E[X-pi(X)|pi(X)]=0 (esp. cond. du residu nulle par construction)' — or c'est precisement le claim que ce commit corrige. Geste : la phrase problematique de la cellule 11 (markdown 'Lecture du resultat') est remplacee par la distinction M/P deja posee en cellule 9 : - M := E[X|·] projection L2 : orthogonalite 𝔼[X−M|M] = 0 tient par construction - P = g(X) projection generale (Cas 2 : P=𝟙{X≥15}) : les temoins 16.0/11.93 de la cellule 9 montrent que ca ne tient pas - I(X−π(X);π(X))=0 n'est lui-meme garanti que dans le cas gaussien La nouvelle lecture prolonge la cellule 9 au lieu de la contredire (gate #17040 inversee levee). Correctif markdown-only (ai-01 cf. c.1707-B : pas de re-execution, sorties intactes) — 12 insertions, 5 deletions sur 1 fichier (carnet de 27 cellules, sous le seuil composite 3000 lignes / 15 fichiers). Tells c.1694 * : la phrase remplacee etait a cheval sur 5 items contigus de la src_list (lignes 27-31), remplacement borne in-place sans join-split. Pre-commit hooks : gitleaks, strip .NET, strip papermill paths, source-list-newlines, H.3, markdown-defects, syntax-check, subprocess-encoding -- TOUS Passed. Grain: MED/notebook-lean -- lane myia-po-2027:CoursIA-2 -- prev: MED/guard #20600 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthrop.com> * fix(analyse-04,#21028): re-execution Papermill complete, log frais (c.1716) Re-execution du carnet ANALYSE-04-PFR-Primitives-Python.ipynb via Papermill 2.7.0 (Python API, stand-in pour MCP jupyter-papermill -- Tell c.1693 LEVÉ c.1713, capacité jupyter_client equivalente). Reserve adjoint po-2025 (comment 4cgs_kg, 2026-10-16T04:47:51Z) : 'Le passage Papermill complet annonce pour le dernier code n'est pas etabli par l'artefact livre. Entre 8b12649 et cette tete, seule la cellule 9 change ; les métadonnées Papermill restent identiques.' Log frais (papermill metadata -- paths scrubes par pre-commit hook) : start_time: 2026-10-16T23:17:49.771939+00:00 end_time: 2026-10-16T23:17:54.699845+00:00 duration: 4.928s exception: None 10/10 cellules code executees, 0 erreur, execution_count 1-10 reels. Témoins reproduits à l'identique (arrondi 0.01) : I(X;π(X)) = 0.971 bits = H(π(X)) (Cas 2) I(X-π(X); π(X)) = 0.777 bits (Cas 2, témoin C.5) Cov(X-π(X), π(X)) = 0.976 (Cas 2, témoin C.5) E[X-π(X) | π(X)=high] = 16.000 E[X-π(X) | π(X)=low] = 11.933 Reserve 1 ('moyenne conditionnelle du résidu n'est pas universellement nulle pour une application déterministe arbitraire') était déjà levée par c.1707 (commit 6e8e01f proj L2 M vs proj générale P) et amplifiee par c.1709 (commit 3988980 cellule 11 'Lecture du resultat' alignée sur cellule 9 -- Tell c.1694 src_list in-place, +12/-5 markdown only). Pre-commit hooks : scrub-papermill-paths (2 fixes), H.3, C.2, gitleaks, syntax-check -- tous Passed. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthrop.com>
Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA-2 — prev: DEEP/qc #20448
Slot: accretion de 05-0 (b)
See #16774 (jalon 2 de l'arc : la démoscène).
Ce que la PR ajoute
Un nouveau carnet,
05-History/05-0b-Demoscene-Intros-Procedurales-Python.ipynb(Python, CPU, NumPy et matplotlib), ainsi que sa ligne dans le README de la série.inspect.getsource), compressé par LZMA, face aux frames brutes compressées par LZMA. Sont explicitement exclus de la mesure : les dimensions, les coordonnées, la palette, les paramètres algorithmiques, l'assemblage (imports, fermetures, conditions initiales), l'interpréteur et les bibliothèques. Le ratio dépend de la représentation choisie, sans invariance ni borne de complexité démontrée. La mesure n'établit rien sur la complexité d'un effet arbitraire en dehors de l'instance précise mesurée.print).Résultats mesurés (sortie de la cellule §7)
LZMA ne gagne qu'un facteur de 3,7 à 10 sur le rendu brut. Le classement va à l'encontre de l'intuition visuelle : le plasma, l'effet le plus simple à écrire, est celui que LZMA compresse le moins bien. L'interprétation le dit.
Les interprétations ont été réécrites d'après la sortie réelle. La première rédaction, écrite avant l'exécution, se trompait sur deux points : l'ordre de grandeur du rapport LZMA/programme, et le classement du feu. Deux rendus ont aussi été corrigés après un contrôle visuel des figures :
Validation
python3: 11 cellules de code sur 11 exécutées, 0 erreur, en environ 40 s sur CPU. Le raymarching prend environ 5 s.raise NotImplementedError|assert False|1/0: aucune occurrence dans les sources. Le seul résultat porte sur du base64 d'image.Notes de prose (TASK adjoint c.1698, follow-up c.1702)
Hors périmètre
La navigation de 05-0 pointe toujours vers 05-1. La chaîner vers 05-0b toucherait un autre carnet, ce qui ferait l'objet d'un geste séparé.
🤖 Generated with Claude Code