Architecture

SKRAFT applies the CQS (Command-Query Separation) principle at the system level. The orchestrator dispatches commands to executor agents, who produce artifacts. Reviewer agents read those artifacts and emit verdicts — they never modify anything.

« Asking a question should not change the answer. » — Meyer, B., Object-Oriented Software Construction, 2nd ed., 1997.

Overview (L1 + L2)

This view stays at two levels: L1 the orchestrator, and L2 the five phase agents and their independent reviewers. The internal L3 fan-out (test wiring inside DELIVER) has its own zoom pages — see Zoom further below.

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

Legend

Arrow Meaning
Solid orchestrator → executor Command (CQS command side)
Solid executor → artifact Write — the executor produces an artifact
Dashed artifact → reviewer Read-only (CQS query side)
Solid reviewer → orchestrator Verdict (PASS / FAIL + reasons)
Dashed orchestrator → state.json CQRS read model

Zoom further — the DELIVER internal fan-out (L3)

This page deliberately stops at L1 + L2. Inside DELIVER, the software-engineer (L2) does not wire the integration tests by hand: it dispatches internal sub-agents (L3, user-invocable: false) for that wiring. The lead keeps the business TDD cycle and verifies each worker in TIER-1 (RED → GREEN). When a capability is active, its fidelity lens joins the adversarial panel of the software-engineer-reviewer.

Each L3 fan-out has its own zoom page so this diagram stays readable:

L3 capability What it wires Zoom page
Mocking the downstream dependency mock-integration-worker → strategy roster → Microcks (default) / in-process L3 zoom: mocking (Microcks)
Provider-side contract test contract-testing-worker → roster → in-process integration + Microcks (opt-in) L3 zoom: contract testing

See also the agents reference.

Strict separation

Executors write artifacts but never emit verdicts on their own work. Reviewers read artifacts and produce verdicts, but never modify code or documents. This separation guarantees that every artifact is validated by an independent eye.

The state.json file serves as the read model (CQRS): the orchestrator records phase progression and verdicts there, then consults it to decide the next action.

See Core concepts for the theory behind CQS and CQRS.