Files
seaweedfs/sw-block
pingqiu e0261bfd84 G5-5 mini-plan v0.2: architect REVISE-BEFORE-CODE responses
Addresses 3 architect revision requirements (round 51):

REVISION 1 — process restart distinct from network disconnect:
  Split G5-4 #4 forward-carry into TWO scenarios:
    §2 #3 network disconnect (iptables) — proves live TCP interrupt
          + recovery without process restart
    §2 #4 replica process stop/restart — proves durable reopen +
          master resubscribe + recovery reconstruction
  G5-4 #4 is now FULLY consumed (was: only network proxy in v0.1).

REVISION 2 — storage-aware byte verifier:
  Replace raw walstore .extent peek with storage-abstraction Read(lba):
    helper opens replica's walstore via core/storage/walstore (or
    equivalent OpenReadOnly path), invokes Read(lba) per LBA in the
    range, SHA-256 vs primary's known payload. Raw extent peek
    REJECTED — walstore on-disk includes WAL frames + checkpoints
    + sparse regions + potentially-stale-but-valid blocks; only
    Read(lba) returns the authoritative current value.
  Risk added: if walstore.OpenReadOnly is missing, sw adds it as
  part of this batch (small scope expansion contained in
  core/storage/walstore; read-only opener for verification only,
  NOT a substrate semantic change).

REVISION 3 — named R/H observation source:
  /status?volume=v1 returns frontend.Projection (no R/S/H). G5-5
  adds /status/recovery?volume=v1 returning engine.ReplicaProjection
  (Mode, R, S, H, RecoveryDecision); gated by new --status-recovery
  daemon flag (default off; production binaries don't enable).
  Loopback-only via existing isLoopbackRemote guard. ~30 prod LOC
  + ~30 unit tests. Engine/adapter logic unchanged — surfaces
  already-computed projection through HTTP.

Updated §1 file map, §1.4 truth-domain check, §5 forward-carry
table, §6 risks (3 new rows), §close template unchanged.

Re-submitted for architect §1-§6 ratification. After ratify, sw
codes per §1 file map; estimate ~310 prod LOC + ~30 unit tests.
2026-04-26 21:06:46 -07:00
..

sw-block

Private WAL V2 and standalone block-service workspace.

Purpose:

  • keep WAL V2 design/prototype work isolated from WAL V1 production code in weed/storage/blockvol
  • allow private design notes and experiments to evolve without polluting V1 delivery paths
  • keep the future standalone sw-block product structure clean enough to split into a separate repo later if needed

Suggested layout:

  • design/: shared V2 design docs
  • prototype/: code prototypes and experiments
  • .private/: private notes, phase development, roadmap, and non-public working material

Repository direction:

  • current state: sw-block/ is an isolated workspace inside seaweedfs
  • likely future state: sw-block becomes a standalone sibling repo/product
  • design and prototype structure should therefore stay product-oriented and not depend on SeaweedFS-specific paths