docs(p15): add G9G close snapshot and QA instruction

This commit is contained in:
pingqiu committed 2026-05-03 06:55:29 -07:00
1 parent 36ddbe78d7
commit 32a9993264
2 files changed
+111 -1

No files matched your search

@@ -1,7 +1,7 @@
# V3 Phase 15 G9G - Blockmaster Product Loop To Publisher Mini-Plan
Date: 2026-05-03
Status: component slice implemented at `seaweed_block@afac861`; subprocess L2 implemented at `seaweed_block@bdd56c7`; seed-file entry implemented at `seaweed_block@7ed9ab2`; QA verification pending
Status: close-ready on `p15-g9g/blockmaster-product-loop@7ed9ab2`; QA verification pending
Branch target: `p15-g9g/blockmaster-product-loop`
Scope: first live blockmaster loop that turns verified placement into publisher input
@@ -119,3 +119,41 @@ pre-writing lifecycle store internals:
- r2 reaches assignment-backed `Healthy=true`.
Only after that should we wire external API/CLI verbs or CSI create/publish.
## 7. Close Snapshot
Close target: `seaweed_block@7ed9ab2`.
G9G closes the first product-loop assignment path:
```text
seeded placement intent
-> blockmaster lifecycle store
-> product-loop tick
-> VerifiedPlacement
-> G9F-2 AssignmentAsk bridge
-> authority.Publisher
-> blockvolume assignment stream
```
Evidence expected from QA:
```powershell
go test ./core/lifecycle ./core/host/master ./core/authority ./cmd/blockmaster ./cmd/blockvolume -count=1
```
Key L2 evidence:
- `cmd/blockvolume::TestG9G_L2ProductLoopPublishesAssignmentToBlockvolume`
- real `cmd/blockmaster`;
- real `cmd/blockvolume`;
- `--lifecycle-placement-seed` entry instead of pre-written internal lifecycle store;
- product-loop assignment reaches blockvolume and makes r2 `Healthy=true`.
Close non-claims:
- `--lifecycle-placement-seed` is a temporary QA/M01 bridge, not the final product API.
- YAML cluster spec is follow-up, not blocking G9G.
- Create/delete/attach/detach user verbs are follow-up.
- Blank-pool replica-id allocation is follow-up.
- CSI and M01 hardware smoke are follow-up.
@@ -0,0 +1,72 @@
# V3 Phase 15 G9G QA Test Instruction
Date: 2026-05-03
Status: close-candidate on `p15-g9g/blockmaster-product-loop@7ed9ab2`
Scope: blockmaster product loop publishes verified placement into the authority publisher path
## Headline
At `p15-g9g/blockmaster-product-loop@7ed9ab2`, G9G proves a real blockmaster
can import placement intent through a daemon entry point, run the lifecycle
product loop, publish through `authority.Publisher`, and deliver assignment to
a real blockvolume subscriber.
## Environment
- Repo: `seaweed_block`
- Branch: `p15-g9g/blockmaster-product-loop`
- Minimum commit: `7ed9ab2`
- Fidelity: subprocess L2 with real `cmd/blockmaster` and real `cmd/blockvolume`
- Non-claim: not m01/M02 hardware and not final product API
## Full Regression Command
```powershell
go test ./core/lifecycle ./core/host/master ./core/authority ./cmd/blockmaster ./cmd/blockvolume -count=1
```
Expected result: all five packages pass. `cmd/blockvolume` is expected to take
about two minutes because it includes G8 and G9 subprocess tests.
## Focused G9G Command
```powershell
go test ./cmd/blockvolume -run TestG9G_L2ProductLoopPublishesAssignmentToBlockvolume -count=1
```
Expected result: pass in roughly 10-15 seconds on the local Windows harness.
## Scenario Checklist
1. Blockmaster accepts a product-loop seed entry.
Backing test: `cmd/blockmaster/main_test.go::TestParseFlags_LifecyclePlacementSeedOptional`
2. Product-loop component tick publishes verified existing replica placement.
Backing test: `core/host/master/product_loop_test.go::TestG9G_ProductLoopPublishesVerifiedExistingReplica`
3. Unverified placement does not publish authority.
Backing test: `core/host/master/product_loop_test.go::TestG9G_ProductLoopDoesNotPublishUnverifiedPlacement`
4. Repeated product-loop tick does not churn authority.
Backing test: `core/host/master/product_loop_test.go::TestG9G_ProductLoopIsIdempotentForSameAuthorityLine`
5. Publisher subscription receives product-loop assignment.
Backing test: `core/host/master/product_loop_test.go::TestG9G_BlockvolumeSubscriptionReceivesProductLoopAssignment`
6. Real subprocess path delivers assignment to blockvolume.
Backing test: `cmd/blockvolume/g9g_l2_product_loop_test.go::TestG9G_L2ProductLoopPublishesAssignmentToBlockvolume`
## Non-Claims
- `--lifecycle-placement-seed` is a temporary QA/M01 bridge, not the final product API.
- No YAML cluster spec yet.
- No external create/delete/attach/detach API yet.
- No blank-pool replica-id allocator.
- No CSI integration.
- No m01/M02 hardware evidence.
- Assignment publication still does not imply frontend readiness in the abstract; this L2 checks the existing blockvolume status projection after assignment delivery.
## Closure Sentence
G9G closes the first live product-loop assignment path:
`seeded placement intent -> blockmaster product loop -> publisher -> blockvolume assignment stream`.