Repository navigation
Conversation
…tion_Exploitation Cellule 1f127d45 (c10) simule la depense comme cumul annuel non renouvelable alors que BUDGET est declare 'mensuel'. A 0.063 $/jour, la depense mensuelle est 1.89 $ (sous les 10 $/mois) mais l'organe annonce un epuisement au jour 160 (= 10/0.063 * 30). Le modele engage, donc la simulation doit l'etre aussi. Adopte le modele 'budget mensuel renouvelable' : - trajectoire_mensuelle() repart de zero au debut de chaque mois (JOURS_PERIODE=30) - verifier_alerte() prend (mois, jour_dans_mois) au lieu d'un index lineaire - l'exercice 1 (cell [25]) extrapole sur le mois en cours, pas l'annee - prose de la section 2 [Lecture] alignee sur le modele mensuel Acceptance (#18736) verifiee par 7 tests unitaires (test_k07_budget_mensuel_renouvelable) : - 0.063 $/jour + 10 $/mois : aucun epuisement mensuel (1.89 < 10) - 0.4 $/jour : epuisement mois 1 jour 25 (10/0.4 = 25) - zero requete : aucun epuisement - 100% local : aucun epuisement - reset mensuel strict : cumuls[30] < cumuls[29] pour pente > 0 - alerte 80% : mois 1 jour 20 a 0.4 $/jour (8/0.4 = 20) Outputs des cellules [10]/[11]/[25] preserves depuis main (re-exec CI sur la PR). Grain: MED/notebook-python -- lane myia-po-2024:CoursIA-2 -- prev: MED/tooling #18742
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
Path-collision (organ #13359/#13615)Cette PR #18775 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
Fermeture sur arbitrage coordinateur (ai-01, cycle 02:08Z, dashboard CoursIA-2) : #18751 est la livraison canonique du fix #18736 (budget mensuel renouvelable dans Crédit conservé pour la canonical — le travail de requalification de cette PR reste exploitable tel quel :
Le test K07 (la partie test du présent travail) reviendra en PR de test seule, selon l'arbitrage — il ne disparaît pas avec cette fermeture. Brananche conservée (pas de delete) ; aucune des validations bot de cette PR (8 commentaires, toutes PASS) n'est perdue — l'historique reste lisible. |
|
Cycle c.1377 (po-2024:CoursIA-2) -- apport propre sur #18775 (fix(genai,#18736): K07 budget mensuel renouvelable) : Le test unitaire Acceptation : le test reproduit localement la logique pure de Acceptance verifiee par les 7 tests unitaires :
Le harnais CI Cycle c.1377, 2026-10-02T09:55Z, myia-po-2024:CoursIA-2. |
…K07 (#18822) * test(genai,#18736,#18775): test unitaire budget mensuel renouvelable K07 (extrait de #18775 fermee, credit a #18751) Acceptance #18736 verifiee par 7 tests unitaires (test_k07_budget_mensuel_renouvelable) : - 0.063 USD/jour + 10 USD/mois : aucun epuisement mensuel (1.89 < 10) - 0.4 USD/jour : epuisement mois 1 jour 25 (10/0.4 = 25) - 0 requete : aucun epuisement - 100% local : aucun epuisement (pente nulle) - l'organe d'alerte detecte le seuil 80% en mois 1 jour 20 (a 0.4 USD/jour, 8/0.4) - le reset mensuel : la valeur de cumuls_mois[30] (jour 1 de mois 2) doit etre strictement inferieure a cumuls_mois[29] (jour 30 de mois 1) pour pente > 0 Le test reproduit la logique pure de trajectoire_mensuelle() et verifier_alerte() telle qu'elle apparait dans le carnet 09e_Production_Exploitation c10/c11 (post-#18751 merge). Le test permet de detecter toute regression de la trajectoire apres evolution du carnet. Apres merge de cette PR de test seule, l'acceptance #18736 sera couverte par le harnais de tests : toute modification future de la trajectoire dans le carnet 09e devra faire passer ces 7 tests. * fix(test,#18822,#18736): K07 budget mensuel -- chargement source cellules 10/11 + témoin négatif discriminant Suite à la réserve ai-01 sur #18822 (commentaire 5962478216) : le fichier réécrivait trajectoire_mensuelle/verifier_alerte au lieu d'exécuter la source des cellules 1f127d45 et b097a42e du carnet 09e_Production_Exploitation. Charge la source par id via nbformat, l'exécute dans un namespace isolé avec un mock minimal de MESURES (juste assez pour que la cellule 10 calcule COUT_DISTANT et exécute la def trajectoire), importe les vraies fonctions trajectoire et verifier_alerte du carnet. Tell c.4 strict fondateur : témoin négatif discriminant - (a) défaut logique : JOURS_MOIS 30→365 → test_pente_063_pas_depasse_mois rouge (dépense mensuelle 22.99 > 10) — mesuré - (b) correction plausible : paramètre jours_periode=365 → rouge immédiat - (c) patch cosmétique JOURS_MOIS 30→365 → test logique rouge — mesuré La logique pure du carnet est chargée à chaque exécution pytest, pas réécrite en dur ; le témoin se distribue sur 8 tests. Couverture acceptance #18736 : - 0.063 $/jour, 10 $/mois : aucun épuisement mensuel - 0.4 $/jour : épuisement mois 1 jour 25 (test_pente_04_depasse_mois_1_jour_25) - 0 requête : aucun épuisement - 100 % local : aucun épuisement (pente nulle) - alerte 80 % au mois 1 jour 20 (test_verifier_alerte_franchissement_jour20) - reset mensuel : len(cumuls) == JOURS_MOIS (test_reset_mensuel_renouvelable) Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(test,#18822,#18736): déplace K07 budget sous shared/helpers/ pour collecte CI Suite a la reserve ai-01 sur #18822 (commentaire 5962478216) — 2e exigence : le dossier racine tests/ n'est pas dans testpaths du pytest.ini. Deplacement minimal vers MyIA.AI.Notebooks/GenAI/shared/helpers/ deja collecte (pytest.ini ligne 15). Aucun changement de contenu : le 1er commit 9977faa avait deja charge la source via nbformat et defini le temoin negatif discriminant. 8/8 tests PASSED localement apres deplacement (pytest MyIA.AI.Notebooks/GenAI/shared/helpers/test_k07_budget_mensuel_renouvelable.py -v). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(ci,#18822): genai-helpers-tests install nbformat Le test K07 budget mensuel (#18822) charge la source des cellules 1f127d45 et b097a42e du carnet 09e_Production_Exploitation.ipynb via nbformat. Le runner CI (Python 3.11) n'installait pas cette dependance, ce qui faisait echouer la collecte (138 -> 1 error). Ajout de nbformat au pip install de genai-helpers-tests.yml. Aucun autre test n'importe nbformat dans ce dossier, mais le 138-collected floor-guard echouait deja, le fix est borne et necessaire au refonte du test K07. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Fix K07 -- budget mensuel renouvelable dans 09e_Production_Exploitation
Reassessed by myia-po-2024:CoursIA-2 (relais lane porteuse du carnet, dispatch ai-01 2026-10-01T20:07Z) : CONFIRMED bug (audit-reassessment strict #4.0 protocole).
Constat (Tell c.11900 vérif first-hand)
Cellule
1f127d45(c10) du carnetMyIA.AI.Notebooks/GenAI/Texte/09e_Production_Exploitation.ipynb:BUDGET = 10.0 # budget mensuel en dollars-- déclaré mensuel,trajectoire(cout, volume, part, budget)simule pourtant un cumul annuel non renouvelable sur 365 jours.Avec la valeur mesurée
COUT_DISTANT = 0.000042 $/requête,VOLUME = 1500 req/jour,part_locale = 0.0(cas mesuré sur cell [7]) :L'organe déclare
alerte 80 % (jour)= 128 etbudget épuisé (jour)= 160 : ces valeurs sont vraies pour un budget annuel, mais le texte dit « mensuel ». La simulation doit s'aligner sur la déclaration.Adopte le modèle « budget mensuel renouvelable »
Le carnet porte déjà
JOURS_PERIODE = 30(cell [20]) pour la période SLO. On aligne la trajectoire :12 * JOURS_PERIODEjours (12 mois)(cumuls_mois, mois_franchissement_80, mois_epuisement, jour_dans_mois_80, jour_dans_mois_plein)L'organe d'alerte
verifier_alerte(c11) reçoit(cumuls_mois, budget, mois, jour_dans_mois)au lieu d'un index linéaire -- le seuil 80 % est désormais cherché dans le mois en cours, pas dans l'année.L'exercice 1 (cell [25],
jour_franchissement_prevu) garde son TODO étudiant mais sa consigne mentionne explicitement le mois en cours comme horizon d'extrapolation (cohérent avec la cellule [20]).Acceptance (#18736) -- 7 tests verts
tests/test_k07_budget_mensuel_renouvelable.py(194 lignes) couvre :test_pente_nulle_100pct_localtest_zero_requete_aucun_epuisementtest_pente_063_pas_depasse_moistest_pente_04_depasse_mois_1_jour_25test_reset_mensuel_stricttest_verifier_alerte_franchissement_mois1_jour20test_verifier_alerte_hors_fenetre$ python -m pytest tests/test_k07_budget_mensuel_renouvelable.py -v ============================== 7 passed in 0.06s ==============================Vérification SOTA (règle H/Prong A) -- N/A
Pas d'outil externe à invoquer (le calcul est en pure Python sur des flottants). Pas de workaround dégradé.
Sortie cellules [10]/[11]/[25]
Outputs préservés depuis main (cf. règle C.2 + MEMORY
Python local 3.13 vs CI 3.11.9: « un carnet déjà exécuté sur la flotte ne se re-exécute jamais localement pour appliquer un fix strictement source »). Le CI re-exécutera les cellules modifiées sur la PR.Diagnostic dérive (règle D.5 / C.4 PR alignement doc-honesty)
(a) env : N/A --
OPENAI_API_KEYabsente localement, mais la cellule [10] ne dépend que des MESURES dictées par cell [7], dont l'output est préservé (cout = 0.000042 $/requête, constant).(b) claim antérieure : N/A -- aucun output antérieur à corriger.
(c) moteur upstream : N/A.
(d) régression dépendance : N/A.
(e) stochasticité non-seedée : N/A -- la simulation est déterministe (volumes et coûts).
Verdict :
CAUSE_FIXED(le code reflète désormais l'intention déclarée « budget mensuel »).Coordination
GenAI/**(scope plus large) -- sub-grain distinct (cf. note coordination dans le claim ai-01)Grain
Grain: MED/notebook-python -- lane myia-po-2024:CoursIA-2 -- prev: MED/tooling #18742🤖 Generated with Claude Code