Execution-closure targets: - P1: TransferFullBase — reuse rebuild.go TCP protocol - P2: TransferSnapshot — checkpoint image + WAL tail - P3: TruncateWAL — AdvanceTail + superblock update - P4: Runtime ownership — V2 orchestrator drives execution Key reuse sources identified: - rebuild.go: rebuildFullExtent (client), RebuildServer (server) - wal_writer.go: AdvanceTail - flusher.go: updateSuperblockCheckpoint - blockvol.go: ScanWALEntries (already wired) Slice order: full-base first (highest value), then snapshot, then truncation, then runtime ownership. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
10 KiB
V2 Phase Development Plan
Date: 2026-03-31 Status: active Purpose: define the execution-oriented phase plan after the current candidate-path work, with explicit module status and target phase ownership
Why This Document Exists
The project now needs a development plan that is:
- phase-oriented
- execution-oriented
- large enough to avoid overhead-heavy micro-slices
- explicit about which module belongs to which future phase
This document is the planning bridge between:
v2-product-completion-overview.md../.private/phase/phase-08.md- future implementation phases
Planning Rules
Use these rules for all later phases:
- one phase should close one meaningful product/engineering outcome
- every phase must have a clear verification mechanism
- phases should prefer real code/test/evidence over wording-only progress
- later phases may reuse V1 engineering reality, but must not inherit V1 recovery semantics as truth
- a phase is too small if it does not move the overall product-completion state clearly
Current Baseline
Current accepted/closing path through Phase 08:
- protocol/algo truth set is strong
- engine recovery core is strong
- real control delivery exists on the chosen path
- real one-chain catch-up and rebuild closure exist on the chosen path
- unified hardening validation exists on the chosen path
- one bounded candidate statement exists for:
RF=2sync_all- existing master / volume-server heartbeat path
Phase-accounting note:
- this document assumes the current
Phase 08path and bookkeeping are being closed consistently - if
Phase 08bookkeeping is still open, read the candidate statement items above as the current accepted/closing path, not as a fully closed phase label
This means the next phases should focus mainly on:
- production-grade execution completeness
- stronger runtime ownership
- stronger control-plane closure
- later product-surface rebinding
- production hardening
Phase Roadmap
Phase 09: Production Execution Closure
Goal:
- turn validation-grade backend execution into production-grade backend execution
Must prove:
- full-base rebuild performs real data transfer
- snapshot rebuild performs real image transfer
- replica-ahead path is physically executable, not only detected
- runtime execution ownership is stronger than the current bounded candidate path
Typical outputs:
- real
TransferFullBase - real
TransferSnapshot - real
TruncateWAL - stronger executor/runtime integration in the live volume-server path
Verification mechanism:
- one-chain execution tests on real backend paths
- cleanup assertions after success/failure/cancel
- focused adversarial tests for truncation and rebuild execution
Workload:
- large
- this is likely the single biggest remaining engineering phase
Phase 10: Real Control-Plane Closure
Goal:
- strengthen from accepted assignment-entry closure to fuller end-to-end control-plane closure
Must prove:
- heartbeat/gRPC-level delivery is real for the chosen path
- failover / reassignment state converges through the real control path
- local and remote identity are consistent enough for product use
Typical outputs:
- stronger heartbeat/gRPC delivery proof
- stronger result/reporting convergence
- cleaner local identity than transport-shaped
listenAddr
Verification mechanism:
- real failover/reassignment tests at the fuller control-plane level
- identity/fencing assertions through the end-to-end path
Workload:
- medium-large
Phase 11: Product Surface Rebinding
Goal:
- bind product-facing surfaces onto the V2-backed block path after backend closure is strong enough
Must prove:
- the V2-backed backend can support selected product surfaces without semantic drift
- reuse of V1 surfaces does not reintroduce V1 recovery truth
Candidate areas:
- snapshot product path
CSINVMeiSCSI
Verification mechanism:
- selected surface integration tests
- product-surface contract checks
- no-overclaim review that the surface does not imply unsupported backend capability
Workload:
- medium-large
- can be split by product surface if needed, but only after backend closure is strong
Phase 12: Production Hardening
Goal:
- move from candidate-safe to production-safe
Must prove:
- restart/recovery stability under repeated disturbance
- long-run/soak viability
- operational diagnosability
- acceptable production blockers list or production-ready gate
Verification mechanism:
- soak/adversarial runs
- failover/restart under disturbance
- runbook/debug validation
Workload:
- large
Module Status Map
| Module area | Current status | Current owner phase | Next target phase | Notes |
|---|---|---|---|---|
sw-block/engine/replication core FSM/orchestrator/driver |
Strong | Phase 08 accepted |
Phase 09 |
Main later work is runtime/product execution closure, not new core semantics. |
Engine executor real I/O boundary (CatchUpIO / RebuildIO) |
Strong on chosen path | Phase 08 P2/P3 |
Phase 09 |
Keep the boundary; make underlying transfer/truncate production-grade. |
weed/storage/blockvol/v2bridge/control.go |
Strong on chosen path | Phase 08 P1 |
Phase 10 |
Next step is fuller control-plane closure, not new mapping semantics. |
weed/storage/blockvol/v2bridge/reader.go |
Strong | Phase 08 P2/P3 |
Phase 09/10 |
Keep comments/status aligned with candidate-path committed-truth decision. |
weed/storage/blockvol/v2bridge/pinner.go |
Strong | Phase 08 P1/P3 |
Phase 09 |
Retention safety proven; later work is product-grade execution under that safety. |
weed/storage/blockvol/v2bridge/executor.go WAL scan |
Strong | Phase 08 P2 |
Phase 09 |
Real scan is good; later work is real transfer/truncate completeness. |
v2bridge TransferFullBase |
Partial | Phase 08 P2/P4 |
Phase 09 |
Validation-grade now; target is real production streaming. |
v2bridge TransferSnapshot |
Partial | Phase 08 P2/P4 |
Phase 09 |
Validation-grade now; target is real image transfer. |
v2bridge TruncateWAL |
Weak/stub | Phase 08 P4 bound |
Phase 09 |
Must become a real executable path. |
weed/server/volume_server_block.go V2 assignment intake |
Medium-strong | Phase 08 P1 |
Phase 09/10 |
Real intake exists; later work is stronger runtime ownership + fuller control-plane proof. |
blockvol WAL/flusher/checkpoint runtime |
Reuse reality | Existing production code | Phase 09 |
Reuse implementation; do not let old semantics redefine V2 truth. |
blockvol rebuild transport/server reality |
Reuse with redesign boundary | Existing production code | Phase 09 |
Good area for production execution closure work. |
local server identity (localServerID) |
Partial | Phase 08 bounded |
Phase 10 |
Still transport-shaped; should become cleaner under control-plane closure. |
| Snapshot product path | Partial/reuse candidate | not core in Phase 08 |
Phase 11 |
Reuse implementation, but V2 semantics own placement and claims. |
CSI integration |
Deferred reuse candidate | not core in Phase 08 |
Phase 11 |
Product surface, not next core closure target. |
NVMe / iSCSI front-ends |
Deferred reuse candidate | not core in Phase 08 |
Phase 11 |
Rebind after backend path is stronger. |
| Testrunner / infra / metrics | Strong support layer | existing | Phase 10-12 |
Reuse to validate later control-plane and hardening phases. |
Completion-State Targets
Use these rough targets to judge whether a phase is moving the product meaningfully.
| Phase | Expected completion move |
|---|---|
Phase 09 |
from validation-grade backend execution to production-grade backend execution |
Phase 10 |
from bounded control-entry proof to stronger end-to-end control-plane closure |
Phase 11 |
from backend-ready path to selected product-surface readiness |
Phase 12 |
from candidate-safe to production-safe |
Near-Term Execution Direction
If the goal is to maximize product completion efficiently, the recommended order is:
- finish
Phase 08bookkeeping cleanly Phase 09production execution closurePhase 10real control-plane closurePhase 11product surface rebindingPhase 12production hardening
The most important near-term engineering weight should go to Phase 09.
Short Summary
The V2 line already has a real bounded candidate path. The next development plan should treat later work as product-completion phases, not more protocol discovery.
The main heavy engineering work still ahead is:
- production-grade execution
- stronger runtime/control closure
- later product-surface rebinding
- production hardening