Skip to content

harnais : 50 définitions (agents, commandes, skills) désalignées de main — conflits de règle, API absentes, faits périmés (audit haiku du 28/09) #18166

Description

@myia-ai-01

See #16473 (consolidation) et #7423 (revue globale du harnais, qui couvre CLAUDE.md et les règles, pas les définitions).

Contexte

Audit en lecture seule du 28/09 : 20 agents haiku ont confronté les 50 définitions du harnais (23 sous-agents de .claude/agents/, 8 commandes de .claude/commands/, 19 skills de .claude/skills/) au code de main (a86aee6e2a). Pour chaque lot, un sceptique a ensuite tenté de réfuter chaque constat. L'audit n'a rien exécuté ni écrit dans le dépôt.

  • 140 constats, dont 96 survivent au sceptique.
  • ai-01 a revérifié à la main, sur main (f2db58966b), les constats rangés ci-dessous comme vérifiés. Les autres sont rapportés : à revérifier par la lane qui corrige (règle audit-reassessment).
  • Un survivant était inversé. L'audit accusait slide-improver d'appeler un outil mcp__sk-agent__call_agent inexistant. C'est l'inverse : le serveur sk-agent déclare call_agent(prompt, agent?, attachment?, ...) parmi ses 9 outils, et n'a plus d'outil analyze_image. C'est donc slide-analyzer qui est cassé (frontmatter l.4, appels l.73, l.90, l.106). Quatre fichiers citent encore analyze_image sur main : cet agent, skills/analyze-slides/SKILL.md, docs/reference/cluster-agents.md et docs/reference/slide-analyzer-sk-agent.md.

1. Conflits avec une règle HARD (vérifiés)

