---
id: 11350
title: '[Agent Substrate] Enforce Source Discussion Closeout Gate in `epic-resolution` (#11328 Part 2)'
state: CLOSED
labels:
  - documentation
  - enhancement
  - ai
  - architecture
  - model-experience
assignees:
  - neo-gemini-pro
  - neo-opus-ada
createdAt: '2026-05-14T07:20:55Z'
updatedAt: '2026-05-14T11:22:22Z'
githubUrl: 'https://github.com/neomjs/neo/issues/11350'
author: neo-gemini-pro
commentsCount: 0
parentIssue: null
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-14T11:22:22Z'
---
# [Agent Substrate] Enforce Source Discussion Closeout Gate in `epic-resolution` (#11328 Part 2)

### What is the purpose of this issue?
Add a Source Discussion Closeout Gate to the `epic-resolution` skill to prevent Epic closure if upstream graduation criteria are unmet.

### What is the context?
This is part 2 of 3 to close the "Discussion-graduation enforcement gap" identified in the #11328 audit. Even if `epic-review` ensures a mapping exists, the final closeout of the Epic must verify that the mapped upstream criteria were actually achieved. Currently, `epic-resolution` only checks Epic ACs.

### Acceptance Criteria
- [ ] Update `.agents/skills/epic-resolution/SKILL.md` (and/or its `references/epic-resolution-workflow.md` audit file) to include a new **Source Discussion Closeout Gate**.
- [ ] Add the trigger condition: Fires when the Epic has a source Discussion or a Stage 2.5 mapping table.
- [ ] Require the `epic-resolution` workflow to reconcile upstream criteria before returning an Epic AC verdict.
- [ ] Enforce the failure mode: If any source Discussion criterion is not delivered, explicitly deferred, or converted into a follow-up ticket, the verdict MUST NOT be `CLOSE_AS_COMPLETED`.
- [ ] Define the valid alternative verdicts for this failure mode: e.g., `CREATE_MISSING_SUBS`, `KEEP_OPEN`, or `CLOSE_AS_PARTIAL_WITH_FOLLOW_UPS`.

### Priority
- priority:high
- ai

## Timeline

- 2026-05-14T07:24:53Z @neo-gemini-pro added the `ai` label
- 2026-05-14T07:24:54Z @neo-gemini-pro added the `enhancement` label
- 2026-05-14T07:24:54Z @neo-gemini-pro added the `architecture` label
- 2026-05-14T07:24:54Z @neo-gemini-pro added the `model-experience` label
- 2026-05-14T07:24:54Z @neo-gemini-pro added the `documentation` label
- 2026-05-14T07:29:09Z @neo-opus-ada assigned to @neo-opus-ada
- 2026-05-14T07:29:29Z @neo-gemini-pro assigned to @neo-gemini-pro
- 2026-05-14T07:31:17Z @neo-gemini-pro cross-referenced by PR #11353
- 2026-05-14T07:32:03Z @neo-opus-ada cross-referenced by PR #11354
- 2026-05-14T07:35:41Z @neo-gemini-pro cross-referenced by PR #11355
- 2026-05-14T07:42:50Z @neo-opus-ada referenced in commit `9eca031` - "feat(skills): add §3.5 Source Discussion Closeout Gate to epic-resolution (#11350)

Resolves #11350 (#11328 audit Part 2 implementation; #11328 itself remains
the audit ticket — Parts 1 + 3 are separate PRs and tickets).

The new §3.5 Closeout Gate fires BEFORE §4 verdict computation when an Epic
cites a source Discussion. Reconciles each Discussion graduation criterion
against delivered Epic substrate; LOST criteria block
RECOMMEND_CLOSE_COMPLETED.

The gate complements #11349 epic-review Stage 2.5 Mapping Gate (creation-time
discipline). Together they enforce the semantic bridge between Discussion
graduation criteria and Epic AC delivery at both lifecycle moments:

- #11349 creation-time: Epic body must contain Source Discussion Criteria
  Mapping table; missing/diluted criteria caught at sub-pickup
- #11350 (this PR) resolution-time: reconciliation table verifies each
  criterion is delivered, explicitly deferred, or converted to follow-up

Substrate budget: +36 insertions (conditionally-loaded skill payload; 0
always-loaded substrate). skill-manifest-lint passes.

Per friction → gold asymmetric ratchet discipline: additive substrate
justified by preventive value (silent-promise-loss class detection).

Dogfood: applied §0 Inv 7 atomic-broadcast at lane-claim (PR #11346
discipline) — broadcast [lane-claim] to AGENT:* BEFORE any tracked-file
edit.

Refs #11328 (audit origin; not closed by this PR — #11349 + #11355 are
the sibling Parts 1 + 3 implementations)."
- 2026-05-14T07:53:12Z @neo-gpt cross-referenced by PR #11352
- 2026-05-14T07:59:57Z @neo-opus-ada cross-referenced by PR #11356
- 2026-05-14T11:22:22Z @tobiu closed this issue
- 2026-05-14T11:22:22Z @tobiu referenced in commit `9d613f9` - "feat(skills): add §3.5 Source Discussion Closeout Gate to epic-resolution (#11350) (#11354)

Resolves #11350 (#11328 audit Part 2 implementation; #11328 itself remains
the audit ticket — Parts 1 + 3 are separate PRs and tickets).

The new §3.5 Closeout Gate fires BEFORE §4 verdict computation when an Epic
cites a source Discussion. Reconciles each Discussion graduation criterion
against delivered Epic substrate; LOST criteria block
RECOMMEND_CLOSE_COMPLETED.

The gate complements #11349 epic-review Stage 2.5 Mapping Gate (creation-time
discipline). Together they enforce the semantic bridge between Discussion
graduation criteria and Epic AC delivery at both lifecycle moments:

- #11349 creation-time: Epic body must contain Source Discussion Criteria
  Mapping table; missing/diluted criteria caught at sub-pickup
- #11350 (this PR) resolution-time: reconciliation table verifies each
  criterion is delivered, explicitly deferred, or converted to follow-up

Substrate budget: +36 insertions (conditionally-loaded skill payload; 0
always-loaded substrate). skill-manifest-lint passes.

Per friction → gold asymmetric ratchet discipline: additive substrate
justified by preventive value (silent-promise-loss class detection).

Dogfood: applied §0 Inv 7 atomic-broadcast at lane-claim (PR #11346
discipline) — broadcast [lane-claim] to AGENT:* BEFORE any tracked-file
edit.

Refs #11328 (audit origin; not closed by this PR — #11349 + #11355 are
the sibling Parts 1 + 3 implementations).

Co-authored-by: tobiu <tobiasuhlig78@gmail.com>"
- 2026-05-16T17:26:43Z @neo-gpt cross-referenced by #11328

