sw-block/design/v3-phase-14-s8-final-bounded-close.md
Date: 2026-04-19 Status: draft Purpose: close the bounded P14 internal topology/control-plane claim and hand off product surfaces to P15 without pretending P14 is production-ready block storage
P14 S8 closes one bounded internal control-plane product shape:
heartbeat/observation -> ClusterSnapshot -> TopologyController -> Publisher durable authority -> VolumeBridge -> adapter/engine -> observed convergence/restart evidence.
S8 is not another protocol slice and not a broad product surface slice. It is the final acceptance and evidence package for the internal single-active-master topology/control-plane loop built by S4-S7.
S8 must prove, at the appropriate test layer, that:
S8 does not prove:
Those are P15 tracks and the P15 final cluster validation gate.
S8 may prepare scenario shapes and port test runner muscle for those later gates, but it must not claim them as P14 closure.
The S8 supported topology claim is bounded to:
Epoch / EndpointVersionVolumeBridge delivery into the adapter/engine pathAnything outside this set is unsupported or deferred.
S8 must produce a closure table with these columns:
| Claim | L0 Unit | L1 Component | L2 Process | L3 Scenario | Status | Residual |
|---|
Minimum claims:
VolumeBridgeRequired command baseline:
go test ./core/engine ./core/adapter ./core/authority -count=1
Must include boundary guards for:
AssignmentInfo mintingRequired routes:
ObservationHost -> TopologyController -> Publisher -> VolumeBridge -> VolumeReplicaAdapterRequired shapes:
sparrow durable authority restart smokeL2 tests must check exit code, artifact/log output, lock release, reload count, and no backward mint.
S8 should port scenario shapes from V2 and classify each as:
Initial scenario candidates:
S8 can close P14 with L3 blockers only if the blockers are genuinely P15 product-surface gaps, not internal truth gaps.
S8 does not port testrunner machinery into the V3 tree (round-2 doc-consistency fix, aligned with v3-phase-14-s8-v2-scenario-classification.md §2). The items below are the V2 muscles S8 inventories and classifies; actual porting is a P15 Final Gate (Cluster Validation Agent) deliverable, not an S8 one.
weed/storage/blockvol/testrunner/
weed/storage/blockvol/testrunner/scenarios/public and selected internal scenarios
weed/storage/blockvol/test/component/
weed/server/qa_block_*
learn/test evidence convention
promotion.goHandleAssignment / promote / demoteS8 must deliver:
Reject S8 if:
The final S8 closure statement must say exactly:
The expected final claim is:
P14 has closed one bounded single-active-master internal topology/control-plane truth loop for the accepted topology set. P14 has not closed CSI, external API, frontend data path, migration, security, deployment, performance, or production readiness.