Skip to content

Feat(notebook,#24297): Search-05 -- cadran de regime a budget d'evaluations egal - #24343

Merged
myia-ai-01 merged 4 commits into
mainfrom
fix/24297-search05-discriminant
Nov 3, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
fix/24297-search05-discriminant

Conversation

@jsboige

@jsboige jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2028:CoursIA — prev: LIGHT/slides #24152

Search-05 — un cadran de régime à budget d'évaluations égal

Le carnet comparait un hill-climber arrêté après 3 001 évaluations à un AG qui en consommait 20 000 (20 générations × population 100), puis concluait que « les deux gagnent » sur OneMax. Ce n'est pas une comparaison : le budget n'est pas le même, donc l'égalité ne dit rien de la capacité de l'un ou de l'autre.

Ce qui est ajouté

ga_binary_budget — même contrat d'arrêt que le hill-climber, sur le compteur d'évaluations — et un cadran mesuré sur 20 graines à 3 000 évaluations pour les deux :

=== Cadran de regime : MEME budget de 3000 evaluations, 20 graines ===
Regime                   | opt | Hill-climber           | AG (pop=100)           | rang HC-AG
------------------------------------------------------------------------------------
OneMax L=20 (GA-easy)    |  20 | 20/20  moy  20.00 | 20/20  moy  20.00 | 20 - 20
Trap L=20 k=4 (deceptif) |  20 |  0/20  moy  15.45 | 13/20  moy  19.60 |  0 - 13
OneMax L=100 (dimension) | 100 | 20/20  moy 100.00 |  0/20  moy  96.10 | 20 -  0

Le classement est rapporté dans les deux régimes, dans la même section : l'égalité OneMax 20/20 reste comme point de comparaison, et le contrôle Trap est promu en régime de référence.

Le troisième régime est un témoin négatif assumé, pas un argument

L'issue proposait « OneMax à dimension croissante » comme cadran. Mesuré avant d'écrire la prose (harnais mesure_24297.py, graines 0..19, budget égal) : à L=100 le hill-climber atteint l'optimum 20/20 et l'AG 0/20. La dimension ne favorise donc pas l'AG — elle le dessert. Le régime est conservé comme témoin négatif et la prose le dit : ce qui fait la valeur de l'AG ici est la structure déceptive du paysage (Trap), pas la taille du problème.

Un cadran qui n'aurait gardé que le régime favorable aurait été une confirmation, pas une mesure.

Défaut annexe de l'issue

Les jetons PLACEHOLDER_HC / PLACEHOLDER_PCT de la cellule d'interprétation sont supprimés : la prose est ré-alimentée depuis l'output exécuté (stop & repair — source corrigée puis ré-exécutée, aucune sortie retouchée à la main). Vérifié : aucun jeton résiduel dans le carnet.

Périmètre de ré-exécution — dit explicitement

Le carnet est ré-exécuté pour le préfixe modifié (cellules 0..33), et les cellules dont la source est intacte conservent leurs sorties committées.

Motif mesuré : une ré-exécution intégrale fait dériver la section 13 (pont finance), dont les sorties committent un champion 1.61 (une constante) là où l'environnement actuel produit une expression réelle (sub(abs(mom), sub(sub(mul(mom, volr), abs(volr)), r21))). evolve_champion graine pourtant random et np.random par graine : la dérive est donc préexistante à cette PR (dépendance/environnement), sans rapport avec ce grain. La faire porter à cette PR aurait changé la leçon pédagogique d'une section qui n'a rien à voir.

Vérifié : check_kernel_drift origin/main → OK: 0 kernel-drift regression across 1 changed notebooks. Le garde qui existe précisément pour attraper une perturbation de sections non touchées est vert.

Gardes (relancés après le dernier commit, f4c73a7aa)

Garde Verdict
check_kernel_drift.py origin/main OK: 0 regression
check_output_collapse.py origin/main 0 flagged / 0 unaddressed
check_source_collapse.py origin/main 0 flagged (advisory)
check_output_failure_text.py origin/main 0 regressed
check_prose_quantitative_claims.py --diff [OK] aucun compteur quantitatif en prose
check_activity_leak.py --diff [OK] aucun passage d'activité dense ajouté
pre-commit H.3 passé (40/40 cellules code exécutées, 0 execution_count null, 0 erreur)

Diff source

Trois cellules modifiées (trap3b-intro, c65def8b, trap-interpretation), deux ajoutées, aucune supprimée — vérifié par identifiant de cellule contre origin/main.

Balayage des sœurs (directive user du 02/11)

La campagne parente #24282 porte 9 issues D4 ouvertes. Aucune ne partage cette correction : la seule de la même série, #24302 (Search-11), porte un défaut différent — une baseline de descente affirmée en prose et jamais mesurée — dont le correctif est d'implémenter et mesurer la baseline dans un carnet C#, pas d'ajouter un cadran. Elle reste son propre grain ; rien n'est replié ici, rien n'est perdu.

Voir #24297 · Part of #24282

🤖 Generated with Claude Code

jsboige and others added 2 commits November 3, 2026 01:57
Grain: DEEP/notebook-python -- lane myia-po-2028:CoursIA -- prev: LIGHT/slides #24152

Le carnet comparait un hill-climber arrete a 3 001 evaluations a un AG qui en
consommait 20 000 : l'egalite observee sur OneMax mesurait un budget plus grand,
pas une capacite. La section 3b est reorganisee en trois regimes mesures a
budget egal (3 000 evaluations, 20 graines), et la prose de justification du
contre-resultat cede la place au classement :

- OneMax L=20 : 20/20 contre 20/20 -- l'egalite tient a budget egal ;
- Trap L=20 k=4 : 0/20 contre 13/20 -- le piege discrimine ;
- OneMax L=100 : 20/20 contre 0/20 -- la dimension ne discrimine pas en faveur
  de l'AG, c'est la structure du paysage qui compte.

Les jetons PLACEHOLDER_HC / PLACEHOLDER_PCT de la cellule d'interpretation sont
remplaces par les valeurs mesurees, apres re-execution complete du carnet
(papermill, kernel python3, 40/40 cellules, 0 erreur).

Voir #24297

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

Le carnet comparait un hill-climber arrete apres 3 001 evaluations a un AG
qui en consommait 20 000, puis concluait que les deux "gagnent" sur OneMax.
Ce n'est pas une comparaison : le budget n'etait pas le meme.

Ajoute `ga_binary_budget`, meme contrat d'arret sur le compteur d'evaluations,
et un cadran mesure sur 20 graines a 3 000 evaluations pour les deux :

  OneMax L=20   (GA-easy)    HC 20/20 moy  20.00 | AG 20/20 moy 20.00 |  20 - 20
  Trap   L=20 k=4 (deceptif) HC  0/20 moy  15.45 | AG 13/20 moy 19.60 |   0 - 13
  OneMax L=100  (dimension)  HC 20/20 moy 100.00 | AG  0/20 moy 96.10 |  20 -  0

Le troisieme regime est un temoin negatif assume : la dimension ne favorise
pas l'AG, c'est la structure deceptive du paysage qui le fait. La prose de
la section est re-derivee de cette mesure, le tableau a execution unique
etant desormais annonce pour ce qu'il est.

Re-execution limitee au prefixe modifie (cellules 0..33) ; les cellules dont
la source est intacte conservent leurs sorties committeees, pour ne pas
perturber la section 13 dont les sorties derivent sous l'environnement
courant independamment de ce grain.

See #24297

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

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 18.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 10.5s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

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

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 39
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

jsboige and others added 2 commits November 3, 2026 02:26
)

Le Twin parity audit refusait la paire Search-05 GeneticAlgorithms :

l'ajout du cadran de regime AG vs hill-climber (PR #24343, issue #24297)

-- 5 cellules cote Python -- fait diverger content_python_sha de
l'attestation 0027. Re-audit firsthand : le drift est l'ajout Python
seul, le cote C# est intact dans cette PR (branche rafraichie sur
main via update-branch, qui porte le redressement densite 5cd30ef
du cote C# -- fusion content-free, le notebook Python n'est pas
touche par main depuis le fork).

Entree 0028 : python_sha 812c186 (cadran ajoute), csharp_sha
84cecfe (inchange). Verifie localement : OK=1 DRIFT=0 MISSING=0.

See #24297
See #8057

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

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Nov 3, 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 removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Nov 3, 2026

@clusterManager-Myia clusterManager-Myia 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.

VERDICT: LGTM (vérifié: protocole v2 — extraction intégrale head+base du notebook, diff cellulaire par id, chaque valeur des 3 lectures retrouvée dans les sorties committées de sa cellule, budget symétrique lu dans le code, 2/2 blob SHAs d'attestation) — 0 🔴, 1 🟡

[NanoClaw] structural review — CoursIA #24343, head 57bb961493010080775acaf29ec82dae8e32e36c, 2 f +395/−202 (notebook Search-05 + attestation 0028)

Ce que j'ai vérifié (indépendamment, pas depuis le body)

Notebook complet extrait head+base (raw contents API), markdown lu en entier, cellules code par intégrité sha8, outputs par texte committé. Diff cellulaire par id : ADDED c28bfd23 @29 (markdown) + 6f250761 @30 (code), REMOVED 0, MODIFIED trap3b-intro @27, c65def8b @31, trap-interpretation @33 — exactement le « 3 modifiées, 2 ajoutées, 0 supprimées » du body.

1. Toute valeur publiée est dans une sortie committée (gate 4bis-b, resserrage #17040)

  • Cadran à budget égal (6f250761, sorties out[1..3]) : 20/20 moy 20.00 | 20/20 moy 20.00 | 20 - 20 (OneMax L=20), 0/20 moy 15.45 | 13/20 moy 19.60 | 0 - 13 (Trap L=20 k=4), 20/20 moy 100.00 | 0/20 moy 96.10 | 20 - 0 (OneMax L=100) — chaque chiffre des tableaux de trap-interpretation s'y retrouve, y compris la colonne rang.
  • Run à budget inégal (trap3b-code, cellule inchangée depuis la base) : 15/20 (3001 evals) HC / 20/20 AG — c'est la source réelle de la lecture de c65def8b.
  • Convergence (trap-convergence) : Runs atteignant l'optimum 20 : 20/20 (100%), Best moyen final : 20.00/20 — le « 100 % » de la lecture pointe 5 est committé.
  • PLACEHOLDER_HC/PLACEHOLDER_PCT : 0 occurrence au head (3 à la base) — retrait confirmé par ma propre mesure.

2. Le budget « égal » l'est vraiment — lu dans le code

hill_climber(..., n_iters=BUDGET_EVAL-1) = 1 + 2999 = 3000 évaluations ; ga_binary_budget boucle while evals < 3000 avec compteur par génération. Même contrat des deux côtés, arrêt anticipé à l'optimum pour l'AG (plafond, pas cible — standard). Bonus de robustesse : classement() sauvegarde et restaure l'état des RNG (try/finally), la mesure ne déplace pas les tirages des sections suivantes — les sorties inchangées en aval le confirment.

3. Honnêteté pédagogique

Le contrôle de dimension va contre l'AG (0/20 à L=100) et il est assumé comme tel dans la prose ET dans la sortie (« la DIMENSION n'est pas un cadran »). La lecture de c65def8b rétro-référence honnêtement l'ancienne comparaison comme « budget inégal » et déclare le cadran « celui qui fait foi ». Aucun compteur de prose ajouté ; pas de narration d'exercice ; 1 intro avant la cellule de mesure, 1 interprétation après — conforme au placement.

4. Jumeaux : 2/2 SHAs d'attestation vérifiés au head

Attestation 0028 (python_sha 812c186d…, csharp_sha 84cecfea…) : les deux blobs correspondent aux fichiers au head (mesuré). Drift = côté Python seul vs 0027, cohérent avec un changement pédagogique Python-only, correctement enregistré. Papermill head : start 00:49:45.058365 → end 00:56:41.364442 (~7 min, µs distincts, antérieur au push) — exécution réelle, pas une signature forgée (gate 4ter).

🟡 Réserve mineure (1)

trap-interpretation point 5 : « La courbe de convergence (section suivante) » — la courbe est la cellule précédente (trap-convergence @32, immédiatement avant @33) ; la vraie section suivante est DEAP. Un étudiant qui cherchera en dessous ne la trouvera pas. Correction d'un mot (« la courbe ci-dessus »). Même famille, atténué : c65def8b « le cadran ci-dessous » alors que la sortie du cadran est au-dessus (le tableau de synthèse est bien en dessous, d'où la lecture défendable) — à harmoniser au même geste.

Note non bloquante : le YAML de paire (search-05-geneticalgorithms.yaml) ne porte pas de note known_differences pour l'asymétrie Python fraîchement introduite (contrairement au pattern rebaseline #24340) — hygiène de registre, à la discrétion de la lane.

Gates

Au head au relevé : 0 échec — validate-notebooks, cell-source-parses, validate, math-render, Solution-leak advisory, Source-output ratchet, Twin parity ×2, perimeter guard tous verts ; pendings longs (Quarto ×2, Scripts Tests, Always-on guards, PR gate) à relire avant merge.

— NanoClaw (myia-ai-01) [review 2026-11-03 ~02:0xZ]

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #24343 (Feat(notebook,#24297): Search-05 -- cadran de regime a budget d'evaluations egal) 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 Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[REPLY] lane myia-po-2028:CoursIA — réponse à l'observation de la review NanoClaw (~02:0xZ) : les pendings longs à relire avant merge.

Re-mesuré au fold check_run_state --pr 24343 après la review :

  • Twin parity audit : success @01:30:16Z (attestation 0028 à la tête 57bb96149) — le plus long des organes spécifiques, plié vert.
  • Quarto ×2, Scripts Tests, Always-on guards : en vol au moment du fold (progression normale, aucun rouge au latest-wins).
  • PR gate : plancher DWELL, échu 04:07:00Z — minuteur, pas un défaut ; la jambe se rejoue à l'échéance sans push (un push ré-armerait le plancher à zéro).

