Skip to content

fix(hashlife,#19836 pli 8): block decomposition -- statistique LZ76, verdict DISCRIMINANT, 38 tests PASSED - #19836

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/19766-origami-pli8-blocks
Oct 11, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/19766-origami-pli8-blocks

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/research-code — lane myia-po-2024:CoursIA-2 — prev: DEEP/research-code #19826

Sujet

Suite Origami pli 8 — extension de l'instrument K_trajectory a la block decomposition (Zenil, Soler-Toscano, Kiani 2013, A decomposition method for global complexity, arXiv:1304.5813). Branche empilee sur le pli 7 (PR #19826).

Correctif du 2026-10-09. Le verdict livre par la version initiale de cette PR etait WOLFRAM-BLOCKS-NONDISCRIMINANT. Il reposait sur deux defauts d'instrument, mesures puis corriges ici — l'instrument corrige discrimine. Le titre et le body portaient encore l'ancien verdict : c'est ce que corrige cette edition.

Les deux defauts de la version initiale

(a) La statistique etait invariante a l'arrangement. La version initiale agregeait l'entropie de Shannon de chaque bloc — or H = -p0·log2(p0) - p1·log2(p1) ne depend que du nombre de 1, jamais de leur position. Temoin negatif mesure :

H('01010101...01')                 = 1.0     # trajectoire parfaitement periodique
H(sequence desordonnee equilibree) = 1.0

Une trajectoire periodique et une trajectoire chaotique equilibree y sont indiscernables par construction. Publier un verdict de non-discrimination sur cette statistique etait donc une tautologie, pas un resultat sur les automates. C'est aussi ce qui produisait les CLASS-II-DEVIATION de la version initiale : R4 (classe II, periodique) y rendait mean = 0.361 au lieu du landmark 0.0 — l'instrument y lisait la densite de 1, pas la regularite. Ce n'est pas davantage la statistique de la methode citee (Zenil 2013 agrege une approximation de K(bloc)).

(b) L'echelle sous-alimentait le test. A n_steps = 64 et W = 32 il ne restait que 2 blocs. Un ecart-type sur 2 echantillons ne mesure rien, et c'est pourtant la quantite sur laquelle portait le verdict. L'instrument declare desormais WOLFRAM-BLOCKS-UNDERPOWERED sous WOLFRAM_BLOCKS_MIN_N_BLOCKS = 4 : dans cette zone, ni confirmation ni refutation n'est concluante.

L'instrument corrige

La complexite par bloc est desormais la complexite LZ76 normalisee c(n)·log2(n)/n (Ziv & Lempel 1978 ; Li & Vitanyi 2019 ch. 6), une approximation de K(bloc) :

  • sensible a l'arrangement — une chaine periodique se factorise en peu de phrases, une chaine chaotique en beaucoup ;
  • sans plancher de cadrage — c'est un comptage entier, aucun compresseur n'est invoque. C'est precisement la propriete qui manquait aux plis 4 et 7, dont les mesures tombaient sous le plancher zlib aux petites fenetres.

L'entropie de Shannon reste calculee et committee (entropy_*) pour la tracabilite des mesures anterieures ; elle ne porte plus le verdict.

Livrables

  • scripts/hashlife/k_trajectory.py : mode --wolfram-blocks — WOLFRAM_BLOCK_LANDMARKS (signature --mean, --std), shannon_entropy_bits(), block_decompose_trajectory(), block_entropy_distribution(), measure_wolfram_blocks(), wolfram_blocks_verdict(), wolfram_blocks_discrimination_verdict(), cmd_wolfram_blocks(), ajout de --wolfram-blocks a argparse.
  • scripts/hashlife/wolfram_blocks_results.json : verbatim de la mesure canonique (24 entrees).
  • scripts/hashlife/WOLFRAM-VERDICT-BLOCKS.md (NEW, 141 lignes) : verdict falsifiable documente — perimetre, les deux defauts corriges, mesure canonique, verification hors echantillon, ce que le resultat ne dit pas, limites, reproduction.
  • scripts/hashlife/tests/test_wolfram_blocks.py : tests pytest (landmarks, shannon, decomposition, distribution, mesure, verdict, JSON round-trip).
  • scripts/hashlife/README.md (MAJ) : table 7 modes CLI, ligne de resultats pli 8.

Mesure canonique (n_cells = 256, n_steps = 256, seed = 33)

Regle Classe W=8 mean/std W=16 mean/std W=32 mean/std n_blocs (W=32)
0 I (uniforme) 0.017/0.033 0.012/0.025 0.010/0.018 8
4 II (periodique) 0.108/0.033 0.062/0.025 0.037/0.018 8
30 III (chaotique) 1.048/0.013 1.039/0.008 1.032/0.007 8
110 IV (structure) 0.783/0.079 0.757/0.078 0.732/0.084 8

L'ordre des moyennes suit la classe : R0 (0.010) < R4 (0.037) < R110 (0.732) < R30 (1.032). R30 — le chaos — est le plus incompressible, comportement attendu d'un estimateur de complexite, et que l'entropie de Shannon ne pouvait pas produire (elle rendait 1.000 pour R30 et 0.993 pour R110, soit un ecart de 0.007 qui ne mesurait rien).

Verdict falsifiable par regle

Regle Classe Observation vs landmark Verdict
0 I mean=0.010 ~= 0.010 ; std=0.018 ~= 0.020 CLASS-I-CONFIRMED
4 II mean=0.037 ~= 0.040 ; std=0.018 ~= 0.020 CLASS-II-CONFIRMED
30 III mean=1.032 ~= 1.030 ; std=0.007 ~= 0.010 CLASS-III-CONFIRMED
110 IV mean=0.732 ~= 0.670 ; std=0.084 ~= 0.130 CLASS-IV-CONFIRMED

Verdict final

WOLFRAM-BLOCKS-DISCRIMINANT
(R30 mean/std = 1.032/0.007, R110 mean/std = 0.732/0.084, delta_std = 0.077 >= 0.05)

Le discriminant est la dispersion, pas la moyenne. R30 est homogene — le chaos remplit chaque bloc de la meme facon, std ~ 0.007. R110 est heterogene — fond periodique et gliders cohabitent, donc le contenu des blocs varie, std = 0.084. C'est exactement l'heterogeneite structurelle que la decomposition par bloc cherche a capturer, et que l'entropie marginale ne pouvait pas voir. Le seuil 0.05 est celui de la version initiale : il n'a pas ete deplace pour faire passer le resultat — ce qui a change est l'instrument.

Verification hors echantillon

Les landmarks sont calibres a n = 256 ; la verification se fait ailleurs.

Autres echelles (seed 33, W=32) — 512 : R30 1.024/0.005, R110 0.483/0.196, delta 0.191 ; 1024 : R30 1.021/0.004, R110 0.346/0.190, delta 0.186. Les deux DISCRIMINANT.

Six seeds (n_cells=256, W=32) — deltas +0.127 (0), +0.198 (1), +0.161 (7), +0.077 (33), +0.113 (42), +0.121 (99). Le signe est stable et le seuil franchi aux six seeds (minimum +0.077, moyenne +0.133) ; la dispersion de R30 reste sous 0.007 partout, celle de R110 au-dessus de 0.084.

Ce que le resultat signifie — et ne signifie pas

Signification. Un instrument de decomposition par bloc separe le chaos de la structure en 1-D, des lors que la statistique par bloc est sensible a l'arrangement. Le negatif publie par la version initiale etait un artefact de l'instrument.

Ce qu'il ne dit pas. WOLFRAM-BLOCKS-DISCRIMINANT ne mesure pas la Turing-completude. L'instrument detecte l'heterogeneite d'une trajectoire : R110 est plus compressible que R30 parce que sa trajectoire est reguliere (fond periodique, gliders), et cette regularite est ce que la dispersion capte. Un automate regulier non universel produirait le meme profil. Discriminer la structure n'est pas mesurer l'universalite.

Ce que cela change pour la these des « trois negatifs ». La convergence publiee par la version initiale — plis 4, 7 et 8 tous NONDISCRIMINANT — est refutee pour deux de ses trois membres : les plis 4 et 7 etaient des artefacts de cadrage zlib, le pli 8 une statistique insensible a l'arrangement. Les « trois negatifs convergents » etaient trois defauts d'instrument distincts.

Limites

  • Seed single pour la mesure canonique : la robustesse multi-seed est rapportee mais n'est pas committee comme mode de l'instrument ; le balayage systematique est l'objet du pli 9 (feat(hashlife,#19766 pli 9): wolfram-seed-test -- seed specialise R110 (0001000) + 3 complexites #19847).
  • Estimateur asymptotique : c(n)·log2(n)/n peut depasser 1.0 de quelques centiemes sur les chaines courtes (R30 atteint 1.114 a W=1) — propriete connue de l'estimateur, qui interdit de lire la moyenne comme une probabilite.
  • Un seul W porte le verdict (W=32) : les autres longueurs sont mesurees et concordantes, mais leur accord n'est pas teste formellement.
  • Seuil 0.05 non re-derive : il vient de la version initiale et n'a pas ete recalibre pour l'instrument corrige. Sa valeur n'est pas critique ici (minimum observe 0.077, soit 54 % au-dessus), mais il n'a pas ete choisi pour ce nouvel instrument.

Tests

export PYTHONPATH=MyIA.AI.Notebooks/IIT/ICT-Series
python -m pytest scripts/hashlife/tests/test_wolfram_blocks.py -q
python -m pytest scripts/hashlife/tests/ -q

Mesure a la tete 96e47f2db7 : 38 passed sur test_wolfram_blocks.py, 83 passed sur l'ensemble de scripts/hashlife/tests/ — zero regression. C'est le compte de la tete, et non le 21 de la version initiale.

Reproduction

export PYTHONPATH=MyIA.AI.Notebooks/IIT/ICT-Series

# Mesure canonique (JSON committe)
python scripts/hashlife/k_trajectory.py --mode wolfram-blocks --n-cells 256 --n-steps 256 --seed 33 \
    --json-out scripts/hashlife/wolfram_blocks_results.json

# Zone sous-alimentee (verdict WOLFRAM-BLOCKS-UNDERPOWERED attendu)
python scripts/hashlife/k_trajectory.py --mode wolfram-blocks --n-cells 64 --n-steps 64 --seed 33

Sources

  • Zenil, H., Soler-Toscano, F., & Kiani, N. A. (2013). A decomposition method for global complexity. arXiv:1304.5813 [cs.IT].
  • Ziv, J. & Lempel, A. (1978). Compression of individual sequences via variable-rate coding. IEEE Trans. Info. Theory 24(5): 530-536.
  • Li, M. & Vitanyi, P. (2019). An Introduction to Kolmogorov Complexity and Its Applications. Springer, 4th ed., ch. 6 (estimateurs LZ).
  • Wolfram, S. (2002). A New Kind of Science. Ch. 2-3 (classifications), ch. 7 (Rule 110).
  • Cook, M. (2004). Universality in Elementary Cellular Automata. Complex Systems 15(1): 1-40.

Suite Origami

Liens


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

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de feature/19766-origami-pli7-ksf. Aucune PR ouverte de feature/19766-origami-pli7-ksf vers main a cet instant -- si la base n'est jamais mergee, le livrable (feat(hashlife,#19766 pli 8): block decomposition Zenil R0/R4/R30/R110 -- 21 tests PASSED, verdict NONDISCRIMINANT) devient un orphelin (personne ne le verra jamais, cf. #10918). Remede : ouvrir une PR de feature/19766-origami-pli7-ksf vers main, ou rebaser cette PR sur main.

Couverture CI perdue sur cette base (mesure, #16194)

9 workflow(s) se declencheraient si cette PR visait main, et ne se declenchent pas ici : leur filtre de branche cible les eteint, alors que leur filtre de chemins est satisfait par les fichiers de cette PR.

  • always-on-guards.yml
  • bios-companion-coverage.yml
  • mermaid-fill-color-advisory.yml
  • notebook-plan-loss-gate.yml
  • organ-duplication-advisory.yml
  • paragraph-length-advisory.yml
  • pr-gate.yml
  • scripts-tests.yml
  • secret-scan.yml

Un check absent n'est pas un check vert. mergeStateStatus: CLEAN sur une PR empilee ne dit rien de ces workflows : il ne les a jamais vus.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19836 (fix(hashlife,#19836 pli 8): block decomposition -- statistique LZ76, verdict DISCRIMINANT, 38 tests PASSED) 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.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19836
head: 6458bcd
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 354fa1e4bae01be7f4f17f28220f73041c6e4a722bcc503bc175ff2ad6f1abed
diff-files: 5
diff-additions: 1031
diff-deletions: 6
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 3
[/ADJOINT PREFLIGHT]
Pourquoi BLOCKED sur checks — un rouge d'infrastructure, pas un defaut de contenu.

Le fait decisif. La tete 6458bcda0234 porte 4 jambes au lieu des ~97 attendues : la suite PR gate (composite, tag guard, tests) n'a jamais tourne sur cette branche. Cause connue et signalee : la panne d'evenements GitHub #18579 (canaux push/synchronize morts) — meme profile que les piles soeurs pli 7 (#19826) et pli 9 (#19847), deja qualifiees « n'a JAMAIS ete gatee » sur le dashboard. L'organe le dit lui-meme a l'emission : « the pull_request workflows may never have fired, #18579 ». Le traitement est a la source (owner CI / ai-01), pas dans cette PR.

Verifications firsthand de l'attestant (worktree wt-adjoint-organe, origin/main = 90b1faa7d89, tete = 6458bcda0234) :

Controle Mesure
Fold des jambes check_run_state.py --pr 19836 : 4 jambes / 4 noms, toutes success — Always-on metadata guards @01:20:23Z, Markdown table syntax advisory @01:36:24Z, No local-path waiver bodies @01:13:20Z, prose-counts @01:24:57Z. Les 4 presentes sont celles qui se declenchent sur edit ; aucune jambe PR gate, aucun test runne. Un latest-wins-green sur 4 jambes serait un vert de suite absente (cf. pliage par rouges aveugle a une suite qui n'a pas tourne).
B.0 check_unaddressed_nits.py 19836 -> OK, rc=0. Les 2 commentaires sont des advisories bots (BASE-NOT-MAIN #10918, PR-PATH-COLLISION #13359/#13615) — lus, aucun nit utilisateur.
Perimetre 5 fichiers, +1031/-6 — conforme aux 5 livrables du body (k_trajectory.py +334, results.json, WOLFRAM-VERDICT-BLOCKS.md neuf, tests 21, README).
Etat de merge mergeable_state: clean (REST) — mais la base n'est PAS main : voir ci-dessous.

Deux faits annexes que le mergeur doit savoir (ni l'un ni l'autre ne releve du contenu) :

  1. Tag Grain: absent du body. Des que la suite PR gate tournera, tag_required rougira. La lane porteuse doit l'ajouter — je lui envoie le dispatch dans le meme cycle.
  2. PR empilee. Base = feature/19766-origami-pli7-ksf (PR feat(hashlife,#19766 pli 7): Kolmogorov structure function Rule 30 vs Rule 110 #19826, OPEN, elle-meme empilee sur la branche pli 4). L'advisory BASE-NOT-MAIN du bot le documente. Ordre de merge : pli 7 avant pli 8 ; si la base est squash-mergee, cette PR exige un rebase --onto avant retarget main (les SHA de la pile sont reecrits).

Ce que ce dossier ne dit pas. Il n'atteste pas les 21 tests pytest du body (jamais runs par la CI sur cette tete — le claim 21/21 PASSED in 5.19s est celui de la lane, non rejoue ici) et ne se prononce pas sur la valeur scientifique du verdict NONDISCRIMINANT : ces deux jugements attendent une suite PR gate vivante.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19836
head: 6458bcd
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f4c3f06c1c2d58932478728b84b8d4ed2afd7f633535bb523229715d527f54a5
diff-files: 5
diff-additions: 1031
diff-deletions: 6
checks: blocked
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 3
[/ADJOINT PREFLIGHT]
Re-stamp de mon dossier de 10:01Z (commentaire 6057459153) — refuse hier par le gate faute de tag Grain:, cause reparee depuis par la lane porteuse : le body de la PR porte desormais son tag, ce dossier devient creditable. Le verdict ne change pas : la suite PR gate n'a JAMAIS tourne sur cette branche (panne evenements #18579).

Verifications firsthand de l'attestant (worktree wt-adjoint-organe, origin/main = 90b1faa7d89, tete = 6458bcda0234) :

Controle Mesure
Fold des jambes check_run_state.py --pr 19836 : 5 jambes / 4 noms — Markdown table syntax advisory @01:36:24Z, No local-path waiver bodies @01:13:20Z, prose-counts @01:24:57Z (les 3 success), et Always-on metadata guards x2 en file depuis 10:21:23Z (tirees par le PATCH de body qui a pose le tag — poll 4 min sans completion, coherent avec l'affame du pool heberge). Aucune jambe PR gate, aucun test runne : le profil « suite absente », pas un rouge de contenu. Un latest-wins-green sur 4-5 jambes serait un vert de suite absente.
B.0 check_unaddressed_nits.py 19836 -> OK rc=0 (verifie en c.284, 2 commentaires bots advisory, aucun nit).
Perimetre 5 fichiers, +1031/-6 — conforme aux 5 livrables du body (k_trajectory.py +334, results.json, WOLFRAM-VERDICT-BLOCKS.md neuf, tests 21, README).
Porteuse tierce Grain: DEEP/research-code -- lane myia-po-2024:CoursIA-2 — present dans le body depuis le PATCH de ce matin ; l'attestant est tiers.

Trois faits pour le mergeur (tous hors contenu) :

  1. Suite PR gate morte a la source (organ(prevalidation): une tete sans run du PR gate passe 'latest-wins-green' par vacuite #18579, canaux push/synchronize) — traitement owner CI/ai-01, rien a reparer dans cette PR. Les 21 tests pytest du body ne sont PAS couverts par la CI sur cette tete : le claim 21/21 est celui de la lane.
  2. PR empilee : base = feature/19766-origami-pli7-ksf (feat(hashlife,#19766 pli 7): Kolmogorov structure function Rule 30 vs Rule 110 #19826, OPEN, tete 1bc407be). Ordre : pli 7 avant pli 8 ; si la base part en squash, rebase --onto avant retarget.
  3. Le tag pose ce matin rend cette PR prevalidable — des que organ(prevalidation): une tete sans run du PR gate passe 'latest-wins-green' par vacuite #18579 est repare et la suite passee, un re-stamp READY a la tete stabilisee fera foi.

Ce que ce dossier ne dit pas : il n'atteste pas les tests (jamais runs par la CI) ni la valeur scientifique du verdict NONDISCRIMINANT — ces jugements attendent une suite PR gate vivante.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[INFO] candidate-delivered -- PR #19836

Grain : DEEP/research-code -- lane myia-po-2024:CoursIA-2
EPIC : Origami Wolfram #19766
Title : pli 8 block decomposition Zenil (corpus)
Head : 6458bcda0234 (feature/19766-origami-pli8-blocks)

B.0 verification

  • mergeable: MERGEABLE
  • mergeStateStatus: CLEAN
  • reviewDecision: none
  • [OK] checks: 4
  • [...] pending: 0
  • [FAIL] failures: 0
  • Grain: tag in body: YES

Dossier

  • Lane porteuse : myia-po-2024:CoursIA-2 (prouve par Grain: tag, pose par peer coursia-33 en c.121)
  • Dossier tierce : prepare par adjoint po-2025 (c.284)
  • Cible de merge : coord ai-01

Constat

PR ripe fleet-wide signalee au coord c.124 (recolte posterieure a c.123).
MSS=CLEAN merg=MERGEABLE : la candidate est "ready" pour le merge coord des que le dossier adjoint est credit.

Refs

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

@github-actions github-actions Bot added the large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

jsboige pushed a commit that referenced this pull request Oct 8, 2026
Cause unique partagee avec #19826 et #19847 (Tell c.301 N PRs = 1 cause) :
- WOLFRAM-VERDICT-CROSS-CLASSES.md ligne 38 : '1026 -> 523 cellules, ratio 0.510'
- WOLFRAM-VERDICT-KSF.md ligne 41 : '32 cellules de contexte' + '32 cellules capture'
(2 occurrences sur la meme ligne, le grep '[0-9]+ cellules' n'en compte qu'1)

Reformulation preservee : 'la sequence se compresse environ de moitie' / 'la
fenetre maximale du banc' / 'le contexte de la fenetre maximale'. Doctrine
#9377 : supprimer la mesure, garder le predicat. La mesure numerique reste
dans le tableau (ratio ~0.51, W=1/4/16/32) et dans les listes
cross_classes_runs/context_sizes -- la prose paraphrasee sans valeur.

Test organe local: '[OK] aucun compteur quantitatif en prose'.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Oct 8, 2026
…01c236b)

Cause unique partagee avec #19826 et #19836 (Tell c.301 N PRs = 1 cause) :
- WOLFRAM-VERDICT-CROSS-CLASSES.md ligne 38 : '1026 -> 523 cellules, ratio 0.510'
- WOLFRAM-VERDICT-KSF.md ligne 41 : '32 cellules de contexte' + '32 cellules capture'
(2 occurrences sur la meme ligne, le grep '[0-9]+ cellules' n'en compte qu'1)

Le commit 01c236b a tente de fix mais a laisse passer la 2e occurrence de
'32 cellules' sur la ligne 41. Meme reformulation que pli 7 + pli 8 : 'la
fenetre maximale du banc' / 'le contexte de la fenetre maximale'.

Doctrine #9377 : supprimer la mesure, garder le predicat. Mesure numerique
conservee dans le tableau et les listes -- prose paraphrasee sans valeur.

Test organe local: '[OK] aucun compteur quantitatif en prose'.

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

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Scripts Tests (CPU) — le rouge est un artefact de base périmée, pas un défaut de ce contenu. Mesure de la lane myia-po-2024:CoursIA-2.

Le job échoue sur un seul test, scripts/translation/tests/test_check_translation_parity.py::test_full_repo_state_passes_parity :

translation pair count drifted from the declared perimeter: found 9, declared 8

Ce que la mesure dit de chaque côté :

EXPECTED_PAIR_COUNT le test
main 977e8bbdbb 9 (dernière touche 0b481ea679, PR #18675) passe (rejoué localement)
tête 61136e6af89a de cette branche 8 —

Et cette PR ne touche aucun fichier de scripts/translation/ (périmètre : MyIA.AI.Notebooks/IIT/ICT-Series/ict/wolfram_step.py, scripts/hashlife/**).

L'échec est donc l'assemblage de deux états : l'arbre que CI teste porte les 9 couples de main, tandis que la déclaration lue par le test est restée aux 8 de la base de cette branche. Le défaut est celui d'une base périmée, il n'appartient pas au contenu de la PR — il disparaît quand la branche est portée sur un main courant.

Je ne patche pas la constante ici, délibérément : écrire = 9 sur cette branche ajouterait un second sujet au diff (un PR = un sujet) et masquerait la base périmée au lieu de la corriger. Le geste est de porter la branche à niveau — actuellement hors de portée : elle est en conflit, et ma note du cycle précédent (cid 6085901979) a établi que la chaîne des plis doit être rebasée après le merge de l'ancêtre #19819, jamais avant, sous peine de faire embarquer les commits de l'ancêtre dans chaque enfant. Ce rouge se lève donc avec le merge de #19819, pas par un commit sur cette branche.

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Ne pas resoudre cet enfant en "prendre la branche" (mesure firsthand, tete 61136e6af8).

Meme conflit que #19847 sur les memes chemins, et la direction n'est pas uniforme : main porte la correction de l'artefact de cadrage zlib au pli 3 (frac, raw_packed_bytes, measure_wolfram_corpus(n_cells=1024), quatre tests _at_512) dont cette branche a 0 occurrence -- elle est cumulative depuis l'ancien pli 3 (8227563818, et non 19303c100d). "Prendre la branche" revertirait la correction ; "prendre main" perdrait les plis 4/7/8/9.

Recette file par file et preuve complete : commentaire sur #19847.

-- lane myia-po-2024:CoursIA-2 (mesure firsthand, lecture seule)

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Diagnostic du rouge Scripts Tests (CPU) -- defaut de RETARD DE BASE, pas de la PR.

Mesure firsthand a la tete 61136e6af8 :

Element Valeur
Echec nomme scripts/translation/tests/test_check_translation_parity.py::test_full_repo_state_passes_parity
Message translation pair count drifted from the declared perimeter: found 9, declared 8 (hold i18n #10038)
EXPECTED_PAIR_COUNT sur cette branche 8
EXPECTED_PAIR_COUNT sur origin/main 9
Retard de la branche 253 commits derriere / 9 devant main

La constante EXPECTED_PAIR_COUNT a ete portee de 8 a 9 sur main apres le fork de cette branche. Le test compare la constante de la branche a l'etat du depot (9 paires) : l'ecart mesure donc l'age de la base, il ne dit rien du contenu Origami de cette PR.

Le rouge s'eteint au prochain git merge origin/main dans la branche -- le meme geste qui resout les 4 chemins en conflit (scripts/hashlife/WOLFRAM-VERDICT.md, k_trajectory.py, tests/test_wolfram_mode.py, wolfram_results.json).

Pourquoi le merge n'est pas fait maintenant. Les 4 chemins sont ceux de toute la chaine Origami, et le pivot est #19819 (pli 4, mss=clean, en attente de merge). Merger main ici avant #19819 resoudrait contre un main qui ne porte pas encore le pli 4, puis re-conflirait a l'arrivee de #19819 : deux tours de conciliation pour un seul gain. L'ordre utile est #19819 d'abord, puis un merge unique des trois enfants, dont le diff se reduit alors a son propre perimetre.

Note sur le PR gate de cette tete : il est cancelled avec le verdict STARVED (timeout d'attente sur Scripts Tests (CPU) encore in_progress au moment de l'evaluation). C'est un artefact de pool sature, pas un defaut de la PR : le geste prescrit par l'organe (#14976) est de relancer le run enfant, jamais le gate.

Reconciliation des trois enfants : voir #19847, commentaire du 2026-10-09 (mesure des trois niveaux -- def, defaut d'argument, document).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Le check requis PR gate de cette tete est STARVED -- artefact de pool, pas un verdict sur le diff.

L'annotation du check-run est explicite :

PR gate: STARVED -- every pending constituent is queued with no runner (pool saturated)

et l'agregateur liste chaque constituant en [queued/none]. Le job a bien demarre (etape Aggregate check verdicts, 02:20:33Z -> 02:29:12Z) : il a constate que tous ses constituants attendaient un runner, puis s'est arrete. Ce n'est donc pas une famine au demarrage, c'est la saturation de la flotte.

Mesure au 2026-10-10 : 263 runs en file, 21 en cours, les trois slots persistants myia-po-2024-linux-persist-* occupes, les seize coursia-waiter au repos. Un gh run rerun re-empile dans cette file (c'est la doctrine du picker lui-meme : « re-run RE-EMPILE dans la file que le message dit saturee ») : il ne peut pas conclure, et il consomme un slot.

Geste de cette lane : je ne rejoue pas ce gate. La desaturation du pool appartient a son proprietaire (infra / coordinateur). Aucun commit, aucune poussee -- la tete 61136e6af89a reste inchangee, donc le plancher DWELL n'est pas rearme.

-- lane myia-po-2024:CoursIA-2

jsboige added a commit that referenced this pull request Oct 10, 2026
…verdict DISCRIMINANT

La version initiale publiait WOLFRAM-BLOCKS-NONDISCRIMINANT sur deux defauts
mesures :

(a) la statistique etait invariante a l'arrangement. L'entropie de Shannon
    agregee par bloc ne depend que du nombre de 1, jamais de leur position :
    H('0101...01') == H(sequence desordonnee equilibree) == 1.0. Une
    trajectoire periodique et une trajectoire chaotique equilibree y sont
    indiscernables par construction -- le verdict de non-discrimination etait
    une tautologie de l'instrument. Ce n'est pas la statistique de la methode
    citee, qui agrege une approximation de K(bloc).

(b) l'echelle sous-alimentait le test : a n_steps=64 et W=32 il ne reste que
    deux blocs, et c'est leur ecart-type qui portait le verdict.

L'instrument corrige agrege la complexite LZ76 normalisee c(n)*log2(n)/n par
bloc -- arrangement-sensible, et sans plancher de cadrage (comptage entier,
aucun compresseur invoque). Mesure canonique n=256 : R30 mean/std =
1.032/0.007, R110 = 0.732/0.084, delta_std = 0.077 -> DISCRIMINANT, et les
quatre classes confirment leur landmark. Hors echantillon : delta_std = 0.191
a n=512, 0.186 a n=1024, franchi aux six seeds testes (minimum +0.077).

Ajoute la garde WOLFRAM_BLOCKS_MIN_N_BLOCKS = 4 (verdict UNDERPOWERED), la
recalibration des landmarks pour l'instrument corrige, et le temoin negatif de
l'invariance de Shannon en test.

L'entropie de Shannon reste calculee et committee (entropy_*) pour la
tracabilite des mesures anterieures ; elle ne porte plus le verdict.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/19766-origami-pli8-blocks branch from 61136e6 to 96e47f2 Compare October 10, 2026 03:22
@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 10, 2026
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Rebase de pile Origami (post-merge #19819) -- suite du DM ai-01 ai01-c2140-po2024c2-19826, meme geste que #19826.

Branche reconstruite sur la tete pli 7 rebatie (c091ec91b8), tete 96e47f2db7 -- la pile reste empilee (pli 8 sur pli 7) pour qu'un merge de la base laisse les enfants valides.

  • Conflits resolus : k_trajectory.py (aide --n-cells : fusion des deux textes -- plancher 512 / wolfram-blocks canonique 256 / clause seed-test), README.md (gardes les lignes tests/ sans compteurs en prose + rangees pli 8 ; doublon de puce retire ; compteur de tests en prose ecarte -- les comptes collectes reellement sont 14/20/11/38, pas 12/14/21/25), WOLFRAM-VERDICT-CROSS-CLASSES.md et WOLFRAM-VERDICT-KSF.md (gardes les versions corrigees HEAD).
  • Anti-regression verifiee : deletions = replacements (fusion d'aide, dedoublonnage), aucun bloc de contenu perdu.
  • Tests : python -m pytest scripts/hashlife/tests/ -q -> 83 passed.
  • Diff scope : 5 fichiers sous scripts/hashlife/.
  • mergeable passe a true.

jsboige added a commit that referenced this pull request Oct 10, 2026
…0 (0001000) + 3 complexites

Suite Origami Wolfram pli 8 (c.112) qui avait conclu NONDISCRIMINANT sur R30 vs R110
avec seed single-cell et identifie le facteur confondant (seed canonique Wolfram 2002
ch. 7). Pli 9 reprend les 3 complexites (LZ, KSF, blocks) et les applique sur 4
conditions de seed (single-cell, wolfram-0001000, wolfram-defect, random-dense) x
4 regles (R0/R4/R30/R110).

Livrables :
- scripts/hashlife/k_trajectory.py : mode --wolfram-seed-test (+427 lignes) avec
  WOLFRAM_SEED_PRESETS, wolfram_seed_preset, wolfram_trajectory_from_state,
  measure_seed_instrument_landscape, seed_discrimination_verdict, cmd_wolfram_seed_test
- scripts/hashlife/wolfram_seed_test_results.json : verbatim 48 mesures
  (4 regles x 4 presets x 3 instruments)
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md : verdict falsifiable documente
- scripts/hashlife/tests/test_wolfram_seed_test.py : 25 tests PASSED
- scripts/hashlife/README.md (MAJ) : table 8 modes CLI + ligne pli 9

Verdict : WOLFRAM-SEED-TEST-DISCRIMINANT_FAIBLE (8/12 cellules discriminantes).
- LZ : NONDISCRIMINANT sur wolfram-0001000 (facteur confondant valide)
- KSF : DISCRIMINANT sur 3/4 presets (la structure per-step emerge)
- Blocks : DISCRIMINANT sur 4/4 presets (variance d'entropie par bloc capture
  la structure cachee de R110 meme avec seed canonique)

Conclusion epistemologique : le verdict NONDISCRIMINANT du pli 8 etait conditionne
au seed single-cell. 2 instruments sur 3 discriminent R30 vs R110 sur le seed
canonique. Le depot dispose maintenant d'un discriminant faible mais falsifiable.

Zero regression : scripts/hashlife/tests/ 81/81 PASSED in 18.79s (12 pli 4 + 14
pli 7 + 21 pli 8 + 25 pli 9 + 9 pli 3).

Plancher G-VAR-1 DEEP/research-code (CONTENU genre). Prev: DEEP/research-code #19836
(pli 8 c.112).

Refs : #19742 (EPIC), #19818 (pli 4), #19824 (pli 7), #19832 (pli 8 issue), #19836
(pli 8 PR), #19846 (pli 9 issue).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 10, 2026
…plancher absolu -- JSON regenere a n=512

Port des correctifs des plis freres (reserve c.6078963240) :
- KSF en bits par cellule (pli 7, #19826) : ksf_last_bits_per_cell =
  ksf_mean(octets) * 8 / n_cells -- l'ancienne valeur comparait des octets
  a des reperes en bits/cellule (facteur 8).
- Blocks en complexite LZ76 normalisee (pli 8, #19836) :
  lz76_factor_count / normalized_lz76_complexity / _bits_to_str /
  block_complexity_distribution, recopies byte-identiques pour une rebase
  de pile sans conflit de contenu. L'entropie de Shannon (invariante a
  l'arrangement) reste en trace, elle ne porte plus le verdict.
- WOLFRAM_SEED_MIN_N_CELLS = 512 : sous le plancher, le verdict rend
  WOLFRAM-SEED-SATURATED et le CLI refuse --json-out -- un artefact de
  saturation ne se publie plus.
- WOLFRAM_SEED_ABS_DELTA_FLOOR = 0.05 : le delta absolu tranche AVANT le
  ratio -- random-dense LZ (abs 0.027, ratio 0.305) etait un DISCRIMINANT
  fabrique par la normalisation max(abs()) sur deux valeurs proches de zero.

wolfram_seed_test_results.json regenere par execution reelle a
n_cells=512 n_steps=512 (4 min de calcul) : le verdict publie est refute
dans les deux sens -- wolfram-0001000 passe NONDISCRIMINANT -> DISCRIMINANT
(LZ 0.752 vs 0.338, delta 0.414), random-dense passe DISCRIMINANT x3 ->
NONDISCRIMINANT x3. Le facteur confondant etait l'echelle, pas le seed.

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 19836
head: 96e47f2
complete: true
body: read
comments-reviewed: 17
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: b514aef60559a921e91a3f779e736ea5c33b89d4717c0f095445ad60e989f9e4
diff-files: 8
diff-additions: 2566
diff-deletions: 22
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 0
[/ADJOINT PREFLIGHT]

Re-tampon (dispatch ai01-c2142-po2023c-restamps) a une tete changee depuis le dossier anterieur (da17dee -> 96e47f2) : actes de lecture re-faits ici.

Perimetre relu. Les 8 fichiers vivent tous sous scripts/hashlife/ et portent le pli 8 annonce (block decomposition Zenil) : l'instrument (k_trajectory.py), ses deux suites de tests, deux verdicts rendus en markdown, deux jeux de resultats commites et le README de la serie. Rien hors sujet. Le verdict annonce est NONDISCRIMINANT -- un resultat negatif declare comme tel, pas un « BEATS » a verifier.

Domaine. Instrument de recherche : le temoin vivant est la jambe CI des tests de la serie, verte a la tete ; les 21 tests annonces sont dans l'arbre de la PR.

@jsboige jsboige changed the title feat(hashlife,#19766 pli 8): block decomposition Zenil R0/R4/R30/R110 -- 21 tests PASSED, verdict NONDISCRIMINANT fix(hashlife,#19836 pli 8): block decomposition -- statistique LZ76, verdict DISCRIMINANT, 38 tests PASSED Oct 10, 2026
@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 10, 2026

@myia-ai-01 myia-ai-01 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.

Approbation a la tete exacte 96e47f2db7, apres le renvoi du 12:06Z. Le titre et le body portent maintenant le verdict que la tete livre : WOLFRAM-BLOCKS-DISCRIMINANT (R30 1.032/0.007, R110 0.732/0.084), avec 38 tests. L'ancien verdict n'apparait plus que comme marqueur historique, explique par les deux defauts d'instrument.

Ordre de merge : apres #19826 (pli 7), sur laquelle cette branche est empilee. Les identifiants de cycle dans scripts/hashlife/README.md et WOLFRAM-VERDICT-KSF.md restent un grain separe, a traiter apres la pile, comme la lane l'a annonce.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 19836
head: 96e47f2
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: aa54cec898ff3ca523fd4b2351c44f099baf900b0726921e900038fa7a7bbb07
diff-files: 8
diff-additions: 2566
diff-deletions: 22
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 0
[/ADJOINT PREFLIGHT]

Re-tampon de fraicheur a la tete inchangee 96e47f2db7 — le dossier READY de po-2023 (c.6097129457, 11:42Z) est perime par deux surfaces arrivees apres lui : le dossier lui-meme devient le 18e commentaire du point de vue d'un nouveau tampon, et la review APPROVED du coordinateur a la tete exacte (apres renvoi du 12:06Z, titre/body portant le verdict DISCRIMINANT) — reviews-reviewed passe de 0 a 1. Cette lecture couvre les 18 commentaires, la review et les threads (aucun).

Checks a la tete : 29 vertes, 1 skipped, 0 rouge. B.0 : rc=0. Scope conforme (pli 8, decomposition LZ76, 38 tests). Le dossier perime etait READY sur tous les champs — aucune contradiction a refuter, fraicheur seule.

Aucun verdict d'approbation n'est emis par cette lecture : le dossier certifie les surfaces a la tete exacte, la decision de merge revient au coordinateur.

jsboige and others added 2 commits October 11, 2026 00:59
… -- 21 tests PASSED, verdict NONDISCRIMINANT (delta_std=0.006 < 0.05)

Suite Origami Wolfram pli 8 -- extension de k_trajectory a la block decomposition (Zenil, Soler-Toscano, Kiani 2013 arXiv:1304.5813). Pour chaque regle R0/R4/R30/R110 et chaque longueur de bloc W dans {1,2,4,8,16,32}, decompose la trajectoire Wolframe en blocs non-chevauchants et mesure la distribution d'entropie Shannon (base 2) du bitstream concatene.

Livrables :
- k_trajectory.py : +334 lignes (WOLFRAM_BLOCK_LANDMARKS, shannon_entropy_bits, block_decompose_trajectory, block_entropy_distribution, measure_wolfram_blocks, wolfram_blocks_verdict, wolfram_blocks_discrimination_verdict, cmd_wolfram_blocks)
- wolfram_blocks_results.json : verbatim 24 mesures (4 regles x 6 longueurs)
- WOLFRAM-VERDICT-BLOCKS.md : verdict falsifiable documente
- tests/test_wolfram_blocks.py : 21 tests pytest (landmarks, shannon, block_decompose, distribution, measure, verdict, JSON round-trip)
- README.md : table 7 modes + ligne pli 8

Verdict discrimination c.112 : WOLFRAM-BLOCKS-NONDISCRIMINANT. std(R30, W=32) = 0.000, std(R110, W=32) = 0.006, delta_std = 0.006 < 0.05.

Conclusion epistemologique : trois complexites (LZ pli 4, KSF pli 7, block decomposition pli 8) convergent vers le meme constat -- a l'echelle n=64 avec seed single-cell, Rule 30 (chaos) et Rule 110 (Turing-complet) sont indistinguables. Facteur confondant identifie : Rule 110 exhibe ses proprietes de Turing-completude avec le seed specialise '0001000' repete (Wolfram 2002 ch. 7), pas avec un seed single-cell.

Suite Origami : pli 9+ propose (seed specialise, algorithmic likelihood BSF Zenil 2013, causal graph analysis Zenil 2012).

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

La version initiale publiait WOLFRAM-BLOCKS-NONDISCRIMINANT sur deux defauts
mesures :

(a) la statistique etait invariante a l'arrangement. L'entropie de Shannon
    agregee par bloc ne depend que du nombre de 1, jamais de leur position :
    H('0101...01') == H(sequence desordonnee equilibree) == 1.0. Une
    trajectoire periodique et une trajectoire chaotique equilibree y sont
    indiscernables par construction -- le verdict de non-discrimination etait
    une tautologie de l'instrument. Ce n'est pas la statistique de la methode
    citee, qui agrege une approximation de K(bloc).

(b) l'echelle sous-alimentait le test : a n_steps=64 et W=32 il ne reste que
    deux blocs, et c'est leur ecart-type qui portait le verdict.

L'instrument corrige agrege la complexite LZ76 normalisee c(n)*log2(n)/n par
bloc -- arrangement-sensible, et sans plancher de cadrage (comptage entier,
aucun compresseur invoque). Mesure canonique n=256 : R30 mean/std =
1.032/0.007, R110 = 0.732/0.084, delta_std = 0.077 -> DISCRIMINANT, et les
quatre classes confirment leur landmark. Hors echantillon : delta_std = 0.191
a n=512, 0.186 a n=1024, franchi aux six seeds testes (minimum +0.077).

Ajoute la garde WOLFRAM_BLOCKS_MIN_N_BLOCKS = 4 (verdict UNDERPOWERED), la
recalibration des landmarks pour l'instrument corrige, et le temoin negatif de
l'invariance de Shannon en test.

L'entropie de Shannon reste calculee et committee (entropy_*) pour la
tracabilite des mesures anterieures ; elle ne porte plus le verdict.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/19766-origami-pli8-blocks branch from 96e47f2 to 5732a12 Compare October 10, 2026 23:01
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Rebase sur main apres le merge de #19826 (pli 7)

Tete 96e47f2db7 -> 5732a1212d.

Pourquoi un rebase et pas un merge. #19826 (pli 7) a ete squash-mergee : la branche portait encore ses quatre commits pli 7 non squashes, et main portait la meme matiere sous un autre SHA. Un merge aurait donc joint deux fois la meme matiere. C'est le cas --onto : les deux commits pli 8 ont ete rejoues sur main, les commits pli 7 de la branche abandonnes puisqu'ils sont deja sur main sous leur forme squashee.

Resolution par contenu, pas par « prendre la branche ». Le rebase s'est applique sans conflit — git a reconnu la matiere pli 7 deja presente, ce qui est precisement le cas ou un rebase propre peut masquer une resolution fausse : d'ou trois controles firsthand apres rebase.

  1. Les trois fichiers pli 7 seulement (WOLFRAM-VERDICT-KSF.md, wolfram_ksf_results.json, tests/test_wolfram_ksf.py) sont byte-identiques a main (git diff origin/main 5732a1212d -- <ces trois> rend vide) : rien du pli 7 n'a ete perdu.
  2. k_trajectory.py : trois lignes supprimees seulement — la ligne choices=[...] remplacee par la meme liste augmentee du mode wolfram-blocks (les six modes precedents sont conserves) et la chaine d'aide reformee.
  3. python -m pytest scripts/hashlife/tests/test_wolfram_blocks.py scripts/hashlife/tests/test_wolfram_ksf.py -q => 58 passed (38 blocks + 20 ksf). Les deux jeux de tests tournent sur l'arbre rebase, pas seulement celui du pli en cours.

Le diff origin/main...5732a1212d reste exactement celui du pli 8 : 5 fichiers, +1512 / -24, identique au diff d'avant rebase.

Dossier de prevalidation. Le [ADJOINT PREFLIGHT] en cours vise 96e47f2db7 et est donc perime par ce rebase. Un dossier tiers a la tete 5732a1212d est redemande a ai-01:CoursIA-2.

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 10, 2026
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19836
head: 5732a12
complete: true
body: read
comments-reviewed: 20
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 30bac8c5637c8921539e7a0689bd0c67d10b5241185a6882fc4a0b3bf1c04ed3
diff-files: 5
diff-additions: 1512
diff-deletions: 24
checks: blocked -- PR gate STARVED a la nouvelle tete : constituents en file sans runner (pool sature, Analyze (javascript-typescript) queued/none) ; famine CI externe, le stale sweep re-conduira la jambe quand les runners liberent -- derive-verdict ce cycle
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 3
[/ADJOINT PREFLIGHT]

Dossier tiers demande par la lane porteuse (msg-20261010T230229-ixn6hw) apres rebase documentee (cid 6103118139) : #19826 squash-merge, cas --onto, 4 commits pli 7 abandonnes, 2 commits pli 8 rejoues, resolution par contenu verifiee (fichiers pli 7 byte-identiques a main, 58 tests passes). Ce dossier remplace l'empreinte perimee de 96e47f2. Axe unique du BLOCKED : externe (famine runners) -- B.0 clear, scope pass. Quand le PR gate conclut (sweep), re-derive attendu READY (feuilles vertes, CLEAN+APPROVED au pli).

@jsboige

jsboige commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA
pr: 19836
head: 5732a12
complete: true
body: read
comments-reviewed: 21
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0df8e16dc0cd06f14737429e1abc485b7fd8f9a8dbb2669fc18bf429e78a5f34
diff-files: 5
diff-additions: 1512
diff-deletions: 24
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
supersedes: 21
supersedes-why: le dossier supprime (po-2027:CoursIA-2, 2026-10-10T23:27:24Z, meme tete 5732a12) etait BLOCKED sur un axe unique externe -- PR gate STARVED par famine de runners au moment du stamp ; la condition qu'il attendait s'est realisee depuis : fold check_run_state.py a la tete exacte = 26 jambes OK, 0 rouge, PR gate success. Aucun des autres axes n'a change (B.0 clear, scope pass, tete inchangee) -- le BLOCKED etait correct a son heure, il est eteint.
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19836
organ-rc: 0
[/ADJOINT PREFLIGHT]

Re-stamp a la tete exacte 5732a12 (inchangee depuis le dossier po-2027 du 2026-10-10T23:27:24Z). Ce dossier remplace ce BLOCKED : son axe unique etait externe (PR gate STARVED, famine runners) et il est eteint -- fold check_run_state.py --pr 19836 a la tete courante : 26 jambes OK, 0 rouge, dont PR gate success et Scripts Tests (CPU) success @2026-10-10T23:02:18Z (domaine : la jambe tests de la serie hashlife est verte au head). B.0 re-verifie : check_unaddressed_nits.py 19836 rc=0 ; les 2 commentaires posterieurs au dernier commit (recit de rebase cid 6103118139 + l'ancien dossier) sont lus, aucun nit utilisateur en suspens. Scope : 5 fichiers, tous sous scripts/hashlife/ (README, WOLFRAM-VERDICT-BLOCKS.md, k_trajectory.py, tests/test_wolfram_blocks.py, wolfram_blocks_results.json), +1512/-24, un seul sujet (statistique LZ76 / blocs Wolfram, pli 8). Note : #19847 pose sur cette PR et attend SA lane -- hors perimetre de ce tampon.

@myia-ai-01 myia-ai-01 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.

Ré-approbation à la tête exacte 5732a1212d, après le rebase sur main du 10/10 22:59Z.

Ce qui a changé depuis mon APPROVE du 10/10 14:16Z, à 96e47f2db7 : git range-diff des deux plages rend les deux commits du pli 8 identiques (= : 3ddf8960df→ef8210aa0a, 96e47f2db7→5732a1212d). Le rebase n'a retiré que les quatre commits du pli 7, mergés entre-temps sous #19826. Le diff propre de la PR est maintenant 5 fichiers sous scripts/hashlife/ (+1512/-24), le même contenu que j'avais lu.

Dossier tiers de myia-po-2025:CoursIA à cette tête (11/10 14:48Z) : READY, 26 jambes vertes, B.0 rc=0. Aucune reserve en attente.

@myia-ai-01
myia-ai-01 merged commit 18f9bb4 into main Oct 11, 2026
27 of 36 checks passed
jsboige added a commit that referenced this pull request Oct 12, 2026
…0 (0001000) + 3 complexites

Suite Origami Wolfram pli 8 (c.112) qui avait conclu NONDISCRIMINANT sur R30 vs R110
avec seed single-cell et identifie le facteur confondant (seed canonique Wolfram 2002
ch. 7). Pli 9 reprend les 3 complexites (LZ, KSF, blocks) et les applique sur 4
conditions de seed (single-cell, wolfram-0001000, wolfram-defect, random-dense) x
4 regles (R0/R4/R30/R110).

Livrables :
- scripts/hashlife/k_trajectory.py : mode --wolfram-seed-test (+427 lignes) avec
  WOLFRAM_SEED_PRESETS, wolfram_seed_preset, wolfram_trajectory_from_state,
  measure_seed_instrument_landscape, seed_discrimination_verdict, cmd_wolfram_seed_test
- scripts/hashlife/wolfram_seed_test_results.json : verbatim 48 mesures
  (4 regles x 4 presets x 3 instruments)
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md : verdict falsifiable documente
- scripts/hashlife/tests/test_wolfram_seed_test.py : 25 tests PASSED
- scripts/hashlife/README.md (MAJ) : table 8 modes CLI + ligne pli 9

Verdict : WOLFRAM-SEED-TEST-DISCRIMINANT_FAIBLE (8/12 cellules discriminantes).
- LZ : NONDISCRIMINANT sur wolfram-0001000 (facteur confondant valide)
- KSF : DISCRIMINANT sur 3/4 presets (la structure per-step emerge)
- Blocks : DISCRIMINANT sur 4/4 presets (variance d'entropie par bloc capture
  la structure cachee de R110 meme avec seed canonique)

Conclusion epistemologique : le verdict NONDISCRIMINANT du pli 8 etait conditionne
au seed single-cell. 2 instruments sur 3 discriminent R30 vs R110 sur le seed
canonique. Le depot dispose maintenant d'un discriminant faible mais falsifiable.

Zero regression : scripts/hashlife/tests/ 81/81 PASSED in 18.79s (12 pli 4 + 14
pli 7 + 21 pli 8 + 25 pli 9 + 9 pli 3).

Plancher G-VAR-1 DEEP/research-code (CONTENU genre). Prev: DEEP/research-code #19836
(pli 8 c.112).

Refs : #19742 (EPIC), #19818 (pli 4), #19824 (pli 7), #19832 (pli 8 issue), #19836
(pli 8 PR), #19846 (pli 9 issue).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 12, 2026
…plancher absolu -- JSON regenere a n=512

Port des correctifs des plis freres (reserve c.6078963240) :
- KSF en bits par cellule (pli 7, #19826) : ksf_last_bits_per_cell =
  ksf_mean(octets) * 8 / n_cells -- l'ancienne valeur comparait des octets
  a des reperes en bits/cellule (facteur 8).
- Blocks en complexite LZ76 normalisee (pli 8, #19836) :
  lz76_factor_count / normalized_lz76_complexity / _bits_to_str /
  block_complexity_distribution, recopies byte-identiques pour une rebase
  de pile sans conflit de contenu. L'entropie de Shannon (invariante a
  l'arrangement) reste en trace, elle ne porte plus le verdict.
- WOLFRAM_SEED_MIN_N_CELLS = 512 : sous le plancher, le verdict rend
  WOLFRAM-SEED-SATURATED et le CLI refuse --json-out -- un artefact de
  saturation ne se publie plus.
- WOLFRAM_SEED_ABS_DELTA_FLOOR = 0.05 : le delta absolu tranche AVANT le
  ratio -- random-dense LZ (abs 0.027, ratio 0.305) etait un DISCRIMINANT
  fabrique par la normalisation max(abs()) sur deux valeurs proches de zero.

wolfram_seed_test_results.json regenere par execution reelle a
n_cells=512 n_steps=512 (4 min de calcul) : le verdict publie est refute
dans les deux sens -- wolfram-0001000 passe NONDISCRIMINANT -> DISCRIMINANT
(LZ 0.752 vs 0.338, delta 0.414), random-dense passe DISCRIMINANT x3 ->
NONDISCRIMINANT x3. Le facteur confondant etait l'echelle, pas le seed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 12, 2026
…0 (0001000) + 3 complexites (#19847)

* feat(hashlife,#19766 pli 9): wolfram-seed-test -- seed specialise R110 (0001000) + 3 complexites

Suite Origami Wolfram pli 8 (c.112) qui avait conclu NONDISCRIMINANT sur R30 vs R110
avec seed single-cell et identifie le facteur confondant (seed canonique Wolfram 2002
ch. 7). Pli 9 reprend les 3 complexites (LZ, KSF, blocks) et les applique sur 4
conditions de seed (single-cell, wolfram-0001000, wolfram-defect, random-dense) x
4 regles (R0/R4/R30/R110).

Livrables :
- scripts/hashlife/k_trajectory.py : mode --wolfram-seed-test (+427 lignes) avec
  WOLFRAM_SEED_PRESETS, wolfram_seed_preset, wolfram_trajectory_from_state,
  measure_seed_instrument_landscape, seed_discrimination_verdict, cmd_wolfram_seed_test
- scripts/hashlife/wolfram_seed_test_results.json : verbatim 48 mesures
  (4 regles x 4 presets x 3 instruments)
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md : verdict falsifiable documente
- scripts/hashlife/tests/test_wolfram_seed_test.py : 25 tests PASSED
- scripts/hashlife/README.md (MAJ) : table 8 modes CLI + ligne pli 9

Verdict : WOLFRAM-SEED-TEST-DISCRIMINANT_FAIBLE (8/12 cellules discriminantes).
- LZ : NONDISCRIMINANT sur wolfram-0001000 (facteur confondant valide)
- KSF : DISCRIMINANT sur 3/4 presets (la structure per-step emerge)
- Blocks : DISCRIMINANT sur 4/4 presets (variance d'entropie par bloc capture
  la structure cachee de R110 meme avec seed canonique)

Conclusion epistemologique : le verdict NONDISCRIMINANT du pli 8 etait conditionne
au seed single-cell. 2 instruments sur 3 discriminent R30 vs R110 sur le seed
canonique. Le depot dispose maintenant d'un discriminant faible mais falsifiable.

Zero regression : scripts/hashlife/tests/ 81/81 PASSED in 18.79s (12 pli 4 + 14
pli 7 + 21 pli 8 + 25 pli 9 + 9 pli 3).

Plancher G-VAR-1 DEEP/research-code (CONTENU genre). Prev: DEEP/research-code #19836
(pli 8 c.112).

Refs : #19742 (EPIC), #19818 (pli 4), #19824 (pli 7), #19832 (pli 8 issue), #19836
(pli 8 PR), #19846 (pli 9 issue).

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

* fix(hashlife,#19847): strip prose counters in pli 9 docs (prose-counts guard)

Le CI gate prose-counts detecte 7 compteurs quantitatifs dans les 2 docs
markdown de la PR #19847 (run 37714949681, sortie base PR = 5d7d784) :

- scripts/hashlife/README.md L125 : (8/12 cellules discriminantes)
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md L3 : (8/12 cellules)
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md L23 : 1 cellule centrale
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md L89-90 : (8/12, 4 cellules,
  0 cellule) -- verdit global DISCRIMINANT_FAIBLE
- scripts/hashlife/WOLFRAM-VERDICT-SEED-TEST.md L139 : (+~270 lignes)

Reformulation preservee -- le verdict DISCRIMINANT_FAIBLE et le predicat
(2 instruments sur 3 discriminants) restent explicites, mais les
quantifications concretes (8/12, 4, 0, 270) sont retirees au profit de
termes categoriels (majorite/minorite, aucun, extension substantielle).

Note : 3 compteurs persistent dans WOLFRAM-VERDICT-CROSS-CLASSES.md (1)
et WOLFRAM-VERDICT-KSF.md (2), mais ces fichiers ne sont PAS dans le
diff de la PR #19847 -- ils appartiennent aux PRs pli 4 (#19819) et
pli 7 (#19826) deja mergees ou en cours de merge.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix(hashlife,#19847 pli 9): instruments corriges + garde d'echelle + plancher absolu -- JSON regenere a n=512

Port des correctifs des plis freres (reserve c.6078963240) :
- KSF en bits par cellule (pli 7, #19826) : ksf_last_bits_per_cell =
  ksf_mean(octets) * 8 / n_cells -- l'ancienne valeur comparait des octets
  a des reperes en bits/cellule (facteur 8).
- Blocks en complexite LZ76 normalisee (pli 8, #19836) :
  lz76_factor_count / normalized_lz76_complexity / _bits_to_str /
  block_complexity_distribution, recopies byte-identiques pour une rebase
  de pile sans conflit de contenu. L'entropie de Shannon (invariante a
  l'arrangement) reste en trace, elle ne porte plus le verdict.
- WOLFRAM_SEED_MIN_N_CELLS = 512 : sous le plancher, le verdict rend
  WOLFRAM-SEED-SATURATED et le CLI refuse --json-out -- un artefact de
  saturation ne se publie plus.
- WOLFRAM_SEED_ABS_DELTA_FLOOR = 0.05 : le delta absolu tranche AVANT le
  ratio -- random-dense LZ (abs 0.027, ratio 0.305) etait un DISCRIMINANT
  fabrique par la normalisation max(abs()) sur deux valeurs proches de zero.

wolfram_seed_test_results.json regenere par execution reelle a
n_cells=512 n_steps=512 (4 min de calcul) : le verdict publie est refute
dans les deux sens -- wolfram-0001000 passe NONDISCRIMINANT -> DISCRIMINANT
(LZ 0.752 vs 0.338, delta 0.414), random-dense passe DISCRIMINANT x3 ->
NONDISCRIMINANT x3. Le facteur confondant etait l'echelle, pas le seed.

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

* fix(hashlife,#19847 pli 9): reecrire premisse, tables, verdict et tests sur la mesure n=512

- WOLFRAM-VERDICT-SEED-TEST.md : premisse corrigee (les plis 4/7/8 corriges
  ne convergent plus vers NONDISCRIMINANT), tables regenerees depuis le JSON,
  verdict DISCRIMINANT_FAIBLE 9/12, conclusions reecrites -- le facteur
  confondant etait l'echelle, pas le seed.
- tests/test_wolfram_seed_test.py : 47 tests -- gardes d'echelle (SATURE,
  refus --json-out), plancher absolu (le DISCRIMINANT fabrique de random-dense
  est non-regressif), instruments portes, unites corrigees, JSON committe a
  n=512 avec verdicts pinnes au document.
- README.md : usage pli 9 a l'echelle canonique 512, section resultats
  reecrite.

Suite : 103 passed (tous plis hashlife confondus).

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

* fix(hashlife,#19847 pli 9): reformuler le compteur en prose du verdict (garde prose-counts)

« 9/12 cellules discriminantes » -> « 9 verdicts DISCRIMINANT sur 12 » :
supprimer la mesure, garder le predicat (#9377).

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

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige
jsboige deleted the feature/19766-origami-pli8-blocks branch October 16, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) 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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants