# Stella Ops Router - Sprint Index > **BLOCKED Tasks:** Before working on BLOCKED tasks, review [../implplan/BLOCKED_DEPENDENCY_TREE.md](../implplan/BLOCKED_DEPENDENCY_TREE.md) for root blockers and dependencies. This document provides an overview of all sprints for implementing the StellaOps Router infrastructure. Sprints are organized for maximum agent independence while respecting dependencies. ## Key Documents | Document | Purpose | |----------|---------| | [specs.md](./specs.md) | **Canonical specification** - READ FIRST | | [implplan.md](./implplan.md) | High-level implementation plan | | Step files (01-29) | Detailed task breakdowns per phase | ## Sprint Epochs All router sprints use **Epoch 7000** to maintain isolation from existing StellaOps work. | Batch | Focus Area | Sprints | |-------|------------|---------| | 0001 | Foundation | Skeleton, Common library | | 0002 | InMemory Transport | Prove the design before real transports | | 0003 | Microservice SDK | Core infrastructure, request handling | | 0004 | Gateway | Core, middleware, connection handling | | 0005 | Protocol Features | Heartbeat, routing, cancellation, streaming, limits | | 0006 | Real Transports | TCP, TLS, UDP, RabbitMQ | | 0007 | Configuration | Router config, microservice YAML | | 0008 | Integration | Authority, source generator | | 0009 | Examples | Reference implementation | | 0010 | Migration | WebService → Microservice | ## Sprint Dependency Graph ``` ┌─────────────────────────────────────┐ │ SPRINT_7000_0001_0001 │ │ Router Skeleton │ └───────────────┬─────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0001_0002 │ │ Common Library Models │ └───────────────┬─────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0002_0001 │ │ InMemory Transport │ └───────────────┬─────────────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ │ │ │ ▼ │ ▼ ┌─────────────────────┐ │ ┌─────────────────────┐ │ SPRINT_7000_0003_* │ │ │ SPRINT_7000_0004_* │ │ Microservice SDK │ │ │ Gateway │ │ (2 sprints) │◄────────────┼────────────►│ (3 sprints) │ └─────────┬───────────┘ │ └─────────┬───────────┘ │ │ │ └─────────────────────────┼───────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0005_0001-0005 │ │ Protocol Features (sequential) │ │ Heartbeat → Routing → Cancel │ │ → Streaming → Payload Limits │ └───────────────┬─────────────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ TCP Transport │ │ UDP Transport │ │ RabbitMQ │ │ 7000_0006_0001 │ │ 7000_0006_0003 │ │ 7000_0006_0004 │ └────────┬────────┘ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ TLS Transport │ │ 7000_0006_0002 │ └────────┬────────┘ │ └──────────────────────────┬──────────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0007_0001-0002 │ │ Configuration (sequential) │ └───────────────┬─────────────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ │ │ │ ▼ │ ▼ ┌─────────────────────┐ │ ┌─────────────────────┐ │ Authority Integration│ │ │ Source Generator │ │ 7000_0008_0001 │◄────────────┼────────────►│ 7000_0008_0002 │ └─────────────────────┘ │ └─────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0009_0001 │ │ Reference Example │ └───────────────┬─────────────────────┘ │ ┌───────────────▼─────────────────────┐ │ SPRINT_7000_0010_0001 │ │ Migration │ │ (Connects to rest of StellaOps) │ └─────────────────────────────────────┘ ``` ## Parallel Execution Opportunities These sprints can run in parallel: | Phase | Parallel Track A | Parallel Track B | Parallel Track C | |-------|------------------|------------------|------------------| | After InMemory | SDK Core (0003_0001) | Gateway Core (0004_0001) | - | | After Protocol | TCP (0006_0001) | UDP (0006_0003) | RabbitMQ (0006_0004) | | After TCP | TLS (0006_0002) | (continues above) | (continues above) | | After Config | Authority (0008_0001) | Source Gen (0008_0002) | - | ## Sprint Status Overview | Sprint | Name | Status | Working Directory | |--------|------|--------|-------------------| | 7000-0001-0001 | Router Skeleton | TODO | Multiple (see sprint) | | 7000-0001-0002 | Common Library | TODO | `src/__Libraries/StellaOps.Router.Common/` | | 7000-0002-0001 | InMemory Transport | TODO | `src/__Libraries/StellaOps.Router.Transport.InMemory/` | | 7000-0003-0001 | SDK Core | TODO | `src/__Libraries/StellaOps.Microservice/` | | 7000-0003-0002 | SDK Handlers | TODO | `src/__Libraries/StellaOps.Microservice/` | | 7000-0004-0001 | Gateway Core | TODO | `src/Gateway/StellaOps.Gateway.WebService/` | | 7000-0004-0002 | Gateway Middleware | TODO | `src/Gateway/StellaOps.Gateway.WebService/` | | 7000-0004-0003 | Gateway Connections | TODO | `src/Gateway/StellaOps.Gateway.WebService/` | | 7000-0005-0001 | Heartbeat & Health | TODO | SDK + Gateway | | 7000-0005-0002 | Routing Algorithm | TODO | `src/Gateway/StellaOps.Gateway.WebService/` | | 7000-0005-0003 | Cancellation | TODO | SDK + Gateway | | 7000-0005-0004 | Streaming | TODO | SDK + Gateway + InMemory | | 7000-0005-0005 | Payload Limits | TODO | `src/Gateway/StellaOps.Gateway.WebService/` | | 7000-0006-0001 | TCP Transport | TODO | `src/__Libraries/StellaOps.Router.Transport.Tcp/` | | 7000-0006-0002 | TLS Transport | TODO | `src/__Libraries/StellaOps.Router.Transport.Tls/` | | 7000-0006-0003 | UDP Transport | TODO | `src/__Libraries/StellaOps.Router.Transport.Udp/` | | 7000-0006-0004 | RabbitMQ Transport | TODO | `src/__Libraries/StellaOps.Router.Transport.RabbitMq/` | | 7000-0007-0001 | Router Config | TODO | `src/__Libraries/StellaOps.Router.Config/` | | 7000-0007-0002 | Microservice YAML | TODO | `src/__Libraries/StellaOps.Microservice/` | | 7000-0008-0001 | Authority Integration | TODO | Gateway + Authority | | 7000-0008-0002 | Source Generator | TODO | `src/__Libraries/StellaOps.Microservice.SourceGen/` | | 7000-0009-0001 | Reference Example | TODO | `examples/router/` | | 7000-0010-0001 | Migration | TODO | Multiple (final integration) | ## Critical Path The minimum path to a working router: 1. **7000-0001-0001** → Skeleton 2. **7000-0001-0002** → Common models 3. **7000-0002-0001** → InMemory transport 4. **7000-0003-0001** → SDK core 5. **7000-0003-0002** → SDK handlers 6. **7000-0004-0001** → Gateway core 7. **7000-0004-0002** → Gateway middleware 8. **7000-0004-0003** → Gateway connections After these 8 sprints, you have a working router with InMemory transport for testing. ## Isolation Strategy The router is developed in isolation using: 1. **Separate solution file:** `StellaOps.Router.sln` 2. **Dedicated directories:** All router code in new directories 3. **No changes to existing modules:** Until migration sprint 4. **InMemory transport first:** No network dependencies during core development This ensures: - Router development doesn't impact existing StellaOps builds - Agents can work independently on router without merge conflicts - Full testing possible without real infrastructure - Migration is a conscious, controlled step ## Agent Assignment Guidance For maximum parallelization: - **Foundation Agent:** Sprints 7000-0001-0001, 7000-0001-0002 - **SDK Agent:** Sprints 7000-0003-0001, 7000-0003-0002 - **Gateway Agent:** Sprints 7000-0004-0001, 7000-0004-0002, 7000-0004-0003 - **Transport Agent:** Sprints 7000-0002-0001, 7000-0006-* - **Protocol Agent:** Sprints 7000-0005-* - **Config Agent:** Sprints 7000-0007-* - **Integration Agent:** Sprints 7000-0008-*, 7000-0010-0001 - **Documentation Agent:** Sprint 7000-0009-0001 ## Invariants (Never Violate) From `specs.md`, these are non-negotiable: - **Method + Path** is the endpoint identity - **Strict semver** for version matching - **Region from GatewayNodeConfig.Region** (never from headers/host) - **No HTTP transport** between gateway and microservices - **RequiringClaims** (not AllowedRoles) for authorization - **Opaque body handling** (router doesn't interpret payloads) Any change to these invariants requires updating `specs.md` first.