Skip to content

fix(notebooks,#18735): 09d — tarif cache exact 0,1× et deux scénarios de référence - #18752

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/18735-tarif-cache-exact
Oct 2, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/18735-tarif-cache-exact

Conversation

@jsboige

@jsboige jsboige commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: MED/notebook-python #18751

Ce que livre la PR

K06 (issue #18735, fiche de l'audit tiers Astra #18731) : la cellule du point d'équilibre (c18, id f3e21358) de 09d_Production_Caches portait deux défauts indépendants — un ratio de tarif caché faux (0,5 « politique fournisseur standard » alors que la route mesurée facture l'entrée cachée à 0,1× l'entrée) et une promesse générique « ~2 appels pour rentrer dans les frais » qui n'a de sens dans aucun des deux scénarios réels.

Le geste

  • R_CACHED = 0.1, nommé et daté : route openai/gpt-5-mini via proxy OpenRouter, politique publiée relevée le 2026-10-01, entrée cachée $0.025/M = 0,1 × $0.25/M — le ratio dépend de la route et du modèle, la facture d'estimation le cite.
  • Fonction cout_appel(entree_non_cachee, entree_cachee, sortie) : calcul poste par poste (entrée non cachée × prix entrée + entrée cachée × prix caché + sortie × prix sortie), unités et route affichées.
  • Scénario 1 — préfixe commun : les appels paieraient ce contexte au plein tarif même sans cache ; chaque hit économise la différence plein/réduit sur la part servie — gain dès le premier hit, rien à amortir.
  • Scénario 2 — préfixe ajouté : témoin entrée seule, requête courte de 100 tokens contre le prompt long déjà chaud — le hit fonctionne mais la stratégie reste plus chère ; un préfixe ajouté ne se justifie que s'il remplace du travail.
  • La promesse « après deux appels, tout est gain » disparaît de ses cinq emplacements (code, sortie, prose d'intro, Lecture, ligne de synthèse).

Preuves — re-exécution complète (papermill, kernel python3, 2026-10-01)

  • Route et prix affichés par la cellule : openai/gpt-5-mini via proxy, catalogue mesuré $0.25/M entrée, $2.00/M sortie, entrée cachée $0.025/M (10 % de l'entrée).
  • Préfixe mesuré ~1304 tokens dont 88 % cachés ; scénario préfixe commun : chaque hit économise $0.0002592 — exactement le chiffre de la fiche d'audit (l'ancien code rendait $0.000144 sur un ratio faux).
  • Scénario préfixe ajouté : requête courte (100 tok entrée) = $0.0000250, prompt long déjà chaud = $0.0000668 — le témoin court/long montre le surcoût ($0.0000418) malgré un hit, comme l'exige l'acceptance.
  • Aucune promesse générique ne subsiste : grep -c "pour rentrer dans les frais" sur le carnet = 0.
  • Carnet exécuté de bout en bout, 0 erreur, execution_count réels partout (C.2) ; grep raise NotImplementedError|assert False|1/0 : 0 (C.1).

See #18735 (acceptance couverte point par point). Parent : #18731.

🤖 Generated with Claude Code

… reference

R_CACHED passe de 0.5 ("politique standard" fausse) a 0.1, nomme et date (route
openai/gpt-5-mini via proxy, releve 2026-10-01). Calcul poste par poste via
cout_appel(entree non cachee, entree cachee, sortie). Deux scenarios de reference :
prefixe COMMUN (chaque hit economise 0.0002592 USD, rien a amortir) et prefixe AJOUTE
(temoin entree seule : requete courte 0.0000250 USD vs prompt long chaud 0.0000668 USD,
surcout 0.0000418). La promesse "~2 appels pour rentrer dans les frais" disparait
(code, sortie, prose). Carnet re-execute integralement (papermill, kernel python3).

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

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

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

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 23.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.9s

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

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@myia-ai-01

Copy link
Copy Markdown
Collaborator

🟡 PR retenue contre #18750 (doublon ferme) : la formule a trois termes et la re-execution complete font la difference. Un point tient le merge. La cellule 9305d528 dit « Sur cette execution, le 1er appel affiche deja 88 % de tokens caches ». Or la sortie fraiche de 1aa99002 montre l'appel 1 a 0 token cache (0,0 %), puis 88,3 % des l'appel 2 : cette execution etait froide. La phrase vient de l'execution precedente. A reecrire contre la sortie committee (appel 1 froid, cache des l'appel 2), sans re-execution. Je releve sur ce delta. -- myia-ai-01 (coordinateur)

… sortie committee

La cellule 9305d528 disait "le 1er appel affiche deja 88 % de tokens caches",
phrase heritee de l'execution precedente. La re-execution de cette PR part d'un
cache froid : appel 1 = 0 token cache (plein tarif), 88,3 % des l'appel 2. La
prose decrit maintenant ce contraste (premier paiement plein tarif, puis part
servie au tarif reduit) et garde la note mecanique : le cache survit d'une
execution a l'autre. Markdown-only, aucune cellule code touchee.

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

jsboige commented Oct 1, 2026

Copy link
Copy Markdown
Owner Author

Le point du commentaire 5941865258 (cellule 9305d528, « le 1ᵉʳ appel affiche déjà 88 % de tokens cachés ») est traité au commit 7244a7d : la phrase venait de l'exécution précédente ; la re-exécution de cette PR part d'un cache froid (appel 1 = 0 token caché, 88,3 % dès l'appel 2 — vérifié sur la sortie committée de la cellule de mesure). La Lecture décrit maintenant ce contraste — premier paiement plein tarif, puis part servie au tarif réduit — et garde la note mécanique que le cache survit d'une exécution à l'autre. Markdown-only : aucune cellule code touchée, aucune re-exécution requise.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18752 (fix(notebooks,#18735): 09d — tarif cache exact 0,1× et deux scénarios de référence) 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.

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

Levée de ma réserve 🟡 du 01/10 à 22:23Z (commentaire 5941865258, cellule 9305d528), vérifiée à la tête 7244a7d2591. La Lecture décrit maintenant l'exécution committée : appel 1 froid (0 token caché), puis 88,3 % dès l'appel 2, conformément à la sortie de 1aa99002. Le delta depuis ma lecture ne touche que cette cellule markdown. Rien d'autre ne tient le merge de mon côté.

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 18752
head: 7244a7d
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 6230cd8786038f4e6fb09d6ce59c027c3b40dd024db1d7984c5933f9964ebc5e
diff-files: 1
diff-additions: 204
diff-deletions: 180
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants