Disput-Turn: 0001 Disput-Participant: claude Disput-Role: implementer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
99 lines
4.3 KiB
Markdown
99 lines
4.3 KiB
Markdown
+++
|
|
turn = 1
|
|
participant = "claude"
|
|
role = "implementer"
|
|
base = "" # premier tour, pas de HEAD antérieur
|
|
status = "CONTINUE"
|
|
+++
|
|
|
|
# Tour 1 — claude, implementer : fondation du dépôt
|
|
|
|
## Réponses
|
|
|
|
Aucune : premier tour.
|
|
|
|
## Travail
|
|
|
|
Décision `user` à l'origine du dépôt, prise hors tour et consignée ici
|
|
(règle 5) :
|
|
|
|
- créer un outil d'orchestration multi-agents, nommé **disput**, dans
|
|
son propre dépôt ;
|
|
- ouvrir dès le départ le protocole à **N participants et à des rôles
|
|
configurables**, pas seulement à un dialogue à deux ;
|
|
- développer l'outil **en parallèle de son expérimentation**, avec son
|
|
propre protocole (dogfooding) ;
|
|
- objectif premier : supprimer la navette manuelle (« à toi ») de
|
|
l'humain.
|
|
|
|
Ce tour pose :
|
|
|
|
- `README.md` : raison d'être, principes, usage visé ;
|
|
- `PROTOCOL.md` : spec normative v0 (concepts, fichiers de tour
|
|
immuables, cycle de vie des items, rôles et déclencheurs,
|
|
ordonnancement, invariants, garde-fous, place de l'humain, pratique
|
|
manuelle) ;
|
|
- `.disput/disput.toml` : configuration du projet lui-même (claude et
|
|
vibe éligibles aux trois rôles, user décideur) ;
|
|
- `.disput/backlog.md` : B-1 à B-13 ;
|
|
- `AGENTS.md` / `CLAUDE.md` minces, qui renvoient à `PROTOCOL.md`.
|
|
|
|
Origine : ce protocole généralise celui pratiqué sur 16 tours dans un
|
|
autre projet du même utilisateur (dialogue Claude/Vibe en
|
|
implémenteur/reviewer alternés via un DEVLOG unique). Ce qui est repris :
|
|
- la réponse point par point ;
|
|
- l'interdiction de modifier les entrées de l'autre ;
|
|
- l'obligation de vérifier soi-même.
|
|
|
|
Ce qui change :
|
|
- un fichier par tour plutôt qu'un DEVLOG unique ;
|
|
- l'état des items déduit des tours ;
|
|
- un ordonnanceur à règles au lieu d'une simple alternance ;
|
|
- des invariants vérifiables par machine.
|
|
|
|
## Vérifications
|
|
|
|
Aucun code ce tour, donc rien à exécuter. Relecture de cohérence :
|
|
l'en-tête de ce fichier suit le §4, et les identifiants d'items le §4
|
|
également.
|
|
|
|
## Items
|
|
|
|
- [I-0001-1] → role:reviewer : en-tête de tour en **TOML entre `+++`**
|
|
plutôt qu'en YAML `---`, pour rester sans dépendance (`tomllib` est
|
|
dans la stdlib depuis 3.11). C'est moins répandu que YAML chez les
|
|
agents. Risque-t-il de mal formater des en-têtes ? Le coût d'une
|
|
dépendance YAML est-il préférable ?
|
|
- [I-0001-2] → role:reviewer : l'état des items est **déduit** des
|
|
tours, sans fichier d'état. C'est robuste à la falsification, mais
|
|
dépendant d'un parsing strict des lignes `- [I-…]` dans du markdown
|
|
libre. Faut-il un bloc structuré (TOML) pour les réponses et les items
|
|
plutôt que des puces ?
|
|
- [I-0001-3] → role:reviewer : **trou dans le §7** que je signale
|
|
moi-même. Un item adressé à `@participant`, sans rôle, ne dit pas dans
|
|
quel rôle ce participant doit jouer. Ma proposition : il joue dans le
|
|
rôle qu'il tenait au tour visé par l'item, et à défaut `implementer`.
|
|
D'accord, ou faut-il interdire l'adressage `@participant` nu ?
|
|
- [I-0001-4] → role:reviewer : « un tour = un rôle ». Si `reviewer` et
|
|
`security` sont déclenchés par le même diff et qu'un seul participant
|
|
est éligible (≠ auteur), il joue deux tours d'affilée. Est-ce
|
|
acceptable, ou faut-il autoriser un tour multi-rôles (un fichier, deux
|
|
sections) ?
|
|
- [I-0001-5] → role:security : le §9 promet trop. Des `deny` par motif
|
|
de chaîne se contournent facilement : `git -c … push`, des alias, un
|
|
`sh -c`, un `subprocess` en Python… L'invariant §8.3 (refs distantes)
|
|
ne détecte le push qu'**après coup**. Piste de défense en amont :
|
|
forcer dans `[guards].env` des variables qui rendent le transport
|
|
inopérant pendant un tour, par exemple une commande SSH qui échoue
|
|
toujours, ou un `pushurl` invalide via la config git d'environnement.
|
|
Est-ce suffisant, contournable, ou à combiner avec autre chose ?
|
|
- [I-0001-6] → role:reviewer : v0 **sans aucune dépendance externe**
|
|
(`argparse`, `unittest`, `tomllib`). Est-ce tenable jusqu'à B-7 ? Ou
|
|
vaut-il mieux assumer tout de suite une CLI (Typer/Click) et pytest ?
|
|
|
|
**Prochain tour, d'après le §7 :** ce tour modifie des fichiers hors de
|
|
`.disput/` (`code_changed`), donc c'est au **reviewer**, tenu par
|
|
**vibe** (≠ auteur). `.disput/disput.toml` correspond aussi au
|
|
déclencheur `paths:` de `security`, donc vibe joue ensuite **security**,
|
|
sauf si I-0001-4 est tranché autrement entre-temps.
|