diff --git a/sw-block/.private/phase/phase-13-cp9-mode-normalization.md b/sw-block/.private/phase/phase-13-cp9-mode-normalization.md index d7126644c..c01d55a9b 100644 --- a/sw-block/.private/phase/phase-13-cp9-mode-normalization.md +++ b/sw-block/.private/phase/phase-13-cp9-mode-normalization.md @@ -2,6 +2,8 @@ Date: 2026-04-03 +Status: accepted + ## Current Interpretation Rule Before an explicit `V2 core` exists as a real code structure and live @@ -86,6 +88,27 @@ Exact mode names may change, but the distinctions should remain explicit. | Surface-consistency proof | lookup / heartbeat / tester / debug surfaces use one bounded mode meaning | | Fail-closed proof | `publish_healthy`, `degraded`, and `needs_rebuild` remain distinct and do not overclaim health | +## Accepted Validation Summary + +Tester verdict: `ACCEPT` + +| Proof | Claim | Evidence | +|------|-------|----------| +| `AllocatedOnly` | `RF=1` maps to `allocated_only` | focused mode test | +| `BootstrapPending` (`Replicas` empty) | `RF=2` before replica set closure maps to `bootstrap_pending` | focused mode test | +| `BootstrapPending` (replica not ready) | `RF=2` with replica not ready maps to `bootstrap_pending` | focused mode test | +| `PublishHealthy` | ready + not transport degraded maps to `publish_healthy` | focused mode test | +| `Degraded` | transport degraded maps to `degraded` | focused mode test | +| `NeedsRebuild` | rebuilding role maps to `needs_rebuild` | focused mode test | +| `SurfaceConsistency` | mode / ready / degraded meaning stays aligned across transitions | focused transition checks | +| `InterpretationRule` | current integrated tests are constrained `V1` under `V2` constraints | explicit wording in contract + design docs | +| `NoOverclaim` | checkpoint does not claim pure `V2 core`, launch, or broad transport expansion | explicit boundedness wording | + +Minor note kept bounded: + +1. `assert_block_field` in the testrunner does not yet expose `volume_mode` as a first-class assert case +2. this does not block checkpoint acceptance because the bounded unit and API-surface proofs are already direct + ## Relation to Earlier Checkpoints | Prior checkpoint | What CP13-9 reuses | diff --git a/sw-block/.private/phase/phase-13-log.md b/sw-block/.private/phase/phase-13-log.md index 5de8d7c98..ea3d857e4 100644 --- a/sw-block/.private/phase/phase-13-log.md +++ b/sw-block/.private/phase/phase-13-log.md @@ -1641,3 +1641,216 @@ Review checklist: 3. do lookup / heartbeat / tester surfaces agree on publication truth? 4. does the bounded rerun become attributable? 5. is the slice still bounded to closure rather than mode policy or backend replacement? + +--- + +### `CP13-9` Technical Pack + +Date: 2026-04-03 +Goal: freeze one bounded mode-normalization package for the accepted `RF=2 sync_all` path so current external health/publication meaning is explicit, fail-closed, and clearly understood as constrained `V1` runtime behavior under `V2` constraints + +#### Layer 1: Semantic Core + +##### Problem statement + +`CP13-8` and `CP13-8A` now give one important result: + +1. the bounded real-workload package passes on the chosen path +2. assignment/readiness/publication closure is explicit enough for that path + +What they do **not** yet give is a normalized external mode policy. + +There is still a semantic gap between: + +1. what current `V1` runtime behavior happens to do +2. what the system is allowed to claim externally under `V2` constraints + +The most visible remaining example is the fresh-volume bootstrap behavior: + +1. a newly created `RF=2 sync_all` volume may need the first real replicated write to establish the first true sync/connect proof +2. until that happens, the system must not overclaim fully replicated-healthy state + +`CP13-9` therefore accepts only one bounded thing: + +1. explicit mode/publication normalization for the current constrained path + +It does not accept: + +1. pure `V2 core` extraction +2. launch approval +3. broad transport/product expansion +4. retroactive rewriting of `CP13-8` as if it had already validated a completed `V2 runtime` + +##### State / contract + +`CP13-9` must make these truths explicit: + +1. current integrated evidence is about `V1` runtime under `V2` constraints, not about an already-complete `V2 runtime` +2. external surfaces must use one bounded mode vocabulary for the chosen path +3. a fresh volume before first replicated durability proof is not the same as: + - replica-ready + - publish-healthy + - replication-healthy +4. degraded and `NeedsRebuild` remain distinct fail-closed meanings + +Recommended first-cut mode set: + +1. `allocated_only` +2. `bootstrap_pending` +3. `replica_ready` +4. `publish_healthy` +5. `degraded` +6. `needs_rebuild` + +Exact names may change, but the semantic split must not. + +##### Reject shapes + +Reject before implementation or review if the slice: + +1. keeps one meaning of “healthy” in lookup and another in tester/debug/operator surfaces +2. treats first-write bootstrap as incidental timing rather than an explicit mode policy +3. quietly upgrades the current path from constrained `V1` to completed `V2 runtime` +4. broadens into `Phase 14` pure-core extraction + +#### Layer 2: Execution Core + +##### Current gap `CP13-9` must close + +1. current chosen-path semantics are stronger than before, but the external mode contract is still partly implicit +2. bootstrap-pending behavior is still too easy to describe informally rather than as an explicit allowed state +3. future claims can still drift if the team does not freeze how current constrained-runtime evidence should be interpreted + +##### Suggested file targets + +1. `sw-block/.private/phase/phase-13.md` +2. `sw-block/.private/phase/phase-13-cp9-mode-normalization.md` +3. `sw-block/design/v2-protocol-claim-and-evidence.md` +4. `sw-block/design/v2_mini_core_design.md` +5. `weed/server/*` and tester surfaces only if current mode semantics require explicit surface normalization in code/tests + +##### Validation focus + +Required proofs: + +1. interpretation proof + - current integrated evidence is explicitly described as constrained `V1` under `V2` constraints +2. bootstrap proof + - a fresh `RF=2 sync_all` volume before first replicated write is surfaced as bootstrap-pending or equivalent bounded non-healthy mode +3. surface-consistency proof + - heartbeat / lookup / tester / debug surfaces use one bounded mode meaning +4. boundedness proof + - the checkpoint remains about mode normalization, not pure-core extraction or launch approval + +Reject if: + +1. different surfaces still disagree on whether a fresh or degraded volume is “healthy” +2. a claimed proof still depends on human timing interpretation rather than explicit state/mode meaning +3. the slice has no clear story for how `bootstrap_pending`, `degraded`, and `needs_rebuild` differ + +##### Suggested first cut + +1. freeze one explicit interpretation rule in design/ledger docs +2. freeze one explicit current-path mode contract in a dedicated `CP13-9` doc +3. if needed, add the smallest surface/test changes that make bootstrap-pending and publish-healthy externally distinguishable +4. keep the slice bounded to the accepted chosen path and current runtime + +##### Assignment For `sw` + +1. Goal + - deliver one bounded mode-normalization package for the accepted chosen path +2. Required outputs + - one dedicated `CP13-9` mode contract doc + - one delivery note explaining: + - the normalized mode set + - the interpretation rule for current integrated tests + - any surface/test changes required + - proof shape + - what later phases remain untouched +3. Hard rules + - do not claim a completed `V2 runtime` + - do not broaden into `Phase 14` package extraction + - do not turn this into launch approval or broad product policy + +##### Assignment For `tester` + +1. Goal + - validate that `CP13-9` closes bounded mode-policy meaning and nothing broader +2. Validate + - current integrated evidence is interpreted correctly as constrained `V1` + - fresh-volume bootstrap is not overclaimed as replicated-healthy + - heartbeat / lookup / tester / debug surfaces use one bounded meaning + - no-overclaim around `Phase 14` +3. Reject if + - current evidence is still described as if pure `V2 runtime` already exists + - bootstrap behavior remains informal or timing-based only + - the slice broadens into pure-core extraction or launch claims + +#### Short judgment + +`CP13-9` is acceptable when: + +1. current integrated tests are explicitly interpreted as constrained `V1` under `V2` constraints +2. the chosen path has one bounded external mode contract +3. first-write bootstrap no longer hides inside ambiguous health claims +4. the slice stays clearly separate from `Phase 14` + +--- + +### `CP13-9` Delivery Pack + +Bounded contract: + +1. `CP13-9` accepts mode normalization for the current constrained chosen path only +2. it does not accept pure `V2 core` extraction, launch approval, or broad transport/product expansion + +What `sw` should deliver: + +1. one explicit current-path mode contract +2. one explicit interpretation rule stating that current integrated checks are evaluating `V1` runtime under `V2` constraints +3. one bounded proof package showing: + - bootstrap-pending or equivalent first-write state is explicit + - publish-healthy remains fail-closed + - degraded / `NeedsRebuild` remain distinguishable +4. one delivery note with: + - changed files + - normalized mode names or semantic equivalents + - proof shape + - no-overclaim statement + +Recommended delivery shape: + +1. contract: + - define current-path mode meanings explicitly + - distinguish bootstrap-pending from replica-ready / publish-healthy +2. code/tests: + - make the smallest changes needed so surfaces reflect the normalized meaning +3. note: + - explain why this is still constrained-current-runtime work + - explain why `Phase 14` remains untouched + +Review checklist: + +1. does the slice clearly say current integrated evidence is constrained `V1`, not completed `V2 runtime`? +2. is first-write bootstrap explicit rather than implicit? +3. do heartbeat / lookup / tester / debug surfaces share one bounded meaning? +4. does publish-healthy remain fail-closed? +5. is the slice still bounded to mode normalization rather than pure-core extraction? + +Accepted validation summary: + +1. verdict: + - `ACCEPT` +2. direct bounded proofs verified: + - `allocated_only` + - `bootstrap_pending` with no replicas + - `bootstrap_pending` with replica not ready + - `publish_healthy` + - `degraded` + - `needs_rebuild` + - surface consistency across transitions + - interpretation rule + - no-overclaim +3. bounded follow-up note: + - `assert_block_field` does not yet expose `volume_mode` as a first-class testrunner assert case + - low priority; unit/API proofs already close the checkpoint diff --git a/sw-block/.private/phase/phase-13.md b/sw-block/.private/phase/phase-13.md index f48ccbecf..fe1a4bd55 100644 --- a/sw-block/.private/phase/phase-13.md +++ b/sw-block/.private/phase/phase-13.md @@ -1,7 +1,7 @@ # Phase 13 Date: 2026-04-02 -Status: active +Status: accepted Purpose: carry one explicit engineering gap beyond accepted `Phase 12` hardening into a bounded implementation phase so `RF=2 sync_all` becomes a correct, test-backed replicated durability mode under real reconnect, catch-up, retention, and rebuild conditions ## Why This Phase Exists @@ -672,7 +672,19 @@ Reject if: Status: -- active +- accepted + +Carry-forward: + +1. one bounded real-workload package now passes on the chosen path: + - `RF=2` + - `sync_all` + - iSCSI + - `ext4 + pgbench` + - one failover +2. this checkpoint validates current runtime behavior under accepted `V2` constraints +3. it does not by itself mean a pure `V2 runtime` already exists +4. `CP13-8A` and `CP13-9` must keep that interpretation explicit ### `CP13-8A`: Assignment-to-Publication Closure @@ -750,11 +762,111 @@ Reject if: Status: -- active +- accepted -### Later checkpoints inside `Phase 13` +Carry-forward: -1. `CP13-9`: mode normalization (only after `CP13-8A` closes the assignment/publication contradiction) +1. assignment/readiness/publication closure is now explicit enough for the bounded chosen path +2. the corrected path no longer treats replica allocation or assignment presence as equivalent to replica publication readiness +3. the remaining next step is mode-policy normalization on top of this closed assignment/publication path + +### `CP13-9`: Mode Normalization Under `V2` Constraints + +Goal: + +- freeze one bounded mode-policy contract for the current chosen path so external health/publication meaning no longer drifts between implicit `V1` runtime behavior and `V2` constraint language + +Acceptance object: + +1. `CP13-9` accepts one bounded mode-normalization package for the accepted `RF=2 sync_all` path +2. it accepts mode/publication semantics for the current runtime only under explicit `V2` constraints +3. it does not accept pure `V2 core` extraction, launch approval, or broad transport/product expansion by implication + +Execution steps: + +1. Step 1: interpretation rule freeze + - make explicit that current integrated tests are evaluating `V1` runtime behavior under `V2` constraints + - define `CP13-9` as policy/meaning closure for the constrained current path, not proof that a completed `V2 runtime` already exists +2. Step 2: mode contract freeze + - define one bounded external mode set for the chosen path + - at minimum distinguish: + - allocated / assigned + - bootstrap-pending + - replica-ready + - publish-healthy + - degraded + - `NeedsRebuild` + - define what each surface is allowed to claim for each mode: + - heartbeat + - lookup / REST / tester surfaces + - operator/debug surfaces +3. Step 3: bootstrap-policy closure + - make the first-write / first-connect bootstrap behavior explicit + - ensure a freshly created `RF=2 sync_all` volume is not overclaimed as replicated-healthy before the first real replicated durability proof exists +4. Step 4: proof package + - prove all relevant surfaces agree on the bounded mode meanings + - prove no-overclaim around future pure-core extraction or broad launch claims + +Required scope: + +1. chosen path only: `RF=2 sync_all` +2. current master / volume-server heartbeat path only +3. `blockvol` remains the execution backend +4. current integrated runtime is interpreted as constrained `V1`, not yet as a completed `V2 runtime` + +Must prove: + +1. health/publication meaning is explicit and consistent across product/tester/operator surfaces +2. `bootstrap-pending` or equivalent first-write state is explicit rather than hidden inside ambiguous degraded/healthy output +3. publish/ready semantics remain fail-closed under the accepted replication contract +4. acceptance wording stays bounded to mode normalization for the constrained current path rather than `V2 core` extraction + +Reuse discipline: + +1. prefer surfaced policy/diagnostic/projection work first because this checkpoint is about external mode meaning +2. update `weed/storage/blockvol/*` only if mode normalization exposes a concrete backend leak rather than a surface-meaning gap +3. keep `CP13-1..8A` semantics fixed unless a live contradiction is exposed +4. no checkpoint work may silently broaden into `Phase 14` pure-core extraction or broad rollout claims + +Verification mechanism: + +1. one focused proof set around mode/publication semantics across heartbeat / lookup / tester / debug surfaces +2. explicit tests or bounded evidence that a fresh volume before first replicated write is not overpublished as replicated-healthy +3. explicit checks that degraded / rebuild-required surfaces remain distinguishable and bounded +4. no-overclaim review so `CP13-9` does not absorb `Phase 14` + +Hard indicators: + +1. one accepted interpretation proof: + - current integrated evidence is explicitly described as constrained `V1` under `V2` constraints +2. one accepted bootstrap proof: + - a fresh `RF=2 sync_all` volume before first replicated write is surfaced as bootstrap-pending or equivalent bounded non-healthy mode +3. one accepted surface-consistency proof: + - heartbeat / lookup / tester / debug surfaces agree on the same bounded mode meanings +4. one accepted boundedness proof: + - `CP13-9` claims mode normalization only and leaves pure-core extraction to later phases + +Reject if: + +1. the slice still uses one meaning of “healthy” for lookup and a different one for tester/debug/operator surfaces +2. a fresh volume can still appear fully replicated-healthy before first real replicated durability proof exists +3. the checkpoint quietly claims a completed `V2 runtime` already exists +4. delivery wording broadens into launch approval, broad productization, or `Phase 14` pure-core extraction + +Status: + +- accepted + +Carry-forward: + +1. one bounded mode set is now explicit for the current constrained chosen path: + - `allocated_only` + - `bootstrap_pending` + - `publish_healthy` + - `degraded` + - `needs_rebuild` +2. current integrated tests remain explicitly interpreted as constrained `V1` under `V2` constraints +3. `CP13-9` does not claim pure `V2 core` extraction, launch approval, or broad transport expansion ## Reuse Discipline @@ -766,8 +878,9 @@ Status: ## Expected Outcome -If `Phase 13` succeeds: +`Phase 13` now succeeds with the following closure: 1. reconnect / catch-up / rebuild semantics become explicit and test-backed 2. `sync_all` correctness no longer depends on partial or implicit sender-state assumptions 3. later feature work can reuse a clearer replication contract instead of re-deriving durability semantics each time +4. one bounded real-workload package and one bounded mode-normalization package are both accepted on the current constrained path diff --git a/sw-block/design/v2-protocol-claim-and-evidence.md b/sw-block/design/v2-protocol-claim-and-evidence.md index 4364c59f7..70555486b 100644 --- a/sw-block/design/v2-protocol-claim-and-evidence.md +++ b/sw-block/design/v2-protocol-claim-and-evidence.md @@ -30,6 +30,23 @@ When reviewing any new slice, bug fix, workload run, or delivery note, ask: If the answer changes the current state of the product, update this ledger in the same change. +## Interpretation Rule For Current Integrated Evidence + +Until an explicit `V2 core` exists as a real code structure and live event/command owner, +current integrated evidence should be interpreted as: + +1. validation of current `V1` runtime behavior under `V2` constraints +2. not proof that a completed `V2 runtime` already exists + +This means: + +1. protocol truths and claim boundaries may already be `V2`-owned +2. workload and integration passes may still be about the constrained current runtime +3. later phases must keep separating: + - semantic authority + - constrained current-runtime validation + - future pure-core extraction + ## Current Chosen Envelope This is the bounded envelope currently allowed for active V2 claims: @@ -46,7 +63,7 @@ This is the bounded envelope currently allowed for active V2 claims: Current explicit exclusions: 1. `RF>2` as a general accepted product claim -2. broad mode normalization before `CP13-9` +2. broad mode normalization outside the accepted bounded `CP13-9` contract 3. broad rollout / launch approval 4. broad transport matrix claims outside explicitly named evidence 5. treating synthetic benchmarks as substitutes for real workload validation @@ -68,6 +85,7 @@ These are the currently binding constraints that later work must preserve. | `CP13-6` | retention must fail closed for lagging replicas | `Phase 13` | active | | `CP13-7` | unrecoverable gap must escalate to `NeedsRebuild` and block normal paths | `Phase 13` | active | | `CP13-8A` | assignment delivered != receiver ready != publish healthy | `Phase 13` | active | +| `CP13-9` | bounded external mode meaning must stay explicit and surface-consistent on the constrained current path | `Phase 13` | active | ## Accepted Baselines @@ -75,7 +93,8 @@ These are the currently binding constraints that later work must preserve. |----------|---------------------------|-------------------|------------------| | `CP13-1` replication baseline inventory | which tests originally passed/failed/`PASS*` before `CP13-2..7` closure | `sw-block/.private/phase/phase-13-cp1-baseline.md` | valid as baseline inventory, not as final product claim | | `Phase 12 P4` bounded floor | one bounded performance floor and rollout-gate package on the accepted chosen path | `sw-block/.private/phase/phase-12-p4-floor.md`, `phase-12-p4-rollout-gates.md` | valid inside its named envelope | -| real-workload envelope draft | one bounded `ext4 + pgbench` package for `CP13-8` | `sw-block/.private/phase/phase-13-cp8-workload-validation.md` | active draft; full claim pending rerun after blockers close | +| `CP13-8` bounded real-workload pass | one bounded `ext4 + pgbench` package passes on the accepted chosen path | `sw-block/.private/phase/phase-13-cp8-workload-validation.md` | valid inside its named envelope and current constrained-`V1` interpretation | +| `CP13-9` bounded mode contract | one bounded external mode set is explicit on the constrained current path | `sw-block/.private/phase/phase-13-cp9-mode-normalization.md` | valid inside its named envelope and constrained-`V1` interpretation | ## Allowed Claims @@ -85,9 +104,10 @@ These are the claims that may currently be made without overreach. |----------|---------------|----------------|-----------------|--------| | `C-RF2-SYNCALL-CONTRACT` | the accepted `RF=2 sync_all` replication contract is closed at protocol/unit/adversarial level through `CP13-1..7` | protocol/unit/adversarial evidence only | `Phase 13` docs and tests | allowed | | `C-WORKLOAD-DRAFT` | one bounded real-workload validation package is defined for `CP13-8` | package definition only, not final pass claim | `phase-13-cp8-workload-validation.md`, YAML scenario | allowed | -| `C-WORKLOAD-PASS` | the bounded real-workload package passes on the chosen path | only after rerun succeeds on corrected path | `CP13-8` rerun artifact | not yet allowed | -| `C-ADAPTER-CLOSURE` | assignment / readiness / publication closure is explicit on the chosen path | only after `CP13-8A` acceptance | `CP13-8A` proof package | in progress | -| `C-MODE-NORMALIZATION` | mode policy / normalization is closed | only in `CP13-9` or later | future | not allowed | +| `C-WORKLOAD-PASS` | the bounded real-workload package passes on the chosen path | bounded chosen path only; interpreted as current `V1` runtime under `V2` constraints | `CP13-8` rerun artifact | allowed | +| `C-ADAPTER-CLOSURE` | assignment / readiness / publication closure is explicit on the chosen path | bounded chosen path only; does not imply mode normalization or pure-core extraction | `CP13-8A` proof package | allowed | +| `C-CONSTRAINED-V1-RUNTIME` | current integrated checks are evaluating `V1` runtime behavior under `V2` constraints rather than validating a completed `V2 runtime` | current chosen path only, until explicit `V2 core` extraction | `v2_mini_core_design.md`, `Phase 13` docs | allowed | +| `C-MODE-NORMALIZATION` | one bounded mode-policy / normalization package is closed on the current constrained chosen path | bounded chosen path only; does not imply pure `V2 core` extraction or broad product policy | `CP13-9` docs/tests | allowed | | `C-LAUNCH-APPROVAL` | broad product launch readiness | outside current phase | future | not allowed | ## Evidence Map @@ -101,8 +121,9 @@ These are the claims that may currently be made without overreach. | Retention | lagging replica retains WAL or escalates fail closed | `CP13-6` tests and docs | retention protocol tests | | Rebuild fallback | unrecoverable gap escalates to `NeedsRebuild` and blocks normal paths | `CP13-7` tests and docs | rebuild tests | | Performance floor | one bounded measured floor and rollout-gate package | `Phase 12 P4` docs/tests | cited baseline artifact | -| Real-workload package | one bounded workload matrix exists | `CP13-8` scenario/doc | tester validation reports | -| Assignment/publication closure | assignment does not imply readiness/publication | `CP13-8A` code/tests/debug evidence | tester investigation, bug docs | +| Real-workload package | one bounded workload matrix passes on the corrected chosen path | `CP13-8` scenario/doc | tester validation reports | +| Assignment/publication closure | assignment does not imply readiness/publication and corrected wiring refreshes replication truth explicitly | `CP13-8A` code/tests/debug evidence | tester investigation, bug docs | +| Mode normalization | one bounded mode set is explicit and surface-consistent on the constrained current path | `CP13-9` contract/doc/tests | tester validation report | ## Invalidated Or Narrowed Evidence @@ -110,8 +131,7 @@ This section records evidence that cannot currently be used at full strength. | ID | Affected claim/evidence | Narrowing reason | Scope | Action required | |----|-------------------------|------------------|-------|-----------------| -| `INV-CP13-8A-01` | any weed-VS scenario claim that `block_promote` preserved replication automatically | promote path could leave new primary without replica shipper wiring; barrier then became vacuous with `0` shippers | recent weed-VS testrunner scenarios using `block_promote` | rerun after fix | -| `INV-CP13-8A-02` | bounded real-workload `CP13-8` pass claim | blocked by assignment/publication contradiction and then by promote/shipper closure issue | `CP13-8` only | rerun after `CP13-8A` blocker fixes | +| `INV-CP13-8A-01` | any historical weed-VS scenario claim that `block_promote` preserved replication automatically before the promote/refresh fix | old promote path could leave new primary without replica shipper wiring; barrier then became vacuous with `0` shippers | historical weed-VS testrunner scenarios using old `block_promote` behavior | rerun or reclassify historical evidence as needed | | `INV-CLAIM-SPREAD-01` | claims embedded only in phase delivery notes | phase docs are not a reliable centralized current-state ledger | all scattered phase notes | migrate ongoing claim state here | Unaffected evidence currently believed to remain valid: @@ -122,20 +142,14 @@ Unaffected evidence currently believed to remain valid: ## Open Contradictions And Blockers -| ID | Blocker | Current classification | Impact | -|----|---------|------------------------|--------| -| `BUG-CP13-8A-ADDR` | malformed/mock replica addresses in some QA allocators | test/adapter bug | narrows affected QA evidence; does not by itself close real workload | -| `BUG-CP13-8A-RECV-IDEMP` | repeated assignment delivery restarted replica receiver and hit bind conflict | adapter/runtime bug | blocks weed-VS replica from leaving degraded state until fixed | -| `BUG-CP13-8A-PROMOTE-SHIPPER` | post-promote assignment could leave new primary with no replica shipper configured | master/adapter bug | invalidates weed-VS `block_promote` replication claims until rerun | -| `CP13-8` | real bounded workload package still needs corrected rerun | blocked by `CP13-8A` issues | blocks real-workload pass claim | +No active `Phase 13` blocker currently remains inside the accepted bounded chosen path. ## Rerun Queue | Priority | Item | Why rerun is needed | Exit condition | |----------|------|---------------------|----------------| -| `P0` | `CP13-8` bounded real-workload scenario | current pass claim is not yet allowed after `CP13-8A` blockers | bounded rerun passes or fails with attributable remaining cause | -| `P0` | weed-VS scenarios using `block_promote` from the recent testrunner enhancement work | prior replication interpretation may have been vacuous (`0` shippers) | affected scenarios are reclassified or rerun | -| `P1` | any recent degraded/perf interpretation derived from broken weed-VS promote path | performance interpretation may be based on RF=1 semantics | audit updated and affected numbers rerun or narrowed | +| `P0` | historical weed-VS scenarios using old `block_promote` semantics from the recent testrunner enhancement work | prior replication interpretation may have been vacuous (`0` shippers) before the refresh fix | affected scenarios are reclassified or rerun | +| `P1` | any recent degraded/perf interpretation derived from broken historical weed-VS promote path | performance interpretation may have been based on RF=1 semantics | audit updated and affected numbers rerun or narrowed | ## Maintenance Rules