From e34952f6484a42c3cb05d4e94bfbd235ff08349e Mon Sep 17 00:00:00 2001 From: pingqiu Date: Sat, 2 May 2026 19:56:49 -0700 Subject: [PATCH] docs(p15): update G9C component ready evidence --- ...replica-ready-feed-continuity-mini-plan.md | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/sw-block/design/v3-phase-15-g9c-replica-ready-feed-continuity-mini-plan.md b/sw-block/design/v3-phase-15-g9c-replica-ready-feed-continuity-mini-plan.md index a080c2b01..895a2e9b6 100644 --- a/sw-block/design/v3-phase-15-g9c-replica-ready-feed-continuity-mini-plan.md +++ b/sw-block/design/v3-phase-15-g9c-replica-ready-feed-continuity-mini-plan.md @@ -1,7 +1,7 @@ # V3 Phase 15 G9C — ReplicaReady Feed Continuity / Post-Close ACK Mini-Plan **Date**: 2026-05-02 -**Status**: B-slice landed (`ca5d4f6`) +**Status**: C-slice landed (`b90798d`) **Code branch**: `p15-g9c/replica-ready-feed-continuity` **Predecessors**: G9B replica join lifecycle close @@ -110,10 +110,32 @@ Both passed on `p15-g9c/replica-ready-feed-continuity`. --- -## 7. Next Slice +## 7. C-Slice Evidence -G9C-C should move from transport signal shape to host/daemon lifecycle evidence: +Code: `seaweed_block@b90798d` — `G9C: pin replica ready after post-close ack in dual-lane component path` -1. Add one L2 or subprocess test where a recovered replica remains `recovering` immediately after close, then becomes `ready` only after the real progress callback. -2. Prove the status endpoint reflects the same transition. +What landed: + +1. Added `TestG9C_DualLaneRecoveredReplica_PublishesHealthyOnlyAfterPostCloseDurableAck`. +2. The test runs the real component path: engine -> adapter -> dual-lane `BlockExecutor` -> receiver -> close callback -> durable ack callback -> engine. +3. It pins the order: `SessionClosedCompleted` -> `publish_healthy_held` -> `DurableAckObserved` -> `post_close_durable_ack` -> `PublishHealthy`. +4. Final projection must be `ModeHealthy`, proving `replica_ready` comes only after the post-close durable ack. + +Verification: + +```powershell +go test ./core/replication/component -count=1 +go test ./core/authority ./core/recovery/... ./core/transport/... ./core/engine ./core/adapter ./core/host/volume ./core/replication/component -count=1 +``` + +Both passed on `p15-g9c/replica-ready-feed-continuity`. + +--- + +## 8. Next Slice + +G9C-D should move from component lifecycle evidence to host/daemon status evidence: + +1. Prove the status endpoint reflects the same recovered-replica transition. +2. Prefer a narrow subprocess/L2 test if the harness can observe the intermediate `recovering` state without adding test-only production hooks. 3. Keep placement and ACK voter eligibility out of this slice unless explicitly ratified.