Skip to content

fix(gametheory,#14926): le carnet GameTheory-03d passe a la passerelle claudish - #19634

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/14926-claudish-consumers
Oct 7, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/14926-claudish-consumers

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2023:CoursIA — prev: MED/docs #19626

Objet

Tranche de la migration des consommateurs runtime vers la passerelle claudish
(acceptance 3-4 de #14926) : le carnet
MyIA.AI.Notebooks/GameTheory/GameTheory-03d-Le-Joueur-LLM-Python.ipynb cesse de porter
la cle du service et s'authentifie aupres de la passerelle.

C'est le premier carnet du perimetre dont l'appartenance n'est pas discutee : il ne fait
pas d'image generation vLLM directe, contrairement a e2e_quant_validation.ipynb, sur
lequel porte l'arbitrage user demande par la lane precedente.

Ce qui change

avant apres
VLLM_ENDPOINT (defaut http://192.168.0.47:5002) CLAUDISH_BASE_URL (defaut http://localhost:3000)
VLLM_API_KEY CLAUDISH_PROXY_KEY
VLLM_MODEL CLAUDISH_MODEL (qwen3.6-35b-a3b, servi par la passerelle)
en-tete Authorization: Bearer <cle de service> en-tete x-api-key: <cle cliente claudish>
max_tokens: 1 CLAUDISH_MAX_TOKENS (defaut 2048)

Le stub C.1 est conserve : sans CLAUDISH_PROXY_KEY, le carnet reste executable et
n'appelle rien.

Le budget n'est pas un choix esthetique, il est mesure

La passerelle ne propage pas chat_template_kwargs : enable_thinking=False n'a plus
d'effet et le raisonnement consomme le budget avant que la reponse n'atteigne content.
Mesure firsthand du 2026-10-07 sur localhost:3000, modele qwen3.6-35b-a3b, temperature 0 :

max_tokens content reasoning_content finish_reason
1 None 3 length
64 None 262 length
512 reponse atteinte, mais 4 rounds sur 5 (cassette 8, rejeu non identique) 263 stop
2048 reponse atteinte, 5 rounds sur 5 (cassette 10, rejeu identique) 263 stop

Le meme appel servi par glm-5.2 se comporte comme qwen3.6-35b-a3b : c'est la passerelle,
pas le modele. Temoin negatif : l'endpoint direct rend 401 avec la cle locale — la
rotation est passee, la voie directe est morte sur cette machine.

Avec le budget d'origine, le carnet basculerait sur son stub a chaque appel : une sortie
degradee consacree. Le defaut est donc dimensionne pour laisser le raisonnement finir.

Verifications

  • Re-execution reelle : Papermill 2.7.0, kernel python3, 26 cellules, 0 erreur,
    execution_count renseigne sur les 11 cellules code.
  • Propriete du carnet restauree : Cassette apres appel : 10 entree(s) et
    Rejeu cassette : trajectoire identique ? True — identique a la sortie d'origine sur main.
  • Sortie non degradee : Trajectoire : CD CD CD CD CD (5 rounds joues), et non le
    message de stub.
  • Ce qui change, et qui est assume : la trajectoire passe de CC CC CC CC CC (100 % de
    cooperation) a CD CD CD CD CD. La cause est identifiee — le raisonnement n'est plus
    desactivable a travers la passerelle. Aucune prose du carnet n'asserte ce resultat : la
    cellule amont ne fixe que l'objectif (remplacer le stub par un appel reel).
  • Aucun secret dans le diff : la valeur n'apparait nulle part.

Portee mesuree du reste

Mesure par parse des sources de cellules (le grep de chaine sous-compte : les guillemets
sont echappes dans un .ipynb) : 9 autres carnets lisent encore VLLM_API_KEY, dont
quatre absents de la liste du body d'origine (02-Aspire-GenAiStack-Reel,
10b_Inference_Mechanics, 16_Scaling_Test_Time_Compute, 22b_Profil_Cognitif_CHC).
La reclassification en umbrella demandee par la lane precedente reste donc fondee.

See #14926

🤖 Generated with Claude Code

…e claudish

Le carnet ne porte plus la cle du service vLLM : il consomme CLAUDISH_BASE_URL
et presente l'en-tete claudish x-api-key (acceptance 3-4 de #14926).

Le budget de generation est mesure, pas choisi : la passerelle ne propage pas
chat_template_kwargs, donc enable_thinking=False n'a plus d'effet et le
raisonnement consomme le budget avant que la reponse n'atteigne content.
A 1 token le carnet basculerait sur son stub C.1 (sortie degradee consacree) ;
a 2048 les 11 cellules code s'executent, 5 rounds sont joues et le rejeu de
cassette est identique sans appel reseau.

Re-execution reelle : Papermill 2.7.0, 26 cellules, 0 erreur.

See #14926

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

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

github-actions Bot commented Oct 7, 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 7, 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 5.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 2.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 17.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.0s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.0s

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

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

…ulee sans compteur quantitatif en prose (cellule markdown seule, pas de re-execution requise)

L'organe check_prose_quantitative_claims flaggait `(alignee sur `GameTheory-3 cellule 5`)` :
le motif <nombre> cellule matchait l'adjacence nom-de-serie + numero de cellule.
La reference est reformulee (alignee sur la cellule 5 de GameTheory-3) : meme
predicat, plus de forme compteur. Markdown-only, C.2 sans objet.

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

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19634
head: 03ca727
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5076a3403896fa79e4df3f8f4b8a6946a500bc2d0d3c9ce7c0d88a660e970f58
diff-files: 1
diff-additions: 7
diff-deletions: 7
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19634
organ-rc: 0
[/ADJOINT PREFLIGHT]

1 similar comment
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19634
head: 03ca727
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5076a3403896fa79e4df3f8f4b8a6946a500bc2d0d3c9ce7c0d88a660e970f58
diff-files: 1
diff-additions: 7
diff-deletions: 7
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19634
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19634
head: 03ca727
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 6383b3038f4105cd013633f871331b4366e0c92d4c8eea051d20aac18eae3981
diff-files: 1
diff-additions: 373
diff-deletions: 209
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19634
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19634
head: 03ca727
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d995220ab25da4cbd5f1b93bcfed6aed3cceb50efbc818ac118fac92f1988131
diff-files: 1
diff-additions: 373
diff-deletions: 209
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19634
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 842bfce into main Oct 7, 2026
96 of 97 checks passed
@jsboige
jsboige deleted the feature/14926-claudish-consumers branch October 7, 2026 07:44
myia-ai-01 pushed a commit that referenced this pull request Oct 7, 2026
…_reds (#19652)

Le picker imputait a la base les rouges d'organes qui ne lisent QUE les
lignes ajoutees par la PR (cas fondateur prose-counts-guard, aussi
readme-ipynb-links-guard, pip-leak-guard, solution-leak-guard et les
gardes delta). L'imputation disait aux 4 lanes bloquees (po-2023, po-2025,
po-2026, ai-01 -- PRs #19614, #19625, #19626, #19634) « pas le votre »,
donc de ne rien faire, alors que la cause est forcement dans le diff.

Source de verite : fast_lane_registry.Guard.argv (drapeau --diff
{base_ref}...HEAD) et Guard.delta_argv (comparaison explicite base/head).
Le helper _diff_bounded_check_names() lit les tranches du registre sans
recopier une liste de noms ; un nouvel organe borne au diff declare dans
la voie rapide est exclu automatiquement, sans patch picker.

Le splitter split_base_corroboration recoit l'ensemble diff_bounded et
place les cles correspondantes dans undecided SEUL (jamais dans base) :
la mesure « check absent du rollup de main » n'est pas un « je ne sais
pas » mais un « il ne peut pas venir de la base ».

Test : 2 lanes, prose-counts rouge, findings differents -> aucune
imputation a la base (le ticket fondateur). Scripts Tests (CPU) rouge
sur main reste impute a la base (regression guard). Cas agregateur
PR gate :: prose-counts-guard beneficie du filtre via le suffixe
:: organ. None (defaut) preserve le comportement d'avant #19645.

Co-authored-by: ai-01 <ai-01@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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants