tour 0001 (claude, implementer) : fondation — README, PROTOCOL v0, config, backlog B-1..B-13

Disput-Turn: 0001
Disput-Participant: claude
Disput-Role: implementer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 12:29:24 +02:00
co-authored by Claude Opus 5.5
commit 59e046ad99
8 changed files with 538 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
# disput
> *disput*, de *disputatio* : la dispute scolastique, où chaque objection
> reçoit une réponse.
`disput` orchestre **plusieurs clients IA en ligne de commande** (Claude
Code, Mistral Vibe, puis d'autres) qui travaillent ensemble sur un même
dépôt git. Chaque participant y tient un **rôle** : implémenteur,
reviewer, auditeur sécurité… Le travail se fait **par tours**, sous un
protocole strict, et tout l'état du dialogue vit dans le dépôt.
`disput` ne remplace pas le harness de chaque agent : il **les fait
jouer à tour de rôle**, vérifie après chaque tour que les règles ont
été respectées, et ne rend la main à l'humain que lorsqu'une décision
lui revient.
## Pourquoi
Le protocole est né sur un projet réel, où Claude et Vibe alternaient
implémentation et review sévère. Sur 16 tours, la review croisée entre
modèles a attrapé de vrais bugs, que l'implémenteur avait pourtant
déclarés corrigés. Deux limites sont apparues :
- l'humain servait de **bus de messages** : il tapait « à toi » dans un
agent, puis dans l'autre ;
- les garde-fous (pas de prod, pas de push, pas de réécriture
d'historique) n'étaient que **déclaratifs**.
`disput` automatise le relais, impose les garde-fous et ouvre le
protocole à **N participants et à des rôles configurables**.
## Principes
1. **Le protocole d'abord, l'outil ensuite.** [`PROTOCOL.md`](PROTOCOL.md)
se suffit à lui-même : on peut le pratiquer à la main, en tapant
« à toi » à chaque agent. L'outil ne doit jamais devenir indispensable
pour avancer.
2. **Tout l'état est dans git.** Tours, objections, backlog, décisions :
des fichiers versionnés, lisibles par les humains comme par les
machines.
3. **Les garde-fous sont techniques.** Une règle que l'outil ne sait pas
vérifier ou bloquer n'est qu'un vœu.
4. **Pas de fonctionnalité sans besoin observé.** Une fonctionnalité
n'entre que si un projet réel en a eu besoin, et ce besoin est
consigné dans un tour.
5. **disput se développe avec disput.** Ce dépôt est son propre premier
projet client (voir `.disput/`).
## État
**Phase d'amorçage** : la spec existe, pas encore le code. Le
développement suit le protocole **à la main** jusqu'à ce que la v0 de
`disput run` sache prendre le relais. Voir
[`.disput/backlog.md`](.disput/backlog.md) et
[`.disput/turns/`](.disput/turns/).
## Utilisation visée (v0)
```bash
disput init # crée .disput/ dans un projet (config, backlog, tours)
disput status # qui joue ensuite, objections ouvertes, décisions en attente
disput run # enchaîne les tours jusqu'à DONE, USER ou un invariant violé
disput decide "texte" # enregistre la décision de l'humain et relance
disput lint # valide les fichiers de tour et la config
```
## Licence
À décider (voir le backlog, item `[USER]`).