FAQ - listenrightmeow/signal-driven-development GitHub Wiki
FAQ
Frequently asked questions about Signal-Driven Development.
Is SDD only for Domain-Driven Design?
SDD was designed for DDD and uses DDD building blocks (aggregates, bounded contexts, commands, events). The gap categories and heuristic thresholds are grounded in DDD literature. If your architecture does not use DDD patterns, the templates will not apply directly. However, the core idea -- iterative specification with diagnostic feedback and a measurable definition of done -- could be adapted to other modeling approaches.
Does SDD require a team?
No. SDD was specifically designed for solo practitioners. Traditional DDD knowledge crunching assumes collaborative workshops (EventStorming, domain expert interviews). SDD replaces the social feedback loop with a structured diagnostic one. A solo builder writes the specification, runs the gap report, and resolves the gaps. The gap report acts as the "second pair of eyes."
That said, SDD works with teams too. The templates serve as shared artifacts for review and discussion.
How long does a pass take?
It depends on domain complexity. For a moderately complex domain (4--6 bounded contexts, 6--10 aggregates):
| Pass | Duration | What Happens |
|---|---|---|
| Pass 1 | 2--4 hours | Initial extraction and gap report |
| Pass 2 | 1--2 hours | Resolution and re-evaluation |
| Pass 3 | 30--60 minutes | Final convergence check |
Simple domains may converge in two passes. Complex domains (regulatory, event-sourced, multi-team) may need four or five.
Can I use SDD with AI assistants?
Yes. The structured templates work well with AI assistants for gap identification and resolution drafting. The architect retains decision authority -- the AI surfaces signals, the architect investigates and decides. This was part of the original motivation for SDD: creating a methodology that works with AI as a modeling partner.
What if my gap count increases between passes?
This is a divergence signal -- the most important signal the process can produce. It means a resolution introduced more complexity than it removed. Common causes:
- A boundary change that created new cross-context dependencies
- An aggregate decomposition that generated more questions than it answered
- A scope expansion disguised as a gap resolution
Investigate the root cause. Revert the resolution that caused divergence if needed. The convergence invariant is non-negotiable. See Convergence Model for details.
Do I need all four templates for every domain?
| Template | Required? | Notes |
|---|---|---|
| Domain Specification | Yes | The core artifact |
| Gap Report | Yes | The diagnostic tool |
| Gap Resolution Log | Strongly recommended | Captures rationale you'll forget in two weeks |
| Architecture Palette | Optional | Valuable for complex domains (3+ contexts) |
When is a model "done"?
When the gap report returns zero unresolved gaps. This does not mean the model is perfect. It means every question the model raised has been answered -- either by changing the specification or by documenting why the current design is intentional. Deferred items (e.g., "V2 scope") are not gaps; they are conscious scope boundaries.
How does SDD relate to EventStorming?
They are complementary:
- EventStorming is a discovery technique -- it helps you find domain events and command flows through collaborative workshops
- SDD is a convergence technique -- it takes a domain specification (however you produced it) and drives it to completeness through diagnostic passes
You could use EventStorming for discovery and SDD for convergence.
Can I contribute a worked example?
Yes. See Contributing for guidelines on submitting anonymized domain analyses.
Where do the heuristic thresholds come from?
Each threshold is sourced from the DDD literature:
| Threshold | Source |
|---|---|
| Aggregate command density (6) | Vernon, Implementing DDD |
| Context term overlap (3) | Evans, Domain-Driven Design |
| Saga step count (5) | Practical production experience |
| Aggregates per context (3) | Context size heuristic |
| Policy fan-out (1:1) | EventStorming vocabulary |
Thresholds can be overridden with documented rationale. See Heuristic Thresholds for the full reference.