# Coordination Claude ↔ Qwen — Règles du jeu **Pivot :** Claude (Anthropic) — lit, route, répond, met à jour `etat-projet.md` et `log.md` **Reviewer code :** Qwen Code — audit code, perf, dette technique **Chef de projet / décideur final :** Dom (dbazin52@gmail.com) --- ## 1. Objectif Maintenir une **vision globale partagée** du projet anonymisation médicale sur 4 axes : - **Produit** (fonctionnalités attendues, cas d'usage, RGPD métier) - **Qualité** (tests, score baseline, non-régression) - **Code** (architecture, dette technique, perf, sécurité) - **Évolutivité** (roadmap, refactoring, scalabilité multi-établissements) ## 2. Arborescence ``` docs/coordination/ ├── README.md # CE FICHIER — règles du jeu ├── etat-projet.md # Source de vérité partagée — état courant ├── log.md # Journal chronologique des échanges (lisible terminal) ├── audits/ # Audits datés et signés ├── inbox/ │ ├── for-claude/ # Qwen dépose ici → Claude lit │ └── for-qwen/ # Claude dépose ici → Qwen lit ├── archive/ │ ├── from-qwen/ # Messages traités venant de Qwen │ └── from-claude/ # Messages traités venant de Claude ├── decisions/ # Tranches de Dom — toi seul écris ici └── plans/ # Plans d'action consolidés ``` ## 3. Convention de nommage des messages `YYYY-MM-DD_HH-MM_AUTEUR_TOPIC-KEBAB.md` Exemples : - `2026-05-28_17-30_claude_kickoff-coordination.md` - `2026-05-28_18-15_qwen_reponse-phase0-securite.md` ## 4. Format obligatoire de chaque message ```markdown --- from: claude | qwen | dom to: claude | qwen | dom | all date: 2026-05-28T17:30:00+02:00 topic: short-kebab-topic status: open | answered | closed references: - audit: 2026-05-28_qwen_audit-complet - file: anonymizer_core_refactored_onnx.py:1118 - commit: 13730d1 priority: low | normal | high | blocker --- # Titre clair du message ## Contexte (en quoi ce message s'inscrit dans la conversation) ## Question / proposition / réponse (contenu principal) ## Actions attendues (ce que tu attends du destinataire, avec délai si pertinent) ``` ## 5. Cycle de vie d'un message 1. **Émetteur** dépose dans `inbox/for-/` 2. **Destinataire** lit → écrit sa réponse dans `inbox/for-<émetteur>/` 3. **Destinataire** déplace l'original dans `archive/from-<émetteur>/` après lecture 4. **Claude (pivot)** met à jour `log.md` avec un résumé 1-ligne de chaque échange ## 6. Désaccords - Si Claude et Qwen sont en désaccord : **ne pas trancher seul** - Le désaccord est documenté dans un fichier `inbox/for-dom/_desaccord-.md` - Dom écrit sa décision dans `decisions/_.md` - Tant que pas de décision, la question reste `status: open` ## 7. Source de vérité — `etat-projet.md` Claude le maintient à jour à chaque cycle. Contient : - Commit actuel (SHA + date) - Score qualité courant - Version EXE distribuée - Décisions tranchées par Dom - Statut des actions en cours (tableau) Qwen et Dom le consultent en lecture pour s'aligner. ## 8. Visibilité terminal pour Dom À chaque cycle, Claude (le pivot) affiche dans son output terminal : - Ce qu'il a lu dans `inbox/for-claude/` - Ce qu'il a déposé dans `inbox/for-qwen/` - Les désaccords détectés - Une ligne ajoutée à `log.md` Dom peut interrompre à tout moment pour trancher ou réorienter. ## 9. Règles de fond - **Aucune action irréversible sans accord de Dom** (push, commit important, modif code production) - **Citer ses sources** : fichier:ligne, commit SHA, audit daté - **Désaccord explicite > consensus mou** : préférer marquer un désaccord plutôt que céder par lassitude - **Vision globale** : ne jamais traiter une demande isolée sans la situer dans le projet ## 10. Bootstrap Premier message à lire pour Qwen : `inbox/for-qwen/2026-05-28_17-30_claude_kickoff-coordination.md`