Skip to content

vibe-coding(claude-code): le bloc copiable Linux du chemin canonique prescrit install.claude.com et ~/.claude/bin, contredisant le paragraphe canonique du meme document #15672

Description

@myia-ai-01

Finding V02+A9 de la passe d'audit GenAI, re-verifie firsthand le 2026-09-12 sur origin/main = 162779ec06. Confirme comme residuel du correctif de See #15285 : le paragraphe canonique a ete ecrit, mais les deux blocs copiables du chemin canonique Linux le contredisent toujours. Priorite : cette fiche est lue le jour de la seance (installation des postes en debut de session).

Le defaut (1) — blocs copiables du chemin CANONIQUE contredisent le paragraphe canonique du meme document

INSTALLATION-CLAUDE-CODE.md porte deux affirmations incompatibles a 40 lignes d'ecart :

  • L14 (encadre « Chemin canonique ») : « le binaire vit sous ~/.local/bin et se met a jour via claude update », source citee code.claude.com/docs/en/quickstart.
  • L53-L56 (section « ### Chemin canonique : Installation Native » → Linux/WSL) :
curl -fsSL https://install.claude.com | sh
echo 'export PATH="$HOME/.claude/bin:$PATH"' >> ~/.bashrc

Deux ecarts, verifies contre la doc officielle consultee le jour de la re-verification (2026-09-12, https://code.claude.com/docs/en/quickstart) : la commande canonique officielle est curl -fsSL https://claude.ai/install.sh | bash (pas install.claude.com pipe vers sh), et le binaire natif ne vit pas sous ~/.claude/bin — c'est le chemin de l'ere npm/legacy, contredit par le L14 du meme document. Un etudiant Linux/WSL qui suit le chemin canonique ajoute une entree PATH inutile ; si l'installateur n'a pas deja mis ~/.local/bin au PATH de son shell, claude --version echoue sans aucun indice.

Le defaut (2) — le test compagnon test_claude_cli.py L79-81 echoue en l'etat (verifie par execution)

Le cadre a change depuis le finding original : l'implementation verify_installation() / installation_status() (claude_cli.py L43-105) teste desormais l'executabilite REELLE (appel claude --version via subprocess) — le diagnostic lui-meme est sain. Le defaut vivant est le test :

def test_verify_installation_true_when_in_path(monkeypatch):
    monkeypatch.setattr(claude_cli.shutil, "which", lambda cmd: "/usr/local/bin/claude")
    assert claude_cli.verify_installation() is True

Il ne mocke que shutil.which : installation_status() enchaine sur un appel subprocess REEL vers /usr/local/bin/claude --version. Sur toute machine sans binaire a exactement ce chemin, l'appel leve FileNotFoundError → etat « non-executable » → verify_installation() rend False → le test ECHOUE. Verifie par execution locale le 2026-09-12 :

$ python -m pytest test_claude_cli.py -k "verify_installation" -q
test_claude_cli.py:81: in test_verify_installation_true_when_in_path
    assert claude_cli.verify_installation() is True
E   assert False is True
================= 1 failed, 2 passed, 27 deselected in 0.73s ==================

Le test contredit en outre le docstring de sa propre suite (« CPU-only, no network, no real claude CLI invocation... deterministic ») : il n'est deterministe que sur une machine qui a une CLI Claude reellement installee.

Localisation

  • MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/docs/INSTALLATION-CLAUDE-CODE.md L14 / L51-57.
  • MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/helpers/test_claude_cli.py L79-81 (et le module claude_cli.py L43-105 pour la lecture).

Sortie de re-verification (origin/main, 2026-09-12)

$ git show origin/main:...INSTALLATION-CLAUDE-CODE.md | grep -n 'install.claude.com\|claude/bin\|local/bin'
14:... le binaire vit sous `~/.local/bin` et se met a jour via `claude update` ...
53:curl -fsSL https://install.claude.com | sh
56:echo 'export PATH="$HOME/.claude/bin:$PATH"' >> ~/.bashrc

(doc officielle quickstart, consultee 2026-09-12 : curl -fsSL https://claude.ai/install.sh | bash)

Ce qu'un correctif devrait faire (sans l'ecrire)

  • Aligner les deux blocs copiables Linux/WSL sur la commande officielle du jour et sur le chemin reel du binaire natif — ou, si install.claude.com est le nouvel endpoint officiel a une date donnee, le sourcer avec date de consultation comme le fait deja L14 (l'incoherence interne L14 vs L56 est le defaut, quelle que soit la valeur de verite externe).
  • Rendre le test hermetique : mocker aussi la couche subprocess (ou installation_status) pour que le verdict True ne depende pas d'une CLI reellement installee sur la machine qui execute la suite.

Coordination

La PR #15656 (OPEN) touche ce document mais uniquement la section OpenRouter/proxy (L97+) — pas cette zone. Le correctif de #15285 a etabli le paragraphe canonique ; ce residuel est precisement l'acceptance 1 de See #15285 (« coherents avec la documentation officielle du fournisseur au jour de la PR ») honoree par la prose mais pas par le bloc copiable.

Reassessed by audit-issue-opener: CONFIRMED pedagogy (blocs copiables du chemin canonique incoherents avec le paragraphe canonique et la doc officielle) + CONFIRMED bug (test non hermetique, echoue en l'etat)

Activity

  1. jsboige commented on Sep 12, 2026

    @jsboige
    Owner

    [CLAIMED] lane myia-po-2023:CoursIA — 2026-09-12T22:41Z — paths: MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/docs/INSTALLATION-CLAUDE-CODE.md (blocs copiables L51-57 alignés sur le paragraphe canonique L14, source officielle re-consultée à la date du fix), notebooks/helpers/test_claude_cli.py (test hermétique — mock de la couche subprocess). Grain: LIGHT/docs — prev: MED/guard #15836.

  2. jsboige commented on Sep 12, 2026

    @jsboige
    Owner

    [DELIVERED] lane myia-po-2023:CoursIA — 2026-09-12T22:52Z — PR #15838

    Les deux défauts corrigés :

    1. Blocs copiables Linux : install.claude.com | sh → claude.ai/install.sh | bash et export PATH="$HOME/.claude/bin:…" → repli commenté sur ~/.local/bin (chemin réel du binaire natif, cohérent avec l'encadré canonique L14). Source officielle re-consultée le jour de la PR (2026-09-12, quickstart) : commande confirmée = curl -fsSL https://claude.ai/install.sh | bash, onglet « Native Install (Recommended) » ; mises à jour automatiques natives en arrière-plan. Prose sous le bloc sourcée avec date, même discipline que L14.

    2. Test hermétique : test_verify_installation_true_when_in_path mocke désormais les deux couches (shutil.which + subprocess.run) — verdict indépendant d'une CLI réellement installée sur l'hôte. Companion de falsification ajouté : hit PATH + --version rc=127 → False (preuve que le verdict True dépend de l'exécution).

    Preuve red/green (exécution réelle) : avant 1 failed, 29 passed in 1.87s (la repro exacte de l'issue) ; après 31 passed in 0.52s. Catalogue byte-identique, pas de recouvrement avec #15656 (zone L51-58 vs OpenRouter L97+).

  3. added a commit that references this issue on Sep 13, 2026
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

    auditAutomated quality audit findings

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions