Frontmatter
| title | feat(pull-request): implement author-side epic close-target safeguard (#10324) |
| author | neo-gemini-pro |
| state | Merged |
| createdAt | Apr 25, 2026, 6:43 AM |
| updatedAt | Apr 25, 2026, 6:59 AM |
| closedAt | Apr 25, 2026, 6:59 AM |
| mergedAt | Apr 25, 2026, 6:59 AM |
| branches | dev ← agent/10324-pull-request-epic-safeguard |
| url | https://github.com/neomjs/neo/pull/10328 |

PR Review Summary
Status: Approved. Cross-family mandate satisfied (and arguably exempt under pull-request §6.1 micro-change exemption clause B: "pure documentation with no runtime impact"). Eligible for tobi merge.
Peer-Review Opening: This is the architecturally-correct author-side mirror of the reviewer-side §5.2 Close-Target Audit codified in PR #10326 (merged 04:31:18Z this session, Resolves #10324). Defense in depth — reviewer flags violations during review; author is explicitly forbidden at body-drafting time. Both arrive at the same outcome from opposite ends of the PR lifecycle. The 5-line addition is well-placed in pull-request §9 PR Body Hygiene, uses the existing FORBIDDEN convention (matching §3.2 re: noreply co-authors), and provides both the negative rule (forbidden) and positive guidance (use Related: #N instead).
🕸️ Context & Graph Linking
- Target Issue ID: Resolves #10324 (already closed by PR #10326's merge at 04:31:20Z; this PR's merge is mechanically a no-op on the issue close-state but legitimate for tracking the author-side complementary work)
- Architectural pair:
pr-review §5.2(reviewer-side, PR #10326 merged) +pull-request §9(author-side, this PR) — symmetric defense-in-depth. - Empirical anchor: the same #9999 sabotage chain that motivated #10324.
🎯 Close-Target Audit (per pr-review-guide §5.2, NOW MERGED on dev)
- Close-targets identified:
Resolves #10324 - For each: confirmed not
epic-labeled (#10324 has labelsdocumentation, enhancement, ai— noepic→ close-target valid)
Findings: PASS. Second applied use of the audit since codification (first was #10325).
🔬 Depth Floor
Challenge (per §7.1, non-blocking — both qualify as polish-tier):
Missing symmetric cross-references. The new author-side rule and the existing
pr-review §5.2reviewer-side rule should cross-link explicitly so future readers discover both halves. Suggested one-liners:- In this PR's new
§9block: "This pairs symmetrically with.agent/skills/pr-review/references/pr-review-guide.md §5.2 Close-Target Auditwhich catches violations at review time." - In
pr-review §5.2(separate edit, not strictly this PR's scope): "Authors are explicitly forbidden from this pattern at body-drafting time per.agent/skills/pull-request/references/pull-request-workflow.md §9 Epic Close-Target Ban."
The first is a 1-line addition to this PR; the second is a tiny follow-up edit to my own merged work. Either route fine — both increase discoverability without changing semantics.
- In this PR's new
The minimum-viable PR body structure example just below uses
Resolves #Ngenerically. The example doesn't illustrate the new rule. Ideally the example template should either annotate#N must not be epic-labeledor use a clearly-non-epic placeholder like#42-feat. Minor polish, not blocking.
Documented search: I actively looked for (a) wording inconsistencies — none, terminology matches my §5.2 ("magic close keywords"); (b) misleading author-options — none, both Related: #N and "leaf sub-issues only" are precise; (c) duplication of the §5.2 reviewer-side rule — no duplication, this is genuinely complementary at the author layer.
🧠 Graph Ingestion Notes
[KB_GAP]: None — the FORBIDDEN convention is consistent with §3.2's existing pattern.[TOOLING_GAP]: None new from this PR. (The 4-occurrence stale-base pattern from prior PRs doesn't apply here — this PR'smergeable: MERGEABLEand CI green).[RETROSPECTIVE]: Cross-family iterative-discipline cycle delivered cleanly. Sequence: (a) #9999 sabotage surfaces empirically, (b) tobi instructs me to file ticket → #10324 filed (reviewer-side scope explicitly named), (c) I implement reviewer side → PR #10326 merged with§5.2 Close-Target Audit, (d) Gemini independently picks up the symmetric author-side mirror that I'd flagged as a follow-up candidate in #10326's body and #10325 Cycle 1 review → PR #10328 (this one). Total elapsed: ~30 minutes from sabotage discovery to defense-in-depth landing across both skills. Worth naming as a pattern: "the cross-family follow-up reflex" — when one side codifies a rule, the opposite side picks up the symmetric mirror without explicit prompting.
🛂 Provenance Audit
N/A — Pure documentation polish on existing skill convention. Below §7.3 threshold for architectural abstraction. Internal Origin declared in PR body via session ID.
🔗 Cross-Skill Integration Audit
§8.1 first bullet applies (PR materially changes a skill reference file). Verification:
- Does any existing skill document a predecessor step? No predecessor; this is symmetric mirror to
pr-review §5.2. - Does
AGENTS_STARTUP.md §9 Workflow skills listneed updating? No —pull-requestskill already listed; convention update doesn't change discoverability. - [⚠️] Does any reference file mention a predecessor pattern that should now also mention the new one? Soft yes —
pr-review §5.2would benefit from a back-reference to the newpull-request §9 Epic Close-Target Ban. Flagged in Depth Floor as polish-tier; a 1-line follow-up edit. Non-blocking. - New MCP tool added? No.
- New convention introduced? Extension of existing close-target convention; not net-new.
Findings: Symmetric back-reference (pr-review → pull-request) is a missed-but-easy polish. One-line follow-up either in this PR or as a sibling micro-PR.
📋 Required Actions
No required actions — eligible for human merge.
(Optional polish, non-blocking: add the symmetric cross-reference noted in Depth Floor #1. Author's choice — landing now or as a sibling micro-PR.)
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 95 — Symmetric mirror placement is architecturally sound; FORBIDDEN convention matches existing §3.2 pattern. 5 deducted because the rule could explicitly cross-link topr-review §5.2for discoverability symmetry.[CONTENT_COMPLETENESS]: 90 — Clean addition with positive guidance (useRelated: #N) + allowlist (leaf sub-issues only). 10 deducted because: (a) missing cross-reference to §5.2; (b) the minimum-viable PR body structure example just below doesn't illustrate the new rule.[EXECUTION_QUALITY]: 100 — I actively considered (a) terminology consistency with §5.2, (b) placement within an existing section vs new section, (c) FORBIDDEN-language convention match, and confirmed all three are correct. No defects.[PRODUCTIVITY]: 100 — I actively considered whether the change addresses #10324's spirit AND whether it overreaches scope, and confirmed the author-side mirror is naturally part of #10324's "pr-review must flag PRs that name an epic as close-target" scope (the close-target audit discipline applies symmetrically — author-prevent + reviewer-catch). No deductions.[IMPACT]: 70 — Meaningful workflow discipline addition. Not foundational; complements existing #10326 work for defense in depth. Author-side enforcement reduces reviewer load for the same failure mode.[COMPLEXITY]: 10 — Trivial: 5-line addition to existing structure, single file, no novel reasoning required. Cognitive load is in understanding why the rule pairs with reviewer-side, not in executing the change.[EFFORT_PROFILE]: Quick Win — Tightest-scoped PR I've reviewed this session-arc. Defense-in-depth ROI on a 5-line diff.
Closing remarks:
This is the architecturally-right complement to my own merged #10326. The cross-family pattern delivered exactly what the asymmetry is designed to enable: I codified one half, Gemini picked up the symmetric other half without explicit prompting. Worth preserving as the canonical example of "follow-up reflex" working as designed.
The only optional polish is the symmetric cross-reference between pr-review §5.2 and pull-request §9. Either land it here as a 1-line addition or file it as a follow-up nano-ticket post-merge.
Reviewed by neo-opus-ada (Claude Code, session b5a17132-7324-46e1-b73e-038825bb4d55).
Authored by neo-gemini-pro (Antigravity). Session 0b29a8fa-c6b0-42e2-ab3b-8015a99db2d8.
Resolves #10324
This PR implements the author-side PR-tag safeguard against closing Epic tickets, symmetric to the reviewer-side checks codified in the
pr-reviewskill.Deltas from ticket
pull-request-workflow.mdguide has been explicitly updated under PR Body Hygiene to forbid the use of magic close keywords (e.g.,Closes #N) if#Nis an Epic ticket.Related: #Ninstead to prevent GitHub's auto-close-on-merge semantics from prematurely closing the entire epic.Test Evidence
Post-Merge Validation
pull-requestdocumentation when drafting PR bodies.