Resolves #11229
Authored by Claude Opus 4.7 (Claude Code). Session `c0d5c29d-dc70-44c8-b5af-d3f6c59936ee`.
Evidence: L1 (static documentation diff + CI) → L1 required (skill-payload wording amendment). Residual: none.
Summary
Operator-corrected 2026-05-11 (this session): epic-close is NOT a §0 Invariant 1 parallel. The prior `epic-resolution-workflow.md §4` wording falsely claimed:
"Verdict authority — §0 Invariant 1 parallel: the skill produces RECOMMENDATIONS only. The actual `close as completed` action on the epic is reserved for the human pipeline authority (@tobiu in this repo). Even when `RECOMMEND_CLOSE_COMPLETED` fires, the skill never autonomously closes the epic. This mirrors the merge-act invariant for PRs."
§0 Invariant 1 verbatim: "No `gh pr merge` (Human-Only execution)..." — strictly applies to PR merge, not epic close. The "§0 parallel" claim was fabricated; faithful execution propagated the misframing across multiple agent interactions today.
Empirical anchor
- #10691 closeout review on 2026-05-04T21:58:58Z concluded `RECOMMEND_CLOSE_COMPLETED`; epic stayed OPEN until 2026-05-11T19:57:59Z (~7 days)
- Operator surfaced: "if you did an epic review, and come to the close state conclusion => close it. this is not a merge gate."
- Then: "tickets are not substrate to get into the codebase" — sharpened framing that filing #11229 wasn't fixing the substrate; only the actual skill-file edit is
The Fix (per the AC list in #11229)
Before (1 paragraph claiming §0-parallel for epic-close):
"Verdict authority — §0 Invariant 1 parallel: ... reserved for the human pipeline authority ... This mirrors the merge-act invariant for PRs."
After (per-verdict terminal-action shape):
- `RECOMMEND_CLOSE_COMPLETED` (no unresolved residuals): reviewer-agent SHOULD close the epic via `gh issue close --reason completed` as natural downstream of the review. Review IS the gate; not a separate operator-gate. NOT a §0 Invariant 1 parallel — §0 strictly forbids `gh pr merge` only; epic-close is downstream of review verdict.
- `RECOMMEND_KEEP_OPEN`: no terminal action.
- `RECOMMEND_CREATE_MISSING_SUBS`: no terminal action.
- `RECOMMEND_RETIRE_OR_SUPERSEDE`: no terminal action; operator authority (potential separate substrate concern for retire-action specifically).
AC Coverage
Substrate-Mutation Pre-Flight (§1.1)
Touches: `.agents/skills/epic-resolution/references/epic-resolution-workflow.md`. Slot-rationale:
Modified section: §4 "Verdict authority" — `keep` disposition unchanged; wording corrected per operator V-B-A. Single-paragraph rewrite + expansion to per-verdict terminal-action table; ~9 net LOC added (correction-substrate, not new pattern).
Decay-mitigation rationale (per §13): the prior wording was substrate-bug propagating misread of §0 invariant boundary. The fix doesn't add new substrate; it corrects existing substrate to align with §0's actual scope. Net-additive LOC justified as substrate-correctness fix (substrate-truth-vs-claim drift resolution).
Note on consensus-mandate scope (#11217)
Per `ideation-sandbox-workflow.md §6.1` Scope Classification (shipped via #11217): bug-fix scope = low-blast. This is a wording-fix amendment of just-shipped substrate. NOT a Discussion-graduation; direct ticket-to-PR per standard substrate-discipline. Cross-family review per `pull-request-workflow §6.1` Cross-Family Mandate (NOT §6.1.1 Consensus-Gate which scopes to high-blast Discussion graduations).
Related
- #11229 (this PR's close-target)
- #10691 (empirical anchor — 7-day stale-pending-action that motivated the operator-correction)
- AGENTS.md §0 Invariant 1 (unchanged; the substrate fix here removes a false parallel claim from a different skill payload)
- PR #11225 / #11219 lessons — earlier today's substrate-truth-vs-claim catches added "skill-protocol-document misframing" as a new substrate-error-mode layer
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.7 neo-opus-ada@neomjs.com
Resolves #11229
Authored by Claude Opus 4.7 (Claude Code). Session `c0d5c29d-dc70-44c8-b5af-d3f6c59936ee`.
Evidence: L1 (static documentation diff + CI) → L1 required (skill-payload wording amendment). Residual: none.
Summary
Operator-corrected 2026-05-11 (this session): epic-close is NOT a §0 Invariant 1 parallel. The prior `epic-resolution-workflow.md §4` wording falsely claimed:
§0 Invariant 1 verbatim: "No `gh pr merge` (Human-Only execution)..." — strictly applies to PR merge, not epic close. The "§0 parallel" claim was fabricated; faithful execution propagated the misframing across multiple agent interactions today.
Empirical anchor
The Fix (per the AC list in #11229)
Before (1 paragraph claiming §0-parallel for epic-close):
After (per-verdict terminal-action shape):
AC Coverage
Substrate-Mutation Pre-Flight (§1.1)
Touches: `.agents/skills/epic-resolution/references/epic-resolution-workflow.md`. Slot-rationale:
Modified section: §4 "Verdict authority" — `keep` disposition unchanged; wording corrected per operator V-B-A. Single-paragraph rewrite + expansion to per-verdict terminal-action table; ~9 net LOC added (correction-substrate, not new pattern).
Decay-mitigation rationale (per §13): the prior wording was substrate-bug propagating misread of §0 invariant boundary. The fix doesn't add new substrate; it corrects existing substrate to align with §0's actual scope. Net-additive LOC justified as substrate-correctness fix (substrate-truth-vs-claim drift resolution).
Note on consensus-mandate scope (#11217)
Per `ideation-sandbox-workflow.md §6.1` Scope Classification (shipped via #11217): bug-fix scope = low-blast. This is a wording-fix amendment of just-shipped substrate. NOT a Discussion-graduation; direct ticket-to-PR per standard substrate-discipline. Cross-family review per `pull-request-workflow §6.1` Cross-Family Mandate (NOT §6.1.1 Consensus-Gate which scopes to high-blast Discussion graduations).
Related
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.7 neo-opus-ada@neomjs.com