Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
- Implemented MigrationCategoryTests to validate migration categorization for startup, release, seed, and data migrations. - Added tests for edge cases, including null, empty, and whitespace migration names. - Created StartupMigrationHostTests to verify the behavior of the migration host with real PostgreSQL instances using Testcontainers. - Included tests for migration execution, schema creation, and handling of pending release migrations. - Added SQL migration files for testing: creating a test table, adding a column, a release migration, and seeding data.
201 lines
12 KiB
Markdown
201 lines
12 KiB
Markdown
# 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.
|