Repository navigation
fix: prevent accidental GitHub issue closure in publication - #16
Merged
Merged
Conversation
Owner
Author
Publication completed — return to Planning / Primary AuthorPublished PR #16 through the explicitly authorized squash path at 2026-09-29T05:08:36Z. Issue #15 remains open. Issue closure on merge: none. Final gate
Subject: Body: Resulting-state evidence
Publication is complete. No unexpected condition or recovery action. No release, tag, settings change, sibling change, or adjacent issue execution was performed. Return control to Planning to assess any remaining issue completion or release decision under separate authority; issue #15 remains open. |
This was referenced Sep 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Outcome and authority
Issue #15 remains open pending review/publication. Issue closure on merge: none.
This candidate implements the settled Issue #15 contract, including the accepted MAJOR-1 disposition, head-pinning and identity amendment, and empty-body, declaration-invalidation, and proportionality amendment.
GitHub issue closure can arise from PR relationships or from messages that land on the default branch. Checking PR relationships alone misses commit-message commands. The Publication role now checks every controlling surface, binds the merge to verified inputs, and verifies the landed result. MAJOR-1 is corrected in implementation, pending independent re-review.
Corrected candidate:
a9745bd1a0a4a612d185c506ceabc1d192961b85.Changes and correction mapping
The complete PR changes the three files below. This bounded correction changes only
roles/publication.md; the handoff and workflow remain consistent without edits.roles/publication.mdhandoffs/review-to-publication.mdworkflows/reviewed-change.mdgh pr view <PR> --json commitssupplies messages for inspection when they can affect the landing. Their closing targets must be declared. Intermediate messages may be non-controlling for explicitly supplied squash text; merge/rebase methods account for messages they land.none, each surface and the aggregate must be empty. A missing declared target blocks the gate: correct an authorized surface and rerun, or correct the handoff within authority if explicit post-merge closure is intended. No silent reinterpretation or second declaration is introduced.owner/repository#number; valid source prose need not be rewritten. Local commit references resolve against the repository whose default branch receives the commit.--match-head-commit,--subject, and--body. Other methods must retain the head guard and message correspondence; inability to bind inputs returns an unresolved condition. No silent generated-message fallback.Lifecycle and role-transfer semantics remain unchanged. Publication is not general closeout, and does not grant issue-closure authority. All additions remain workflow-local and GitHub-conditional, with no auto-close configuration dependency. No source-derived guidance, governing pins, settings, validators, automation, or sibling repositories change. Consumer uptake remains deliberate.
Bounded comparison correction
Implements Planning's subset/aggregate correction. Only the comparison wording and missing-target disposition change from the prior candidate. All previously accepted lifecycle, authority, host-neutrality, identity-resolution, head-pinning, message-binding, invalidation, empty-body, post-merge, and merge-method behavior is preserved.
Manual comparison walkthroughs: a declared target supplied only by the final landing message passes despite empty PR relationships; targets split across surfaces pass when their union equals the declaration; duplicate authorized targets are harmless; an undeclared target or missing aggregate target blocks;
nonepasses only with all surfaces empty. These are prose checks, not new parsers or live merge tests.Source checks and empty-body finding
Checked GitHub's issue-linking documentation, CLI merge options, and the installed CLI v2.97.0's merge input handling and GraphQL payload.
That version marks an explicitly supplied body as set and sends it even when empty. This establishes client serialization, not live server/landed behavior. The canonical procedure therefore requires confirmation before relying on an empty body and otherwise selects Planning's permitted non-empty verified-body option. Post-merge correspondence remains mandatory. No live merge experiment was performed.
Validation and limitations
Local qualification passed: full
.venv/bin/pre-commit run --all-files --show-diff-on-failure,git diff --check, staged whitespace checks,python3 scripts/validate_local.py, all five tests frompython3 -m unittest discover -s tests, andnpm audit(zero vulnerabilities).Manual prose walkthroughs covered empty and authorized sets, local/qualified/URL resolution, cross-repository targets with equal issue numbers, undeclared commit commands despite empty PR relationships, explicit squash versus merge/rebase messages, unchecked defaults, moved heads, changed declarations, empty-body uncertainty, disabled auto-close, and landed-message mismatch. These are implementor checks, not independent review or live publication tests. No semantic parser or new automation was added.
Hosted Repository validation: final SUCCESS on exact candidate
a9745bd1a0a4a612d185c506ceabc1d192961b85(run evidence).PR #16 verification:
closingIssuesReferencesis empty; the PR description and all three commit subjects/bodies contain no unintended issue-closing command targeting a real issue; issue #15 remains OPEN. The worktree is clean. This is candidate-return evidence; Publication must establish its actual final landing message and repeat the complete final gate before any later authorized merge.Return to Planning / Primary Author
Stop at this validated immutable candidate. Planning should assess the correction and route independent re-review against MAJOR-1 and all amendments, preserving the evidence above in the project record. Publication remains unauthorized. No merge, release, tag, repository-setting mutation, issue closure, or adjacent issue execution was performed. No scope deviation; the latest Planning amendment was incorporated in addition to the attached correction instructions.