# 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-<destinataire>/`
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/<date>_desaccord-<topic>.md`
- Dom écrit sa décision dans `decisions/<date>_<topic>.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`
