
pingqiuandClaude Opus 4.6
d2d57851b0
feat: rebuild MVP — dual-lane session with bitmap protection
Rebuild session protocol implementation for v2-rebuild-mvp-session-protocol.md.
New files:
- rebuild_bitmap.go: RebuildBitmap — session-scoped dense bitset for
WAL-applied LBA tracking. MarkApplied on local WAL write (not receive).
ShouldApplyBase returns false for WAL-covered LBAs (WAL always wins).
- rebuild_session.go: RebuildSession — replica-side two-line rebuild.
WAL lane (ApplyWALEntry) + base lane (ApplyBaseBlock) with bitmap
conflict resolution. TryComplete requires BOTH base_complete AND
wal_applied_lsn >= target_lsn. Volume-level control surface:
StartRebuildSession, ApplyRebuildSessionWALEntry/BaseBlock,
MarkRebuildSessionBaseComplete, TryCompleteRebuildSession,
CancelRebuildSession, ActiveRebuildSession.
- rebuild_mvp_test.go: 4 correctness tests — base+WAL converge,
WAL-applied never overwritten by base, bitmap set on applied not
received, control surface start/supersede/complete.
- rebuild_transport_test.go: 2 transport-level tests — two-line with
real WAL shipping, live writes during base copy with bitmap conflict.
Design docs:
- v2-rebuild-mvp-session-protocol.md: MVP spec with message set, apply
rules, completion/failure/crash rules, test matrix
- v2-sync-recovery-protocol.md: full protocol context (keepup/catchup/
rebuild unified design, primary decision logic, two-line model)
- v2-session-protocol-shape.md: protocol shape overview
Protocol engine (reference, not production):
- sw-block/protocol/: 7-event engine with ~300 lines, 13 tests
6 rebuild tests pass, all existing component tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 14:30:34 -07:00
..
2026-04-04 11:01:12 -07:00
2025-11-04 13:02:22 -08:00
2026-01-07 13:06:08 -08:00
2026-02-22 13:47:29 -08:00
2026-02-23 16:27:08 -08:00
2026-01-03 22:45:48 -08:00
2026-04-04 14:03:21 -07:00
2026-04-03 14:24:13 -07:00
2026-04-05 23:47:07 -07:00
2026-04-02 16:25:43 -07:00
2026-04-07 14:30:34 -07:00
2026-04-07 14:30:34 -07:00
2026-04-04 08:43:21 -07:00
2019-03-03 10:17:44 -08:00
2025-12-05 15:59:12 -08:00
2026-01-07 13:06:08 -08:00
2025-12-26 13:26:25 -08:00
2026-01-07 13:06:08 -08:00
2025-12-16 12:41:04 -08:00
2026-01-16 19:48:09 -08:00
2025-10-24 01:26:42 -07:00
2026-01-07 13:06:08 -08:00
2025-11-25 19:35:19 -08:00
2026-01-29 14:42:09 -08:00
2026-01-29 21:45:15 -08:00
2025-08-11 16:45:13 -07:00
2026-01-26 22:59:43 -08:00
2025-06-24 08:44:06 -07:00
2026-01-07 13:06:08 -08:00
2025-11-21 14:46:32 -08:00
2025-06-24 08:44:06 -07:00
2025-11-28 11:52:57 -08:00
2025-07-16 23:39:27 -07:00
2025-08-21 08:28:07 -07:00
2026-02-06 21:54:43 -08:00
2025-12-12 12:51:48 -08:00
2026-01-29 21:45:15 -08:00
2026-02-20 18:42:00 -08:00
2025-12-14 21:56:07 -08:00
2025-12-14 21:56:07 -08:00
2026-02-03 17:43:58 -08:00
2026-04-06 19:55:12 -07:00
2026-04-05 23:47:07 -07:00
2026-04-05 23:47:07 -07:00
2026-04-05 19:39:00 -07:00
2026-04-05 16:23:35 -07:00
2026-04-06 19:55:12 -07:00
2026-04-05 18:56:40 -07:00
2026-04-04 14:21:31 -07:00
2026-03-23 02:12:42 -07:00
2026-04-06 19:55:12 -07:00
2026-03-23 02:12:25 -07:00
2026-04-05 15:45:26 -07:00
2026-04-05 18:49:37 -07:00
2026-01-07 13:06:08 -08:00
2026-02-04 08:48:55 -08:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-01-07 13:06:08 -08:00
2022-07-29 00:17:28 -07:00
2025-12-19 00:15:39 -08:00
2026-01-11 12:31:46 -08:00
2026-01-23 12:25:11 -08:00
2026-04-04 16:13:06 -07:00
2026-02-22 23:45:48 -08:00
2026-04-06 19:55:12 -07:00
2026-03-24 01:00:27 -07:00
2026-04-06 19:55:12 -07:00
2025-11-26 08:01:19 -08:00
2025-09-04 05:39:56 -07:00
2026-04-06 19:55:12 -07:00
2026-03-02 11:34:06 -08:00
2026-04-02 16:25:43 -07:00
2026-04-06 19:55:12 -07:00
2026-04-02 16:25:43 -07:00
2026-04-03 20:58:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-05 11:38:05 -07:00
2026-04-03 11:47:41 -07:00
2026-04-03 15:02:50 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-02 16:20:22 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-02 16:26:17 -07:00
2026-03-31 10:46:17 -07:00
2026-04-06 19:55:12 -07:00
2026-04-02 16:26:17 -07:00
2026-03-02 11:34:06 -08:00
2026-04-03 20:58:12 -07:00
2026-04-02 16:25:43 -07:00
2026-04-06 19:55:12 -07:00
2026-04-02 16:20:22 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-03-31 13:38:30 -07:00
2026-04-03 08:48:13 -07:00
2026-04-05 11:38:05 -07:00
2026-04-05 11:38:05 -07:00
2026-01-18 14:02:34 -08:00
2026-02-09 07:46:34 -08:00
2026-02-09 07:46:34 -08:00
2026-01-07 13:06:08 -08:00
2026-02-19 12:26:27 -08:00
2026-02-06 10:58:43 -08:00
2026-02-02 13:21:02 -08:00
2026-04-05 23:47:07 -07:00
2026-04-05 16:10:57 -07:00
2026-04-05 16:15:54 -07:00
2026-04-06 19:55:12 -07:00
2026-04-06 19:55:12 -07:00
2026-04-04 16:13:06 -07:00
2022-07-29 00:17:28 -07:00
2026-02-24 20:07:26 -08:00
2026-02-09 21:46:55 -08:00
2026-02-09 12:34:38 -08:00
2022-07-29 00:17:28 -07:00
2026-01-07 13:06:08 -08:00
2026-02-02 13:21:02 -08:00
2026-02-02 13:21:02 -08:00
2026-02-16 15:09:01 -08:00
2026-02-06 10:58:43 -08:00
2026-02-02 13:21:02 -08:00
2022-10-14 00:18:09 -07:00
2026-02-02 13:21:02 -08:00
2026-02-02 13:21:02 -08:00
2026-04-05 11:38:05 -07:00
2026-04-07 14:30:34 -07:00
2026-04-07 14:30:34 -07:00
2025-12-02 23:19:14 -08:00
2016-06-02 18:09:14 -07:00
2025-12-05 15:59:12 -08:00
2025-11-26 08:01:19 -08:00
2026-02-06 21:54:43 -08:00
2025-12-16 13:42:18 -08:00
2026-04-04 16:13:06 -07:00
2026-03-31 10:46:17 -07:00
2025-11-29 10:06:11 -08:00
2026-01-07 13:06:08 -08:00