|
1 | 1 | # 92-gap-backlog |
2 | 2 |
|
3 | | -> Last updated: 2025-12-22 (Round 63: Fixed 3 critical divergences) |
| 3 | +> Last updated: 2025-12-22 (Round 64: Gap discovery and triage organization) |
4 | 4 |
|
5 | 5 | ## Status |
6 | 6 |
|
|
14 | 14 | - Resurrection parity: ✅ **25/25 PASSING** (Round 63) |
15 | 15 | - Sentinel parity: ✅ **6/6 PASSING** (Round 63) |
16 | 16 | - Multinode sync: ✅ **6/6 PASSING** (Round 63) |
| 17 | +- Schema mismatch: ⚠️ **11/12 PASSING** (1 divergence: unknown column behavior) |
| 18 | +- Test scripts: **57 total** |
17 | 19 | - Zig implementation: `zig/` |
18 | 20 | - Canonical task queue: `.tasks/{backlog,active,done}/` |
19 | 21 |
|
20 | 22 | ## Now (next parallel assignments) |
21 | 23 |
|
22 | | -**Backlog is empty** — Round 62 test suites completed, Round 63 divergence fixes completed. |
23 | | - |
24 | | -### Triage Inbox (lower priority, not blocking) |
25 | | - |
26 | | -| Task | Summary | Priority | |
27 | | -|------|---------|----------| |
28 | | -| TASK-156 | Linux CI parity | Low | |
29 | | -| TASK-175 | Savepoints during sync | Medium | |
30 | | -| TASK-176 | ATTACH database with CRRs | Medium | |
31 | | -| TASK-178 | VACUUM on CRR database | Low | |
32 | | -| TASK-180 | Site ID collision | Medium | |
33 | | -| TASK-181 | crsql_sha() function | Low | |
34 | | -| TASK-182 | User triggers modify other CRRs | Medium | |
35 | | -| TASK-183 | Wide table performance | Low | |
36 | | -| TASK-186 | Schema mismatch: unknown column behavior | Medium (design decision) | |
| 24 | +**Backlog is empty** — Triage contains 11 items ready for prioritization. |
| 25 | + |
| 26 | +### Triage Inbox (organized by priority) |
| 27 | + |
| 28 | +#### HIGH Priority — Missing Core Features |
| 29 | +| Task | Summary | Risk | Effort | |
| 30 | +|------|---------|------|--------| |
| 31 | +| **TASK-189** | crsql_tracked_peers table missing | Sync clients need this for cursors | Low | |
| 32 | +| **TASK-188** | crsql_get_seq() function missing | API completeness | Low | |
| 33 | + |
| 34 | +#### MEDIUM Priority — Behavioral Parity |
| 35 | +| Task | Summary | Risk | Effort | |
| 36 | +|------|---------|------|--------| |
| 37 | +| **TASK-186** | Schema mismatch: unknown column behavior | Design decision | Low | |
| 38 | +| **TASK-175** | Savepoints during sync | Transaction correctness | Medium | |
| 39 | +| **TASK-176** | ATTACH database with CRRs | Multi-db patterns | Medium | |
| 40 | +| **TASK-180** | Site ID collision handling | Security edge case | Medium | |
| 41 | +| **TASK-182** | User triggers modify other CRRs | Real-world pattern | Medium | |
| 42 | + |
| 43 | +#### LOW Priority — Nice to Have |
| 44 | +| Task | Summary | Risk | Effort | |
| 45 | +|------|---------|------|--------| |
| 46 | +| **TASK-181** | crsql_sha() function | Debug only | Low | |
| 47 | +| **TASK-178** | VACUUM on CRR database | Maintenance op | Low | |
| 48 | +| **TASK-183** | Wide table (50+ cols) performance | Performance only | Medium | |
| 49 | +| **TASK-156** | Linux CI parity | CI only | Medium | |
| 50 | + |
| 51 | +### Function Comparison (Round 64 Discovery) |
| 52 | + |
| 53 | +**Rust/C Functions (22 total):** |
| 54 | +``` |
| 55 | +crsql_after_delete, crsql_after_insert, crsql_after_update |
| 56 | +crsql_as_crr, crsql_as_table, crsql_automigrate |
| 57 | +crsql_begin_alter, crsql_commit_alter |
| 58 | +crsql_config_get, crsql_config_set |
| 59 | +crsql_db_version, crsql_finalize |
| 60 | +crsql_fract_as_ordered, crsql_fract_fix_conflict_return_old_key, crsql_fract_key_between |
| 61 | +crsql_get_seq, crsql_increment_and_get_seq |
| 62 | +crsql_internal_sync_bit, crsql_next_db_version |
| 63 | +crsql_pack_columns, crsql_rows_impacted |
| 64 | +crsql_sha, crsql_site_id |
| 65 | +``` |
| 66 | + |
| 67 | +**Zig Functions (24 total):** |
| 68 | +``` |
| 69 | +crsql_after_delete, crsql_after_insert, crsql_after_update |
| 70 | +crsql_as_crr, crsql_as_table, crsql_automigrate (x2) |
| 71 | +crsql_begin_alter (x2), crsql_commit_alter (x2) |
| 72 | +crsql_config_get, crsql_config_set |
| 73 | +crsql_db_version, crsql_finalize |
| 74 | +crsql_fract_as_ordered, crsql_fract_fix_conflict_return_old_key, crsql_fract_key_between |
| 75 | +crsql_increment_and_get_seq |
| 76 | +crsql_internal_sync_bit, crsql_is_crr, crsql_next_db_version |
| 77 | +crsql_pack_columns, crsql_rows_impacted |
| 78 | +crsql_site_id, crsql_version, crsql_zig_version |
| 79 | +``` |
| 80 | + |
| 81 | +**Missing from Zig:** |
| 82 | +- `crsql_get_seq` — TASK-188 |
| 83 | +- `crsql_sha` — TASK-181 |
| 84 | + |
| 85 | +**Extra in Zig (OK):** |
| 86 | +- `crsql_is_crr` — useful debug function |
| 87 | +- `crsql_version`, `crsql_zig_version` — version info |
| 88 | + |
| 89 | +**Table Comparison:** |
| 90 | +- Rust/C: `crsql_master`, `crsql_site_id`, `crsql_tracked_peers` |
| 91 | +- Zig: `crsql_master`, `crsql_site_id` ← **missing `crsql_tracked_peers`** |
37 | 92 |
|
38 | 93 | **Completed Round 63 (2025-12-22):** |
39 | 94 | - [x] TASK-184: Fix resurrection via sentinel (tombstoned rows now resurrect) ✓ |
|
0 commit comments