01-projects/phdata

Agent Brigade 9-Step Pattern — Live Receipts (Lenovo, 2026-07-02)

2026-07-03·reference·status: draft-for-founder
phdataagent-brigadecafreceipts

Agent Brigade 9-step pattern — live receipts

This doc maps each step of the 9-step kitchen-brigade teaching diagram to concrete on-disk evidence that it ran live, not just as designed. Grounding run: the Lenovo prospect assessment executed 2026-07-02 (first-ever full live run of the Assessment Agent Brigade), plus the same-day Lenovo collateral stress run. All paths are relative to ~/Projects/phdata-private/cellar/ unless noted. Verdict per step is one of LIVE (ran and is evidenced), PARTIAL (some real evidence, some gap), or ⚠️ DESIGN-ONLY (described in spec/teaching diagram, not evidenced running). Nothing below is manufactured — where I could not find a claimed artifact, it says NOT FOUND.

Step 1 — Requester brings a need to the STEWARD

Claim: a front-of-house intake conversation between a requester and a steward role produces the need.

Status: PARTIAL. The founder was the requester; there is no distinct front-of-house "steward conversation" artifact — the need entered as free text in the ticket's Order field, not through a structured intake surface.

RECEIPTS:

Gap: the steward's front-of-house role (structured need-gathering distinct from the founder directly authoring the ticket order) isn't built. What exists is a documented fallback path, used honestly and flagged as a gap in its own work-log line.

Step 2 — Steward gathers context from the CELLAR and pairs the need to a brigade MENU

Status: LIVE.

RECEIPTS:

Step 3 — Steward writes a TICKET and hangs it on the RAIL

Status: LIVE.

RECEIPTS:

Step 4 — EXPO pulls the ticket (lease), runs Gate A + phase-0 sufficiency judgment

Status: LIVE, with one important honest caveat: the phase-0 sufficiency judgment ran, but the rail's pull/lease mechanics were broken as shipped and had to be worked around live, on the record.

RECEIPTS:

Step 5 — STATIONS execute, marking up the ticket as they go

Status: LIVE. The generic "stations" concept in this brigade is realized as the phase dispatch chain (step0 → C1 → C2 → C3 → C4), each a distinct station, plus a nested instance of the same fan-out pattern for the P3/P4 per-work-item lens rosters (18 micro-tickets acting as child station runs).

RECEIPTS:

Step 6 — CRITIC evaluates and ADVISES (verdict, not a route)

Status: LIVE, with a terminology note: this brigade does not have a station literally named "critic." The advisory-verdict role is split across two mechanisms — the gatekeeper (per-gate, scoped-input judgment, every phase) and the meta-council (C4-only, cross-phase, three independent judges: portfolio_strategist, prioritization_integrity, expectation_steward). Both produce verdicts that inform the exit decision; neither directly routes the ticket.

RECEIPTS:

Step 7 — EXPO DECIDES the exit (advance / refire-to-author / reroute-to-spec / reroute-to-steward / kill)

Status: LIVE. The exit decision is a distinct, logged act separate from the critic's verdict.

RECEIPTS:

Step 8 — Approved artifacts land in the CELLAR; ticket is closed and filed to its subject

Status: LIVE.

RECEIPTS:

Step 9 — Close-out: completion flows back to the steward/requester

Status: ⚠️ DESIGN-ONLY / NOT FOUND.

RECEIPTS: none found. I searched the master ticket, the brigade spec, and the cellar tree for any notification, message-send, or "close-out" record and found nothing — no iMessage/Discord send log, no "notify requester" work-log line, no founder-facing summary artifact distinct from the ticket itself.

What actually happened instead: the founder learned the run completed by being the one running it / reviewing the ticket and contracts directly (and, per your own briefing, has flagged this gap himself). The C1 human-gate approval (Step 7) required the founder's own real-time judgment mid-run, which is a synchronous human touch, not the close-out notification the diagram depicts at the end of the flow. There is no evidence of a step that pings the requester when a ticket lands done.

Gap: an end-of-run notification/close-out channel (e.g., an iMessage/Discord ping when a ticket reaches done or escalated) is not built. This matches your own flag that step 9 is missing/unbuilt.

Summary table

