Architecture
SKRAFT applique le principe CQS (Command-Query Separation) au niveau système. L’orchestrateur dispatche des commandes vers des agents exécuteurs, qui produisent des artefacts. Les agents reviewers lisent ces artefacts et émettent des verdicts — ils ne modifient jamais rien.
« Asking a question should not change the answer. » — Meyer, B., Object-Oriented Software Construction, 2nd ed., 1997.
Vue d’ensemble (L1 + L2)
Cette vue reste à deux niveaux : L1 l’orchestrateur, et L2 les cinq agents de phase et leurs reviewers indépendants. Le fan-out interne L3 (câblage des tests dans DELIVER) a ses propres pages de zoom — voir Zoomer plus loin ci-dessous.
graph TB
O[skraft-orchestrator] -->|dispatch| BD[backlog-discoverer]
O -->|dispatch| BP[backlog-planner]
O -->|dispatch| SA[solution-architect]
O -->|dispatch| AD[acceptance-designer]
O -->|dispatch| SE[software-engineer]
BD -->|writes| A1[triage report]
BP -->|writes| A2[refined stories]
SA -->|writes| A3[ADRs + diagrams]
AD -->|writes| A4[Gherkin scenarios]
SE -->|writes| A5[tested code]
A1 -.->|reads| BDR[backlog-discoverer-reviewer]
A2 -.->|reads| BPR[backlog-planner-reviewer]
A3 -.->|reads| SAR[solution-architect-reviewer]
A4 -.->|reads| ADR[acceptance-designer-reviewer]
A5 -.->|reads| SER[software-engineer-reviewer]
BDR -->|verdict| O
BPR -->|verdict| O
SAR -->|verdict| O
ADR -->|verdict| O
SER -->|verdict| O
O -.->|reads| S[(state.json)]
style O fill:#2d5a3d,stroke:#4ed58a,stroke-width:2px
style S fill:#1a2a3a,stroke:#7fd3ff
Légende
| Flèche | Signification |
|---|---|
| Trait plein orchestrateur → exécuteur | Commande (côté command de CQS) |
| Trait plein exécuteur → artefact | Écriture — l’exécuteur produit un artefact |
| Trait pointillé artefact → reviewer | Lecture seule (côté query de CQS) |
| Trait plein reviewer → orchestrateur | Verdict (PASS / FAIL + motifs) |
| Trait pointillé orchestrateur → state.json | Modèle de lecture CQRS |
Zoomer plus loin — le fan-out interne de DELIVER (L3)
Cette page s’arrête volontairement à L1 + L2. Dans DELIVER, le software-engineer
(L2) ne câble pas les tests d’intégration à la main : il dispatche des sous-agents
internes (L3, user-invocable: false) pour ce wiring. Le lead garde le cycle TDD
métier et vérifie chaque worker en TIER-1 (RED → GREEN). Quand une capacité est
active, sa lentille de fidélité rejoint le panel adverse du
software-engineer-reviewer.
Chaque fan-out L3 a sa propre page de zoom pour que ce schéma reste lisible :
| Capacité L3 | Ce qu’elle câble | Page de zoom |
|---|---|---|
| Mocking du dépendant aval | mock-integration-worker → roster de stratégie → Microcks (défaut) / in-process |
Zoom L3 : mocking (Microcks) |
| Test de contrat fournisseur | contract-testing-worker → roster → intégration in-process + Microcks (opt-in) |
Zoom L3 : contract testing |
Voir aussi la référence des agents.
Séparation stricte
Les exécuteurs écrivent des artefacts mais n’émettent jamais de verdict sur leur propre travail. Les reviewers lisent les artefacts et produisent un verdict, mais ne modifient jamais le code ni les documents. Cette séparation garantit que chaque artefact est validé par un regard indépendant.
Le fichier state.json sert de modèle de lecture (CQRS) : l’orchestrateur y enregistre la progression des phases et les verdicts, puis le consulte pour décider de la prochaine action.
Voir Concepts fondamentaux pour la théorie derrière CQS et CQRS.