13 KiB
V3 Batch Process
Date: 2026-04-26 Status: ACTIVE — applies to all batches from G5-5 onward Supersedes: ad-hoc per-batch governance (kickoff + mini-plan + G-1 + closure report + forward-carry checklist + QA scenario catalogue, 5+ artifacts)
§1 The flow
plan → (G-1 if V2 PORT) → code → test → close
One mini-plan doc per batch. One PR. One close.
§2 The single mini-plan doc
v3-phase-15-<batch-id>-mini-plan.md — the only artifact per batch. Sections in order:
| § | Content | Required when |
|---|---|---|
| §1 Scope | What this batch delivers; what it does NOT (explicit non-claims) | Always |
| §2 Acceptance criteria | Numbered list, each verifier-named (test or evidence), SINGLE source of truth | Always |
| §3 Invariants | INV IDs to inscribe at close + their test pointers; ledger updated by PR (not after) | Always |
| §4 G-1 V2 read | Inline: PORT items + V3-NATIVE items + hidden invariant audit | Only if V2 muscle PORT batch |
| §5 Forward-carry consumed | What this batch inherits from prior batch's §close | Always (even if "none") |
| §6 Risks + mitigations | Short table | Always |
| §7 Sign table | architect ratify §1-§6 once at start; architect single-sign §close at close | Always |
| §close | Appended at batch close: deltas vs §1-§6 + evidence pointers + forward-carries to next batch | Appended at close (not separate doc) |
Total per batch: 1 doc, 1 commit lifecycle (init → §close append → architect sign). No separate closure report, no separate G-1 doc, no separate forward-carry checklist, no separate QA scenario catalogue.
§3 What earned its keep — KEEP
These survived T4 with track record. Don't drop:
| Discipline | When it applies | What it catches |
|---|---|---|
| G-1 V2 PORT read (inline §4) | V2 muscle ports only | Hidden invariants, architectural pins, placement decisions pre-code (5 saves on T4) |
| Mini-plan acceptance criteria (§2) | Always | Ambiguous closes; PR review checklist |
Invariant ledger discipline (§3 + v3-invariant-ledger.md) |
Always | "Claim without test = wish" rule |
| m01 -race verification | Always for any concurrency-touching code | Windows-blind concurrency bugs (caught 2 engine bugs at T4d-4 part C) |
| Architect single-sign at close | Always | Scope drift, stale references, silent narrowing |
§4 What was overhead — DROP
| Practice | Reason dropped |
|---|---|
| Separate kickoff PROPOSAL doc | Mini-plan §1-§6 ratification is the same thing |
| Separate G-1 V2 read doc | Inline §4 of mini-plan |
| Separate closure report doc | §close section of mini-plan |
| Separate forward-carry checklist | §5 of next-batch mini-plan |
| Separate QA scenario catalogue | Author tests directly when ready (catalogue went stale 100% of the time) |
| Multi-version doc churn (v0.1 → v0.5) | One ratification + one close-sign per batch; mid-flight revisions only if SCOPE changes |
| Cross-doc invariant restatement (catalogue + checklist + ledger + mini-plan + closure) | Ledger is sole source of truth; other docs reference by INV ID |
| G-N sub-batch invention (G5-1..G5-6 style) | Architect picks T-track OR G-N batches at kickoff, not both for same gate |
§5 Sign cycles — compressed
Was: kickoff ratify → mini-plan ratify → G-1 ratify → code → close ratify (4-5 architect signs per batch)
Now: mini-plan §1-§6 ratify → code → §close architect sign (2 signs per batch)
Mid-flight revisions ONLY when scope changes (architect re-ratifies the changed §). Doc-hygiene fixes don't need ratification — apply, commit, move on.
§6 Decision rules
§6.1 G-1 yes/no
| Batch type | G-1 needed? |
|---|---|
V2 muscle port (weed/storage/blockvol/* source) |
YES — inline §4 |
| V3-native (no V2 source; component framework or new design) | NO |
| Mixed (some PORT items + some V3-native) | YES for the PORT items only |
§6.2 T-track vs G-N batch naming
| Implementation weight | Naming |
|---|---|
| Substantial new code (>500 LOC) | T-track (T5, T6, ...) |
| Mostly verification + missing pieces | G-N batches (G_x_-1, G_x_-2, ...) |
| Architect picks at kickoff | Don't mix both for same gate |
§6.3 When to skip the mini-plan entirely
Hotfix-class single-commit changes (1-line + regression test, like f6084ee BlockStore walHead) don't need a mini-plan. Architect-approved hotfix PR + ledger update if invariant-affecting.
§7 Doc lifecycle rules
- One mini-plan doc per batch. No separate kickoff/closure/checklist/catalogue artifacts.
- Inscribe invariants in
v3-invariant-ledger.mdONLY at close. Other docs reference by INV ID. - Update
v3-dev-roadmap.mdat every gate-close (not batch-close — gate-close). - Doc edits that don't change scope don't need architect ratification — fix typos, fix stale refs, commit, move on.
- Stale doc refs at close-sign time = QA's fault. Run
grep -r <stale-ref>before submitting closure for sign.
§8 What to keep current as control docs
These are first-order references; keep updated as batches close:
| Doc | Owner | Update trigger |
|---|---|---|
v3-dev-roadmap.md |
QA | every gate-close |
v3-architecture.md |
architect | component/responsibility/flow changes |
v3-phase-15-mvp-scope-gates.md |
architect | scope changes (e.g. G9A added 2026-04-26) |
v3-invariant-ledger.md |
sw + QA | every batch-close (PR-atomic) |
v3-block-behavior-contract-index.md |
architect | new behavior contract ratifications |
v3-product-placement-authority-rationale.md |
architect | placement architecture changes |
v2-v3-contract-bridge-catalogue.md |
sw + QA | V2→V3 entity bridge updates |
Everything else is per-batch (mini-plan) or methodology (v3-phase-development-model.md, this doc).
§9 First trial: G5-5
This process gets its first trial at G5-5 (m01 hardware first-light). Concretely:
- ONE doc:
v3-phase-15-g5-5-mini-plan.md - §close appended at batch close, not separate report
- Forward-carries from G5-4 (criteria 3+4) consumed in §5
- §close pushes any G5-5 carries forward to G5-6
- Architect: ratify §1-§6 once + sign §close at close
- No separate kickoff, no separate closure report, no separate checklist
If G5-5 closes cleanly under this process, codify as default for G5-6 + G6 + onward.
§10 Process change protocol
This doc evolves like any other:
- New batch tries something different → propose change here
- 3+ batches use the new pattern successfully → codify
- Process change requires architect sign (same §8C.2 rule applies)
Do NOT auto-port T4 governance template forward. Each batch asks "does this step earn its keep" at kickoff.
§11 Honesty principle
Documentation overhead that doesn't catch bugs is ceremony. Documentation that catches bugs is discipline.
Drop ceremony. Keep discipline.
§12 Architect review checklist
Architect review is not plan authorship. It is the system-level check that prevents drift.
Every mini-plan ratification and §close sign must answer:
| Check | Question |
|---|---|
| Scope truth | What is done, what is explicitly not done, and what product risk remains? |
| V2 / new-build decision | Is this a full V2 port, partial V2 port, reference-only read, explicit reject, or V3-native design? Does it need a new gate? |
| Engine / adapter impact | Does this change authority, session fate, recovery, durability, projection, or truth ownership? If yes, where is the invariant and adversarial test? |
| Product usability level | What can an operator or user actually do end-to-end after this batch? Which test proves it? Which next gate makes it more usable? |
Close signs should include a short statement of:
Done:
Not done:
Product level reached:
Next gate that makes it usable:
§13 Failure modes this process must prevent
These are the observed sources of waste. Every batch should actively check them.
| Failure mode | Required countermeasure |
|---|---|
| V2 porting drift | Top-down mapping: V2 behavior → V3 product contract → truth owner → accepted/rejected semantics → invariant/test |
| Engine/adapter change without reason | Require reason, truth-domain impact, bad state prevented, and proof test |
| Function close means happy path only | Acceptance must include stale input, reordering/overlap where relevant, partial progress, retry/restart, and explicit non-claims |
| Product unusable despite green tests | Mini-plan must name the end-to-end operator/user path and whether it is real, simulated, manual, or deferred |
| Missing architecture component | If a batch discovers a product component late (for example placement or binary wiring), update v3-architecture.md or the gate before continuing |
§14 Who owns what step
All three "architects" are AI agents; user routes messages between them. Per-agent action lists (§15) reduce routing overhead.
| Architect role | Owner agent | Scope |
|---|---|---|
| System architect | architect agent (cursor) | Product, scope, behavior contracts, gate definitions, close sign |
| Function/process architect | QA agent (claude-code) | Process discipline, verification, system-level drift detection, doc lifecycle |
| Code-ownership architect | sw agent (cursor) | Implementation feasibility, code shape, framework state |
Based on what actually worked across T4 + G5:
| Step | Owner | Why |
|---|---|---|
| Gate scope (which gate, what it promises, dependencies) | architect | Product requirements + V3 architectural discipline |
| Batch sketch (mini-plan §1-§6) | sw | Knows the code + implementation feasibility + framework state; can commit to what's deliverable |
| G-1 V2 read (when V2 PORT) | sw | Owns the V3 target where V2 muscle lands |
| Mini-plan ratification | architect (signs §1-§6) + QA (reviews) | Architect: scope drift / missing bindings / V2 lessons. QA: invariant + acceptance discipline. |
| Code + unit tests | sw | — |
| Component scenarios + m01 verification | QA | Independent perspective; framework + hardware coverage |
| Ledger inscription (PR-atomic) | sw | Lands with code in same PR |
| §close append | sw drafts; QA verifies evidence pointers | Sw: facts. QA: acceptance discipline. |
| Close sign | architect | Single-sign per §8C.2; caught stale refs + scope drift multiple times |
Why sw plans (not architect):
- Sw knows what's feasible + what frameworks exist + what shortcuts are safe
- Architect-drafted plans miss implementation realities (catch up via reviewer cycle anyway)
- Sw self-commits to scope they can deliver — fewer revision cycles
- Architect ratifies SCOPE (caught 2 binding clarifications at G5-4 v0.2→v0.3) but doesn't need to author implementation detail
Why QA reviews + verifies (doesn't plan):
- Independent third party; not advocate for either scope or implementation choice
- Catches discipline gaps (invariant inscription, acceptance criteria coverage) sw + architect miss
- Owns m01 hardware verification + component scenarios
Edge case — process changes (this doc): QA proposes; architect signs (same as any scope-affecting change).
Edge case — hotfix-class (per §6.3): sw can self-author + self-merge with QA spot-review. Architect ratifies if invariant-affecting.
§15 Inter-agent communication discipline
Every response from QA, sw, or architect MUST end with an explicit per-agent action list. The user routes messages between agents — communication overhead is real cost.
Mandatory format at end of every substantive response:
## Next actions
| Agent | Action |
|---|---|
| **architect** | <specific action OR "none — standing by"> |
| **sw** | <specific action OR "none — standing by"> |
| **QA** | <specific action OR "none — standing by"> |
Rules:
- Every agent gets a row, even if "none — standing by"
- Actions must be concrete + executable ("commit X", "review Y", "decide path A vs B"), NOT vague ("consider Z")
- If an action depends on another agent's prior action, name the dependency: "after sw lands G5-5, run -race ×10 on m01"
- Skip the table only for genuinely no-decision-needed acknowledgements (e.g., one-line confirmations)
Why: user's current load is ~90% copy-paste routing between agents. Explicit per-agent action lists at end of every response cut routing time. Every agent reads "what's MY action" without parsing a wall of text.
This rule applies to every agent's outputs, not just QA's. Sw + architect responses to QA reviews must end with the same per-agent action list.