- Updated JavaScriptCallGraphExtractorTests to improve naming conventions and test cases for Azure Functions, CLI commands, and socket handling. - Modified NodeCallGraphExtractorTests to correctly assert exceptions for null inputs. - Enhanced WitnessModalComponent tests in Angular to use Jasmine spies and improved assertions for path visualization and signature verification. - Added ConnectionState property for tracking connection establishment time in Router.Common. - Implemented validation for HelloPayload in ConnectionManager to ensure required fields are present. - Introduced RabbitMqContainerFixture method for restarting RabbitMQ container during tests. - Added integration tests for RabbitMq to verify connection recovery after broker restarts. - Created new BinaryCallGraphExtractorTests, GoCallGraphExtractorTests, and PythonCallGraphExtractorTests for comprehensive coverage of binary, Go, and Python call graph extraction functionalities. - Developed ConnectionManagerTests to validate connection handling, including rejection of invalid hello messages and proper cleanup on client disconnects.
13 KiB
Stella Ops Router - Sprint Index
BLOCKED Tasks: Before working on BLOCKED tasks, review ../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.
Archive notice (2025-12-19): This index lives under
docs/router/archived/and is not an active tracker. Statuses and working directories were audited against current repo layout; all tasks in this archive are now markedDONEwith corresponding implementation/tests.
Key Documents
| Document | Purpose |
|---|---|
| specs.md | Canonical specification - READ FIRST |
| 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 | DONE | Multiple (see sprint) |
| 7000-0001-0002 | Common Library | DONE | src/__Libraries/StellaOps.Router.Common/ |
| 7000-0002-0001 | InMemory Transport | DONE | src/__Libraries/StellaOps.Router.Transport.InMemory/ |
| 7000-0003-0001 | SDK Core | DONE | src/__Libraries/StellaOps.Microservice/ |
| 7000-0003-0002 | SDK Handlers | DONE | src/__Libraries/StellaOps.Microservice/ |
| 7000-0004-0001 | Gateway Core | DONE | src/__Libraries/StellaOps.Router.Gateway/ |
| 7000-0004-0002 | Gateway Middleware | DONE | src/__Libraries/StellaOps.Router.Gateway/ |
| 7000-0004-0003 | Gateway Connections | DONE | src/__Libraries/StellaOps.Router.Gateway/ + src/__Libraries/StellaOps.Router.Transport.InMemory/ |
| 7000-0005-0001 | Heartbeat & Health | DONE | src/__Libraries/StellaOps.Microservice/ + src/__Libraries/StellaOps.Router.Gateway/ |
| 7000-0005-0002 | Routing Algorithm | DONE | src/__Libraries/StellaOps.Router.Gateway/ |
| 7000-0005-0003 | Cancellation | DONE | src/__Libraries/StellaOps.Router.Gateway/ + src/__Libraries/StellaOps.Router.Transport.InMemory/ |
| 7000-0005-0004 | Streaming | DONE | src/__Libraries/StellaOps.Router.Gateway/ + src/__Libraries/StellaOps.Router.Transport.InMemory/ |
| 7000-0005-0005 | Payload Limits | DONE | src/__Libraries/StellaOps.Router.Gateway/ |
| 7000-0006-0001 | TCP Transport | DONE | src/__Libraries/StellaOps.Router.Transport.Tcp/ |
| 7000-0006-0002 | TLS Transport | DONE | src/__Libraries/StellaOps.Router.Transport.Tls/ |
| 7000-0006-0003 | UDP Transport | DONE | src/__Libraries/StellaOps.Router.Transport.Udp/ |
| 7000-0006-0004 | RabbitMQ Transport | DONE | src/__Libraries/StellaOps.Router.Transport.RabbitMq/ |
| 7000-0007-0001 | Router Config | DONE | src/__Libraries/StellaOps.Router.Config/ |
| 7000-0007-0002 | Microservice YAML | DONE | src/__Libraries/StellaOps.Microservice/ |
| 7000-0008-0001 | Authority Integration | DONE | src/__Libraries/StellaOps.Router.Gateway/ + src/Authority/* |
| 7000-0008-0002 | Source Generator | DONE | src/__Libraries/StellaOps.Microservice.SourceGen/ |
| 7000-0009-0001 | Reference Example | DONE | examples/router/ |
| 7000-0010-0001 | Migration | DONE | Multiple (final integration) |
| 7000-0011-0001 | Router Testing Sprint | DONE | tests/ + src/__Libraries/__Tests/ |
Critical Path
The minimum path to a working router:
- 7000-0001-0001 → Skeleton
- 7000-0001-0002 → Common models
- 7000-0002-0001 → InMemory transport
- 7000-0003-0001 → SDK core
- 7000-0003-0002 → SDK handlers
- 7000-0004-0001 → Gateway core
- 7000-0004-0002 → Gateway middleware
- 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:
- Separate solution file:
StellaOps.Router.sln - Dedicated directories: All router code in new directories
- No changes to existing modules: Until migration sprint
- 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.