Files
seaweedfs/sw-block
pingqiuandClaude Opus 4.7 de2767cd3c T4 L1 survey round 2: sw pre-scan output + H6 narrowing + H7 + §3.13
Fulfills §5 step 1 pre-scan gate with concrete V3 source evidence and
propagates findings to §3 observations.

## Pre-scan output (§5 step 1)

5-row checklist table against V3 source:
  - SetReplicaAddrs / ReplicaAddrs / replica fields: NONE in
    `core/frontend/` or `core/storage/` (grep-clean)
  - Sync/Write remote-ack semantics: NONE; all returns pure-local
    (`types.go:50-78`, `logical_storage.go:57-70`)
  - LogicalStorage.Write LSN: pure-local; distributed durability
    is explicit non-contract (`logical_storage.go:45`)
  - Ship/Replicate/Quorum/Barrier/Durability identifiers: none in
    code; comments only
  - Replication stubs: NONE; but three fully-implemented replica-
    side primitives on LogicalStorage: ApplyEntry / AdvanceFrontier
    / AllBlocks, with impls in walstore.go + smartwal/store.go

Net: frontend/durable layer clean; LogicalStorage layer already
committed to a specific replica-side shape. L2 must ALIGN with
that shape, not override it.

## §3 updates driven by pre-scan

§3.11 (H6) narrowed with V3 existing-shape evidence:
  - Option A unlikely (no supporting V3 shape; StorageBackend is
    replication-unaware)
  - Option B effectively ruled out (ApplyEntry/AdvanceFrontier sit
    BELOW Backend on LogicalStorage; a ReplicatedBackend wrapper
    would either reach past its wrapped contents or duplicate the
    storage-layer contract)
  - Option C leading (matches V3 existing Provider-owns-lifecycle
    shape; generalizes BUG-005 lesson)

§3.12 (H7) new — LSN surface-up gap:
  - `Backend.Write → (int, error)` discards LSN
  - `LogicalStorage.Write → (lsn, error)` returns it
  - Primary-side shipper needs per-write LSN
  - H7a (extend Backend sig) unlikely; H7b (Provider intercepts
    at LogicalStorage layer) natural fit with H6 Option C; H7c
    (side-channel NextLSN+Boundaries delta) rejected as racy
  - H7 resolution coupled to H6 — joint L2 LOCK

§3.13 new — replica-side bypasses Backend entirely:
  - Structural finding already locked by V3 shape, NOT an L2 choice
  - Primary-side traffic: session → handler → Backend → LogicalStorage
  - Replica-side traffic: network frame → ReplicaReceiver →
    LogicalStorage.ApplyEntry (bypasses Backend)
  - Explicit so L2 builds on it rather than fighting

## Feedback-round log + change log

§5 feedback log gains round 2 entry; §6 change log gains full
round-2 detail with line-level citations.

No sign event; this is iterative informal feedback per §8C.8
lightweight cadence. L1 stays DRAFT until bundled T4 T-start
three-sign with L2 + L3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:21:35 -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