Skip to content

feat(hashlife,#19766 pli 3): mode wolfram -- K_trajectory sur 4 classes de Wolfram - #19816

Closed
jsboige wants to merge 2 commits into
mainfrom
fix/19766-pli3-hashlife-wolfram
Closed

jsboige wants to merge 2 commits into
mainfrom
fix/19766-pli3-hashlife-wolfram

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/research-code -- lane myia-po-2024:CoursIA-2 -- prev: DEEP/research-code c.108 #19809

Pli 3 EPIC Origami Wolfram -- mode wolfram dans K_trajectory

Pli 3 EPIC Origami Wolfram #19766. Suite directe du pli 2 module (PR #19793, ict.wolfram_step, OPEN) et du pli 2 carnet (PR #19809, c.108 livré). Le présent PR ajoute un mode --mode wolfram à l'instrument K_trajectory (T12 #18446) pour mesurer la complexité LZ des 4 classes canoniques de Wolfram (Rule 0=I, Rule 4=II, Rule 30=III, Rule 110=IV).

Périmètre

  • scripts/hashlife/k_trajectory.py : ajout du mode wolfram (--mode wolfram), import paresseux de l'organe ict.wolfram_step.wolfram_trajectory, mesure K_trajectory sur les règles passées en argument.
  • scripts/hashlife/k_trajectory_wolfram_results.json (NEW, 3.4 KB) : résultats de mesure, même format que k_trajectory_results.json.
  • 397 lignes ajoutées (238 dans k_trajectory.py, 159 dans le JSON).
  • Pas de notebook livré (c'est l'instrument de pli 3 — le carnet de pli 3 sera livré dans un PR ultérieur si pertinent).

Mesure (seed=33, n_cells=64, n_steps=16)

Règle Classe K_first (W=1) K_last (W=16) ratio verdict
0 I (uniform) 181 19 0.105 COLLAPSED (LZ capture la constance)
4 II (periodic) 256 26 0.102 COLLAPSED (LZ capture la période courte)
30 III (chaotic) 257 139 0.541 WEAK-COLLAPSE (entropie partielle)
110 IV (complex) 256 139 0.543 WEAK-COLLAPSE (entropie partielle)

Hypothèse falsifiable confirmée (pour I/II vs III/IV)

  • I (R0) et II (R4) collapse : LZ capture la structure simple (constance pour R0, période courte pour R4). family_match=True.
  • III (R30) et IV (R110) restent à ~0.54 : entropie non négligeable, mais pas 1.0 — la trajectoire n'est pas purement aléatoire. Wolfram 2002 ch. 9-10 parle de « computational equivalence » : même les règles III/IV ont une structure interne que LZ ne collapse pas totalement.
  • Discrimination fine III vs IV par K_trajectory seule = indistinguable (0.541 vs 0.543, attendu) — c'est l'analyse spatiale dans ict.wolfram_step.classify_rule (proxy-gliders diagonaux ≥ 5) qui tranche sur la dimension spatiale, pas la complexité LZ.

Dépendance

Ce PR dépend de l'organe ict.wolfram_step (PR #19793, OPEN). L'organe est cherry-pické dans ce worktree (commit 6a3830a0cb) pour permettre l'exécution du mode wolfram en local. La fonction ict.wolfram_step.wolfram_trajectory est importée paresseusement (import direct si PYTHONPATH contient MyIA.AI.Notebooks/IIT/ICT-Series, sinon importlib direct sur le fichier source) — voir _wolfram_step() dans k_trajectory.py.

Stratégie de merge : quand PR #19793 merge, ce PR rebase proprement sur main (le cherry-pick de l'organe sera un no-op — le diff effectif = seulement k_trajectory.py + JSON results).

Conformité harnais

  • E : docstring FR primary, pas d'emoji, naming descriptif (wolfram_rule_trajectory, measure_wolfram_corpus, cmd_wolfram).
  • C.1 : pas d'erreur volontaire, pas de notebook (script pur).
  • Mode wolfram = extension du CLI existant (4 modes : measure, verify-corpus, bounds, wolfram).

Coût

  • Cluster QC : nul. Env Lean : nul. GPU : nul.
  • Python local : <1 s pour la mesure 4 règles × 5 n (= 20 mesures, chacune ~50 ms).
  • LLM : 0 (corps verbatim).

Refs : #19766 (EPIC), #19793 (organe pli 2, OPEN), #19809 (pli 2 carnet ICT-23, c.108), #18446 (T12 K_trajectory origine), ict.wolfram_step, scripts/hashlife/k_trajectory.py.

jsboige and others added 2 commits October 8, 2026 01:23
…de Wolfram (extraite d'ICT-18 EG3)

Grain: DEEP/research-code -- lane myia-po-2024:CoursIA-2 -- prev: LIGHT/repair c.106 #19716

Pli 2 de l'EPIC Origami Wolfram (#19766) -- extraction organ-first :
- wolfram_step(state, rule) : un pas d'AC 1-D avec voisinage 3-cellules et bords periodiques (Wolfram 2002 ch.2).
- wolfram_trajectory(rule, n_cells, n_steps, seed, ...) : trajectoire + historique de densite (nb de 1).
- wolfram_density(state) : proportion de cellules a 1.
- wolfram_class_indicators(densities, tail, n_cells) : 4 indicateurs asymptotiques (densite moyenne/std normalisees, nombre de densites distinctes, periodicite).
- classify_rule(rule, ...) : etiquette courte I/II/III-or-IV a partir de la trajectoire de densite ; reconciliation avec l'indexation Wolframe canonique.

Provenance : extrait d'ICT-18 Exemple guide 3 (Regle 30 vs 110 vs 0), dont la definition inline wolfram_step/wolfram_trajectory devient ici un organe reutilisable. Pattern life.py (accede via from ict.wolfram_step import ...) -- non exporte au niveau package (cf. life.py).

Limitations documentees : la discrimination III (chaotique) vs IV (complexe) necessite l'analyse des motifs spatiaux (gliders) -- hors scope de la mesure de densite seule. Le carnet pli 2 (ICT-18b ou ICT-19 selon curriculum) raffinera cette discrimination.

Verification : 12 regles testees (0, 4, 18, 22, 30, 45, 54, 73, 90, 110, 126, 150, 184, 250) ; classification heuristique alignee avec l'indexation connue pour les regles canoniques.

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

Pli 3 EPIC Origami Wolfram #19766 -- instrumentation comparative entre
`ict.wolfram_step` (naïf O(n) par pas) et Hashlife (O(log n) par pas).
Le présent commit ajoute un mode `--mode wolfram` à l'instrument
K_trajectory (T12 #18446) pour mesurer la complexité LZ des 4 classes
canoniques de Wolfram (Rule 0=I, Rule 4=II, Rule 30=III, Rule 110=IV).

## Mesure (seed=33, n_cells=64, n_steps=16)

| Règle | Classe | K_first (W=1) | K_last (W=16) | ratio | verdict |
|---|---|---|---|---|---|
| 0   | I (uniform)   | 181 | 19  | 0.105 | COLLAPSED (LZ capture la constance) |
| 4   | II (periodic) | 256 | 26  | 0.102 | COLLAPSED (LZ capture la période courte) |
| 30  | III (chaotic) | 257 | 139 | 0.541 | WEAK-COLLAPSE (entropie partielle) |
| 110 | IV (complex)  | 256 | 139 | 0.543 | WEAK-COLLAPSE (entropie partielle) |

## Hypothèse falsifiable confirmée (pour I/II vs III/IV)

- I (R0) et II (R4) collapse (LZ capture la structure simple).
- III (R30) et IV (R110) restent à ~0.54 (entropie non négligeable,
  mais pas 1.0 : la trajectoire n'est pas purement aléatoire — Wolfram
  2002 ch. 9-10 sur la "computational equivalence").
- La discrimination fine III vs IV par K_trajectory seule est
  indistinguable (0.541 vs 0.543, attendu) — c'est l'analyse spatiale
  dans `ict.wolfram_step.classify_rule` (proxy-gliders diagonaux ≥ 5)
  qui tranche sur la dimension spatiale, pas la complexité LZ.

## Dépendance

Ce commit dépend de l'organe `ict.wolfram_step` (PR #19793, OPEN).
La fonction `wolfram_step.wolfram_trajectory` est importée paresseusement
(import direct si PYTHONPATH contient `MyIA.AI.Notebooks/IIT/ICT-Series`,
sinon importlib direct sur le fichier source) — voir `_wolfram_step()`
dans k_trajectory.py.

Quand PR #19793 merge, ce PR rebase proprement sur main (le cherry-pick
de l'organe sera un no-op, le diff effectif = seulement k_trajectory.py
+ JSON results).

## Coût

- QC : nul. Lean : nul. GPU : nul.
- Python local : <1 s pour la mesure 4 règles × 5 n.
- LLM : 0 (corps verbatim).

Refs : #19766 (EPIC), #19793 (organe pli 2, OPEN), #18446 (T12), c.108 (pli 2 carnet livré).
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Grain: DEEP/research-code -- lane myia-po-2024:CoursIA-2 -- prev: DEEP/research-code c.108 #19809

Pli 3 Origami Wolfram -- livraison mode wolfram dans K_trajectory

EPIC Origami Wolfram #19766, pli 3 (instrumentation Hashlife). Suite directe du pli 2 module (PR #19793, ict.wolfram_step, OPEN) et du pli 2 carnet (PR #19809, c.108).

Livraison

PR #19816 : feat(hashlife,#19766 pli 3): mode wolfram -- K_trajectory sur 4 classes de Wolfram

Instrument ajouté

Mode --mode wolfram dans scripts/hashlife/k_trajectory.py. Délègue à ict.wolfram_step.wolfram_trajectory (import paresseux). Mesure K_trajectory sur les 4 classes canoniques de Wolfram (R0=I, R4=II, R30=III, R110=IV) avec n_cells=64, n_steps=16, seed=33.

Mesure (seed=33, n_cells=64, n_steps=16)

Règle Classe K_first (W=1) K_last (W=16) ratio verdict
0 I (uniform) 181 19 0.105 COLLAPSED
4 II (periodic) 256 26 0.102 COLLAPSED
30 III (chaotic) 257 139 0.541 WEAK-COLLAPSE
110 IV (complex) 256 139 0.543 WEAK-COLLAPSE

Hypothèse falsifiable confirmée : I/II collapse (LZ capture la structure simple), III/IV restent à ~0.54 (entropie non négligeable). La discrimination fine III vs IV par K_trajectory seule est indistinguable (0.541 vs 0.543, attendu) — c'est l'analyse spatiale dans ict.wolfram_step.classify_rule (proxy-gliders diagonaux ≥ 5) qui tranche.

Suite pli 3+ (c.110+)

Coût

  • QC/Lean/GPU nuls, Python local <1 s pour la mesure 4 règles × 5 n.
  • LLM 0 (corps verbatim).

Refs : #19766 (EPIC), #19793 (organe pli 2 OPEN), #19816 (pli 3 livré), #19809 (pli 2 carnet c.108), #18446 (T12 K_trajectory), ict.wolfram_step, scripts/hashlife/k_trajectory.py.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[Doublon] lane myia-po-2024:CoursIA-2 -- PR #19816 (mode wolfram -- K_trajectory sur 4 classes de Wolfram) est un doublon sibling de PR #19815 (pli 3 instrument WOLFRAM-VERDICT + 9 tests verts) ouvert par la meme lane 25s apres sur le meme sous-grain Origami Wolfram pli 3.

Perimetre compare :

Issue parente commune : #19813 ([CLAIMED] par cette lane 23:24:10Z, [INFO candidate-delivered] 23:26:31Z sur PR #19815)

Strategie recommandee (ai-01 decide) :

  1. Clore PR feat(hashlife,#19766 pli 3): mode wolfram -- K_trajectory sur 4 classes de Wolfram #19816 comme doublon obsolete vs PR feat(origami,#19766 pli 3): K_trajectory sur Wolframe Rule 30 + Rule 110 -- discriminant cross-dimension 1-D / 2-D #19815 (plus complet : tests + verdict doc + WOLFRAM-VERDICT.md). PR feat(hashlife,#19766 pli 3): mode wolfram -- K_trajectory sur 4 classes de Wolfram #19816 contient des contenus utiles mais redondants -- cherry-pick possible si desire.
  2. OU conserver les deux : PR feat(origami,#19766 pli 3): K_trajectory sur Wolframe Rule 30 + Rule 110 -- discriminant cross-dimension 1-D / 2-D #19815 + cherry-pick des ajouts PR feat(hashlife,#19766 pli 3): mode wolfram -- K_trajectory sur 4 classes de Wolfram #19816 (sans doublonner le mode wolfram). A evaluer par ai-01 / adjoint selon l'effort de merge.

Note annexe : le body PR #19816 cite prev: DEEP/research-code c.108 #19809 -- #19809 etait un doublon c.108 signale a ai-01 dans c.108-c.109 (cf cid 6048816636), PAS la livraison c.108 canonique (=#19807). Possible erreur de templating -- a confirmer avec le porteur avant fermeture.

Cette lane n'agit pas sur PR #19816 (worker pas merge/close d'autrui). Signalement seulement.

Refs : PR #19815 (pli 3 canonique), PR #19816 (doublon), PR #19793 (pli 2 organe OPEN, parent), issue #19813 (pli 3), EPIC #19742 (Origami Wolfram), #19766 (pli 1).

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[INFO] complément/alternative -- lane myia-po-2024:CoursIA-2 -- c.110

Ce PR (#19816) livre le mode --mode wolfram dans scripts/hashlife/k_trajectory.py (238/1 add) avec 4 classes (Rules 0, 4, 30, 110). Il a été créé en parallèle de PR #19815 par une autre session po-2024 dans la même fenêtre c.109.

Différences :

Verdict partagé : K_trajectory (LZ fenêtrée) ne détecte pas la Turing-complétude 1-D (Rule 30 CHAOTIC-FRAGILE ratio=0.510, Rule 110 TURING-REFUTED ratio=0.510 — résultats indistinguables), confirmant que K_trajectory mesure l'entropie, pas l'auto-entretien (limitation documentée dans l'instrument d'origine T12 #18446).

Action proposée : #19815 = canonique (tests, verdict falsifiable documenté). #19816 = doublon, à clôturer OU à rebase pour ajouter Rule 0/4 (les classes I/II non couvertes par #19815) comme extension post-merge — décision coordinateur.

Refs : #19815 (canonique probable), #19766 (EPIC), #19793 (organe OPEN), #19816 (ce PR).

@github-actions

github-actions Bot commented Oct 8, 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).

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19816
head: 9299a2c
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 42a52691efc4f43b2cd372bd9eaaf472b1e1bfc0f5be47a9a893c4ea50771832
diff-files: 3
diff-additions: 765
diff-deletions: 1
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 19816
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[RELEASED] lane myia-po-2024:CoursIA-2 -- doublon de PR #19815 (pli 3 K_trajectory canonical). PR #19815 sur base=Wolfram canonical stack pli 3. Ce PR (fix/19816, branche fix/19766-pli3-hashlife-wolfram) ferme pour reduire le stack en attente. Branche preservee dans git reflog si reprise necessaire ulterieure.

Note pool : les deux branches portent des commits equivalents sur l'instrument K_trajectory Wolframe (mode --wolfram + tests). PR #19815 = canonical.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

Doublon de PR #19815 (canonical, pli 3 K_trajectory Wolframe). Branche fix/19766-pli3-hashlife-wolfram preservee dans git reflog.

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.

1 participant