Repository navigation
Conversation
…chestrateur conversationnel - argumentation_lib/_delegating_selection.py : vendoring verbatim depuis jsboigeEpita strategies.py L134-246 (commit ecfd9b9, MIT, en-tete SHA), adaptations documentees : record_unresolved_designation absent (#14026) -> state.log_error (#1751 : une ligne de log n'est pas un effet) ; selection_trace pour le journal du carnet. - _runner.py : PROMPT_DEFINE_TASKS gagne la regle de routage (saut de l'analyse formelle si aucun sophisme) + l'instruction d'appeler StateManager-designate_next_agent ; AnalysisRunner.run_conversational() monte UN AgentGroupChat (PM+Informal+Logic) a selection deleguee. - La fonction kernel designate_next_agent existait deja (plugin L416) : doublon introduit puis retire, l'existante fait foi. Smoke test sans LLM (defaut/designation honoree/non resolue tracee) ; 141 tests passed (runner+plugin+state). Cellules carnet 2 textes contrastes : livraison suivante. See #18393 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…eleguee demontree
Section 4.3 du carnet d'orchestration : deux textes contrastes traversent le
meme pipeline a selection deleguee (DelegatingSelectionStrategy).
- Texte A (sophismes + conditionnel) : le PM designe LogicAgent, l'analyse
formelle a lieu.
- Texte B (notes de version factuelles) : aucun sophisme, aucun conditionnel
-- le PM saute l'analyse formelle, LogicAgent n'est jamais invoque.
La regle de routage du PM (_runner.py, PROMPT_DEFINE_TASKS) passe d'une
permission vague a une directive a deux signaux : analyse formelle seulement
si un sophisme a ete detecte OU si le texte porte une inference conditionnelle.
La trace d'execution montre aussi le chemin d'echec honnete : deux
designations non resolues ("ProjectManager") sont journalisees dans l'etat
(error_1, error_2) et la strategie retombe sur l'agent par defaut.
Sorties reelles : 2 executions LLM completes, 0 erreur, sequences A != B.
execution_count renumérote positionnellement (1..11, organe CLEAN).
See #18393
Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
…ion-07 Le carnet a ete re-execute par un kernel local (l'hote MCP jupyter etant mort), qui reecrit les sorties mais laisse le bloc `metadata.papermill` de la passe ANTERIEURE. Un bloc inchange a cote de sorties fraiches date ces sorties au mauvais run, et le ratchet le classe STALE_BLOCK (regression). Mesure : le bloc de tete annoncait 2026-10-03T09:44:39 -> 09:53:02 (duree 503 s), soit huit jours avant les sorties qu'il pretendait decrire. Les 28 blocs `metadata.papermill` de cellule et les 10 `metadata.execution` portaient la meme date. Retrait par l'organe prevu (`_papermill_meta.strip_stale_papermill_metadata`, #12722 / #18305), jamais a la main. Le remede alternatif -- re-executer via Papermill -- a ete ecarte : l'agent interroge un LLM en ligne, un nouveau passage produirait des sorties differentes et invaliderait la demonstration sous revue (sequences A != B sur deux textes reels). Un metadata absent est une information manquante ; un metadata perime est une information trompeuse. Ratchet : BLOCK_REMOVED, 0 regression. Diff : 268 suppressions, toutes dans des blocs metadata -- aucune cellule source, aucune sortie de cellule. See #18393 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[REPAIR] Rouge propre a la PR — Le rouge etait reel, et le diagnostic du picker avait raison (« Papermill ratchet : cause probable du requis »). Cause. Mesure. Le bloc de tete annoncait Correctif. Retrait par l'organe prevu a cet effet, Verification locale. Diff : 268 suppressions, 0 insertion, toutes dans des blocs metadata — aucune cellule source, aucune sortie de cellule touchee (Stop & Repair respecte : rien n'a ete maquille). Autres rouges de cette PR — imputes a la base, pas a la lane (releve du picker, corroboration croisee) : Lecon a porter au harnais. La recette de re-execution hors MCP (jupyter_client local, |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[INFO] Diagnostic des 4 jambes rouges a la tete
Les trois derniers sont la pollution partial-clone/sparse-checkout du runner (famille #19548 / #19915) : le job meurt au Geste applique : rejeu des 4 jambes echouees ( |
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: MED/test #20332
Summary
Livre les deux points que l'issue #18393 demandait, en une seule PR (meme branche, deux commits) :
DelegatingSelectionStrategyvendoree dansargumentation_lib(commit7284a39ef2) — copie verbatim destrategies.pydu tronc EPITA (ecfd9b9, MIT), en-tete citant source/commit/licence + perimetre d'adaptation documente.Criteres de l'issue #18393 — preuve par critere
InformalAgent,LogicAgent,ProjectManagerAgentmarqueeslu dans l'etat -> selectionne(sortie de la cellule 4.3, 2 executions reelles)PM -> Informal -> PM -> Logic -> PM(analyse formelle engagee) · Texte B :PM -> Informal -> PM -> PM -> PM(LogicAgent jamais invoque) —sequences A != B : TrueRuntimeErrorsiOPENAI_API_KEY/OPENAI_CHAT_MODEL_IDabsents — outputs committes inchangesCe que la demonstration change
Le levier vit dans
PROMPT_DEFINE_TASKS(_runner.py). Version initiale (permissive) : « si aucun sophisme n'a ete detecte [...] vous POUVEZ sauter l'analyse formelle ». Mesure : deux executions reelles ont produit la meme sequence — le PM definissait la tache de formalisation malgre la permission (un texte percu comme propre s'est meme vu attribuer 3 sophismes par l'analyste informel,fallacy_count: 3).La regle est donc devenue une directive a deux signaux : analyse formelle seulement si (a) un sophisme a ete detecte dans l'etat, ou (b) le texte porte une inference conditionnelle a verifier. Texte B reecrit en notes de version factuelles (ni visee persuasive, ni conditionnel). Deux executions consecutives divergent alors de facon stable.
Chemin d'echec honnete (montre dans la trace)
Sur le texte B, le PM ecrit deux fois « ProjectManager » — un nom absent du registre d'agents. La strategie ne devine pas : elle journalise l'erreur dans l'etat (
error_1,error_2), retombe sur l'agent par defaut et poursuit la conversation. Une designation non resolue est tracee, jamais silencieuse (#1751).Validation
glm-5.2), plafond 6 tours, 0 erreur. La cellule consomme les vraies sorties de cette execution (C.2).argumentation_libverte apres modification du prompt.check_exec_sequence.py→ CLEAN (1..11) ·check_cell_source_parses→ 0 finding ·check_interp_positioning→ 0 ·check_duplicate_sections→ 0 ·prose-counts→ aucun compteur quantitatif en prose.execution_countrenumérote positionnellement (1..11) — la cellule 4.3 est la 8e cellule de code.Limite assumee
Les decisions du PM sont stochastiques : rejouer la cellule peut donner des traces legerement differentes. Le mecanisme — deux contenus differents, deux routages differents — ne depend pas d'un tirage ; la trace committee est une execution reelle, non un exemple fabrique.
Perimetre
MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/argumentation_lib/:_delegating_selection.py(nouveau),_runner.py,__init__.py— commit7284a39ef2MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-07-Orchestration-Python.ipynb: section 4.3 (3 cellules) + prose 4.2 mise a jourSee #18393— cloture au coordinateur/adjoint apres verification des criteres.🤖 Generated with Claude Code