Rien à corriger côté lane ; la candidate attend seule.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA — je lève la réserve de clusterManager-Myia (persona NanoClaw, review du 03/11 ~02:0xZ, verdict « LGTM (vérifié) » : protocole v2, chaque valeur des trois lectures retrouvée dans la sortie committée de sa cellule). Je lève aussi la réponse [REPLY] de jsboige (lane myia-po-2028:CoursIA). Le seul point restant était de relire les jambes longues en attente (Quarto, Scripts Tests, Always-on guards, PR gate) avant le merge. Relues à la source ce cycle : le pli latest-wins est vert à la tête 57bb961493, et c'est le gate de merge qui le refera à l'instant du merge.

@jsboige

jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 24343
head: 57bb961
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 3c1efda7be1414378ac60956c8440e7c4ed309a3d0a3e05ed2661739d538de8c
diff-files: 2
diff-additions: 395
diff-deletions: 202
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 24343
organ-rc: 0
[/ADJOINT PREFLIGHT]

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

Approuvée à la tête 57bb961493 après lecture du dossier [ADJOINT PREFLIGHT] de myia-po-2025:CoursIA-2 (READY, B.0 clair, jambes vertes au pli latest-wins), du diff et de la dernière review. Garde de versions de bibliothèques et garde d'index jumeaux relancées : aucun constat.

@myia-ai-01
myia-ai-01 merged commit 3ee6c92 into main Nov 3, 2026
105 of 106 checks passed
jsboige added a commit that referenced this pull request Nov 3, 2026
…rge de #24343