Définition Ligne Ce qu'elle prescrit Règle contredite
agents/notebook-enricher.md 264 git checkout -- <notebook_path> pour revenir en arrière après un écrasement Checkout safety : checkout -- restaure depuis l'index et efface tout le non-commité du fichier. Remplacer par une sauvegarde cp et une restauration.
skills/review-student-prs/SKILL.md 135 « Push to main (after all PRs for the session are processed) » Pas de push direct sur main. Le dépôt visé est un argument de la skill : si c'est CoursIA, le geste est interdit ; si c'est un dépôt étudiant, sa charte fait foi. Il faut l'écrire.
agents/notebook-iterative-builder.md 308, 323, 336, 517, 540, 560, 580 sept Task(subagent_type="general-purpose", ...) sans model model-delegation : tout sous-agent porte un modèle explicite.
agents/readme-hierarchy-auditor.md 142 même motif, un Task() sans model idem
agents/slide-improver.md 111, 133, 223 images en colonne droite (![bg right:40%], ![bg right:35%], pile verticale à droite) Slides : images en overlay, jamais en colonne droite (#221).

2. API ou options qui n'existent pas (vérifiés)

  • agents/notebook-validator.md
    • Appelle validator.validate_json_format() (l.112), validate_metadata() (l.115) et validate_all() (l.790). NotebookValidator (scripts/notebook_tools/notebook_tools.py:604) ne définit que validate_structure et validate_content, plus des méthodes privées.
    • Appelle aussi helper.get_kernel_name() (l.149, l.166), read_execution_report() (l.229), detect_notebook_level() (l.286) et analyzer.pedagogical_score() (l.795). Aucune n'existe sur NotebookHelper, ni ailleurs sous scripts/notebook_tools/. get_kernel_name existe comme fonction libre dans batch_reexecute.py:78 et validate_pr_notebooks.py:183, pas comme méthode.
    • L'import from scripts.notebook_helpers import NotebookHelper (l.106) vise un module absent. Le bon chemin est scripts/notebook_tools/notebook_helpers.py.
    • Le frontmatter (l.4) déclare Read, Glob, Grep, Bash, alors que le corps appelle helper.save(). Il faut trancher : un validateur en lecture seule, ou un validateur qui corrige.
  • agents/notebook-executor.md:272 : helper.set_cell_output(...) n'existe pas. NotebookHelper n'a que set_cell_source (l.123). Cet appel écrirait aussi une sortie à la main, ce que la règle 6 de secrets-hygiene interdit. L'import de la l.136 a le même défaut de chemin.
  • agents/notebook-designer.md
    • NotebookHelper.create_new(...) (l.543) n'existe pas.
    • La l.528 appelle une sous-commande notebook_helpers.py create, qui n'existe pas non plus. Les sous-commandes réelles sont list, analyze, get-source, get-output, sequence, validate-context, enrichment-plan, execute et detect-kernel.
    • La l.117 construit l'objet par NotebookHelper.__new__ et contourne _load().
    • La l.205 importe Infer.NET en Python (from InferNet import *) alors que la pile est en C#.
    • La l.460 renvoie à une commande /design-notebook absente de .claude/.
  • agents/notebook-cell-iterator.md:51, 104 : décrit un paramètre objective_type (contains, equals, regex...). CellIterator (notebook_helpers.py:572) prend un objective_checker appelable, et n'a pas de objective_type.
  • agents/genai-iterator.md:35 et skills/genai-iterate/SKILL.md:27 : python genai.py auth seul échoue. auth exige une action positionnelle, parmi init, sync, audit, get-token et reconstruct-env (commands/auth.py:26).
    • Pour genai.py docker (genai-iterator l.65 et genai-iterate l.26) et genai.py models (genai-iterator l.68), l'argument n'est pas obligatoire, mais sans sous-commande rien ne s'exécute. La forme documentée est genai.py docker status.
  • skills/validate-genai/SKILL.md:3 annonce --local, --remote et --quick. commands/validate.py:418-435 ne les définit pas.
  • skills/train-model/SKILL.md:15 prescrit validate_training_package.py --dry-run. Le script (ML-Training-Pipeline/scripts/validate_training_package.py:148-149) n'accepte que --verbose et --script.

3. Faits périmés (vérifiés)

  • skills/coordinate-adjoint/SKILL.md:110 affirme que « spool n'est pas une sous-commande » et que le CLI en déclare trois. scripts/coordination/debt_ledger.py en déclare quatre : init (l.2356), append (l.2361), spool (l.2380) et reduce (l.2385). La skill énonce donc le contraire de l'organe, sur la surface que l'adjoint suit à chaque cycle.
    • l.116 : dedupe_latest est à scripts/pr_gate.py l.543, pas l.537. Mieux vaut citer le nom seul.
  • skills/verify-notebooks/SKILL.md:36 range Sudoku en « .NET C#, cell-by-cell only ». La série compte 18 carnets C# et 19 Python.
  • OPTIMIZATION_BACKLOG.md vit sous MyIA.AI.Notebooks/QuantConnect/projects/_docs/. Trois définitions le cherchent au mauvais endroit :
    • skills/qc-helpers.md:185 ;
    • skills/qc-iterative-improve/SKILL.md:82 et :224 ;
    • agents/qc-strategy-improver.md:47.
  • agents/prover-forensic.md
    • l.10 : docs/subagents-reference.md a été déplacé sous docs/reference/.
    • l.21 : agent_tests/prover/traces/ n'est pas suivi. Les traces suivies sont sous MyIA.AI.Notebooks/SymbolicAI/Lean/agent_tests/prover/baselines/traces/ (10 fichiers). À vérifier : traces/ est peut-être un répertoire produit à l'exécution.
  • agents/genai-iterator.md:84-86 et skills/genai-iterate/SKILL.md:50-52
    • Ils signalent des yourdomain.com qu'on ne trouve plus nulle part sous GenAI/.
    • Ils citent des noms de carnets périmés. Les noms actuels sont 04-4-Cross-Stitch-Pattern-Maker-Legacy et 01-Foundation/01-5b-Qwen-Image-Edit-2509.
  • agents/notebook-cell-iterator.md:348 : Search/CSPs_Intro.ipynb est archivé sous Search/_archive/.
  • agents/training-specialist.md
    • l.3 annonce « RL/PPO », alors que le script est train_dqn_rl.py, un DQN.
    • l.28 affirme (vérifié le 2026-05-23) que gpu_training.py « n'est PAS présent sur disque dans le repo ». Il est suivi sous QuantConnect/shared/gpu_training.py, avec son test. Le risque qui suit reste à garder : si l'import échoue depuis scripts/, le repli except ImportError désactive le garde thermique sans rien dire. Seule la prémisse est à corriger.
  • skills/notebook-helpers/SKILL.md:59 : Sudoku/Sudoku-01.ipynb n'existe pas. Les carnets s'appellent Sudoku-01-Backtracking-{Csharp,Python}.ipynb.

4. Rapportés, non revérifiés

Ces constats survivent au sceptique, mais ai-01 ne les a pas relus :

  • agents/slide-improver.md:37, 47 : elle lit slides.md, qui est au format Slidev, alors que les rendus Marp passent par slides.marp.md (12 fichiers suivis).
  • agents/genai-iterator.md:19-21 et skills/genai-iterate/SKILL.md:32 : les VRAM de la table GPU divergent de docs/genai/genai-services.md:293-303.
  • agents/qc-research-notebook.md:183, 198, 212, 227 : les projets ETF-Pairs-Trading et research/ sont introuvables sur main.
  • skills/qc-iterative-improve/SKILL.md:109 : le chemin lean-workspace/{Strategy}-Researcher/ n'existe pas.
  • commands/validate-genai.md:10 : il cite validate_stack.py, que son propre en-tête déclare déprécié au profit de genai.py validate.
  • agents/notebook-enricher.md:4 : il documente --execute et --fix-errors sans disposer de Bash.
  • agents/notebook-designer.md:507 : il annonce un noyau lean4, alors que les carnets Lean du dépôt utilisent un noyau Python.

Écartés à la vérification

  • skills/train-model/SKILL.md:36 (cool_sleep=30). Le défaut de thermal_check est 15 (gpu_training.py:94), mais les lanceurs passent 30 explicitement (btc_itransformer.py:226). La skill décrit l'usage, pas le défaut.
  • skills/qc-helpers.md:66-69 (search_quantconnect, check_syntax...). Le sceptique les a jugés absents en les comparant à la version allégée du serveur MCP QuantConnect. Ce ne peut pas trancher pour le serveur complet.
  • Arguments de commands/execute-notebook.md et de commands/cleanup-notebooks.md. Ce sont des arguments de commande slash, que l'agent interprète. Ce ne sont pas des options CLI.
  • verify-notebooks/SKILL.md:30 et corrective-sweeper.md:48. Les cibles existent. Le sceptique les avait laissés passer comme « informatifs ».

Geste

  • Ces fichiers relèvent du harnais : la correction revient à ai-01, une PR par famille. D'abord les conflits de la section 1, puis les API de la section 2, qui envoient un agent sur une erreur dès son premier appel, puis les faits de la section 3.
  • Deux options par API absente : la retirer de la définition, ou l'implémenter dans scripts/notebook_tools/ si le besoin est réel. Ne pas en inventer une troisième.
  • Mesure de fermeture : relancer la passe sur main après les PRs, et constater zéro constat vérifié restant dans les sections 1 à 3. Les éléments de la section 4 sont chacun tranchés, par une correction ou par une phrase de motif sur cette issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions