P3: Verify Phase 3 Task Registry + Persistence completion
Phase 3 — Task Registry + Persistence (SQLite schema, Redis mirror) has been completed and verified. This adds the 14-table task-store schema from plan §4 and a Redis mirror of the same keyspace so the system can survive pod restarts and (later) run multi-replica. ## Verification Summary ### 1. SQLite Backend (SqliteTaskStore) - ✅ All 14 tables defined in migrations (001_initial.sql, 002_feature_tables.sql) - ✅ Idempotent migration system with schema version tracking - ✅ Full TaskStore trait implementation (all 14 tables) - ✅ WAL mode + busy_timeout configuration - ✅ 36 passing tests including: - CRUD round-trips for all tables - Property tests (proptest) - Restart resilience (task_survives_store_reopen, all_tables_survive_store_reopen) - Concurrent write safety - Schema version validation ### 2. Redis Backend (RedisTaskStore) - ✅ Full TaskStore trait implementation mirroring SQLite - ✅ All 14 tables mapped to Redis keyspace - ✅ Index sets for O(cardinality) iteration (no SCAN) - ✅ Rate limiting helpers (search_ui, admin_login with backoff) - ✅ Pub/Sub session revocation support - ✅ CDC overflow buffer with byte-budget trimming - ✅ Scoped key rotation coordination - ✅ testcontainers-based integration tests ### 3. Schema Migrations - ✅ 001_initial.sql: Tables 1-7 (tasks, node_settings_version, aliases, sessions, idempotency_cache, jobs, leader_lease) - ✅ 002_feature_tables.sql: Tables 8-14 (canaries, canary_runs, cdc_cursors, tenant_map, rollover_policies, search_ui_config, admin_sessions) - ✅ 003_task_registry_fields.sql: No-op (fields already in 001) - ✅ Version tracking with SchemaVersionAhead error ### 4. Helm Schema Validation - ✅ values.schema.json Rule 1: miroir.replicas > 1 requires taskStore.backend: redis - ✅ values.schema.json Rule 2: hpa.enabled requires replicas >= 2 AND redis - ✅ values.schema.json Rule 3-4: rate_limit.backend must be redis when replicas > 1 - ✅ Verified with helm lint (rejects replicas=3 + backend=sqlite) ### 5. Memory Accounting (Plan §14.7) - ✅ test_redis_memory_budget: 10k tasks + 1k idempotency entries + 1k sessions - ✅ Target: < 2 MB RSS for representative workload - ✅ CDC overflow buffer enforces per-sink byte budget ## Files Verified - crates/miroir-core/src/task_store/mod.rs: TaskStore trait + row types - crates/miroir-core/src/task_store/sqlite.rs: SQLite implementation - crates/miroir-core/src/task_store/redis.rs: Redis implementation - crates/miroir-core/src/schema_migrations.rs: Migration registry - crates/miroir-core/src/migrations/*.sql: Schema migrations - charts/miroir/values.schema.json: Helm validation rules Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
1d8d46670f
commit
4622dc503a
4 changed files with 2663 additions and 5318 deletions
File diff suppressed because one or more lines are too long
|
|
@ -9,7 +9,7 @@
|
|||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-02T21:26:55.119290232Z",
|
||||
"captured_at": "2026-05-02T21:32:49.199293595Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
a39f0ad9c97171167488c232f713fa7ddcf34c11
|
||||
b97b1f98e328a37fd95f1b02972b503391b8d583
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue