Two additions based on learnings from taskgraph architecture decomposition:
- Gather Requirements now explicitly mentions reading downstream consumer
architecture to understand constraints, while noting that consumer dispatch
details belong in the consumer's own docs, not the library's
- Anti-patterns adds 'Consumer dispatch in library docs' — describe what
consumers need, not how they dispatch it
The 751-line architecture.md violated the SDD process modular documentation
target (~500 lines). It also had duplicate TaskGraph class definitions (one
monolith, one decomposed) that directly contradicted each other, and embedded
consumer-specific tool dispatch mappings that belong in downstream projects.
Changes:
- Split into 8 focused documents + 7 ADR records + redirect page
- Removed the monolithic TaskGraph class (kept only decomposed version)
- Moved CLI→plugin dispatch mapping out (belongs in plugin architecture)
- Extracted implementation code (frontmatter splitter, findCycles, DAG
propagation) into WHAT/WHY descriptions per architect role spec
- Added proper ADR format for all resolved design decisions
- Fixed review issues: C_fail mapping, DuplicateNodeError/DuplicateEdgeError
types, ValidationError/GraphValidationError definitions, mutation error
handling contract, enum naming convention, validation timing clarification
Replace outdated worktree_make/worktree_mode/worktree_overview/worktree_cleanup
API references with the new worktree({action, args}) dispatch pattern from
open-coordinator. Add worktree notify tool for implementation/code-review/POC
agents to communicate back to coordinator. Fix stale alkhub_ts paths. Add
open-memory plugin awareness (memory, memory_compact) to AGENTS.md and agent
specs. Update sdd_process.md coordinator section accordingly.
Replace interfaces with typebox equivalents for return types.
Resolve 6 open design questions:
1. Rebuild over incremental (graph sizes too small to matter)
2. Strict internal-only subgraph (matches graphology-operators)
3. Throw CircularDependencyError on cycles (both consumers treat as bugs)
4. Always propagate through completed nodes, exclude from output only
5. Defer depth-escalation to v2 (multiplicative compounding already captures it)
6. Adopt source->target edge keys from the start
Add section decomposing TaskGraph into thin data class + standalone
analysis functions, with operations pattern at the consumer layer.