Repository navigation
derive merge-time issue closure from the substantive completion boundary #19
Description
Problem
Agent Workflows #15 added strong GitHub issue-closure safety mechanics, including:
- canonical issue identity resolution;
- inspection of PR closing relationships;
- controlling commit-message checks;
- explicit final landing-message checks;
- exact-head merge binding;
- post-merge resulting-state verification.
Those mechanics are sound.
Operational use exposed a remaining semantic gap: the workflow declares Issue closure on merge as either none or an authorized issue set, but it does not yet state clearly enough how that declaration should be chosen.
In practice, Planning repeatedly selected none merely because post-merge publication verification or routine cleanup still followed the merge. Later reasoning showed that this can overextend issue lifetime beyond its substantive completion boundary.
Planning objective
Make the closure declaration explicitly derive from the issue/work item's substantive governed completion boundary.
The reusable rule should be:
- if the merge itself satisfies the substantive completion boundary, declare the appropriate issue closure on merge;
- if material completion obligations remain after merge, declare
nonefor that issue and complete it explicitly later; - routine cleanup or housekeeping that does not represent substantive unfinished work does not, by itself, extend the completion boundary.
The purpose is neither "close everything on merge" nor "keep everything open through publication cleanup." It is correspondence between issue state and actual governed completion.
Existing mechanics to preserve
Do not weaken the #15 safety model.
Preserve:
- per-surface subset checks;
- aggregate equality with the declared closure set;
- canonical full issue identities;
- final host-state gate;
- exact-head binding;
- explicit landing messages;
- post-merge resulting-state verification;
- host-neutrality;
- the fact that merge need not complete a work item.
Candidate canonical surfaces
Planning should review the smallest coherent changes across:
workflows/reviewed-change.md;handoffs/review-to-publication.md;roles/publication.md.
Consider whether Planning/handoff guidance also needs a lightweight reminder that the completion boundary must distinguish substantive completion from routine cleanup.
Avoid duplicating a full rule across every artifact.
Required semantics
The final model should establish that:
-
Issue closure on merge is derived, not defaulted.
The declaration is determined by the work item's actual completion boundary and closure authority. -
Merge-time closure is appropriate when merge is completion.
If no material governed obligation remains after the merge, a closing relationship may intentionally complete the issue. -
Post-merge substantive obligations keep the issue open.
If required publication/resulting-state evidence, downstream action, approval, or other material completion condition remains, the merge must not falsely present completion. -
Routine housekeeping is not automatically a completion condition.
Branch deletion, local synchronization, ordinary cleanup, or similar mechanics do not keep an otherwise completed issue open unless the project explicitly makes them substantive completion requirements. -
Publication verification and issue completion are related but distinct.
A project may require post-merge publication verification without necessarily defining the implementation issue's completion boundary to include every publication-role housekeeping step. -
Host configuration is not the semantic model.
The GitHub auto-close setting may be enabled or disabled by a repository, but the workflow declaration and closure-bearing surfaces must still express the intended per-issue result.
Consumer / compatibility consideration
This is a refinement of the decision rule around the existing Issue closure on merge field.
Review whether consumers with copied handoffs or integrations bound to that field need explicit update guidance in the next release notes.
Do not silently redefine existing instantiated handoffs.
Validation / review
Implementation should:
- preserve the existing prevent accidental GitHub issue-closing keywords in handoff prose #15 closure safety checks;
- include examples covering both merge-completes-issue and merge-does-not-complete-issue cases;
- include at least one case where only routine cleanup follows merge and confirm that cleanup alone does not force
none; - run full repository validation;
- obtain independent review because this changes reusable workflow semantics.
Boundaries
Do not:
- reopen prevent accidental GitHub issue-closing keywords in handoff prose #15;
- implement repo-template #53 here;
- make GitHub mandatory for consumers;
- prescribe repository-wide auto-close enablement or disablement;
- make every merge close an issue;
- make every post-merge verification extend issue lifetime;
- create a new governance standard;
- bundle the separate consequence-ownership work in require ownership of material consequences before completion #17.
Activity
jamesreimer commentedon Oct 1, 2026
Planning implementation decision
Planning settles the #19 refinement as follows.
Core rule
Issue closure on mergeis derived from the work item's substantive completion boundary.It is not a default preference for either closure or non-closure.
Responsibility placement
The completion boundary is established by Planning/project authority, not invented by Publication.
Implementation should use the smallest coherent changes across these canonical surfaces:
roles/planning.mdworkflows/reviewed-change.mdhandoffs/review-to-publication.mdroles/publication.mdDo not duplicate the full rule across all four files. Prefer one clear semantic statement at the workflow/Planning owner and concise references/consumption language in the handoff and Publication role.
Existing mechanics to preserve unchanged in effect
Do not weaken:
Required behavioral examples
The implementation/review evidence should cover at least:
Merge completes issue
Merge does not complete issue
nonefor that issue;Post-merge verification without issue extension
Compatibility
This refines the decision rule around the existing
Issue closure on mergefield.Do not silently reinterpret already-instantiated handoffs. Future release notes should tell consumers using copied handoffs or label-bound integrations to review the clarified semantics.
Validation / review
Issue lifecycle for #19 itself
For #19, the implementing merge may close the issue only if the implementation candidate, required review, and publication authorization make merge the substantive completion boundary.
Do not keep #19 open merely for routine local cleanup.
The final Publication handoff must declare the closure result from the actual #19 completion boundary and run the existing #15 gate.
Boundaries
Do not:
Planning disposition: READY FOR IMPLEMENTATION.
jamesreimer commentedon Oct 1, 2026
Planning exact-candidate review — PR #20
Planning reviewed exact candidate:
2eeb8a60e4859af6a57ff9b2e9cfc4d0f2937c4aagainst base:
012b27c7c384019241531a33ea990d9f4e1f7e77and the settled #19 implementation decision.
Scope — PASS
The candidate changes exactly four canonical workflow surfaces:
roles/planning.mdworkflows/reviewed-change.mdhandoffs/review-to-publication.mdroles/publication.mdNo governing-source pins, source-derived guidance, validators, tests, CI, dependencies, host settings, runtime, or unrelated artifacts change.
Responsibility placement — PASS
The candidate correctly places ownership:
This preserves the role boundary requested by Planning.
Completion-boundary semantics — PASS
The candidate correctly establishes that:
noneis a universal default;This is the intended boundary-driven model.
#15 safety machinery — PASS
Planning accepts the implementation evidence that the existing numbered GitHub issue-closure procedure from
1. Prepare the final gatethrough the end ofroles/publication.mdis byte-identical to the base.The candidate therefore preserves in effect:
none;The new Publication paragraph clarifies consumption of the declaration without redesigning the gate.
Host-configuration interaction — PASS
The candidate does not make repository configuration the semantic model.
If host auto-close behavior differs from the declared intent, the existing #15 result-verification and authority guidance still governs the observed mismatch. The declaration expresses the intended merge consequence; Publication verifies actual issue state and does not silently reinterpret the completion boundary.
No host-setting change is required by this candidate.
Required semantic cases — PASS
Implementation's three walkthroughs faithfully exercise the intended distinctions:
none.These are suitable implementation evidence, not substitutes for independent review.
Compatibility / release evidence — PASS
The proposed next-release summary accurately describes the semantic refinement.
The PR also preserves carried-forward #15 release evidence and correctly states that:
Unreleasedsection is invented.Consequence disposition — PASS
Material consequences are accounted for:
No orphaned material consequence is apparent.
Validation / live state — PASS
Hosted Repository validation reached final SUCCESS on exact candidate
2eeb8a60e4859af6a57ff9b2e9cfc4d0f2937c4ain run36804965496.Implementation also reports:
Current PR state is open, unmerged, mergeable, and non-draft. Issue #19 remains OPEN.
Planning disposition
ACCEPT FOR INDEPENDENT REVIEW
Independent review should focus on:
No merge, tag, release, Issue #19 closure, repo-template #53 implementation, Agent Workflows #17 implementation, or host-setting mutation is authorized by this acceptance.
jamesreimer commentedon Oct 1, 2026
Planning final acceptance — PR #20
Planning accepts the independent review of exact candidate:
2eeb8a60e4859af6a57ff9b2e9cfc4d0f2937c4aDisposition:
Accepted review conclusions
Planning accepts that:
Issue closure on mergefield is clarified without schema or compatibility break;#19 completion boundary
Planning now applies the clarified rule to #19 itself.
All substantive prerequisites to publication are satisfied or are part of the authorized Publication action:
No material #19 obligation is identified after the implementing merge. Post-merge resulting-state verification and routine cleanup remain Publication duties but are not separate substantive completion conditions for Issue #19.
Therefore:
Issue closure on merge:
jamesreimer/agent-workflows#19The final Publication gate must intentionally establish a closure-bearing surface for that canonical issue identity and verify the aggregate closure-command set equals exactly that one issue.
Live state
Planning independently rechecked:
2eeb8a60e4859af6a57ff9b2e9cfc4d0f2937c4a;012b27c7c384019241531a33ea990d9f4e1f7e77;No release, tag, repo-template #53 implementation, Agent Workflows #17 implementation, or host-setting mutation is authorized by this acceptance.
jamesreimer commentedon Oct 1, 2026
Publication completion evidence
PR #20 published the exact reviewed candidate successfully.
2eeb8a60e4859af6a57ff9b2e9cfc4d0f2937c4a36c7786d3b2d4307a1bea943098a8e86b88a37011079551c85b054c42da68b1fa4b3a5aab46a2d0136807612565jamesreimer/agent-workflows#19This is the intended application of #19's rule: merge satisfied the substantive issue-completion boundary, while Publication still completed resulting-state verification and housekeeping afterward.
No release, tag, host-setting change, repo-template #53 implementation, or Agent Workflows #17 implementation occurred.