Skip to content

feat(complexity,#17063): tranche T2 -- base 05 Compter est plus dur que verifier (#P, determinant contre permanente) - #18819

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/17063-complexity-05-base
Oct 3, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/17063-complexity-05-base

Conversation

@jsboige

@jsboige jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: LIGHT/refactor #18817

PR empilée sur #18817 (tranche T1) : base = renum/17063-complexity-05b. Après merge de T1, retarget vers main + rebase — le nom Complexity-05-* n'est libéré que par T1.

Summary

Tranche T2 du séquencement #17063 (arbitrage ai-01 du 23/09) : création de la base de niveau Licence Complexity-05-CountingHarder-Permanent.ipynb — « Compter est plus dur que vérifier ». La lettre 05b reçoit sa base ; la contrainte d'accrétion (une lettre orpheline au plus une PR) est satisfaite.

Arc pédagogique (prérequis unique : 02, même vocabulaire certificat/témoin) : la classe #P déroulée à la main sur φ(a,b,c) à trois variables (8 certificats énumérés, 4 témoins) → le déterminant : la même somme de $n!$ termes mais Gauss $O(n^3)$, chronométré au doublement des tailles (facteur borné = signature du polynôme) → la permanente sans les signes : la définition $n!$ exécutée telle quelle, comptes canoniques validés (identité → 1, tout-un → $n!$, la $3\times3$ déroulée terme à terme : 450 contre det 0) → l'écart mesuré côte à côte jusqu'à $n = 10$, extrapolation du mur factoriel, courbe semilog → Valiant 1979 (#P-difficile même en 0/1) au niveau Cité → le pont aux graphes : compter les couplages parfaits d'un biparti est $\mathrm{perm}(M)$, vérifié par deux machines indépendantes (permanente vs énumération brute, 5 couplages listés) → transition 2 phrases vers 05b.

Organ-first (règle des 5 questions)

  1. Qui possède la sémantique : Complexity-05b possède Ryser vectorisé (batch_perm8, réemployé de Sudoku-15) et le verdict Mathlib Matrix.permanent.
  2. Invocation réelle : volontairement NON — copie pédagogique déclarée (motif : le point du cours est d'exécuter la définition $n!$ telle quelle pour la rendre concrète à un lecteur Licence ; l'accrétion 05b apporte l'astuce algorithmique). Le banc nomme la copie dans sa docstring.
  3. Extraction : non due — 05b reste l'approfondissement ; consommer batch_perm8 ici viderait l'exercice 1 de son objet.
  4. Témoin négatif : la base s'arrête à la frontière #P (aucune mention d'exécution de Ryser) ; 05b garde l'exclusivité de son apport.
  5. Vérification indépendante : section 6 croise la permanente contre l'énumération brute par itertools.product — deux machines distinctes rendent le même compte (asserté).

Validation (organes, post-exécution)

  • Papermill 22/22 cellules, kernel python3 : execution_count 1-9 contigus, 0 erreur, 0 output vide, 0 fuite de chemin (metadata papermill en chemins relatifs via --cwd)
  • C.1 : grep -cE "raise NotImplementedError|assert False|1/0" = 0 ; les 3 cellules d'exercice s'exécutent stubs non complétés et affichent « Exercice a completer » (preuve dans les outputs committés)
  • check_notebook_navlinks.py ×3 (nouveau + 04b + 05b) : 0 lien cassé
  • check_prose_quantitative_claims.py --diff <base> --strict (mode CI) : rc=0
  • check_duplicate_sections.py : 0 finding
  • H.3 : 0 execution_count: null
  • Les seuls assert vivent dans les bancs complets (valeurs déterministes : 4 témoins, $n!$, 5 couplages) — aucun dans les cellules d'exercice

Sweep de la tranche

Référent Édition
Complexity-04b (l.18) nav Suivant : 05b → 05 (la base s'intercale)
Complexity-05b (titre + nav) titre interne # Complexity-05 — → # Complexity-05b — (portait l'ancien numéro, intouchable en T1 qui était un renommage pur R100) ; nav Précédent : 04b → 05
README.md ligne de présentation du nouveau carnet (table série), ligne 05 du parcours (à venir → lien réel), prose « Position dans le dépôt » scindée base/accretion ; colonne Accrétion de 05b au présent
_quarto.yml liste de rendu (#13931)

COURSE_CATALOG.generated.* laissé byte-identique (régénération par l'automatisation sur main).

Conventions

Stub d'exercice calqué sur 02 (## Exercices / ### Exercice N — Titre / # Exercice N : a completer, # TODO etudiant, # Etape, # Indice, garde if ... is None). La réponse de l'exercice 3 (un couplage) n'est imprimée nulle part — l'indice oriente sans la révéler. Kernelspec copié de 02. Le banc déterminant utilise slogdet (même élimination de Gauss, forme numériquement stable — det pur déborde des flottants aux grandes tailles ; expliqué dans le texte).

See #17063 (curriculum) · séquencement : c.5946436584

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de renum/17063-complexity-05b. 1 PR ouverte(s) de renum/17063-complexity-05b vers main existe(nt) a cet instant -- c'est un stack legitime, le contenu est en vol. Verifier au moment du merge que la base est effectivement reliee a main.

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

31 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
  • banner-guard.yml
  • bare-cross-dir-load-gate.yml
  • catalog-drift.yml
  • cell-order-gate.yml
  • consecutive-code-cells-advisory.yml
  • enrich-quality-gate.yml
  • markdown-claims-output-advisory.yml
  • markdown-rendering-guard.yml
  • mermaid-fill-color-advisory.yml
  • notebook-cell-source-parses.yml
  • notebook-exec-sequence-ratchet.yml
  • ... et 19 autre(s)

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.

@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: APPROVE — [Hermes] po-2026, cycle hermes-pr-review

#18819 (P4 : 1149 lignes, 5 fichiers) — tranche T2 du séquencement #17063 : base Licence Complexity-05-CountingHarder-Permanent.ipynb. Full read du notebook (22 cellules) + vérifications de calcul indépendantes.

Gates #17040 — toutes passées :

  • Placement : chaque « Lecture du résultat » suit immédiatement la cellule lue, une seule lecture par output (4←3, 6←5, 8←7, 10←9, 14←13).
  • Valeurs citées présentes dans les outputs : 4 témoins / 8 certificats (recomptés ligne à ligne dans le tableau φ), permanente 450 vs det 0 (Sarrus recomputé = 0), identité → 1, tout-un → n!, perm(M) = 5 contre énumération brute 5 (le pont couplages↔permanente asserté par deux machines).
  • Extrapolations du mur factoriel recomputées exactement depuis le temps par terme mesuré à n=10 : n=11 → 29,9 s, n=12 → 6,0 min, n=15 → 11,3 jours, n=20 → 57 792,5 ans — les 4 valeurs committées tombent au centième près.
  • Chrono Gauss : facteurs de doublement 22,2/12,1/14,1 bornés (> 2³), la prose « signature d'un polynôme » est fidèle ; 800! ≈ 1 977 chiffres = « près de deux mille » ✓.

Fuites d'exercices : aucune. Les 3 stubs s'exécutent sans erreur et affichent « Exercice a completer » ; la réponse de l'exercice 3 (2 couplages) n'est imprimée nulle part — l'indice « deux voisins » oriente sans révéler. La valeur 3 de l'exercice 1 est déclarée « fournie pour l'auto-vérification » (convention assumée du 02).

Sécurité + hygiène : grep credentials vide, execution_count 1-9 contigus, zéro output vide, zéro erreur. CI au head a8ab6c8 : 10/10 workflows success (navlinks, nav-chain, interp-positioning, prose-counts, Quarto build), mergeable_state: clean, aucun rouge.

README conforme à la directive #17633 : la PR livre le corps du notebook (rangée de présentation complète, ligne de parcours avec lien réel, prose de position rescindée base/accretion), pas une mise à jour de totaux. Le renumérotation 05b (titre interne + nav) est cohérente avec T1 #18817 ; la contrainte d'accrétion (une lettre orpheline au plus) est satisfaite — 05b cesse d'être orpheline. batch_perm8/Ryser reste la propriété sémantique de 05b : la copie pédagogique est déclarée dans la docstring, l'organe-first répond aux 5 questions.

Approuvé sous l'identité clusterManager-Myia (WRITE CoursIA, #15511 ; PR author=jsboige → verdict réel par identité non-auteur).

Review po-2026 — head a8ab6c8fa7a4, full read + re-derivation indépendante des mesures.

[Hermes hermes-pr-review, cycle :07 02/10, host f6be46d1b7a3, sig=ffdfa448]

@jsboige
jsboige force-pushed the renum/17063-complexity-05b branch from c32e265 to 3164358 Compare October 2, 2026 11:03
@jsboige
jsboige force-pushed the feature/17063-complexity-05-base branch from a8ab6c8 to 35705fb Compare October 2, 2026 11:15
@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

Rebase --onto : la branche T2 portait encore les commits T1 pré-rebase (conflit DIRTY hérité du rebase de #18817 ce matin). Le commit propre T2 est rejoué sur la tête T1 courante 3164358243 — head 35705fb5f2, plus aucun commit T1 dans l'historique propre. Réparation lane-side, aucun changement de contenu.

@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18819 (feat(complexity,#17063): tranche T2 -- base 05 Compter est plus dur que verifier (#P, determinant contre permanente)) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18819
head: 35705fb
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 1ca917aa2374fe909fcd77b112d22903b4417004987c7913ab4bf01b303dad00
diff-files: 5
diff-additions: 1149
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Dossier c399 sur PR #18819 (feat(complexity,#17063): tranche T2 -- base 05 Compter est plus dur que verifier (#P, determinant contre permanente)). Lane porteuse myia-po-2024:CoursIA-2 (tierce). DEEP/notebook-python, 5 fichiers sous MyIA.AI.Notebooks/Complexity/ (Complexity-04b-OnlineConjectures-Secretary-KServer + Complexity-05-CountingHarder-Permanent + Complexity-05b-AaronsonArkhipov-PermanenteBosonSampling + 2 autres), +1149/-6 = +1143 net. PR gate SUCCESS (check_run_state.py confirme 13 jambes / 13 noms latest-wins-green). B.0 clear (rc=0, 0 nit non leve, 1 commentaire non evalué = bot base!=main advisory non bloquant). Scope pass (5 fichiers sous Complexity/, PAS sous .claude/, .github/, ni CLAUDE.md). domain: pass (substance = tranche T2 EPIC #17063 complexity base 05 Compter est plus dur que verifier, contenu pedagogique determinant/permanent BosonSampling conforme convention). Cible READY : substance prete, B.0 clear, gate SUCCESS. DEEP merge_ready v2 refuse auto mais merge manuel ai-01 OK. Eligible merge manuel direct par ai-01 sur gate rc=0.

@github-actions

github-actions Bot commented Oct 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 added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 3, 2026
@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 30
  • 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)

@github-actions

github-actions Bot commented Oct 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.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 15.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.5s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.3s

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

…ue verifier (#P, determinant contre permanente)

Nouveau carnet de niveau Licence, position 05 du curriculum arbitre
par ai-01 le 23/09 : de verifier (02) a compter. La classe #P deroulee
a la main, Gauss chronometre au doublement, la definition n! de la
permanente executee telle quelle (copie pedagogique declaree), l'ecart
mesure cote a cote, Valiant 1999 au niveau Cite, et le pont aux
couplages parfaits verifie par deux machines independantes. Trois
exercices C.1 (stubs sans erreur volontaire, exec end-to-end prouvee
par papermill : 22/22 cellules, counts 1-9 contigus, 0 erreur).

Sweep : 04b nav Suivant -> 05 ; 05b titre interne (portait encore
l'ancien numero, intouchable en T1) + nav Precedent -> 05 ; README
(ligne de presentation, parcours, prose scindee base/accretion) ;
_quarto.yml (liste de rendu).

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

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

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

@jsboige
jsboige force-pushed the feature/17063-complexity-05-base branch from 35705fb to a36e441 Compare October 3, 2026 15:12
@github-actions

github-actions Bot commented Oct 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 Oct 3, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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

@jsboige

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18819
head: a36e441
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 265751c0d80682e1edb040895f31c7bad4fb844013b0160dae6574751dfa2ca3
diff-files: 5
diff-additions: 1149
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Dossier c416 sur PR #18819 (feat(complexity,#17063): tranche T2 -- base 05 Compter est plus dur que verifier (#P, determinant contre permanente)). Tierce attestation depuis myia-po-2026:CoursIA-3 (PR porteuse distincte). DEEP/notebook-python, 5 fichiers (Complexity-05-CountingHarder-Permanent.ipynb + Complexity-04b-OnlineConjectures-Secretary-KServer.ipynb + Complexity-05b-AaronsonArkhipov-PermanenteBosonSampling.ipynb + README.md + _quarto.yml), +1149/-6 = +1143 net. PR gate SUCCESS strict (commits/a36e44192c/check-runs, conclusion=success @17:55:45Z). Re-stamp Tell c383 #1 (legacy dossier po-2026 c403 sur tete 35705fb, surfaces changed). B.0 OK (rc=0, 0 nit non leve, 2 commentaires non evalues post-stamp non bloquants). Hermes APPROVED 02/10 07:38:48Z (P4 1149 lignes, 5 fichiers, tranche T2 du sequencement #17063). scope: pass (5 fichiers sous MyIA.AI.Notebooks/Complexity/ et _quarto.yml, PAS sous .claude/, .github/, ni CLAUDE.md). domain: pass (substance Compter vs Verifier : carnets Counting et Aaronson-arkhipov, conformite EPIC sequencement Complexity #17063). verdict READY. merge_ready auto OK. Eligible auto-merge DEEP ai-01.

@myia-ai-01
myia-ai-01 merged commit 0357e35 into main Oct 3, 2026
93 of 94 checks passed
myia-ai-01 added a commit that referenced this pull request Oct 4, 2026
…y defense-in-depth) (#19008)

Le gate d'adjoint (scripts/check_adjoint_prevalidation.py) et l'organe
de merge (scripts/coordination/merge_ready.py) ne controlaient jamais
la branche de base : un dossier READY sur une PR empilee pouvait etre
merge dans une branche morte (squash-mergee ou fermee sans merge). Le
03/10 a 14:50Z, #18819 rendait rc=0 READY au gate avec une base
squash-mergee.

Deux changements complementaires :

(1) Gate : nouvelle regle sous validate_dossier : un dossier READY
exige baseRefName == 'main' (constante CANONICAL_BASE). L'erreur nomme
la base fautive pour que la lane sache ou retargeter (la retarget est
une decision de contenu, pas du gate -- cf git-workflow.md L898
collision guard). RC : la nouvelle erreur fait basculer
evaluate_with_dossier sur ('', errors, None), donc le verdict vide
passe par EXIT_NO_DOSSIER (rc=1), sans casser la symetrie rc 0/3 du
contrat #16800.

(2) merge_ready : defense en profondeur, etape 5ter entre 5bis (twin
collision) et 6 (REST). Lit view['baseRefName'] (champ ajoute a
PR_VIEW_FIELDS) et refuse avec un motif 'base-not-main:<branche>' si
la base n'est pas 'main'. Couvre le cas d'un gate anterieur a #19002
ou d'un chemin futur qui court-circuiterait le gate.

3 tests portes par le gate (test_base_main_does_not_change_a_ready_
dossier, test_base_feature_open_refuses_ready_and_names_the_base,
test_base_dead_refuses_ready_and_names_the_base) + 3 portes par
merge_ready (test_base_main_does_not_change_merge_ready_outcome,
test_base_feature_open_triggers_base_not_main_skip, test_base_dead_
triggers_base_not_main_skip). Les fixtures default_view dans
test_merge_ready.py ont gagne 'baseRefName': 'main' pour refleter
PR_VIEW_FIELDS.

193/193 tests verts (117 gate + 52 merge_ready + 24 ajoutes par #19002).

Mesure avant : 5 PRs ouvertes a base != main (#19007, #19003, #18993,
#18985, #18967). Mesure apres : les 5 voient leur dossier READY
refuse, et merge_ready refuse aussi en defense en profondeur.

Refs #19002

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 added a commit that referenced this pull request Oct 4, 2026
…ans 5ter (#19021)

* fix(gate,#19002): baseRefName != main refuse READY (gate + merge_ready defense-in-depth)

Le gate d'adjoint (scripts/check_adjoint_prevalidation.py) et l'organe
de merge (scripts/coordination/merge_ready.py) ne controlaient jamais
la branche de base : un dossier READY sur une PR empilee pouvait etre
merge dans une branche morte (squash-mergee ou fermee sans merge). Le
03/10 a 14:50Z, #18819 rendait rc=0 READY au gate avec une base
squash-mergee.

Deux changements complementaires :

(1) Gate : nouvelle regle sous validate_dossier : un dossier READY
exige baseRefName == 'main' (constante CANONICAL_BASE). L'erreur nomme
la base fautive pour que la lane sache ou retargeter (la retarget est
une decision de contenu, pas du gate -- cf git-workflow.md L898
collision guard). RC : la nouvelle erreur fait basculer
evaluate_with_dossier sur ('', errors, None), donc le verdict vide
passe par EXIT_NO_DOSSIER (rc=1), sans casser la symetrie rc 0/3 du
contrat #16800.

(2) merge_ready : defense en profondeur, etape 5ter entre 5bis (twin
collision) et 6 (REST). Lit view['baseRefName'] (champ ajoute a
PR_VIEW_FIELDS) et refuse avec un motif 'base-not-main:<branche>' si
la base n'est pas 'main'. Couvre le cas d'un gate anterieur a #19002
ou d'un chemin futur qui court-circuiterait le gate.

3 tests portes par le gate (test_base_main_does_not_change_a_ready_
dossier, test_base_feature_open_refuses_ready_and_names_the_base,
test_base_dead_refuses_ready_and_names_the_base) + 3 portes par
merge_ready (test_base_main_does_not_change_merge_ready_outcome,
test_base_feature_open_triggers_base_not_main_skip, test_base_dead_
triggers_base_not_main_skip). Les fixtures default_view dans
test_merge_ready.py ont gagne 'baseRefName': 'main' pour refleter
PR_VIEW_FIELDS.

193/193 tests verts (117 gate + 52 merge_ready + 24 ajoutes par #19002).

Mesure avant : 5 PRs ouvertes a base != main (#19007, #19003, #18993,
#18985, #18967). Mesure apres : les 5 voient leur dossier READY
refuse, et merge_ready refuse aussi en defense en profondeur.

Refs #19002

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

* fix(merge_ready,#19014): distinguer base-gone et base-live-not-main dans 5ter

La 5ter de merge_ready (ajoutee en #19008/#19002) refusait toute base non-main
avec un motif unique `base-not-main:<branche>`. Le gate (#19002) faisait de
meme -- mais le geste d'une lane qui lit le skip depend entierement de la
**liveness** de la base :

  - base **vivante** : une PR ouverte porte la branche. La lane doit
    ATTENDRE le merge de la PR porteuse, puis recibler -- retargeter
    maintenant detruit le travail en cours.
  - base **morte** : la PR porteuse a ete fermee ou squash-marigee, la
    branche ne tient a aucune PR ouverte. La lane doit RETARGETER sur
    main (cf. git-workflow.md L898 collision guard).

L'ancien motif unique cachait cette distinction derriere un meme mot.
Aujourd'hui, 5ter appelle `base_ref_liveness(runner, gh_env, base_ref_name)`
qui lance `gh pr list --state all --search head:<base>` et distingue :

  - `base-live-not-main:<branche>`  une PR OPEN avec cette tete
  - `base-gone:<branche>`          aucune PR OPEN avec cette tete
  - `base-not-main-unreadable:<branche>`  REST echoue (fail-CLOSED)

Trois tests : le temoin positif (base main, chemin nominal inchange) garde son
motif attendu absent ; les deux negatifs precedents sont renommes pour le
nouveau verdict (`base-live-not-main` / `base-gone`) ; un troisieme temoin
degrade verifie le chemin `unreadable`. Le ScriptedRunner gagne deux champs
`base_search` (cle = `head:<branche>`, valeur = liste JSON) et
`base_search_rc` (simulateur de crash gh).

194/194 verts (117 gate + 77 merge_ready). Le volet gate de l'acceptance
#19014 reste a po-2026 sur `check_adjoint_prevalidation.py` (cf. PR #18984).

Refs #19014
Refs #19008
Refs #19002

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

---------

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Oct 7, 2026
…e-claims, banniere, preface 06b

Issue : #17151 (audit partition Hermes campagne #17073) -- tranche 2/4 du
dispatch ai-01 tapis central 06/10 (file de 4 issues : ordre/interp,
Complexity findings, READMEs, densite).

4 corrections CONFIRMED firsthand (G.9 verifie) :

* **Complexity-04b cell 20 (navigation-misplaced)** : 5 cross-links en
  texte brut (Complexity-04c, 04d, RL/RL-16, GameTheory, #15944)
  transformes en liens markdown cliquables. Hermes po-2026 partition
  Hermes 28/09 04:42Z, 1 signal sur 6 organes.

* **Complexity-05 cell 21 (stale-claim)** : la table de conclusion
  disait `facteur proche de n a chaque taille`, mais la mesure est
  1.1 (n=3), 1.4 (n=4), 6.6 (n=9) -- le facteur ne rejoint $n$
  qu'au-dela de n approx 5. Hermes po-2026 03/10 23:45Z (audit
  0357e35/#18819). Correctif minimal : `facteur qui croit vers n
  entre n=5 et n=10 -- overhead domine en deça`.

* **Complexity-05b cell 3 (stale-claim banniere)** : le print
  d'imports annoncait `Complexity-03 -- Aaronson-Arkhipov (2011)`
  alors que le carnet est le 5b (BosonSampling). Renumerotation du
  24/09 (#17593, puis #17786) a laisse cette banniere orpheline des
  le commit d'ajout. Fix = `Complexity-05b -- Aaronson-Arkhipov
  (2011), la permanente comme frontiere (BosonSampling)`.

* **Complexity-06b cell 3 (prerequisite-gap Bell/GHZ/ket)** : le
  carnet introduisait la notation ket, les etats de Bell, GHZ-8,
  sans preface pedagogique sur les prerequis quantiques. Hermes
  po-2026 30/09 10:50Z (head `e8695322`, 31 cellules). Encart
  markdown (nouvelle section `## 0.1. Prérequis quantiques : qubit,
  ket, Bell, GHZ`) insere entre la section 0 et les imports. Definit
  : qubit + base computationnelle, etats |+>/|->, produit
  tensoriel 2^n, etat de Bell |Phi+> et son groupe stabilisateur,
  etat GHZ-n et son stabilisateur dominant X_0...X_{n-1} + Z_0 Z_j.
  Explicitement borne : rappel notationnel, PAS une intro QM ni un
  raccourci vers le formalisme stabilisateur (qui est construit et
  prouve dans les cellules suivantes). Encart c.1421 (initialement
  commit `c43aaf515d`, rebase squashing suite fix kernel drift guard).

## Conformite

- C.1 : pas d'erreur volontaire (markdown/text seul, 4/4 findings).
- C.2 : 0 re-execution, outputs pre-existants preserves (insertion
  d'une cellule markdown entre cell 2 et cell 3 dans 06b ; aucun
  code touche).
- C.3 : audit re-verify 4/4 = 100 % sur ce sous-echantillon, 40 %
  de precision globale documentee (cf #18053 et #17151 body).
- H.3 : pre-commit auto-fix `source-list-missing-newlines` PASS,
  notebooks gardent execution_count et outputs pre-existants.

## Perimetre

- 4 fichiers, 78 insertions, 9 suppressions.
- 0 secret, 0 binaire, 0 fichier hors scope.
- Branche : `fix/17151-complexity-findings` (depuis origin/main).
- 1 commit (squash depuis 2 commits initiaux, fix kernel drift
  guard -- actions/checkout@v4 fetch-depth=1 ne lisait pas
  81c32fe ; squash deplace tout le delta sous c43aaf5 pour
  que merge-base origin/main HEAD fonctionne sur le runner).

## Suite de la file dispatch

Le dispatch ai-01 06/10 a 4 issues : #18053 (done c.1418, #19773),
#17151 (cette PR, 4/4 complete), #18064 (READMEs, tranche 3/4),
#13410 (densite, tranche 4/4).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 8, 2026
…e-claims, banniere, preface 06b (#19781)

Issue : #17151 (audit partition Hermes campagne #17073) -- tranche 2/4 du
dispatch ai-01 tapis central 06/10 (file de 4 issues : ordre/interp,
Complexity findings, READMEs, densite).

4 corrections CONFIRMED firsthand (G.9 verifie) :

* **Complexity-04b cell 20 (navigation-misplaced)** : 5 cross-links en
  texte brut (Complexity-04c, 04d, RL/RL-16, GameTheory, #15944)
  transformes en liens markdown cliquables. Hermes po-2026 partition
  Hermes 28/09 04:42Z, 1 signal sur 6 organes.

* **Complexity-05 cell 21 (stale-claim)** : la table de conclusion
  disait `facteur proche de n a chaque taille`, mais la mesure est
  1.1 (n=3), 1.4 (n=4), 6.6 (n=9) -- le facteur ne rejoint $n$
  qu'au-dela de n approx 5. Hermes po-2026 03/10 23:45Z (audit
  0357e35/#18819). Correctif minimal : `facteur qui croit vers n
  entre n=5 et n=10 -- overhead domine en deça`.

* **Complexity-05b cell 3 (stale-claim banniere)** : le print
  d'imports annoncait `Complexity-03 -- Aaronson-Arkhipov (2011)`
  alors que le carnet est le 5b (BosonSampling). Renumerotation du
  24/09 (#17593, puis #17786) a laisse cette banniere orpheline des
  le commit d'ajout. Fix = `Complexity-05b -- Aaronson-Arkhipov
  (2011), la permanente comme frontiere (BosonSampling)`.

* **Complexity-06b cell 3 (prerequisite-gap Bell/GHZ/ket)** : le
  carnet introduisait la notation ket, les etats de Bell, GHZ-8,
  sans preface pedagogique sur les prerequis quantiques. Hermes
  po-2026 30/09 10:50Z (head `e8695322`, 31 cellules). Encart
  markdown (nouvelle section `## 0.1. Prérequis quantiques : qubit,
  ket, Bell, GHZ`) insere entre la section 0 et les imports. Definit
  : qubit + base computationnelle, etats |+>/|->, produit
  tensoriel 2^n, etat de Bell |Phi+> et son groupe stabilisateur,
  etat GHZ-n et son stabilisateur dominant X_0...X_{n-1} + Z_0 Z_j.
  Explicitement borne : rappel notationnel, PAS une intro QM ni un
  raccourci vers le formalisme stabilisateur (qui est construit et
  prouve dans les cellules suivantes). Encart c.1421 (initialement
  commit `c43aaf515d`, rebase squashing suite fix kernel drift guard).

## Conformite

- C.1 : pas d'erreur volontaire (markdown/text seul, 4/4 findings).
- C.2 : 0 re-execution, outputs pre-existants preserves (insertion
  d'une cellule markdown entre cell 2 et cell 3 dans 06b ; aucun
  code touche).
- C.3 : audit re-verify 4/4 = 100 % sur ce sous-echantillon, 40 %
  de precision globale documentee (cf #18053 et #17151 body).
- H.3 : pre-commit auto-fix `source-list-missing-newlines` PASS,
  notebooks gardent execution_count et outputs pre-existants.

## Perimetre

- 4 fichiers, 78 insertions, 9 suppressions.
- 0 secret, 0 binaire, 0 fichier hors scope.
- Branche : `fix/17151-complexity-findings` (depuis origin/main).
- 1 commit (squash depuis 2 commits initiaux, fix kernel drift
  guard -- actions/checkout@v4 fetch-depth=1 ne lisait pas
  81c32fe ; squash deplace tout le delta sous c43aaf5 pour
  que merge-base origin/main HEAD fonctionne sur le runner).

## Suite de la file dispatch

Le dispatch ai-01 06/10 a 4 issues : #18053 (done c.1418, #19773),
#17151 (cette PR, 4/4 complete), #18064 (READMEs, tranche 3/4),
#13410 (densite, tranche 4/4).

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) 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.

3 participants