# Backlog — disput Une tâche par ligne : `- [ ] B- : …`. On coche à la fin du tour qui la termine, en citant ce tour. `[USER]` = décision humaine, jamais prise par un implémenteur. Numéros uniques, jamais réutilisés. ## v0 — amorçage (le relais remplace la navette manuelle) - [ ] B-1 : squelette du paquet Python (`pyproject.toml`, `src/disput/`, point d'entrée `disput`, `argparse` + `tomllib`, aucune dépendance externe en v0), `tests/` en `unittest` - [ ] B-2 : parseur de fichiers de tour (en-tête `+++` TOML, sections Réponses/Items, identifiants, destinataires) + `disput lint` - [ ] B-3 : déduction de l'état des items à partir des tours (§5) + `disput status` - [ ] B-4 : ordonnanceur (§7) en **fonction pure** : (config, tours, diff du dernier tour) → (participant, rôle) | USER | DONE. Tests exhaustifs, y compris l'anti ping-pong - [ ] B-5 : vérification des invariants après un tour (§8), git uniquement - [ ] B-6 : adaptateurs `claude` et `vibe` (lancement non interactif, env forcé, budget/max-turns, log local) + adaptateur `stub` pour les tests - [ ] B-7 : `disput run` (verrou, boucle, arrêt, `.disput/last-run.md`, notification) + scénarios stub « tricheurs » : pas de commit, réécriture, modification d'un tour existant, réviseur qui touche au code, `status=USER` - [ ] B-8 : `disput decide "…"` (écrit et commite le tour `user`) - [ ] B-9 : garde-fous appliqués par adaptateur, à partir de `[guards]` (deny et hook Claude, agent et hook `pre_tool` Vibe), avec preuve qu'un `git push` est refusé dans chaque adaptateur - [ ] B-10 : `disput init` (crée `.disput/` dans un projet existant) - [ ] B-11 : premier `disput run --max-turns 2` sur disput lui-même, sous surveillance de l'humain - [ ] B-12 : adoption par qbt-manager (`disput init`, `disput.toml` avec les checks preflight/tests et les garde-fous dry-run, rôle `security` sur ses chemins sensibles) ## Décisions humaines - [x] B-13 [USER] : licence Apache-2.0, dépôt **public** sur le remote `gitea` (tour 0002) ## Sécurité du dépôt public (ajouté tour 0002) - [ ] B-14 : contrôle de secrets avant tout push (sur le modèle du preflight de qbt-manager : scan de tout l'historique, motifs génériques + motifs locaux dans un fichier gitignoré, fichiers interdits), déclaré comme `[[checks]]` `must_pass` dans `disput.toml`. À faire **avant le premier push** ## Plus tard (seulement sur besoin observé) - ACP comme transport unifié des adaptateurs, avec des garde-fous centralisés - reviewers en parallèle (worktrees) - interface en terminal (affichage des tours en direct, décisions à l'écran) - adaptateurs supplémentaires (codex, gemini, opencode…)