Joseph Doherty
12eb97e07a
docs(localdb): close the phase 2 gate — questions answered, plan written
...
Task 2 of the Phase 2 plan, plus the clean re-run of Task 1's cut-short
sampling that Task 2 was waiting on.
Gate doc: status NOT STARTED -> CLOSED. All five §5 open questions answered
inline. The questions are kept, not deleted — several of the answers overturn
a premise the gate itself stated, and that reasoning is the value:
- Oplog sizing is not the binding constraint. Cap overrun prunes and flags
needs_snapshot (graceful resync), so the caps need no defensive sizing; the
real ceiling is D6's 4 MB gRPC cap, binding on MaxBatchSize x row-bytes.
- LWW-vs-in-flight-send cannot arise on a correct pair (only the active node
sweeps). The honest cost is D2's semantic change: the standby is convergent,
no longer byte-identical.
- Migration-under-load is designed out, not managed — both mechanisms are
deleted in the same commit and D5 forecloses rolling upgrades.
- Rollback is genuinely "revert the commit": the migration is additive and
leaves the legacy files intact. Bounded cost is the post-cutover delta.
- One DB per process stays; every write axis is bounded.
§2's requirement to state CDC's duplicate-delivery bound is routed explicitly
to Task 21 rather than left implicit.
Task 1 re-run (safe copy-based snap(), both nodes restarted first, six 60s
intervals): sf_messages 0.80 rows/sec insert, 0/sec retry-UPDATE, oplog 0,
alarms 0, max payload_json 76 B, zero SQLite errors across 30 min, both site-a
nodes converged at 3564 rows. Independently confirms the disk-I/O storm was
observer-induced. Recorded with its limits stated: 0.80/s is ~1.6% of the 50/s
ceiling and the retry path was never exercised — acceptable only because that
ceiling is structural rather than empirical, and the rig's 721 B config rows
are explicitly NOT representative.
GATE VERDICT: PROCEED to Task 3. Binding output is MaxBatchSize 500 -> 16.
Claude-Session: https://claude.ai/code/session_01BL2Vu1ESDQ9SCN4gVKkdts
2026-07-20 02:15:53 -04:00
..
2026-06-01 00:23:00 -04:00
2026-07-13 10:23:19 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-21 01:11:35 -04:00
2026-03-17 13:30:23 -04:00
2026-05-28 09:37:45 -04:00
2026-03-17 13:35:54 -04:00
2026-05-28 09:37:45 -04:00
2026-03-17 14:35:52 -04:00
2026-05-28 09:37:45 -04:00
2026-03-21 11:32:24 -04:00
2026-06-01 00:23:00 -04:00
2026-05-28 09:37:45 -04:00
2026-03-22 08:13:23 -04:00
2026-05-28 09:37:45 -04:00
2026-03-24 16:19:39 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-11 10:27:39 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-06-01 00:23:00 -04:00
2026-05-28 09:37:45 -04:00
2026-05-12 00:33:51 -04:00
2026-05-28 09:37:45 -04:00
2026-05-12 05:38:58 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-16 05:25:10 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-18 23:01:30 -04:00
2026-05-28 09:37:45 -04:00
2026-05-19 11:26:37 -04:00
2026-05-19 11:30:21 -04:00
2026-05-19 11:30:21 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-19 05:01:58 -04:00
2026-05-28 09:37:45 -04:00
2026-05-19 06:31:23 -04:00
2026-05-28 09:37:45 -04:00
2026-05-31 21:50:38 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-20 16:56:56 -04:00
2026-05-20 17:44:12 -04:00
2026-05-20 19:43:30 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-20 07:32:47 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-21 14:37:12 -04:00
2026-05-28 09:37:45 -04:00
2026-05-21 06:41:53 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-21 16:58:07 -04:00
2026-05-22 01:13:11 -04:00
2026-05-28 09:37:45 -04:00
2026-05-22 02:03:36 -04:00
2026-05-28 09:37:45 -04:00
2026-05-23 15:34:44 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-23 05:36:08 -04:00
2026-05-31 23:32:53 -04:00
2026-05-28 09:37:45 -04:00
2026-06-02 01:23:52 -04:00
2026-05-24 07:26:20 -04:00
2026-06-16 20:37:51 -04:00
2026-05-24 04:52:59 -04:00
2026-06-16 20:30:29 -04:00
2026-06-16 20:30:29 -04:00
2026-05-29 07:28:21 -04:00
2026-05-29 07:39:44 -04:00
2026-05-29 08:12:43 -04:00
2026-06-01 00:23:00 -04:00
2026-05-28 11:43:04 -04:00
2026-05-28 11:43:04 -04:00
2026-05-28 09:27:31 -04:00
2026-07-10 12:49:44 -04:00
2026-06-01 00:23:00 -04:00
2026-05-31 03:29:37 -04:00
2026-05-31 21:58:49 -04:00
2026-05-31 21:39:23 -04:00
2026-05-31 22:05:13 -04:00
2026-06-03 13:58:14 -04:00
2026-06-03 15:24:05 -04:00
2026-06-03 15:24:05 -04:00
2026-06-05 09:39:35 -04:00
2026-06-05 09:52:12 -04:00
2026-06-05 09:52:12 -04:00
2026-06-06 11:23:59 -04:00
2026-06-06 11:44:56 -04:00
2026-06-06 12:37:47 -04:00
2026-06-06 13:55:19 -04:00
2026-06-06 13:59:21 -04:00
2026-06-06 14:31:18 -04:00
2026-06-06 16:10:07 -04:00
2026-06-07 03:26:25 -04:00
2026-06-07 04:33:16 -04:00
2026-06-07 09:53:34 -04:00
2026-06-07 10:00:48 -04:00
2026-06-07 10:31:02 -04:00
2026-07-10 12:49:44 -04:00
2026-06-15 15:04:28 -04:00
2026-06-16 08:12:49 -04:00
2026-06-15 09:32:14 -04:00
2026-06-15 09:32:14 -04:00
2026-06-16 08:31:19 -04:00
2026-06-16 08:35:05 -04:00
2026-06-16 08:55:09 -04:00
2026-06-25 14:11:25 -04:00
2026-06-25 14:15:39 -04:00
2026-06-16 22:00:10 -04:00
2026-06-16 21:10:21 -04:00
2026-06-16 21:12:52 -04:00
2026-06-16 21:12:52 -04:00
2026-06-16 16:34:56 -04:00
2026-06-16 15:16:06 -04:00
2026-06-16 16:34:56 -04:00
2026-06-16 18:34:34 -04:00
2026-06-16 17:13:14 -04:00
2026-06-16 18:27:10 -04:00
2026-06-16 19:07:32 -04:00
2026-06-16 19:09:12 -04:00
2026-06-16 19:09:12 -04:00
2026-06-17 14:06:08 -04:00
2026-06-17 14:14:58 -04:00
2026-06-17 14:14:58 -04:00
2026-07-10 12:18:46 -04:00
2026-06-17 19:32:58 -04:00
2026-06-17 19:32:58 -04:00
2026-06-17 11:00:41 -04:00
2026-06-17 11:24:03 -04:00
2026-06-17 09:15:42 -04:00
2026-07-10 09:29:38 -04:00
2026-06-17 08:58:05 -04:00
2026-07-10 12:49:44 -04:00
2026-06-18 01:57:18 -04:00
2026-06-18 01:57:18 -04:00
2026-06-18 05:25:04 -04:00
2026-06-18 05:29:39 -04:00
2026-06-18 05:31:01 -04:00
2026-06-18 10:01:38 -04:00
2026-06-18 10:08:57 -04:00
2026-06-18 10:08:57 -04:00
2026-06-18 19:18:49 -04:00
2026-06-18 19:01:54 -04:00
2026-06-18 20:20:39 -04:00
2026-06-18 19:15:54 -04:00
2026-06-19 09:34:45 -04:00
2026-06-19 09:38:32 -04:00
2026-06-19 09:38:32 -04:00
2026-07-10 03:52:04 -04:00
2026-06-26 05:01:16 -04:00
2026-06-26 05:19:24 -04:00
2026-06-26 17:35:07 -04:00
2026-06-26 17:35:07 -04:00
2026-06-26 17:35:07 -04:00
2026-06-27 12:04:12 -04:00
2026-06-27 12:09:49 -04:00
2026-06-27 14:07:25 -04:00
2026-07-13 01:45:50 -04:00
2026-07-13 11:00:11 -04:00
2026-07-13 09:49:53 -04:00
2026-07-10 11:36:35 -04:00
2026-07-10 11:36:35 -04:00
2026-07-19 02:34:38 -04:00
2026-07-19 10:00:50 -04:00
2026-07-20 02:01:00 -04:00
2026-07-20 02:15:53 -04:00
2026-07-20 02:15:53 -04:00
2026-07-20 02:15:53 -04:00
2026-07-20 02:01:42 -04:00
2026-05-28 09:37:45 -04:00
2026-06-01 00:23:00 -04:00
2026-06-01 00:23:00 -04:00
2026-05-18 22:57:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-03-16 19:51:49 -04:00
2026-03-16 20:13:04 -04:00
2026-03-21 01:11:35 -04:00
2026-03-16 20:35:24 -04:00
2026-03-21 01:11:35 -04:00
2026-03-16 20:57:46 -04:00
2026-05-13 13:30:07 -04:00
2026-03-16 22:19:29 -04:00
2026-03-21 01:11:35 -04:00
2026-03-16 22:19:29 -04:00
2026-05-13 13:30:07 -04:00
2026-03-16 15:34:54 -04:00
2026-03-16 22:19:29 -04:00
2026-03-16 22:19:29 -04:00
2026-03-16 15:34:54 -04:00
2026-03-16 22:19:29 -04:00
2026-03-16 15:34:54 -04:00
2026-03-16 22:19:29 -04:00
2026-03-16 15:34:54 -04:00
2026-05-13 13:30:07 -04:00
2026-05-13 13:30:07 -04:00