Repository navigation
[qa-lead S5] Reconcile personas/qa-lead/README.md with the shipped runtime #1648
Description
Story
As someone told by persona-standards §7 that qa-lead is the worked example to copy,
I want personas/qa-lead/README.md to describe the persona that actually shipped,
so that the reference implementation stops teaching a design that was superseded.
The problem, verified on origin/main (85658ac)
The README's "Status: draft" section makes three claims that are false:
| README says | Reality |
|---|---|
"qa-lead ships no dedicated reusable workflow yet" |
.github/workflows/persona-runner.yml + persona-runner-reusable.yml exist and serve it |
"the manifest carries no runtime: block" |
persona.yml has runtime.identity (account: don-petry, credential: GH_PAT_DON_PETRY) |
| "nothing dispatches on them until the router and a runtime exist" | Both exist; the chain has fired twice (2026-07-18 soak #1300, 2026-08-02 on #1402) |
And promotion step 1 is actively misleading:
- Wire a dedicated advisory workflow (e.g. mention- or
check_run-triggered test review) as a caller stub + reusable, and add itsruntime:block.
persona-standards §4.1 says the opposite: "ONE router serves every persona … a stub per agent is the drift the manifest exists to prevent." That is also what shipped — persona-runner-reusable.yml is explicitly "ONE runner for EVERY persona — manifest/convention driven, not one workflow per persona." A reader following this README would build the thing the standard forbids.
The README has been stale since #1293 merged the runtime (2026-07-18).
Acceptance Criteria
- The three false claims are corrected. The README describes the shipped architecture: one shared mention router (
petry-projects/.github,persona-mention-reusable.yml) →repository_dispatch: persona-mention→ one shared runner (persona-runner-reusable.yml) → the persona'sprompts/<id>/advisory.md. - Promotion step 1 is rewritten to match §4.1 — a new persona adds a manifest and an advisory prompt; it does not add a workflow. Anyone following the steps must end up with something the standard permits.
- The read/write split is documented, because it is the security property the whole framework rests on: the agent runs with
github.tokenand cannot post; the workflow enforces the<!-- persona:<id> -->marker and posts with the PAT. Cite feat: implement issue #846 — [Phase 2] Cache the LSP index and enforce the 30s cold-start SLA with auto-skip #860 (prompt-only marker enforcement → 1,481 acks in 4.5h) so the next reader understands why it is built that way. prompts/qa-lead/advisory.mdis documented as part of the persona — it is the actual behavior surface and the README currently never mentions it.- The remaining accurate content is preserved: the role-not-person rationale (§1.6), the team-handle-not-user-account rationale, the vendored-not-forked posture, and the
frameworks/no-hand-edits rule. - The status section states what is genuinely still outstanding — no
agents.qa-leadentry incanary-rings.json, stillnext-ring only (persona-mention/v1-ring0/v1-ring1/v1-stabledo not exist), eval gate not yet runnable ([qa-lead S2] Make the qa-lead eval set scorable and capture a first held-out baseline #1645) — and does not restate anything the manifest already says. §4.1's rule is that the manifest is the index-of-record and the docs restate none of it. markdownlint-cli2clean; internal links resolve.
Tasks / Subtasks
- Rewrite the Status section against the shipped runtime. (AC: test issue from agent #1, feat: feature ideation framework — adversarial proposer/challenger/synthesizer #6)
- Rewrite the promotion steps to match §4.1. (AC: Go-live improvements for PR review agent #2)
- Document the dispatch chain, the read/write split, and the advisory prompt. (AC: Add @claude delegation, auto-merge, and rebase handling #3, Optimize review: small-PR and incremental fast paths #4)
- Verify the preserved sections are still accurate. (AC: feat: add Copilot engine support via REVIEW_ENGINE toggle #5)
- Lint and link-check. (AC: Workflow should skip no-op PRs in MAX_PRS count #7)
Dev Notes
- Docs-only. No manifest, workflow, or prompt behavior changes. If writing this surfaces a substantive gap, file it rather than fixing it here.
- This README is load-bearing beyond this persona: persona-standards §7 points readers at it as the worked example, so its errors propagate into every persona copied from it. Three of the four ops personas ([bmad-onboard S1] Onboard sre-lead persona #1307/[bmad-onboard S2] Onboard devops-lead persona #1308/[bmad-onboard S3] Onboard security-lead persona #1309) were onboarded after it went stale.
- Do not restate the manifest. The temptation is to explain each surface and trigger in prose; §4.1 explicitly forbids the docs from restating per-persona decisions, because two sources drift. Link to
persona.ymlandinteraction.ymlinstead. - [qa-lead S3] Serve the pull_request surface so qa-lead runs without being summoned #1646 and [qa-lead S4] Make persona.yml's declared surfaces agree with what is actually deployed #1647 will amend this file again when the surface set changes. Write today's truth; do not try to pre-describe their end state.
Project Structure Notes
personas/qa-lead/README.md only.
References
- petry-projects/.github
standards/persona-standards.md§1.6, §4.1, §7 .github/workflows/persona-runner-reusable.yml,.github/workflows/persona-mention.ymlprompts/qa-lead/advisory.md,personas/qa-lead/persona.yml,personas/qa-lead/interaction.yml- The persona runtime — dispatch side of the mention framework #1293 (the runtime that made the README stale), Rename murat → qa-lead and make it @-addressable #1279, Add Murat persona instance — worked example for the persona standard #1174
docs/postmortems/2026-06-pr-860-runaway.md
Activity
don-petry commentedon Sep 7, 2026
Dev-Lead Implementation Plan
Issue: #1648 — [qa-lead S5] Reconcile personas/qa-lead/README.md with the shipped runtime
Scope
Docs-only: rewrite
personas/qa-lead/README.mdso it describes the runtime that actually shipped (#1293) — the shared mention router →repository_dispatch: persona-mention→ shared runner →prompts/qa-lead/advisory.md— correcting the three false "draft" claims and the §4.1-violating promotion step, while preserving the still-accurate rationale sections.Implementation Checklist
nextring; state genuinely-outstanding items (noagents.qa-leadincanary-rings.json;persona-mention/v1-ring0/v1-ring1/v1-stableabsent). Note [qa-lead S2] Make the qa-lead eval set scorable and capture a first held-out baseline #1645 landed, so the eval set is now scorable. (AC test issue from agent #1, feat: feature ideation framework — adversarial proposer/challenger/synthesizer #6)github.token, cannot post; workflow enforces the<!-- persona:qa-lead -->marker and posts with the PAT), citing feat: implement issue #846 — [Phase 2] Cache the LSP index and enforce the 30s cold-start SLA with auto-skip #860 (1,481 acks in 4.5h). (AC Add @claude delegation, auto-merge, and rebase handling #3)prompts/qa-lead/advisory.mdas the persona's behaviour surface. (AC Optimize review: small-PR and incremental fast paths #4)frameworks/no-hand-edits content; link topersona.yml/interaction.ymlrather than restating the manifest. (AC feat: add Copilot engine support via REVIEW_ENGINE toggle #5, feat: feature ideation framework — adversarial proposer/challenger/synthesizer #6)Tests to Write
Test Command
markdownlint-cli2 "personas/qa-lead/README.md"+bash .dev-lead/scripts/dev-lead-lint.shdon-petry commentedon Sep 7, 2026
Dev-Lead: Implementation Complete — PR #1689
The implementation for issue #1648 is durable: commits are pushed and a pull request is open. This record is backed by verifiable artifacts you can confirm in one click.
c4fb3084fa110c775aea6a888a921805cd70769fReview happens on the PR. Acceptance criteria and test results are evidenced by the PR's diff and CI checks — not asserted here. If a later stage fails, this claim is retracted in place.
feat: implement issue #1648 — [qa-lead S5] Reconcile personas/qa-lead…
feat: implement issue #1648 — [qa-lead S5] Reconcile personas/qa-lead…
feat: implement issue #1648 — [qa-lead S5] Reconcile personas/qa-lead…