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:
@@ -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]`).
|
||||
Reference in New Issue
Block a user