Context
PR #11104 (github-workflow MCP boot fix) review cycle, 2026-05-10. Empirical anchor:
- Reviewer (Gemini) rubber-stamped first — posted custom "Substrate Review (LGTM / L2-Verified)" 4-section format (Context & Fit / Diff Verification / Posture / Decision). Substantively positive but NOT the
pr-review-template.md cycle-1 structure.
- Author (Opus) accepted the rubber-stamp — A2A'd Gemini about a mechanical state-flag issue (LGTM-comment vs
gh pr review --approve) but never audited the structural template-adherence issue.
- Operator @tobiu caught it externally — pushed back on Gemini that the pr-review skill template wasn't followed. Gemini then posted a proper
pr-review-template.md cycle-1 structured review.
"i challenged gemini, that we did not use the pr review skill, but rubber stamped it. not the right template. a 1-liner inside our pull request skill, that the author needs to check if reviewers use the correct template could help." — @tobiu
The Problem
Asymmetric obligations across skill payloads:
| Skill |
Tells |
About |
pr-review |
REVIEWERS |
Cycle-1 use pr-review-template.md; Cycle ≥2 use pr-review-followup-template.md |
pull-request |
AUTHORS |
PR creation discipline (commit format, body shape, cross-family review request) |
| (missing) |
AUTHORS |
Verify at PR-review-receipt time that reviewer used the correct template |
Without the bridge, the only template-adherence gate is reviewer-self-discipline. When the reviewer skips it (whether through MCP-tool-misroute, custom-format preference, or skill-payload non-adherence), nothing in the substrate catches it — except external operator-pushback. That's friction → gold raw material: substrate should self-correct, not require operator-policing.
Same family as #11102 (epic-resolution Verdict-Authority asymmetry between assignee and consensus-peer). Author/reviewer obligations need to be codified symmetrically across skill payloads.
The Fix
Add a 1-liner author-side check to pull-request-workflow.md at the PR-review-receipt step:
+## Reviewer template-adherence check
+
+When a review lands on your PR, verify the reviewer used the correct
+template before treating the review as substantively complete:
+- **Cycle 1**: review must follow `pr-review-template.md` structure
+ (Strategic-Fit Decision, Depth Floor, Graph Ingestion Notes, [...])
+- **Cycle ≥2**: review must follow `pr-review-followup-template.md`
+ (compact delta-only shape)
+
+If the review uses a custom or simplified format, A2A the reviewer
+to redo via `/pr-review` per the skill payload. Substantive content
++ wrong shape = template-adherence Required Action; do not merge-eligible
+the PR until shape is correct.
Exact placement: in the pull-request-workflow.md cycle-2-handoff / review-response section. PR diff + sibling audit during implementation.
Acceptance Criteria
Out of Scope
- Mechanical template-adherence linting via CI (nice-to-have but not in this surgical fix's scope; would be a follow-up substrate-CI ticket)
- Modifying
pr-review-template.md / pr-review-followup-template.md themselves — they are correct shape; the gap is bridge enforcement, not template content
- Expanding to other skill-payload bridges (epic-resolution / ticket-intake / etc.) — file separate tickets per skill if friction surfaces
Avoided Traps / Gold Standards Rejected
Decision Matrix
- 1-liner author-side check in pull-request-workflow.md (Selected): Bridges the missing author/reviewer obligation symmetry. Lowest-overhead, lowest-blast-radius fix. Caught at PR-review-receipt time = before merge-gate signal. Aligns with @tobiu's proposed shape.
- Reviewer-side self-check before submission: Rejected. Already implicit in
pr-review skill payload via "Cycle 1 (new review): load pr-review-template.md ..." instruction. The friction is reviewer-side non-adherence; adding a redundant self-check doesn't fix it (the missing check is on the OTHER side of the handoff).
- Both author AND reviewer check at handoff: Rejected. Duplicate effort; single-side check is sufficient. Author-side is the right side because the author has merge-eligibility responsibility.
- CI lint for template structural markers: Rejected as out-of-scope. Substrate-quality CI is over-engineering for this friction observed once in this empirical anchor; revisit if pattern repeats.
- Add to
peer-role skill instead: Rejected. peer-role fires when a peer is reviewing; this check fires when an author RECEIVES a review. Wrong skill.
- Trap: Treating substantive content as sufficient gate. Rejection: Substantive LGTM with wrong template = unstructured signal that bypasses the graph-ingestion daemon's structural markers. Substantive content + wrong shape = partial-quality graph data per
feedback_pr_review_template_discipline.
- Trap: Letting operator-pushback be the substrate gate. Rejection: Substrate should self-correct via codified peer-V-B-A; relying on operator-policing is the friction the MX loop converts to gold.
Related
- PR #11104 (canonical empirical anchor — the rubber-stamp that surfaced the gap)
- #11102 (sibling: epic-resolution Verdict-Authority asymmetry — same author/reviewer obligation gap, different skill)
feedback_pr_review_template_discipline MEMORY.md entry (graph-ingestion daemon regex-matches template section structure; non-template reviews degrade graph quality)
feedback_swarm_pr_review_routing (single-peer review routing — orthogonal but related to review handoff discipline)
- AGENTS.md §13.2 friction → gold (this ticket is the conversion artifact for the rubber-stamp friction)
Origin Session ID: c2912891-b459-4a03-b2af-154d5e264df1
Retrieval Hint: "pull-request skill author-side reviewer-template-adherence check", "rubber-stamp PR review", "author/reviewer obligation symmetry"
Context
PR #11104 (github-workflow MCP boot fix) review cycle, 2026-05-10. Empirical anchor:
pr-review-template.mdcycle-1 structure.gh pr review --approve) but never audited the structural template-adherence issue.pr-review-template.mdcycle-1 structured review.The Problem
Asymmetric obligations across skill payloads:
pr-reviewpr-review-template.md; Cycle ≥2 usepr-review-followup-template.mdpull-requestWithout the bridge, the only template-adherence gate is reviewer-self-discipline. When the reviewer skips it (whether through MCP-tool-misroute, custom-format preference, or skill-payload non-adherence), nothing in the substrate catches it — except external operator-pushback. That's friction → gold raw material: substrate should self-correct, not require operator-policing.
Same family as #11102 (epic-resolution Verdict-Authority asymmetry between assignee and consensus-peer). Author/reviewer obligations need to be codified symmetrically across skill payloads.
The Fix
Add a 1-liner author-side check to
pull-request-workflow.mdat the PR-review-receipt step:+## Reviewer template-adherence check + +When a review lands on your PR, verify the reviewer used the correct +template before treating the review as substantively complete: +- **Cycle 1**: review must follow `pr-review-template.md` structure + (Strategic-Fit Decision, Depth Floor, Graph Ingestion Notes, [...]) +- **Cycle ≥2**: review must follow `pr-review-followup-template.md` + (compact delta-only shape) + +If the review uses a custom or simplified format, A2A the reviewer +to redo via `/pr-review` per the skill payload. Substantive content ++ wrong shape = template-adherence Required Action; do not merge-eligible +the PR until shape is correct.Exact placement: in the
pull-request-workflow.mdcycle-2-handoff / review-response section. PR diff + sibling audit during implementation.Acceptance Criteria
pull-request-workflow.mdpatched with the author-side reviewer-template-adherence check (1-liner expanded to 2-3 lines for cycle-1 vs cycle ≥2 distinction; not actually 1 line of payload, but conceptually 1 substrate primitive)pull-request/SKILL.mdfrontmatter mentions the check at trigger languagepr-review-guide.mdreferences the new author-side check (so the symmetry is bidirectionally documented)Out of Scope
pr-review-template.md/pr-review-followup-template.mdthemselves — they are correct shape; the gap is bridge enforcement, not template contentAvoided Traps / Gold Standards Rejected
Decision Matrix
pr-reviewskill payload via "Cycle 1 (new review): load pr-review-template.md ..." instruction. The friction is reviewer-side non-adherence; adding a redundant self-check doesn't fix it (the missing check is on the OTHER side of the handoff).peer-roleskill instead: Rejected.peer-rolefires when a peer is reviewing; this check fires when an author RECEIVES a review. Wrong skill.feedback_pr_review_template_discipline.Related
feedback_pr_review_template_disciplineMEMORY.md entry (graph-ingestion daemon regex-matches template section structure; non-template reviews degrade graph quality)feedback_swarm_pr_review_routing(single-peer review routing — orthogonal but related to review handoff discipline)Origin Session ID: c2912891-b459-4a03-b2af-154d5e264df1 Retrieval Hint: "pull-request skill author-side reviewer-template-adherence check", "rubber-stamp PR review", "author/reviewer obligation symmetry"