jedarden
ba70cd25c0
P3: Complete Phase 3 — Task Registry + Persistence (SQLite + Redis)
Implements all 14 tables from plan §4 with dual backend support.
## Implementation
### TaskStore Trait (502 lines)
- Complete API covering all 14 tables
- Runtime backend selection (sqlite | redis)
### SQLite Backend (2,536 lines)
- rusqlite-based with WAL mode
- Idempotent migrations (schema_versions table)
- 36 tests passing (proptest + integration)
### Redis Backend (3,884 lines)
- Full TaskStore trait implementation
- Uses `_index` sets for O(1) list queries (no SCAN)
- 33 integration tests (testcontainers)
### Schema Files
- 001_initial.sql: Tables 1-7
- 002_feature_tables.sql: Tables 8-14
- 003_task_registry_fields.sql: No-op marker
### Validation
- Helm values.schema.json enforces HA constraints:
- replicas > 1 requires backend: redis
- HPA requires replicas >= 2 + redis
- Verified with helm lint
### Documentation
- REDIS_MEMORY_ACCOUNTING.md: Complete sizing guide
## Definition of Done — Complete
✅ rusqlite store with idempotent table initialization
✅ Redis store mirrors TaskStore API
✅ Migrations/versioning with schema_version row
✅ Property tests (proptest) for SQLite
✅ Restart resilience integration tests
✅ Redis integration tests (testcontainers)
✅ `_index` pattern for list queries
✅ Helm schema enforces HA requirements
✅ Redis memory accounting (plan §14.7)
Total: 6,922 lines of production code + tests
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>