mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-20 13:30:46 +02:00
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>
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-blockproduct structure clean enough to split into a separate repo later if needed
Suggested layout:
design/: shared V2 design docsprototype/: 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 insideseaweedfs - likely future state:
sw-blockbecomes a standalone sibling repo/product - design and prototype structure should therefore stay product-oriented and not depend on SeaweedFS-specific paths