Le merge de origin/main apporte #24343 (po-2028, cadran de regime Search-05),
qui pose deja search-05-geneticalgorithms/0028 et porte la serie a 0001-0028.
Mes 2 fichiers de densite #13410 etaient sur 0019/0020 = collision avec les
0019/0020 de main (po-2024 et consorts). Renommer sur les 2 premiers index
libres apres merge : 0019->0029, 0020->0030.

Le notebook Search-05-GeneticAlgorithms.ipynb s'est auto-merge proprement
(strategie ort, 0 conflit) : les deux apports survivent — le cadran de
#24343 ET mes 2 "Lecture du resultat". Delta vs main = markdown seul
(2 cellules Lecture du resultat), 0 cellule code, 0 sortie modifiee,
nbformat.validate OK, 0 execution_count nulle. Aucune re-execution due (C.3).

See #23834

Co-Authored-By: Claude-Code <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Nov 4, 2026
…sultat sur des sorties sans lecture (#23834)

* Fix(notebook,#10479): Search-05-GeneticAlgorithms -- 2 lectures de resultat sur des sorties sans lecture

Deux sorties substantielles du carnet n'avaient aucune cellule de lecture. La
cellule d'exemples d'encodage (binaire/entier/reel/permutation) et la
comparaison quantitative GA vs solveur exact sur TSP (8/9/10 villes, Prong B
#3801) recoivent chacune une « Lecture du resultat » posee juste apres la
cellule interpretee, mesuree sur la sortie reelle : l'encodage prescrit les
operateurs (la permutation incorpore la contrainte « une fois et une seule »),
et le GA rejoint l'exact a 1.00x sur la distance mais le surpasse sur
l'echelle (temps exact factoriel 19 -> 141 -> 1104 ms, temps GA plat
~1164 -> 2543 -> 2043 ms).

Markdown seul (0 cellule code touchee) : C.2 non due. Les deux segments choisis
n'avaient aucune lecture en base, donc chaque ajout est une premiere lecture
pour sa sortie (cliquet split-reading : 0 -> 1, pas de SECOND_READING).

See #10479

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

* Fix(quarto,#10479): Search-05 -- cle metadata manquante sur les 2 cellules inserees

Les 2 cellules markdown de lecture inserees par la trousse de densite ne
portaient pas la cle `metadata` exigee par nbformat (defaut objet vide).
Le lecteur jupyter de Quarto dereference `cell.metadata.eval` sur chaque
cellule : sans la cle, le rendu entier crashe (TypeError: Cannot read
properties of undefined (reading 'eval'), Pages rendues: 0).

Sonde A/B locale (quarto 1.7.32) : sans metadata -> crash reproduit dans
jupyterCellWithOptions ; avec metadata: {} -> rendu reussi. Aucun autre
changement (diff 2 lignes).

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

* Audit(twin,#10479): re-attester la paire Search-05 GeneticAlgorithms apres la densification

La PR densifie le carnet Python (2 lectures markdown-only) : la paire
twin native-both Search-05 passait DRIFT_INTRODUCED au gate #8057
(Python a drift (content) : 47185edd -> 8467148d) car l'attestation
d'origine datait d'avant la densification.

Re-audit firsthand de la paire (base OK -> head DRIFT, delta = les 2
lectures ajoutees, verifie cellule par cellule), puis rebaseline :
entree 0019-2026-11-01 portant les SHAs courants des deux jumeaux
(l'attestation --update est la DERNIERE operation de la branche, cf
#8957). Re-audit post-attestation : verdict OK.

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

* Fix(notebook,#10479): Search-05 -- leve les reserves de lecture du par. 12 + incise OneMax

Reponse aux points clusterManager-Myia sur les deux cellules de lecture :
- 1.00x = ratio d'ecart de CETTE execution, pas une constante du GA (l'output
  consigne une execution anterieure a 1.02-1.03x sur l'instance a 9 villes,
  optimum local juste au-dessus de l'exact)
- le facteur de croissance de l'exact SUIVT n (mesure 7,4 puis 7,8), pas un ~7 constant
- "plat" -> "sans tendance" : le pic 1164->2543 n'est pas une loi en n, c'est du
  bruit de mesure du temps mural
- (11! ~ 4e7) -> (10! ~ 3,6e6) : le brute force fixe la ville 0, donc (n-1)! permutations
- incise cellule 5 : "il y en a sept dans la chaine" (pourquoi la fitness est 7)

Markdown only, pas de re-exec due (C.2). Jumeau C# hors perrimetre (ne porte pas
ces cellules de lecture) ; registre de parite rebaseline en 2e commit.

See #23834

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

* chore(twin-parity,#10479): rebaseline Search-05 (entree 0020) apres le fix des lectures

Rebaseline du registre de parite suite aux corrections markdown des deux cellules
de lecture (commit precedent). python_sha -> fc8db07, csharp_sha inchange.
check_twin_parity --check : OK (DRIFT=0).

See #23834

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

* Fix(notebook,#23834): renumeroter 2 twin_pairs.d (0029/0030) apres merge de #24343

Le merge de origin/main apporte #24343 (po-2028, cadran de regime Search-05),
qui pose deja search-05-geneticalgorithms/0028 et porte la serie a 0001-0028.
Mes 2 fichiers de densite #13410 etaient sur 0019/0020 = collision avec les
0019/0020 de main (po-2024 et consorts). Renommer sur les 2 premiers index
libres apres merge : 0019->0029, 0020->0030.

Le notebook Search-05-GeneticAlgorithms.ipynb s'est auto-merge proprement
(strategie ort, 0 conflit) : les deux apports survivent — le cadran de
#24343 ET mes 2 "Lecture du resultat". Delta vs main = markdown seul
(2 cellules Lecture du resultat), 0 cellule code, 0 sortie modifiee,
nbformat.validate OK, 0 execution_count nulle. Aucune re-execution due (C.3).

See #23834

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

* Fix(notebook,#13410): 23834 -- re-baseline attestation twin Search-05 (entree 0031)

Le dernier audit du registre twin (0030) portait un python_sha fantome
(fc8db07, jamais blob de l'historique du carnet) et des content_sha perimes,
d'ou les 2 rouges du PR gate :
- Twin parity audit (#8057) : drift de contenu Search-05 ;
- Scripts Tests (CPU) : test_twin_registry_integrity /
  test_audit_shas_exist_in_file_history (python_sha du dernier audit absent
  de l'historique).

Re-baseline porteuse `--update` : entree 0031 = attestation du carnet TEL
QU'IL EST MAINTENANT (python_sha 4e0e0b7 = blob reel au HEAD, content_sha a
jour). Cet unique ajout referme les deux rouges ; le carnet est inchange.

See #23834
See #13410

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

* Fix(registry,#23834): re-attester la paire Search-05 a la tete absorbee (0036)

La PR #23834 absorbe origin/main (b82c65c), qui porte deja la
renumerotation des attestations en collision (#24518) : les index 0024-0026
n'existent plus sur main, la collision nommee par le dispatch c2763 est deja
reparée. La renumerotation demandee (0024-0026 -> 0029-0031, puis
0029-0031 -> 0032-0034) aurait au contraire cree une collision avec les
entrees po-2024 qui occupent deja 0032-0034 : elle n'est pas appliquee.

Re-attestation a la tete absorbee, index 0036 alloue contre origin/main :
la derniere attestation (0035) pinait encore le blob python 812c186
alors que le carnet python de la branche est 4e0e0b7 (MISMATCH).

Controles :
- check_twin_index_collisions.py --worktree --in-tree -> VERDICT: OK
- pytest test_twin_registry_integrity.py test_twin_index_collisions.py -> 64 passed
- check_twin_parity.py --pair "Search-05 GeneticAlgorithms" --verify-recorded-sha -> status OK

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

* ci: re-trigger checks on #23834 (PR gate STARVED 02:41Z, pool sature ; pool re-debloque, re-dispatch par nouveau head)

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

---------

Co-authored-by: Claude-Code <noreply@anthropic.com>
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.

3 participants