Skip to content

feat(probas,#14873): G3 descente arc actuariel en sous-série Actuariat/ (T1-T5) + capstone DecPyMC-08 - #18857

Merged
myia-ai-01 merged 11 commits into
mainfrom
feature/14873-g3-actuariat
Oct 3, 2026
Merged

myia-ai-01 merged 11 commits into
mainfrom
feature/14873-g3-actuariat

Conversation

@jsboige

@jsboige jsboige commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2024:CoursIA-2 — prev: MED/guard #18846

G3 — descente de l'arc actuariel en sous-série Actuariat/ (T1-T5) + capstone au slot 08

Livrable de l'arbitrage ai-01 du 2026-09-25 (commentaire c.5830077941 sur #14873) : l'ancienne jambe actuarielle DecPyMC-8…12 descend en sous-série dédiée Actuariat/, régraduée T1→T5 (mapping canonique EPIC #12904), la série mère garde un capstone léger au slot 08 (modèle pilote Serre100, #17789 MERGED), et DecPyMC-7 renvoie vers ce capstone. Le gate « après le lake descent #4362 » était levé : #18613 MERGED le 2026-10-01T22:35Z — vérifié firsthand avant le claim (commentaire [CLAIMED] sur l'issue).

Mapping T1-T5 (régraduation — l'arc se ré-ordonne) : T1 = ex-DecPyMC-9 → Actuariat-01-Prime-Pure-Chargement · T2 = ex-DecPyMC-12 → Actuariat-02-Freq-Sev-Hierarchique · T3 = ex-DecPyMC-8 → Actuariat-03-Actuarial-Credibility · T4 = ex-DecPyMC-10 → Actuariat-04-Ruine-Lundberg · T5 = ex-DecPyMC-11 → Actuariat-05-Valeur-Info-Souscription. L'ordre T1-T5 corrige l'ordre 8→12 d'origine (la crédibilité suit désormais la structure fréquence × sévérité qui la motive).

Protocole 5 points (précédent #18613, descente du lake #4362)

  1. Move-only : commit f2428027c1c — 4×R100 purs + Actuariat-03 avec rider 2 lignes (metadata.papermill basenames normalisés par le hook scrub au commit, documenté dans le message). Vérifié git diff origin/main -M --summary : 5 renames, 0 content change hors ce rider.
  2. Repoint exhaustif : commit 314caef590b — READMEs (DecisionTheory, DecPyMC, Probas : tables, prose, arbre, durées re-dérivées des carnets), index.qmd (sidebar + overview), _quarto.yml (5 entrées relocalisées + README), docs/curriculum/actuariat.json + recherche.md + trading.md, cross-refs (ict/voi.py, ICT-12e, test interval), PARITY-INVENTORY (bloc « Etat mesuré », historique intact), DecPyMC-7 (renvoi capstone en conclusion), translations/iit/iit.csv (resync per-cell de la cellule 16fa55d8 — pivot sans traduction déposée, procédure SRC_DRIFT : la colonne text_fr des CSV de traduction est un instantane perime, coherent avec lui-meme (2007 cellules, dont 47 avec traduction deposee) #13551, verdicts : aucun). Grep résiduel DecPyMC-(8|9|10|11|12) : 0 hors exclusions assumées (catalogue généré — byte-identique à main, snapshots historiques PARITY, fixture paragraph_wall_md.md, baseline nav-chain régénérée par son organe, et 4 mentions volontaires « ex-DecPyMC-8..12 » de traçabilité).
  3. Cellules vérifiées cell-by-cell : les 5 carnets déplacés sont inchangés en contenu (outputs intacts, pas de re-exec due) ; ICT-12e + DecPyMC-7 = éditions markdown-only (exception C.2, outputs intacts) ; le nouveau capstone est exécuté (ci-dessous).
  4. Checks : pas de lake dans le périmètre (n/a) — remplacés par la batterie locale : check_notebook_nav_chain.py --check exit 0 (après rebaseline documentée), check_prose_quantitative_claims.py --strict exit 0, test_hot_subset_ratchet.py 2 passed, test_check_interval_kind_consistency.py 17 passed, hooks pre-commit verts sur les 5 commits.
  5. Effets de bord annoncés : la baseline nav-chain suit les 4 findings tolerés de l'ancienne jambe (classes conservées une à une : orphelins ex-8/10/12 → A3/A4/A2, unreachable ex-11 → A5 — la descente ne dégrade pas la structure) et retire 6 findings d'autres séries périmés depuis la dernière génération ; un lien du capstone vers Serre100 a été corrigé en cours de route (link_404 remonté par la garde, commit 504e84f9777).

Le capstone DecPyMC-08-Actuariat-Capstone.ipynb (nouveau, exécuté)

Modèle Serre100 : escalier vers la sous-série — le geste (la décision bayésienne devient un métier), la table T1-T5, une mesure exécutable de la surface (5 carnets lus depuis le disque : comptes md/code réels, kernels, imports PyMC/ArviZ, escalier continu asserté), un exemple guidé (la charnière décisionnelle : E[S]=208.50 → prime commerciale 305.79, le chargement de variance domine — signature fréquence faible), 3 exercices C.1 (stop-loss, ruine sur un an, table régénérable depuis les carnets).

Exécution réelle (H.1) : Papermill kernel coursia-ml-training, exit 0.

Input Notebook:  DecPyMC-08-Actuariat-Capstone.ipynb
Executing notebook with kernel: coursia-ml-training

Vérifié post-exécution : 5 cellules code, execution_count 1-5, 0 erreur, outputs réels (table de mesure + calcul complet + 3 prints d'exercices).

README sous-série Actuariat/README.md (nouveau)

Arc de métier T1-T5 avec durées re-dérivées des carnets (T1 45′ déclarée, T3 20-30′ déclarée, T4 45′ déclarée, T2/T5 reprises de la série mère ~50′/~45′ → total ≈ 3 h 30 – 4 h), tableau de correspondance ex-DecPyMC, justification de l'ordre T1-T5, prérequis, miroir GameTheory (assureur vs marché), retour capstone.

Périmètre (23 fichiers)

COURSE_CATALOG.generated.* : non touché (byte-identique à main).

Notes review

See #14873
See #12904
See #5081

🤖 Generated with Claude Code

jsboige and others added 5 commits October 2, 2026 15:52
…-> Actuariat/ (T1-T5 = EPIC #12904)

5 renames R100 (protocole 5 points #4362, geste 1) ; Actuariat-03 porte en rider la
normalisation pre-commit des metadata.papermill input/output_path au basename (tolerance
n°1, chemins absolus d'un ancien worktree 15333).
Mapping : DecPyMC-9->Actuariat-01 (T1), -12->Actuariat-02 (T2), -8->Actuariat-03 (T3), -10->Actuariat-04 (T4), -11->Actuariat-05 (T5).
Arbitrage ai-01 c.5830077941, gate lake-descent #4362 leve par #18613 (MERGED 2026-10-01).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…at/ T1-T5

Repoint exhaustif apres le move-only du commit precedent :
- READMEs (DecisionTheory, DecPyMC, Probas) : tables, prose, arbre, durees
  re-derivees (socle 370 min ~6h ; Actuariat porte ses ~4h propres)
- index.qmd : section sidebar dt-actuariat + ligne overview + compte prose
- _quarto.yml : 5 entrees notebooks relocalisees (tri alphabetique) + README
- docs/curriculum : actuariat.json (description + 5 chemins en ordre T1-T5),
  recherche.md + trading.md (5 liens de titres chacun)
- cross-refs : ict/voi.py docstring, ICT-12e tableau series, test interval
- PARITY-INVENTORY : bloc 'Etat mesure au 2026-10-02' (historique intact)
- DecPyMC-7 : renvoi capstone en conclusion (markdown-only, pas de re-exec due)
- translations/iit/iit.csv : resync per-cell cell 16fa55d8 (pivot, aucune
  traduction deposee) -- verdicts check_translation_sync : aucun

Notebooks edites : ICT-12e + DecPyMC-7 = markdown-only (exception C.2),
outputs intacts. Test local : test_check_interval_kind_consistency 17 passed.

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

Capstone leger au slot 08 (modele pilote Serre100 #17789) :
- escalier vers la sous-serie : geste, table T1-T5, pourquoi cet ordre
- mesure executable de la surface (5 carnets lus, comptes reels,
  kernels, imports PyMC/ArviZ, escalier continu verifie)
- exemple guide : charniere decisionnelle E[S]=208.50 -> prime
  commerciale 305.79 (chargement prop 31.27 + variance 66.01, la
  variance domine -- frequence faible), calcul ferme numpy/math
- 3 exercices C.1 (stop-loss, ruine sur un an, table regenerable)
- execute Papermill kernel coursia-ml-training : 5 code cells,
  exec_count 1-5, 0 erreur, outputs reels

README Actuariat/ : arc de metier T1-T5, durees re-derivees des carnets
(T1 45' declaree, T2 ~50', T3 20-30' declaree, T4 45' declaree, T5 ~45'
= 3h30-4h), correspondance ex-DecPyMC-8..12, miroir GameTheory,
prerequis et retour capstone.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- capstone cell 0 : ../../SymbolicAI -> ../../../SymbolicAI (link_404
  remonte par la garde nav-chain, cible verifiee existante)
- baseline_nb_nav_chain.json regeneree : les 4 findings toleres de
  l'ancienne jambe suivent leurs carnets renommes (DecPyMC-8/10/12
  orphan + DecPyMC-11 unreachable -> Actuariat-03/04/02/05, classes
  conservees une a une -- la descente ne degrade pas la structure) ;
  la regen retire en outre 6 findings perimes d'autres series,
  deja corriges sur main depuis la derniere generation
- verif : --check exit 0 sur la nouvelle baseline

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4 compteurs en prose sur lignes ajoutees refusés par
check_prose_quantitative_claims --strict (la mesure vit au catalogue,
la prose garde le predicat) : '8 notebooks' / '5 notebooks' x2 fichiers,
'13 notebooks'. Remplaces par les predicats sans nombre.

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

github-actions Bot commented Oct 2, 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 2, 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 Oct 2, 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 added variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) labels Oct 2, 2026
@github-actions

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 38
  • 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 2, 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.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.5s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.4s

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

…nb suffix

Le repoint recherche.md/trading.md avait remplace seulement le stem du
nom de fichier, laissant le suffixe .ipynb d'origine (Actuariat-XX.ipynb.ipynb)
et l'ancien repertoire DecPyMC/. Double bug : chemins inexistants ->
check-links ROUGE (10 liens). Reparation : DecisionTheory/DecPyMC/ ->
DecisionTheory/Actuariat/ et suppression du suffixe duplique (5 liens
par fichier). Verifie localement : check_docs_links.py --check --base
origin/main -> OK, 0 nouveau lien casse.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige jsboige added the translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required label Oct 2, 2026
@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[TRANSLATION-OVERRIDE] resync per-cell #13551 de translations/iit/iit.csv (cellule 16fa55d8 d'ICT-12e)

Le repoint G3 modifie la source FR d'une cellule markdown d'ICT-12e (lien DecPyMC-11 -> Actuariat-05, descente #14873). La CSV de sync iit.csv est un fichier dérivé : sa ligne 16fa55d8 (text_fr/src_hash/hash_fr) a été resynchronisée depuis la source courante selon la procédure per-cell #13551 — jamais une ré-extraction globale. Aucune traduction déposée (hors hot-subset, verdicts post-resync : aucun) ; diff chirurgical 6 lignes / 2 rows, cellule unique.

Le pipeline translation-sync étant en hold mainteneur manuel depuis le 2026-08-12 (#10038, #15198), la double clé #10332 est la sortie attendue pour un changement légitime du dérivé pendant le hold — laisser la ligne en dérive src_hash casserait le ratchet au prochain run.

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

@github-actions github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 2, 2026
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = blocked (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : jsboige (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige

@github-actions github-actions Bot removed variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) labels Oct 2, 2026
…ision

Le test ActuariatManifest croisait manifeste vivant et catalogue gele apres
la descente DecPyMC-8..12 -> Actuariat/ : le helper ne modelisait que la
moitie AJOUT d'un renommage, pas la disparition des anciens chemins --
l'assertion dec_pymc <= selected exigeait la selection de carnets qui
n'existent plus. Le prune reflete ce que la regeneration produira (les
deux moities du renommage), symetriquement a l'ajout existant.

Le capstone DecPyMC-08 (15 min), pont decrit dans le manifeste mais absent
du parcours, rejoint decision-sous-incertitude apres DecPyMC-7 : le
speed-run passe de 690 a 705 min, la branche de 4 a 5 carnets (constantes
de tracking mises a jour, precedent #17928).

Test local : test_generate_parcours.py 48 passed.

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

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT] CONCERNS — contrôle de contenu à la tête 4a7227d

Trois corrections ciblées ressortent de la lecture complète du diff, du body, des commentaires et des threads (0 thread, 0 review à la capture).

  1. _quarto.yml porte une liste explicite project.render : les cinq carnets Actuariat y sont repointés, mais le nouveau DecPyMC-08-Actuariat-Capstone.ipynb est absent. Ajouter le capstone à cette liste ; sinon le point d'entrée présenté dans les READMEs ne fait pas partie du rendu déclaré.
  2. La cellule cap08-mesure cherche les chaînes import pymc / import arviz. Elle affiche donc « non / non » pour T2, alors que la cellule 554008dc d'Actuariat-02 contient import numpy as np, pymc as pm, arviz as az, .... Mesurer les imports par leur syntaxe (AST, y compris les imports groupés), puis ré-exécuter entièrement le capstone et vérifier sa table. La présence des sorties actuelles ne prouve pas la justesse de la mesure.
  3. cap08-exemple-interp affirme que l'écart de prime « garantit que le portefeuille survit aux mauvaises années ». Le chargement d'écart-type avec alpha=0.10 ne fournit aucune telle garantie ; l'exercice 2 reconnaît justement une probabilité de ruine positive. Remplacer cette garantie par une formulation de réduction du risque, conditionnelle au capital et au modèle. Le terme rémunère ici la variabilité du coût ; sa non-diversifiabilité n'est pas établie par ce calcul par contrat.

Les sorties de l'exemple numérique (208.50 / 305.79) et les trois stubs d'exercices ont été lus ; aucune erreur volontaire nouvelle relevée. Le rejeu du CHILD cell-source-parses a réussi à 15:54:39Z sans changement de tête ; le dernier PR gate lu demeure celui en échec à 15:49:48Z. Ces états CI sont distincts des corrections de fond ci-dessus. Aucun dossier READY émis. Décision finale ai-01.

@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18857 (feat(probas,#14873): G3 descente arc actuariel en sous-série Actuariat/ (T1-T5) + capstone DecPyMC-08) 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.

… du cout'

Suivi adjoint c5958006025 : la cellule cap08-charniere (cellule 5 du carnet
DecPyMC-08-Actuariat-Capstone.ipynb) portait 'le terme de variance remunerere le
risque non diversifiable' -- assertion que le modele Poisson collectif ne
demontrerait pas (la non-diversifiabilite est une notion de theorie du
portefeuille, pas du modele bayesien sous-jacent). Le predicat 'variabilite du
cout' est deja utilise dans la lecture cap08-exemple-interp post-correctif
5526d93 ; harmonisation a ce predicat unique.

Geste borne, markdown-only : 1 ligne, 1 phrase, 1 fichier. Aucune cellule code
touchee, aucune execution rejouee, aucun ec/outputs modifie. Cinq cellules code
ec 1..5 et outputs (cellules 3, 6, 9, 11, 13) inchanges.

La cellule 7 (lecture cap08-exemple-interp) conserve la formulation 'rémunère le
risque non diversifiable' sans 'le terme de variance' -- portee distincte, hors
geste demande.
@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

Suivi du geste borne demande (DM adj-fa-18857-charniere-20261002-1835, c.1391).

Tete actuelle 1eca2d97c5 (poussee sur fix/c1387-18857-adjoint-concerns, base rebasee sur 5526d93ac8). Diff vs feature/14873-g3-actuariat : 1 fichier, 1 insertion, 1 suppression, portee strictement bornee.

Occurrence corrigee : cellule 5 du carnet MyIA.AI.Notebooks/Probas/DecisionTheory/DecPyMC/DecPyMC-08-Actuariat-Capstone.ipynb (intitulee ## 3. La charniere decisionnelle : du posterior a la prime, soit cap08-charniere).

Avant : « le terme de variance remunerere le risque non diversifiable. »
Apres : « le terme de variance remunerere la variabilite du cout. »

Predicat aligne sur celui deja utilise par la lecture cap08-exemple-interp (post-correctif 5526d93ac8, cellule 7 / section ### Lecture du resultat).

Hors geste : la cellule 7 contient une variante sans le segment « le terme de variance » (« l'ecart entre les deux [...] remunerere le risque non diversifiable »). Cette deuxieme occurrence est deja corrigee par 5526d93ac8 (« remunerere la variabilite du cout »). Pas de double saisie.

Preservations verifiees apres patch :

  • 5 cellules code : ec = 1..5 continus, 5/5 avec outputs (3, 6, 9, 11, 13).
  • Aucune cellule code touchée.
  • Aucun outputs modifie.
  • Aucune re-execution jouee (markdown-only).

Re-revue (Hermes / couverture) attendue par la voie de fait standard. Le geste ne touche pas le gate CI en attente : la derniere jambe PR gate rejouee par l'adjoint termine a 2026-10-02T18:28:57Z (100 checks acceptes, DWLL seul).

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2024:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-02) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@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 2, 2026
@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

Suite du geste borne c.1391 (1eca2d97c5, +1/-1 markdown cellule 5) — observation post-push, c.1392, 2026-10-02T19:51Z.

Resultat de la jambe Scripts Tests (CPU) sur la tete 1eca2d9 (run 37055065404, job 110997625710, 19:36:03Z -> 19:43:05Z) : FAIL.

Deux assertions, meme delta +15 min :

  • TestActuariatManifest::test_compiles_speed_run_and_independent_detours[accretions2] : assert 825 == 810
  • TestActuariatManifest::test_compiles_speed_run_and_independent_detours[accretions3] : assert 915 == 900

Lecture comparee : la tete 5526d93ac8 (juste avant la mienne, run 37037903522 a 17:12:17Z) rendait la meme jambe SUCCESS. Mon commit est strictement borne (1 ligne, 1 phrase, 1 cellule markdown, aucune cellule code touchee, aucun output modifie, aucune re-execution). Le diff ne peut pas avoir deplace duration_minutes de +15 min.

Hypothese : la valeur de expected_duration dans la branche feature est 705 (modifiee par 4a7227dc06 fix(#14873) pour ajouter le DecPyMC-08 capstone de 15 min). Au runner 5526d93 la base du parcours cumulait 705 ; au runner 1eca2d9 elle cumule 720. Le delta +15 min a une source externe au diff PR (catalogue regenere par une autre PR entre les deux runs, ou un timing / cache runner different).

Aucune action lane de mon ressort : ni repousser (re-arme le plancher DWLL et risque de modifier la base du test), ni modifier le test (c'est le test_modified historique d'une autre lane), ni annuler le commit (le geste adjoint est OK en substance, le rouge est post-fix).

Relecture locale : python -m pytest scripts/notebook_tools/tests/test_generate_parcours.py::TestActuariatManifest::test_compiles_speed_run_and_independent_detours rend 4 passed sur main (le test_modified de la branche feature n'est pas sur main). Le test_modified est coherent en lui-meme (705 = 690 + 15 du DecPyMC-08, +90 series-temporelles, +105 validation-hors-echantillon) ; c'est la mesure runtime qui rend 720 sur la tete 1eca2d9.

Le geste reste mergeable en substance : le test_modified est en retard sur le runtime de la branche, pas l'inverse. Une mise a jour de expected_duration de 705 a 720 (delta +15) dans test_generate_parcours.py cloturerait le FAIL -- mais c'est un geste qui touche une autre lane que la mienne (#14873).

Statut de la PR inchangé depuis le geste c.1391 : mergeable_state: blocked, dossier adjoint 5958842384 a 5526d93 (perime par mon commit, dossier a refabriquer au prochain adjoint PREFLIGHT a tete 1eca2d9).

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT] Réserve de contenu levée à la tête 1eca2d9

Je lève ma réserve de contenu c5956811470, précisée en c5958006025 : la dernière occurrence dans cap08-charniere est corrigée au commit 1eca2d9, « variabilité du coût » remplaçant « risque non diversifiable ». Le delta complet depuis 5526d93 porte uniquement cette phrase markdown (+1/-1). Comparaison JSON : 16 cellules conservées, seule source modifiée cap08-charniere, les cinq cellules code (sources, execution_count et outputs compris) strictement identiques. Aucune occurrence « non diversifiable » dans les sources du capstone courant. Les corrections Quarto/AST et la sortie T2 oui/oui vérifiées précédemment sont préservées par ce delta. Aucune nouvelle exécution n'est due pour cette correction markdown-only.

Cette levée ne porte pas sur la CI ni sur l'ensemble de la PR : le dossier c5958842384 vise l'ancienne tête et doit être renouvelé. Le commentaire c5960334357 décrit deux tests CPU en échec ; sa proposition de changer une constante de durée reste une hypothèse à vérifier contre les entrées du parcours, pas une réparation approuvée. Aucun READY émis. Décision finale et merge restent à ai-01.

Capture : body complet, 18 commentaires, aucune review et aucun thread inline ; diff de réparation +1/-1 lu directement.

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18857
head: 1eca2d9
complete: true
body: read
comments-reviewed: 19
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e15f37ddccf9111e258ffac05f167c57ded8b382efe34f1d2104b19fb33d03d3
diff-files: 23
diff-additions: 820
diff-deletions: 150
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@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 2, 2026
jsboige added a commit that referenced this pull request Oct 2, 2026
…ti-recidive

Neuf fichiers test_*.py vivaient a la racine de scripts/notebook_tools/, hors
du dossier tests/. Aucune jambe de pytest ne les collectait (pytest.ini
testpaths + scripts-tests.yml ne listent que tests/).

Geste 1 -- deplacements (7 fichiers avec renommage git mv, preserve l'historique) :
- test_capture_user_remarks.py
- test_check_interp_positioning.py
- test_check_lecture_anchor.py
- test_detect_solution_leaks_nested_worktree.py
- test_detect_solution_leaks_skeleton_instructions.py
- test_generate_review_dossier.py
- test_scan_machine_path_outputs.py

Geste 2 -- suppressions de doublons (la version tests/ etait plus complete) :
- scripts/notebook_tools/test_cell_order_ci.py (tests/ : 98 lignes canoniques)
- scripts/notebook_tools/test_detect_link_target_regression.py (tests/ : 576 lignes canoniques)

Geste 3 -- reparation sys.path apres deplacement :
- Path(__file__).resolve().parent pointe maintenant vers tests/, pas notebook_tools/.
  Le pattern des voisins (test_alpha_diag.py l.21, test_audit_c1_c3.py l.14,
  test_audit_c3_scope.py l.18, test_batch_reexecute.py l.13, ...) est
  `sys.path.insert(0, str(Path(__file__).resolve().parent.parent))`.
- 6 fichiers mis a jour : test_capture_user_remarks (ajout sys.path),
  test_check_interp_positioning, test_check_lecture_anchor,
  test_detect_solution_leaks_nested_worktree,
  test_detect_solution_leaks_skeleton_instructions,
  test_generate_review_dossier, test_scan_machine_path_outputs.
- Cas special test_check_interp_positioning : la logique de test utilise
  SCRIPTS_DIR.parent.parent (l.432) pour repo_root, ajuste a SCRIPTS_DIR.parent
  apres redefinition de SCRIPTS_DIR = parent.parent.

Geste 4 -- garde anti-recidive scripts/ci/guard_test_root.py :
- Exit 1 si un test_*.py apparait a la racine de scripts/notebook_tools/.
- Integre dans .github/workflows/scripts-tests.yml en step preliminaire
  (avant pytest, pour eviter un run long sur une jambe qui ne collectera
  jamais le fichier a probleme).
- Supporte --json pour usage machine.

Verification locale :
- pytest --collect-only -q scripts/notebook_tools/tests : 6469 (avant) -> 6608 (apres) tests
- 7 fichiers deplaces executes en isolation : 135 passed, 4 skipped (standalone OK)
- python scripts/ci/guard_test_root.py : OK (apres fix), FAIL avec dummy file

Hors perimetre : PR #18857 (po-2024) et PR #18765 (po-2023) qui ajoutent
leurs propres tests au meme endroit -- collision signalee au coordinateur
dans le claim-AMEND 5962685834.

PR de harnais (touche .github/workflows/scripts-tests.yml) : le coordinateur
merge lui-meme avec un dossier tiers.

Fixes #18888

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

Neuf fichiers test_*.py vivaient a la racine de scripts/notebook_tools/, hors
du dossier tests/. Aucune jambe de pytest ne les collectait (pytest.ini
testpaths + scripts-tests.yml ne listent que tests/).

Geste 1 -- deplacements (7 fichiers avec renommage git mv, preserve l'historique) :
- test_capture_user_remarks.py
- test_check_interp_positioning.py
- test_check_lecture_anchor.py
- test_detect_solution_leaks_nested_worktree.py
- test_detect_solution_leaks_skeleton_instructions.py
- test_generate_review_dossier.py
- test_scan_machine_path_outputs.py

Geste 2 -- suppressions de doublons (la version tests/ etait plus complete) :
- scripts/notebook_tools/test_cell_order_ci.py (tests/ : 98 lignes canoniques)
- scripts/notebook_tools/test_detect_link_target_regression.py (tests/ : 576 lignes canoniques)

Geste 3 -- reparation sys.path apres deplacement :
- Path(__file__).resolve().parent pointe maintenant vers tests/, pas notebook_tools/.
  Le pattern des voisins (test_alpha_diag.py l.21, test_audit_c1_c3.py l.14,
  test_audit_c3_scope.py l.18, test_batch_reexecute.py l.13, ...) est
  `sys.path.insert(0, str(Path(__file__).resolve().parent.parent))`.
- 6 fichiers mis a jour : test_capture_user_remarks (ajout sys.path),
  test_check_interp_positioning, test_check_lecture_anchor,
  test_detect_solution_leaks_nested_worktree,
  test_detect_solution_leaks_skeleton_instructions,
  test_generate_review_dossier, test_scan_machine_path_outputs.
- Cas special test_check_interp_positioning : la logique de test utilise
  SCRIPTS_DIR.parent.parent (l.432) pour repo_root, ajuste a SCRIPTS_DIR.parent
  apres redefinition de SCRIPTS_DIR = parent.parent.

Geste 4 -- garde anti-recidive scripts/ci/guard_test_root.py :
- Exit 1 si un test_*.py apparait a la racine de scripts/notebook_tools/.
- Integre dans .github/workflows/scripts-tests.yml en step preliminaire
  (avant pytest, pour eviter un run long sur une jambe qui ne collectera
  jamais le fichier a probleme).
- Supporte --json pour usage machine.

Verification locale :
- pytest --collect-only -q scripts/notebook_tools/tests : 6469 (avant) -> 6608 (apres) tests
- 7 fichiers deplaces executes en isolation : 135 passed, 4 skipped (standalone OK)
- python scripts/ci/guard_test_root.py : OK (apres fix), FAIL avec dummy file

Hors perimetre : PR #18857 (po-2024) et PR #18765 (po-2023) qui ajoutent
leurs propres tests au meme endroit -- collision signalee au coordinateur
dans le claim-AMEND 5962685834.

PR de harnais (touche .github/workflows/scripts-tests.yml) : le coordinateur
merge lui-meme avec un dossier tiers.

Fixes #18888

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

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18857
head: 518bcdb
complete: true
body: read
comments-reviewed: 20
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 56d7c3be88e47c4b7972b4eb78e4f836eed1f34a4dfa695f93783ec4efea1951
diff-files: 23
diff-additions: 820
diff-deletions: 150
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit a60f84a into main Oct 3, 2026
101 checks passed
myia-ai-01 added a commit that referenced this pull request Oct 3, 2026
…de anti-recidive (#18896)

* ci(scripts-tests,#18888): deplacer 9 test_*.py dans tests/ + garde anti-recidive

Neuf fichiers test_*.py vivaient a la racine de scripts/notebook_tools/, hors
du dossier tests/. Aucune jambe de pytest ne les collectait (pytest.ini
testpaths + scripts-tests.yml ne listent que tests/).

Geste 1 -- deplacements (7 fichiers avec renommage git mv, preserve l'historique) :
- test_capture_user_remarks.py
- test_check_interp_positioning.py
- test_check_lecture_anchor.py
- test_detect_solution_leaks_nested_worktree.py
- test_detect_solution_leaks_skeleton_instructions.py
- test_generate_review_dossier.py
- test_scan_machine_path_outputs.py

Geste 2 -- suppressions de doublons (la version tests/ etait plus complete) :
- scripts/notebook_tools/test_cell_order_ci.py (tests/ : 98 lignes canoniques)
- scripts/notebook_tools/test_detect_link_target_regression.py (tests/ : 576 lignes canoniques)

Geste 3 -- reparation sys.path apres deplacement :
- Path(__file__).resolve().parent pointe maintenant vers tests/, pas notebook_tools/.
  Le pattern des voisins (test_alpha_diag.py l.21, test_audit_c1_c3.py l.14,
  test_audit_c3_scope.py l.18, test_batch_reexecute.py l.13, ...) est
  `sys.path.insert(0, str(Path(__file__).resolve().parent.parent))`.
- 6 fichiers mis a jour : test_capture_user_remarks (ajout sys.path),
  test_check_interp_positioning, test_check_lecture_anchor,
  test_detect_solution_leaks_nested_worktree,
  test_detect_solution_leaks_skeleton_instructions,
  test_generate_review_dossier, test_scan_machine_path_outputs.
- Cas special test_check_interp_positioning : la logique de test utilise
  SCRIPTS_DIR.parent.parent (l.432) pour repo_root, ajuste a SCRIPTS_DIR.parent
  apres redefinition de SCRIPTS_DIR = parent.parent.

Geste 4 -- garde anti-recidive scripts/ci/guard_test_root.py :
- Exit 1 si un test_*.py apparait a la racine de scripts/notebook_tools/.
- Integre dans .github/workflows/scripts-tests.yml en step preliminaire
  (avant pytest, pour eviter un run long sur une jambe qui ne collectera
  jamais le fichier a probleme).
- Supporte --json pour usage machine.

Verification locale :
- pytest --collect-only -q scripts/notebook_tools/tests : 6469 (avant) -> 6608 (apres) tests
- 7 fichiers deplaces executes en isolation : 135 passed, 4 skipped (standalone OK)
- python scripts/ci/guard_test_root.py : OK (apres fix), FAIL avec dummy file

Hors perimetre : PR #18857 (po-2024) et PR #18765 (po-2023) qui ajoutent
leurs propres tests au meme endroit -- collision signalee au coordinateur
dans le claim-AMEND 5962685834.

PR de harnais (touche .github/workflows/scripts-tests.yml) : le coordinateur
merge lui-meme avec un dossier tiers.

Fixes #18888

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

* fix(tests,#18888,#18896): preserve cell_order_ci mock suite under distinct name

Pre-validation myia-po-2025:CoursIA-2 flagged the suppression of scripts/notebook_tools/test_cell_order_ci.py as non-duplicate (20 mock tests vs 13 integration tests; 5 invariants absent from the preserved suite).

Resolution:

- rename the mock variant to scripts/notebook_tools/tests/test_cell_order_ci_mock.py to avoid file-name collision with tests/test_cell_order_ci.py (the integration suite kept under its original name)

- adjust sys.path.insert to parent.parent (canonical pattern for tests/ imports of notebook_tools/*)

- 20 tests passed in 0.20s, including the 5 invariants cited by the adjoint (test_filters_to_high_severity_only, test_result_is_sorted_deterministic, test_duplicate_findings_collapsed, test_head_required_argument, test_multiple_new_regressions_counted)

- Other file claimed as 'duplicate' (test_detect_link_target_regression.py) is unaffected; the body claim 'version tests/ deja plus complete' is per-file and the cell_order case is now explicit.

Refs: pre-validation comment IC_kwDOH2Odns8AAAABY34sKw (2026-10-03T01:38:01Z)

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

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
@jsboige
jsboige deleted the feature/14873-g3-actuariat branch October 16, 2026 12:30
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) translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants