SDLC Orchestrator Architecture
A 7-phase software development pipeline with multi-provider support, quality-gated iterations, and per-provider cost tracking.
SDLC Pipeline Flow
Requirements
1. Analyst
2. PM
Dev 0
Dev 1
Dev N
4. Integration
QA 0
QA 1
QA 2
6. Feedback
Output
If completion score < threshold, loop back to Developers (Phase 3) with QA feedback
Phase Details
Analyst
Decomposes requirements into components with file lists and dependencies, acceptance criteria (testable, measurable), technical notes and complexity estimation.
Project Manager
Creates non-overlapping work assignments. Validates no file is assigned to multiple developers. Groups related files to minimize integration issues.
Developers (Parallel)
Each developer receives assigned files only and can only create files they are assigned (enforced). Receives team coordination context showing all assignments.
Integration Developer
Systematic cross-file verification: CSS/HTML class/ID matching, JavaScript/HTML element references, module/export issues, layout/structure integration.
QA Review (Parallel)
Each QA agent independently reviews ALL files (not just a subset). Checks critical integration points. Marks severity: critical, major, minor.
Feedback Coordinator
Deduplicates similar issues across QA agents. Calculates completion score using weighted algorithm. Decides if threshold is met or iteration needed.
Completion Scoring Algorithm
// Weighted completion score calculation
finalScore = (criticalScore × 0.40) +
(majorScore × 0.25) +
(minorScore × 0.15) +
(acScore × 0.20)
// Issue penalties per occurrence:
criticalScore = max(0, 1.0 - (criticalIssues × 0.50))
majorScore = max(0, 1.0 - (majorIssues × 0.15))
minorScore = max(0, 1.0 - (minorIssues × 0.05))
acScore = passedCriteria / totalCriteria
Project Structure
# Multi-language SDLC orchestrator implementations
rdn-swarm/
src/
nodejs/
swarm.js # Main entry point
sdlc-orchestrator.js # 2000+ lines - SDLC pipeline
providers/ # Anthropic, OpenAI, Google
swarm-config.json # Role-specific configuration
python/
swarm.py # Main entry point
sdlc/ # Orchestrator, config, types
sdlc/providers/ # Multi-provider support
go/
swarm.go # Main entry point
sdlc/orchestrator.go # 2000+ lines - goroutines
providers/ # Zero external deps
dotnet/
Swarm.cs # Main CLI interface
SdlcOrchestrator.cs # Full 7-phase pipeline
Providers/ # LLM provider interfaces
Extensible Provider Architecture
Anthropic
Claude Models
- claude-sonnet-4-20250514
- claude-opus-4-20250514
- Native SDK integration
Gemini Models
- gemini-2.0-flash
- gemini-1.5-pro
- REST API integration
OpenAI
GPT Models
- gpt-4o
- gpt-4o-mini
- OpenAI SDK integration
New providers can be added by implementing the base provider interface with createMessage() method
Concurrency Models
Node.js
Event Loop
- Promise.all for parallel execution
- Promise.race for semaphore slots
- Executing array tracks active
Python
asyncio
- asyncio.Semaphore(n) limits
- asyncio.gather for parallelism
- async with for clean acquire
Go
Goroutines
- Channel-based semaphore
- sync.WaitGroup for join
- Zero external dependencies
.NET
async/await
- SemaphoreSlim for limits
- Task.WhenAll for parallelism
- Native HttpClient API
Configuration (swarm-config.json)
// Per-role provider and model configuration
{
"roles": {
"analyst": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
"projectManager": { "provider": "google", "model": "gemini-2.0-flash" },
"developer": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
"integrationDeveloper": { "provider": "anthropic", "model": "claude-opus-4-20250514" },
"qaReview": { "provider": "google", "model": "gemini-2.0-flash" },
"feedbackCoordinator": { "provider": "openai", "model": "gpt-4o-mini" },
"summaryGenerator": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" }
},
"orchestration": {
"maxDevelopers": 5,
"maxQAAgents": 3,
"maxIterations": 10,
"completionThreshold": 0.8,
"maxCost": 2.00
}
}
Quick Start
Clone Repo
git clone github.com/jreidell/rdn-swarmSet API Keys
export ANTHROPIC_API_KEY=...Edit Requirements
vim inputs/requirements.mdRun SDLC
node swarm.js --mode sdlc