# Agents de développement IdeA — Protocole commun

> Ces agents servent à **développer l'IDE IdeA lui-même**. Ils ne sont pas la feature produit « agents IA » de l'application.
> Référence produit/archi : [`../CONTEXT.md`](../CONTEXT.md) · [`../ARCHITECTURE.md`](../ARCHITECTURE.md).

## Composition de l'équipe

Chaque **lot livrable** (L0…L11) est confié à un **binôme** :
- un **agent de développement** (écrit le code),
- un **agent de test** appairé (écrit et exécute les tests unitaires).

Un fichier `Lx-*.md` par binôme décrit son périmètre, ses ports/adapters, ses dépendances et sa *definition of done*.

| Lot | Fichier | Statut |
|---|---|---|
| L0 | [L0-core-domain.md](L0-core-domain.md) | ✅ **vert** (84 tests) |
| L1 | [L1-ipc-bridge.md](L1-ipc-bridge.md) | ✅ **vert** (46 tests) |
| L2 | [L2-projects.md](L2-projects.md) | ✅ **vert** (26 tests) |
| L3 | [L3-terminals.md](L3-terminals.md) | ✅ **vert** (61 tests) |
| L4 | [L4-layout.md](L4-layout.md) | ✅ **vert** (52 tests) |
| L5 | [L5-ai-runtime.md](L5-ai-runtime.md) | ✅ **vert** (69 tests) |
| L6 | [L6-agents.md](L6-agents.md) | ✅ **vert** (domaine+app+infra+IPC+front · activer un agent ouvre son terminal) |
| LD | [LD-design-system.md](LD-design-system.md) | ✅ **vert** (Tailwind v4 + UI kit maison, thème sombre) |
| L7 | [L7-templates.md](L7-templates.md) | ✅ **vert** (backend + IPC + front · drift & sync) |
| L8 | [L8-git.md](L8-git.md) | ✅ **vert** (backend + IPC + front · git local libgit2) |
| L9 | [L9-remote.md](L9-remote.md) | 🟡 **socle vert** (LocalHost + ConnectRemote, Liskov) · SSH/WSL gated à venir |
| L10 | [L10-windows.md](L10-windows.md) | 🟡 **backend + IPC verts** (move-tab + `WebviewWindow`) · détach UI fait avec la refonte L11 |
| L11 | [L11-packaging.md](L11-packaging.md) | 🟡 AppImage Linux **OK** · refonte disposition IDE en cours · Windows/CI à venir |
| L12 | [L12-skills.md](L12-skills.md) | ⬜ **Skills** — entité + store + assignation + injection convention file + UI |
| L13 | [L13-orchestrator.md](L13-orchestrator.md) | ⬜ **OrchestratorApi** — file-watcher, spawn depuis agent ou UI, même résultat |

## Cycle dev ↔ test (obligatoire, cf. CONTEXT §3)

```
1. Archi valide le découpage et les contrats (ports/interfaces) du lot.
2. Agent DEV écrit le code de la feature.
3. Agent TEST écrit les tests unitaires + les exécute.
4a. Vert  → feature validée, lot suivant.
4b. Rouge → rapport d'erreurs structuré → retour DEV → correction → retour étape 3.
```

**Règle d'or** : aucune feature n'est « terminée » tant que ses tests ne passent pas. Les résultats sont relayés fidèlement (sortie réelle des tests).

## Definition of Done (commune à tous les lots)

- [ ] Code conforme à l'architecture hexagonale et SOLID (cf. ARCHITECTURE §1).
- [ ] Le `domain` reste pur (aucune dépendance I/O qui y entre).
- [ ] Les use cases ne parlent qu'aux **ports**, jamais aux adapters concrets.
- [ ] Tests unitaires écrits et **verts** : `cargo test -p <crate>` (Rust) et/ou `vitest` (front).
- [ ] Domaine/application testés **sans I/O** (ports mockés : `mockall` ou fakes).
- [ ] Pas de `new ConcreteAdapter` ailleurs que dans la composition root (`app-tauri`).
- [ ] Pas de régression sur les lots déjà verts.
- [ ] Code lisible, cohérent avec le style existant.

## Format du rapport d'erreurs (TEST → DEV)

```
LOT: Lx
TEST EN ÉCHEC: <nom du test>
ATTENDU: <…>
OBTENU: <…>
SORTIE: <extrait pertinent de cargo test / vitest>
HYPOTHÈSE: <cause probable, si identifiable>
```

## Conventions techniques

- Rust : workspace multi-crate (`crates/domain`, `application`, `infrastructure`, `app-tauri`).
- Erreurs typées par port/use case ; `async` via `async_trait` côté ports I/O.
- Déterminisme des tests via ports `Clock`/`IdGenerator` (impl `Fixed`/`Seq` en test).
- Front : `domain`/`ports` purs (Vitest), `features` testés avec gateways **mock** (RTL).
