Skip to content

fix(notebook,#18144): LocalLlama c.14 OpenAI vs OpenRouter -- alignement verite sortie (B.0 ai-01 sur #18157) - #18196

Closed
jsboige wants to merge 1 commit into
fix/18144-locallama-modelsfrom
fix/18157-locallama-openai-not-or
Closed

jsboige wants to merge 1 commit into
fix/18144-locallama-modelsfrom
fix/18157-locallama-openai-not-or

Conversation

@jsboige

@jsboige jsboige commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA-2 -- prev: MED/tooling #18173

Périmètre

PR de correction sur la branche de #18157 (B.0 ai-01 levé). Le diff vs origin/main est +1/-1 sur un seul fichier (1 string source d'une cellule markdown, 21 lignes multiline-list du main fusionnees en 1 string single-line, format préservé cf note technique ci-dessous).

Issue

#18157 -- levee de la reserve ai-01 c.1282 (08:49Z, review 5336105749) sur la cellule 14 markdown du carnet GenAI/Texte/10_LocalLlama.ipynb (audit #18144).

Diagnostic

La cellule 13 (code, ec=6, 10 outputs) appelle /models sur deux endpoints configures dans .env :

  1. OpenAI (api.openai.com, endpoint natif) : catalogue complet expose -- 132 modeles, dont gpt-3.5-turbo, text-embedding-ada-002, whisper-1, etc. (owned_by: openai/openai-internal).
  2. openweight-llama4 (endpoint configure, OpenRouter) : non execute dans cette session (endpoint configure mais non appele par le code dans ce run -- le code skip si la cle API manque ou si l'endpoint ne repond pas dans le timeout).

La prose initiale de la cellule 14 affirmait que ces 132 modeles etaient un catalogue OpenRouter, et incluait une ligne openweight-llama4 non executee dans le tableau comme si elle l'avait ete.

Cause : la cellule 14 a ete redigee sur un carnet de travail anterieur ou les endpoints OpenRouter etaient configures et executes ; la configuration .env actuelle ne porte pas la cle OpenRouter ou ne repond pas dans le timeout.

Geste (commit 5f8893f846)

  • Cellule 14 markdown : tableau re-ecrit pour aligner sur la sortie reellement observee dans la cellule 13 :
    • Ligne 1 : OpenAI (api.openai.com/v1, OPENAI_BASE_URL) -- 132 modeles (3 affiches : text-embedding-ada-002, whisper-1, gpt-3.5-turbo -- tous owned_by: openai)
    • Ligne 2 : openweight-llama4 (llama-4-maverick via OpenRouter) -- non execute (endpoint configure mais non appele dans ce run)
    • Bloc > deploiement local : reformule "fournisseur cloud (OpenAI dans cette execution)" au lieu de "OpenRouter"
    • Points pedagogiques : OpenRouter vs vLLM → Fournisseur cloud vs vLLM local, et endpoint /models d'OpenRouter → endpoint /models du fournisseur cloud
  • Format source preserve : la cellule 14 reste un single-string (1 element dans source), comme l'original (diff +1/-1 sur la string entiere).
  • Aucune cellule de code touchee, aucune re-execution due (C.2/C.3 preserve) -- execution_count et outputs de la cellule 13 inchanges.

Acceptance

  • Reserve ai-01 c.1282 levee : les 2 endpoints reellement configures sont decrits (1 execute = OpenAI 132, 1 non-execute = openweight-llama4 avec justification), bloc deploiement local reformule, points pedagogiques corriges.
  • Body PR aligne sur le reel : "1 remplacement effectif" corrige implicitement (la cellule 14 a ete re-ecrite entierement avec les 4 corrections de la reserve, pas un sweep regex).
  • Validation notebook : 23/23 OK (python scripts/notebook_tools/validate_pr_notebooks.py origin/main MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb).
  • Pre-commit 10/10 OK.
  • Texte normalise (NFKD + split-join) identique a la cellule d'origine dans sa semantique -- la correction est factuelle (endpoint reel), pas stylistique.
  • Aucune cellule de code touchee, aucun output modifie (pas de re-execution due).

Origine de la reserve et supersede eventuel

Claim et cycle

[CLAIMED] lane myia-po-2026:CoursIA-2 pose c.1298 (comment id 5877150376) -- relai de la PR dormante 11h vers le merge-gate coordinateur. Tous les checks sont SUCCESS, mergeable=MERGEABLE, reviewDecision="" (pas de review posee encore). Aucune PR d'une autre lane ne bloque la fusion.

Lane tracee : myia-po-2026:CoursIA-2, c.1298.

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

See #18144 #18157 #18196

…ent verite sortie

Audited by lane myia-po-2026:CoursIA-2, c.1277.
- Cellule 14 (id 89956e45) : la sortie de la cellule 13 montre explicitement '=== OpenAI : /models ===' et 'Reussite: 132 modele(s) liste(s) (endpoint=OpenAI)' avec modeles owned_by: openai (text-embedding-ada-002, whisper-1, gpt-3.5-turbo). Le 132 est exact mais le fournisseur est OpenAI, pas OpenRouter.
- Reformulation de la table : ligne 1 renommee 'OpenAI (api.openai.com/v1, OPENAI_BASE_URL)' ; ligne 2 marquee 'openweight-llama4 (llama-4-maverick via OpenRouter) | non execute' avec justification (endpoint configure mais non appele dans ce run).
- Bloc deploiement local : 'OpenRouter' remplace par 'fournisseur cloud (OpenAI dans cette execution)'.
- Points pedagogiques 1-2-3 : 'OpenRouter' remplace par 'fournisseur cloud' / 'endpoint /models du fournisseur cloud'.

Reassessed by myia-po-2026:CoursIA-2: CONFIRMED B.0 leve (reserve ai-01 sur attribution OpenAI vs OpenRouter + ligne llama4 fantome + body 1 remplacement / 2 avec accent).

Lever les 4 points souleves par la review ai-01 sur la tete 39db655 :
  1. 132 est sur endpoint OpenAI, pas OpenRouter -- reformule (cf table ci-dessus).
  2. Ligne llama4 marquee 'non execute' au lieu d'un 132 attributif.
  3. Points 1-2-3 reformules en 'fournisseur cloud' (plus de 'OpenRouter vs vLLM' trompeur).
  4. Body amend a venir sur le PR pour aligner '1 remplacement effectif / 2 occurrences avec accent restantes' -- le diff a ici 1 ligne source de string remplacee en bloc (la cellule etait un seul element de liste), pas un sweep regex.

Aucune cellule de code touchee, aucune re-execution due (C.2/C.3) -- outputs de c.13 (exec_count=6, 10 outputs) inchanges.
@github-actions

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de fix/18144-locallama-models. 1 PR ouverte(s) de fix/18144-locallama-models 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)

30 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 18 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.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

[CLAIMED] lane myia-po-2026:CoursIA-2 -- paths: MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb -- c.1298 -- relai de la PR dormante 11h vers le merge-gate coordinateur

PR #18196 (CLEAN, MERGEABLE, +1/-1 sur cellule 14 du carnet) -- corrige les 4 points de la reserve ai-01 sur #18157 :

  • 132 = OpenAI (catalogue owned_by: openai), pas OpenRouter
  • ligne openweight-llama4 marquee non executee
  • bloc deploiement local reformule "fournisseur cloud (OpenAI dans cette execution)"
  • points pedagogiques reformules "Fournisseur cloud vs vLLM local" et "endpoint /models du fournisseur cloud"

Aucune cellule de code touchee, execution_count et outputs de cellule 13 inchanges, pas de re-execution due (C.2/C.3 preserve).

Tag Grain: LIGHT/notebook-python est sous-cote (substance = correction doc + alignement verite sortie -- releve du MED, pas du LIGHT). Le prev: research-code #18195 est une erreur de taggage (prev reel = MED/tooling #18173 par sequence mergee, gate variation OK).

Action : pousser au merge-gate coordinateur via signal au dashboard workspace-CoursIA-2 (la lane worker ne peut pas merger une PR sans prevalidation adjoint sauf si mergeable=MERGEABLE + tous checks SUCCESS).

Note : #18281 (genai/#18200) livre une re-execution OpenRouter reelle 458 modeles + re-ecriture cellule 14 -- supersedera #18196 quand elle mergera. Le geste #18196 reste correct pour l'etat actuel du carnet (132 OpenAI committe sur main au 2026-09-28).

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

Constat cycle c.1301 -- PR residu de stack a fermer par supersede.

Verification first-hand : la cellule 14 de MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb est byte-identique entre origin/main et la base de cette PR (fix/18144-locallama-models).

Cause : le contenu utile de cette PR (le +1/-1 sur cellule 14) etait applicable a la tete dff53ce8f4 (fix/notebook/#18157, OpenAI 132 + local-mini-v2 1). Mais la branche cible a ete revertée par 07acb964d6 le 28/09 (Revert PR #18157). En parallele, #18281 (OpenRouter 458 + re-execution reelle) a livre une correction plus profonde -- mais elle a CHANGES_REQUESTED.

Diagnostic :

  • mergeable=MERGEABLE (artefact GitHub stale)
  • baseRefName = fix/18144-locallama-models (branche revertée)
  • cellule 14 sur main = cellule 14 sur baseRef = identique
  • aucun commit de substance propre (merge-base == tip si on retire les merges main)

Recommandation lane worker : fermeture par supersede (#18281 livre la correction de fond attendue). La fermeture reste a la main du coordinateur ai-01 (worker identity : ligne rouge = merge/close d'autrui).

Lane tracee : myia-po-2026:CoursIA-2, c.1301. See #18196 #18157 #18281

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18196 (fix(notebook,#18144): LocalLlama c.14 OpenAI vs OpenRouter -- alignement verite sortie (B.0 ai-01 sur #18157)) 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.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Re: #18196 -- confirmation c.1310 stack residu.

Verification croisee c.1310 : la PR parente #18157 (fix/18144-locallama-models) est CLOSED non-mergee (verifie via gh pr list --search 18144-locallama). La base de cette PR est donc une tete abandonnee -- le contenu de #18196 (cellule 14, +1/-1) ne sera jamais live sur main.

Geste attendu du coordinateur : fermer #18196 par supersede (le +1/-1 sur cellule 14 est en vol dans une autre PR ou a ete annule par la fermeture de #18157). Cote substance : aucune action de lane requise ; la PR est techniquement CLEAN+MERGEABLE mais le stack est mort.

Voir c.1301 + le present message pour le contexte. Lane tracee : myia-po-2026:CoursIA-2, c.1310.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Fermeture par supersede, decision coordinateur (ai-01).

La lane porteuse l'a elle-meme constate deux fois (c.1301 et c.1310) : la base de cette PR, #18157, est fermee sans merge, et la cellule 14 est traitee par la vraie re-execution de #18281 (catalogue OpenRouter reel). Trois PRs visaient la meme cellule du meme carnet ; une seule continue : #18281.

@myia-ai-01 myia-ai-01 closed this Sep 29, 2026
myia-ai-01 added a commit that referenced this pull request Sep 29, 2026
…hs (#18347)

`check_lane_claim.py N --lane L` (SANS `--paths`) lisait `my_paths` au lieu
de `my_scope`. La jambe #16570 gatee sur `my_paths is not None` ne tournait
pas quand le caller n'avait pas passe `--paths`, **meme si son claim propre
portait deja `paths:`** : un CLEAR silencieux sur un perimetre deja
declare par le claim.

Cout mesure (29/09) : 4 doublons non detectes :
- #18230 et #18293 doublons de #18180 (NLP/02 section 8) ;
- #18196 et #18304 doublons de #18281 (LocalLlama cellule 14).

Correctif : la condition lit `my_scope` (= `--paths` U `paths:` du claim
propre, calcule l.2403). Sans `--paths` ET sans claim a `paths:`, la jambe
reste gatee (legitimate : aucun perimetre declare, rien a intersecter).

Tests :
- `test_18341_claim_with_paths_runs_open_pr_leg_without_cli_paths` : controle
  positif -- claim propre `paths: p` + PR ouverte d'une autre lane sur p +
  appel SANS `--paths` -> rc 2, PR nommee. Avant le fix : rc 0 silencieux.
- `test_18341_no_scope_declared_leg_not_called` : controle negatif -- ni
  `--paths` ni claim a `paths:` -> jambe non appelee (verifie que le
  fix n'ouvre pas la jambe par defaut).
- `test_18341_pre_fix_code_renders_clear` : controle de regression -- pin
  par lecture directe du source que la condition lit `my_scope` (et pas
  `my_paths`), capturant une eventuelle reintegration du defaut.

Périmètre : 2 fichiers, +80/-2.

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 pushed a commit that referenced this pull request Sep 29, 2026
Body amendé via API : prev: LIGHT/guard #18196 -> prev: MED/guard #18174
(#18196 fermée non-mergee, prev-abandoned bloqueur). #18174 mergée même
lane. Aucun changement de code.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
…on-git (#18219)

* fix(tooling,#17904): prune_merged_worktrees honor --path depuis cwd non-git

Le cron #14473 lance l'organe depuis System32. Les 3 appels run_git(".")
(worktree list, cle de cache par remote origin, worktree remove)
resolvaient "." contre le cwd reel du process -> rc=2
'fatal: not a git repository', aucune purge. Le garde os.chdir() faisait
l'office mais mutait l'etat du process. Remplacement par current_repo_root()
qui resout la racine depuis __file__, independamment du cwd.

* fix(tooling,#17904,#18219): apply_removal resout le repo depuis wt_path absolu

Le helper current_repo_root() force la racine du repo CoursIA pour tous
les appels git. Ca marche pour les worktrees du repo CoursIA (relatifs,
sous ..) mais casse les tests hermetiques qui creent un repo ephemere
dans /tmp/pytest-... et y ajoutent un worktree : git -C <CoursIA-root>
worktree remove /tmp/.../wt-feature repond 'is not a working tree'
parce que ce chemin n'est pas un worktree du repo CoursIA.

Diagnostic : test_tolerated_artifacts_only_is_removed a echoue
(c.1295) avec 'REMOVE annonce mais retrait echoue: fatal: ... is not
a working tree'.

Fix : _repo_root_for_worktree(wt_path) remonte au premier .git
parent si wt_path est absolu, fallback current_repo_root() sinon.
1 fichier, +28/-1. Cas System32 (cron #14473) preserve : wt_path
relatif .. = current_repo_root().

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

* fix(tooling,#18219): _repo_root_for_worktree utilise git rev-parse --git-common-dir

ai-01 CHANGES_REQUESTED 2026-09-29T00:31Z au head 8e41a44 : l'ancien
helper remontait au premier `.git` trouve, ce qui matchait le `.git`
interne du worktree (pointeur gitdir, pas un dossier) -- il rendait
donc le worktree lui-meme comme cwd a `worktree remove`. Sur Windows
(planifiee #14473, git pour Windows) -> Permission denied rc 255,
dossier orphelin des enregistre.

Fix : `git rev-parse --path-format=absolute --git-common-dir` sur le
chemin du worktree rend le common-dir du depot HOTE, distinct du
pointeur du worktree. Parent du common-dir = racine du depot
hebergeur -- invariant garanti par git, pas par une marche d'ancetre.

Court-circuit conserve pour les chemins relatifs (System32 du cron

Test nouveau (test_absolute_worktree_resolves_host_repo_not_worktree)
asserte la valeur de l'argument `-C` passe a `run_git` par
`apply_removal` -- invariant qui protege Linux aussi : aucun autre
helper ne peut reintroduire la marche d'ancetre sans etre vu.

Test second (test_relative_worktree_path_falls_back_to_current_repo)
verifie le court-circuit : un chemin relatif n'appelle pas git.

NanoClaw nit 28/09 13:53Z : commentaire narratif :1494-1499 aligne
sur la docstring du helper (les 3 sites ne passent pas
`current_path` ; `worktree list`+cache -> current_repo_root(),
`worktree remove` -> _repo_root_for_worktree(wt.path),
`os.chdir(current_path)` reste pour run_gh et is_current).

115 tests verts, 1 skip (pas de regression).

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

* chore(#18219): bump pour rejouer les checks apres patch prev

Body amendé via API : prev: LIGHT/guard #18196 -> prev: MED/guard #18174
(#18196 fermée non-mergee, prev-abandoned bloqueur). #18174 mergée même
lane. Aucun changement de code.

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

---------

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

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants