ServiceContainer — 9-Layer Dependency Graph

Each layer depends only on layers below it. No circular dependencies. Created once per session.

initialized first (no dependencies)
1
Defaults
sessionId logger eventBus
2
Configuration
ProjectConfig WorkflowConfig GitWorkflowConfig MethodologyProfile
3
Infrastructure
GraphQLClient IssueRepository ProjectRepository RepositoryRepository EpicRepository
4
Domain Services
EpicService IntegrityValidator DependencyService ContainerService
5
Audit + Agents
AuditService AgentService
6
BRE + Task Engine
ValidationStepRegistry TaskTransitionValidator TaskWorkflowService SuggestionService TaskService
7
Analytics + Compliance
AnalyticsService ComplianceService
8
Work Distribution
WorkDistributionService
9
Merge Readiness
MergeReadinessService
initialized last (depends on everything above)
Key invariant: Created once per MCP session via ServiceContainer.create(), then reused across all tool calls. The private constructor ensures all services are wired through the factory method. Profile is immutable once set — changing methodology requires resetContainer().