Organize all product strategy and domain modeling documentation into a dedicated .product-strategy directory for better separation from code. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
331 lines
9.2 KiB
Markdown
331 lines
9.2 KiB
Markdown
# Aether Backlog: Quick Reference
|
|
|
|
**Full backlog:** `/BACKLOG.md` (2600+ lines, complete details)
|
|
|
|
This page is a quick reference for navigating the backlog.
|
|
|
|
---
|
|
|
|
## Phase Overview
|
|
|
|
| Phase | Name | Capabilities | Issues | Dependencies |
|
|
|-------|------|--------------|--------|--------------|
|
|
| 1 | Event Sourcing Foundation | 1, 2, 3 | 17 | None (foundation) |
|
|
| 2 | Local Event Bus | 8 | 9 | Phase 1 |
|
|
| 3 | Cluster Coordination | 5, 6, 7 | 20 | Phase 1 |
|
|
| 4 | Namespace & NATS | 4, 9 | 21 | Phases 1-3 (parallel) |
|
|
|
|
---
|
|
|
|
## Issue Count by Context
|
|
|
|
| Bounded Context | Phase 1 | Phase 2 | Phase 3 | Phase 4 | Total |
|
|
|-----------------|---------|---------|---------|---------|-------|
|
|
| Event Sourcing | 10 | - | - | - | 10 |
|
|
| OCC | 2 | - | - | - | 2 |
|
|
| Event Bus | - | 9 | - | 3 | 12 |
|
|
| Cluster | - | - | 20 | - | 20 |
|
|
| Namespace | - | - | - | 4 | 4 |
|
|
| Documentation | - | - | - | 14 | 14 |
|
|
| **Total** | 12 | 9 | 20 | 21 | 67 |
|
|
|
|
---
|
|
|
|
## Phase 1: Event Sourcing Foundation (Issues 1.1-1.12)
|
|
|
|
### Core Storage (1.1-1.5)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 1.1 | SaveEvent with monotonic version | Command | P0 |
|
|
| 1.2 | Enforce append-only | Rule | P0 |
|
|
| 1.3 | Publish EventStored | Event | P0 |
|
|
| 1.4 | Publish VersionConflict | Event | P0 |
|
|
| 1.5 | GetLatestVersion query | Query | P0 |
|
|
|
|
### State Rebuild (1.6-1.10)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 1.6 | GetEvents for replay | Query | P0 |
|
|
| 1.7 | Snapshot invalidation policy | Rule | P1 |
|
|
| 1.8 | Publish SnapshotCreated | Event | P1 |
|
|
| 1.9 | GetEventsWithErrors | Query | P1 |
|
|
| 1.10 | SnapshotStore interface | Interface | P0 |
|
|
|
|
### OCC (1.11-1.12)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 1.11 | Fail-fast on conflict | Rule | P0 |
|
|
| 1.12 | Document retry patterns | Docs | P1 |
|
|
|
|
---
|
|
|
|
## Phase 2: Local Event Bus (Issues 2.1-2.9)
|
|
|
|
### Routing & Filtering (2.1-2.7)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 2.1 | Publish command | Command | P1 |
|
|
| 2.2 | Subscribe with filter | Command | P1 |
|
|
| 2.3 | Enforce exact isolation | Rule | P1 |
|
|
| 2.4 | Document wildcard security | Docs | P1 |
|
|
| 2.5 | Publish SubscriptionCreated | Event | P2 |
|
|
| 2.6 | Publish EventPublished | Event | P2 |
|
|
| 2.7 | GetSubscriptions query | Query | P2 |
|
|
|
|
### Backpressure (2.8-2.9)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 2.8 | Non-blocking delivery | Rule | P1 |
|
|
| 2.9 | Document backpressure | Docs | P2 |
|
|
|
|
---
|
|
|
|
## Phase 3: Cluster Coordination (Issues 3.1-3.17)
|
|
|
|
### Topology & Leadership (3.1-3.7)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 3.1 | JoinCluster protocol | Command | P1 |
|
|
| 3.2 | LeaderElection | Command | P0 |
|
|
| 3.3 | Single leader invariant | Rule | P0 |
|
|
| 3.4 | Publish LeaderElected | Event | P1 |
|
|
| 3.5 | Publish LeadershipLost | Event | P2 |
|
|
| 3.6 | GetClusterTopology | Query | P1 |
|
|
| 3.7 | GetLeader | Query | P0 |
|
|
|
|
### Shard Distribution (3.8-3.11)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 3.8 | Consistent hash ring | Command | P1 |
|
|
| 3.9 | Single shard owner invariant | Rule | P0 |
|
|
| 3.10 | Publish ShardAssigned | Event | P2 |
|
|
| 3.11 | GetShardAssignments | Query | P1 |
|
|
|
|
### Failure & Recovery (3.12-3.17)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 3.12 | Node health checks | Command | P1 |
|
|
| 3.13 | RebalanceShards | Command | P0 |
|
|
| 3.14 | No-orphan invariant | Rule | P0 |
|
|
| 3.15 | Publish NodeFailed | Event | P2 |
|
|
| 3.16 | Publish ShardMigrated | Event | P2 |
|
|
| 3.17 | Document actor migration | Docs | P2 |
|
|
|
|
---
|
|
|
|
## Phase 4: Namespace & NATS (Issues 4.1-4.8)
|
|
|
|
### Namespace Storage (4.1-4.4)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 4.1 | Stream naming | Rule | P1 |
|
|
| 4.2 | Storage isolation | Rule | P0 |
|
|
| 4.3 | Design patterns | Docs | P1 |
|
|
| 4.4 | Format validation | Validation | P2 |
|
|
|
|
### NATS Delivery (4.5-4.8)
|
|
|
|
| Issue | Title | Type | Priority |
|
|
|-------|-------|------|----------|
|
|
| 4.5 | NATSEventBus | Command | P1 |
|
|
| 4.6 | Exactly-once delivery | Rule | P1 |
|
|
| 4.7 | Publish EventPublished | Event | P2 |
|
|
| 4.8 | Cross-node subscription | Query | P1 |
|
|
|
|
---
|
|
|
|
## Dependency Graph
|
|
|
|
```
|
|
Phase 1 (Foundation)
|
|
├─ 1.1 (SaveEvent)
|
|
│ ├─ 1.2 (Append-only)
|
|
│ ├─ 1.3 (EventStored event)
|
|
│ ├─ 1.4 (VersionConflict event)
|
|
│ ├─ 1.5 (GetLatestVersion)
|
|
│ ├─ 1.6 (GetEvents)
|
|
│ │ ├─ 1.7 (Snapshot policy)
|
|
│ │ ├─ 1.8 (SnapshotCreated)
|
|
│ │ └─ 1.9 (GetEventsWithErrors)
|
|
│ └─ 1.10 (SnapshotStore)
|
|
├─ 1.11 (Fail-fast)
|
|
│ └─ 1.12 (Retry patterns)
|
|
|
|
Phase 2 (Event Bus)
|
|
├─ 2.2 (Subscribe)
|
|
│ ├─ 2.1 (Publish)
|
|
│ │ ├─ 2.3 (Exact isolation)
|
|
│ │ ├─ 2.5 (SubscriptionCreated)
|
|
│ │ └─ 2.6 (EventPublished)
|
|
│ └─ 2.7 (GetSubscriptions)
|
|
├─ 2.4 (Wildcard docs)
|
|
├─ 2.8 (Non-blocking)
|
|
│ └─ 2.9 (Backpressure docs)
|
|
|
|
Phase 3 (Cluster)
|
|
├─ 3.1 (JoinCluster)
|
|
│ ├─ 3.2 (LeaderElection)
|
|
│ │ ├─ 3.3 (Single leader)
|
|
│ │ ├─ 3.4 (LeaderElected event)
|
|
│ │ ├─ 3.5 (LeadershipLost event)
|
|
│ │ └─ 3.7 (GetLeader)
|
|
│ ├─ 3.6 (GetClusterTopology)
|
|
│ ├─ 3.8 (Consistent hash)
|
|
│ │ ├─ 3.9 (Single owner)
|
|
│ │ ├─ 3.10 (ShardAssigned)
|
|
│ │ └─ 3.11 (GetShardAssignments)
|
|
│ ├─ 3.12 (Health checks)
|
|
│ │ ├─ 3.13 (RebalanceShards)
|
|
│ │ │ ├─ 3.14 (No-orphan)
|
|
│ │ │ ├─ 3.15 (NodeFailed)
|
|
│ │ │ └─ 3.16 (ShardMigrated)
|
|
│ │ └─ 3.17 (Migration docs)
|
|
|
|
Phase 4 (Namespace & NATS)
|
|
├─ 4.1 (Stream naming)
|
|
│ ├─ 4.2 (Storage isolation)
|
|
│ ├─ 4.3 (Design patterns)
|
|
│ └─ 4.4 (Validation)
|
|
├─ 4.5 (NATSEventBus) [depends on 2.1]
|
|
│ ├─ 4.6 (Exactly-once)
|
|
│ ├─ 4.7 (EventPublished)
|
|
│ └─ 4.8 (Cross-node subscription)
|
|
```
|
|
|
|
---
|
|
|
|
## Critical Path
|
|
|
|
**Minimum viable cluster (13 issues):**
|
|
|
|
1. 1.1 SaveEvent (P0)
|
|
2. 1.5 GetLatestVersion (P0)
|
|
3. 1.6 GetEvents (P0)
|
|
4. 1.10 SnapshotStore (P0)
|
|
5. 1.11 Fail-fast (P0)
|
|
6. 2.1 Publish (P1)
|
|
7. 2.2 Subscribe (P1)
|
|
8. 3.2 LeaderElection (P0)
|
|
9. 3.8 Consistent hash (P1)
|
|
10. 3.12 Health checks (P1)
|
|
11. 3.13 RebalanceShards (P0)
|
|
12. 4.1 Stream naming (P1)
|
|
13. 4.5 NATSEventBus (P1)
|
|
|
|
**Estimated duration:** 4-6 weeks (aggressive)
|
|
|
|
---
|
|
|
|
## Implementation Recommendations
|
|
|
|
### Start With Phase 1
|
|
- Everything depends on it
|
|
- Core domain logic
|
|
- Enables testing without clustering
|
|
- Parallel: can implement 1.1-1.5 concurrently
|
|
|
|
### Phase 2 Early
|
|
- Observability (metrics, logging)
|
|
- Tests easier without cluster
|
|
- Validate design before clustering
|
|
|
|
### Phase 3 in Parallel
|
|
- Can start while Phase 2 incomplete
|
|
- Higher complexity (needs multi-node tests)
|
|
- Consider spike if team unfamiliar with clustering
|
|
|
|
### Phase 4 Last
|
|
- Namespace: orthogonal (can do anytime)
|
|
- NATS: depends on 2.1 (Publish)
|
|
- Complex (distributed tracing, durability)
|
|
|
|
---
|
|
|
|
## Key Files
|
|
|
|
| Purpose | File |
|
|
|---------|------|
|
|
| Full backlog | `/BACKLOG.md` |
|
|
| Capabilities | `/CAPABILITIES.md` |
|
|
| Domain models | `/DOMAIN_MODEL_*.md` |
|
|
| Bounded contexts | `/BOUNDED_CONTEXT_MAP.md` |
|
|
| This doc | `/BACKLOG_QUICK_REFERENCE.md` |
|
|
|
|
---
|
|
|
|
## Using This Backlog
|
|
|
|
### For Project Managers
|
|
- Use Phase breakdown for milestones
|
|
- Critical path shows minimum scope
|
|
- Dependency graph prevents sequencing errors
|
|
|
|
### For Engineers
|
|
- Each issue has acceptance criteria
|
|
- DDD guidance explains domain concepts
|
|
- Dependencies prevent blocking work
|
|
- Start with Phase 1 for foundation
|
|
|
|
### For Architects
|
|
- Capability map shows user value
|
|
- Bounded contexts explain isolation
|
|
- Feature sets show vertical slices
|
|
- Domain models guide implementation
|
|
|
|
---
|
|
|
|
## Common Questions
|
|
|
|
**Q: Can phases be parallelized?**
|
|
A: Partially. Phase 1 must complete first. Phases 2-3 can overlap after Phase 1. Phase 4 can be delayed.
|
|
|
|
**Q: What if we skip Phase 3 (clustering)?**
|
|
A: Possible. You get event sourcing, local pub/sub, namespaces. But distributed actors won't work. Phase 1 + 2 + 4 is a valid product.
|
|
|
|
**Q: What's the hardest phase?**
|
|
A: Phase 3 (clustering). Requires multi-node tests, distributed algorithms, failure scenarios. Phase 1 is foundational but not complex.
|
|
|
|
**Q: Can we deliver value incrementally?**
|
|
A: Yes. After Phase 1: "Event sourcing with OCC". After Phase 2: "Local pub/sub". After Phase 3: "Distributed cluster". After Phase 4: "Multi-tenant NATS".
|
|
|
|
**Q: Which issues are P0 vs P1?**
|
|
A: P0 = blocking (no alternative); P1 = important (ship without, but limited); P2 = nice-to-have (polish, observability). Focus on P0 first.
|
|
|
|
---
|
|
|
|
## Metrics to Track
|
|
|
|
- **Velocity:** Issues per sprint (size estimates TBD)
|
|
- **Burndown:** Phase completion vs planned
|
|
- **Quality:** Test coverage per phase
|
|
- **Risk:** Dependency blocking (red flag)
|
|
|
|
---
|
|
|
|
## Related Skills
|
|
|
|
- `/issue-writing` - Create Gitea issues from this backlog
|
|
- `/spawn-issues` - Parallelize implementation with worktrees
|
|
- `/product-strategy` - Decompose vision to work (meta-skill used here)
|
|
- `/ddd` - Domain-driven design concepts and patterns
|
|
|
|
---
|
|
|
|
## Questions?
|
|
|
|
Refer to:
|
|
- Full backlog: `/BACKLOG.md`
|
|
- Domain models: `/DOMAIN_MODEL_*.md`
|
|
- Capabilities: `/CAPABILITIES.md`
|
|
- Vision: `/vision.md`
|
|
- Product strategy: `/STRATEGY_CHAIN.md`
|