Step Status Key receipt path
1. Requester → Steward PARTIAL tickets/lenovo-assessment-2026-07-02.ticket.md (Order field; free-text-brief fallback, flagged gap)
2. Cellar gather + Menu pairing LIVE context/2026-07-02-dossier-full.md; ticket frontmatter menu:
3. Ticket written, hung on Rail LIVE tickets/lenovo-assessment-2026-07-02.ticket.md; 18 micro-tickets in tickets/
4. Expo pulls, Gate A + phase-0 judgment LIVE (with 2 disclosed machinery defects, worked around) ticket work log 13:24-13:29 ET
5. Stations execute LIVE dispatch lines to assessment:c1..c4; contract-1..4 artifacts
6. Critic evaluates/advises LIVE (realized as gatekeeper + meta-council, not a literal "critic" station) build-manifest/...161235-manifest.json gate_log field
7. Expo decides exit LIVE (advance, escalate, refire-to-author evidenced; reroute-to-spec/steward, kill NOT FOUND live) ticket work log 13:29:35, 14:40:21 ET
8. Land in Cellar, ticket closed/filed LIVE, incl. frontend ingest verified exit 0 ticket work log 14:52:19, 14:54:18 ET
9. Close-out to steward/requester ⚠️ DESIGN-ONLY / NOT FOUND

Gaps (known follow-ups):

Bonus receipts — governance moments worth showing the org

1. Meta-council double veto (real governance firing, not theater). m-3 (expectation_steward) vetoed the first C4 catalog build twice before ratifying. Veto 1 (14:40:21 ET): dollar ranges rendered with no ROM/floor caveat; Cortex platform presented as settled fact against 0.3 confidence; a hard 400-char truncation asymmetrically stripped uncertainty language from the 6 should_have items only. Fix applied, fresh independent re-verification dispatched (not self-graded). Veto 2 (14:46:49 ET), "narrower, and the process is working as designed": caught a sibling truncation bug in the layman field (140-char cap, deleting the single most important honesty caveat on the warehouse-logistics item) and missing ROM caveats on impl/timeline fields. Final independent re-verification (14:52:19 ET): verdict=ratify, confirmed programmatically (zero schema violations, zero propagation errors catalog↔contract-4). Refire budget was exactly 2, consumed exactly twice — a third veto would have escalated per the ticket's own stated semantics.

2. C1 human-gate approval with delegation provenance. Work-log 13:31:55 ET: "C1 HUMAN GATE — APPROVED by Ray, founder-delegated proxy (delegation: iMessage 2026-07-02 13:00 ET, 'You be the human in the loop judge for me').” The Build Manifest's gate_log records the same: approver: "Ray (founder-delegated proxy)", with binding approval conditions (both mixed-decomposition branches stay open) carried forward as a constraint on P2. This is the one gate in the whole brigade that's human-mandatory in every autonomy mode — the delegation trail from founder → Ray is on the record, not asserted after the fact.

3. Units-bug supersedes chain (schema-valid but wrong → caught by visual check → superseding artifact). 2026-07-02-units-correction-work-note.md: the original manifest (build-manifest/2026-07-02T145219-manifest.json) passed every deterministic gate, X1-X7 cross-check, and the meta-council — and still carried a uniform 1000x unit error ($K rendered as $M), caught only by eyeballing the rendered marketplace ("$40.0M–$130.0M/yr" for a real $40K–$130K/yr figure). Root cause stated plainly: "no existing gate asserts anything about units." Fix: new gate rule X8 (check_x8_units_consistency) so this class "cannot land silently again." The corrected manifest (...T161235-manifest.json) supersedes the original — confirmed via both .meta.json sidecars — and the original is left in place, untouched, per the append-only cellar convention.

4. Collateral run's honesty-gate outcomes (Expectation-Steward and a claim-level refire). Three T2-tier artifacts (outcome-thesis, exec-one-pager, roi-value-snapshot) carry release_note: Expectation-Steward ratified (axis 1/3/5 + A-27/28 residual) and are landed as gated drafts pending founder release (release_status: pending-human-release), not auto-published — confirmed in each file's own frontmatter. I did not find an Expectation-Steward veto on this run specifically (the three T2 kinds ratified on the first pass); what I did find is a separate claim-level veto/refire on the objection-sheet kind (round 1 = refire-to-author, veto_reason_class=claim; round 2 = advance, auto-published as T3) — a real refire cycle, just not the Expectation-Steward axis. Flagging this distinction so it isn't overstated to the org.

Compiled from cellar evidence under assessments/lenovo/ and rail/ as of 2026-07-03. Draft for founder review before any wider circulation.