pingqiu
|
8110555978
|
docs(sw-block): dual-lane recv appendWAL vs writeExtentDirect; backlog iterator cost
Consensus §6.10: WAL path uses appendWAL + bitmap; base uses
writeExtentDirect (no WAL/LSN); substrate must expose both. §6.3:
ring/sequential backlog model, stateful vs stateless ReadAtLSN table,
O(N) vs O(N log N). §7 routing + INV rows aligned. Mini-plan §12.4
checklist expanded (v0.12). Wal-shipper spec §7.4 note. v3.15.
Made-with: Cursor
|
2026-04-30 13:26:33 -07:00 |
|
pingqiu
|
c48804479c
|
docs(sw-block): normative Drive/Apply pseudocode and cross-links
Add §6.3 Drive(input) and §6.10 ApplyWAL/ApplyBASE blocks with state,
atomic envelope, and INV wiring; align cursor/head with exclusive-slot
semantics plus §6.1/CHK-REWIND note; revise §13 StrictRealtimeOrdering
for cursor convention. Wal-shipper spec §7.3 references consensus §6.3;
§7.4 points at §6.10 pseudocode. Mini-plan §12 defers Drive to consensus
§6.3 only (v0.11). Consensus v3.14.
|
2026-04-30 13:06:40 -07:00 |
|
pingqiu
|
91a313e1e1
|
sw-block/design: §13 E-WALSHIPPER-DUAL-MODE + mini-plan §11.2a + spec sync
Architect-approved exception (consensus v3.9, 2026-04-30): WalShipper
dual-mode contract carves Realtime out of §6.3(B) timer + §6.8(3)(9)
send(incoming, debt) normative scope. Backlog mode is fully normative;
Realtime is per-append (T4a no-replay), with StrictRealtimeOrdering
as the production safety switch.
Files:
v3-recovery-algorithm-consensus.md
- NEW §13: Architect-approved exceptions, with E-WALSHIPPER-
DUAL-MODE entry. Old §13 Revision → §14; old §14 Document
map → §15. Cross-refs in §I, §6.3(A)(B), §6.8 checklist,
§V §12 (CHK-WALSHIPPER-TIMER-DRAIN explicitly limited to
ModeBacklog), §15 (index gains §13).
- §14 revision row v3.9.
v3-recovery-wal-shipper-mini-plan.md
- §11.1 G-TIMER row updated to "C2 + dual-mode/§13".
- §11.2 replaced (was: pre-merge "Realtime drains on cursor<head"
bullets) with C2 dual-mode contract + §11.2a normative table:
* Backlog: §6.3 / §6.8(3)(4)(9) fully apply (timer, scan,
oldest-first, send(·, debt)).
* Realtime: NotifyAppend per-LSN-in-order; lsn==cursor+1
invariant; no substrate replay (§13 carve-out).
* Production safety switch: StrictRealtimeOrdering.
- §11.3 compliance receipt rebuilt as 1–9 ordered table with
commit SHAs (P2d cb8ff1c, C1 294d4bf, C2 53c292f, C3 40f2935,
review-fix 377bcb0).
- §11.4 test anchor table gains StrictRealtimeOrdering opt-in.
- §11.5 invariants gain (4) §13 dual-mode + (5) replicaID drift.
- §11.6 reshaped as production-migration table:
* Engine drives rebuild-on-gap before flipping
StrictRealtimeOrdering=true.
* Fix replicaID drift in startRebuildDualLane (sink uses
engine replicaID; bridge.coord uses dl.ReplicaID).
* Hardware-run carries: §IV T2 (barrier vs targetLSN),
§IV T7 (R2 saturation under sustained pressure).
* PR template line: ban `lsn > cursor + 1` debt detection
(banned regression anchor; use `cursor < head` if it
ever needs to come back, but only inside Backlog).
- §8 revision: v0.6.
v3-recovery-wal-shipper-spec.md
- Goal/checklist front-matter cross-refs §13 + mini-plan §11.2a.
- §10 revision row aligning with consensus v3.9.
Companion implementation on seaweed_block g7-redo/wal-shipper-impl:
- 377bcb0 review-fix: T4a Realtime sequence guard + drainOpportunity TOCTOU
- cb17338 docs: drainOpportunity comment matches §13 dual-mode contract
|
2026-04-30 09:48:10 -07:00 |
|