* doc: P14 S8 final bounded close — evidence matrix + P15 handoff
Adds the six S8 closure deliverables consolidating S4-S7 evidence,
classifying V2 scenarios, and mapping residual product gaps onto
canonical P15 tracks (per v3-phase-15-product-plan.md §4).
New docs:
- v3-phase-14-s8-assignment.md — S8 execution contract.
- v3-phase-14-s8-final-bounded-close.md — bounded P14 target,
accepted topology, reject conditions.
- v3-phase-14-s8-evidence-matrix.md — 16 claims × {L0, L1, L2, L3,
Status, Residual}. 15 PROVEN, 1 PARTIAL (Claim 15 fence
quantitative bound, P14 internal follow-up). Rounds 2-3 architect
corrections: Claim 10 / 12 L2 narrowed; Claim 6 refresh gap closed
by the new L1 test (see companion commit in seaweed_block).
- v3-phase-14-s8-v2-scenario-classification.md — every V2 scenario
mapped to RUNNABLE-P14 / BLOCKED-FRONTEND / BLOCKED-OPS /
BLOCKED-HA / BLOCKED-PERF / PORT-MECHANISM; scenario YAMLs kept
as L3 shape, not executed evidence.
- v3-phase-14-s8-p15-handoff.md — 11 rows (10 canonical P15 tracks
+ 1 P14 internal follow-up anchored to Claim 15 PARTIAL); §4
integrity check split by row class.
- v3-phase-14-s8-closure.md — final P14 closure statement matching
the close doc §10 wording; explicit non-goals; all 9 P15 tracks
named with canonical numbering.
No claim of CSI / frontend / migration / security / performance /
production readiness. Every product gap is handed off with a
concrete first-proof gate.
Companion: seaweed_block commit adds the IntentRefreshEndpoint L1
route test that closes Claim 6.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* doc: P14 S8 — resolve port-now doc conflict (CodeRabbit #4)
final-bounded-close.md §7 previously said "Port now: testrunner,
scenarios, component harness, qa_block, learn/test" while
v2-scenario-classification.md §2 says S8 does NOT port testrunner
machinery and defers all actual porting to P15.
Align final-bounded-close.md §7 with classification: section
renamed "Classify now (S8 scope), port deferred to P15". Every
item now states which P15 track actually owns the port (Final Gate
or T1 Frontend + Data Path as applicable).
No scope expansion; no new handoff gap. Pure doc-consistency fix.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.6 KiB
V3 Phase 14 S8 Assignment
Date: 2026-04-19 Status: draft Owner: sw, with architect and tester review Purpose: execute the final bounded P14 close by producing evidence, scenario classification, and a clean P15 handoff
1. One-Line Goal
Close P14 as a bounded internal single-active-master topology/control-plane loop, backed by L0/L1/L2 evidence and honest L3/P15 carry-forward.
2. Scope
Included:
- S4-S7 route evidence consolidation
- acceptance matrix for all P14 internal claims
- final supported topology statement
- unsupported/deferred list
- V2 testrunner/scenario port classification
- process smoke gaps review
- 14A final targeted review packet
- P15 handoff mapping
Excluded:
- CSI implementation
- external API implementation
- user data-path production readiness
- migration implementation
- security implementation
- multi-master / HA
- performance or soak claims
3. Required Work
A. Evidence Inventory
Create an evidence table that maps S4-S7 claims to concrete tests and commands.
Must include:
- observation institution
- durable authority institution
- convergence institution
- real-route restart closure
- placement/rebalance/failover policy for accepted topology
- unsupported topology evidence
- old-slot/stale observation rejection
- per-volume isolation
B. Gap Classification
Classify every missing proof as one of:
- P14 internal blocker
- P14 S8 test/harness gap
- P15 product-surface gap
- 14A verification follow-up
- explicit non-goal
Any P14 internal blocker must be fixed before S8 close. A P15 product-surface gap must be carried forward, not disguised as P14 closure.
C. V2 Scenario Port Classification
Inspect V2 scenario/test assets and produce a table:
| V2 asset | P14 use | P15 use | Port shape | Blocker |
|---|
Start with:
weed/storage/blockvol/testrunner/weed/storage/blockvol/testrunner/scenarios/public/ha-restart-recovery.yamlweed/storage/blockvol/testrunner/scenarios/public/ha-failover.yamlweed/storage/blockvol/testrunner/scenarios/public/fault-partition.yamlweed/storage/blockvol/test/component/weed/server/qa_block_*learn/testevidence layout
D. L2 Process Smoke Decision
Answer whether current sparrow hidden smoke surfaces are sufficient for S8 L2 internal close.
If not sufficient, add the minimum internal S8 smoke surface needed to prove the S4-S7 route without inventing P15 external product APIs.
The smoke must check:
- real process starts
- durable authority reloads
- observation or fixture input drives controller
- assignment reaches adapter through
VolumeBridge - restart does not mint backward
- structured output can be consumed by tester
E. 14A Final Targeted Pass
Prepare a 14A checklist for:
- stale authority after restart
- stale observation after reassignment
- old-slot delivery after authority move
- unsupported topology no-op/evidence
- convergence stuck/supersede clearing
- publication honesty during transition
- per-volume isolation
14A should review findings first. It should not expand P14 scope.
F. P15 Handoff
Produce a P15 handoff table:
| Gap | Why not P14 | P15 owner track | Required first proof |
|---|
Must include:
- CSI lifecycle
- frontend data path
- external volume API
- security/auth
- diagnostics/operator workflow
- migration/coexistence
- deployment/hardening
- final cluster validation agent
4. Required Commands
At minimum run or document blockers for:
go test ./core/engine ./core/adapter ./core/authority -count=1
go test ./cmd/sparrow ./core/authority -count=1
go test ./... -count=1
If sandbox or Windows filesystem behavior blocks durable-store tests, rerun outside the sandbox and record the reason.
If L3 hardware scenarios are not runnable, do not fake them. Record the scenario names and blockers.
5. Expected Files
Expected docs:
sw-block/design/v3-phase-14-s8-final-bounded-close.md— this scope documentsw-block/design/v3-phase-14-s8-assignment.md— this assignmentsw-block/design/v3-phase-14-s8-closure.md— final closure statement, created after implementation/evidence- updates to
v3-phase-14-checklist.md - updates to
v3-phase-14-log.md - updates to
v3-phase-14a-checklist.mdif 14A final pass finds coverage gaps
Expected code/tests only if needed:
- internal process smoke helper in
cmd/sparrow - component evidence consolidation tests in
core/authorityor a shared component package - scenario classification artifacts under the chosen test/runner directory
6. Acceptance
S8 can be accepted only when:
- the evidence matrix exists and is honest
- all P14 internal blockers are either fixed or explicitly rejected from the P14 claim
- L0 and L1 tests pass
- L2 process smoke is present or its absence is classified as a P15 product-surface blocker
- L3 scenarios are classified with runnable/deferred/blocker status
- 14A final targeted pass has no open P14 safety blocker
- P15 handoff maps every product gap to a P15 track
- final closure statement does not claim production readiness
7. Review Focus
Architect should review:
- whether S8 closure is product-honest
- whether any P15 work was pulled backward into P14
- whether any P14 internal truth gap was pushed forward into P15
- whether test evidence matches the claimed layer
- whether V2 porting stays mechanism-only
Tester should review:
- whether evidence is reproducible
- whether commands and scenario blockers are specific
- whether L2/L3 gaps are visible
- whether final artifacts are enough to start P15 without re-litigating P14