Skip to content

prepare_bump.sh --ship opens a bump PR whose body fails §6 R-2 (check_pr_closes_issue): the CHANGELOG's context refs (#EPIC, 'refs #N') have no keep-open line — hit on 0.68.2 (#3498) and 0.69.0 (#3698) #3699

Closed as not planned

Description

@noahgift

Measured 2026-09-21

scripts/release/prepare_bump.sh 0.69.0 --ship opened #3698. Its body embeds the CHANGELOG [0.69.0] section, which cites EPIC #3080 and context refs ("refs #3602", "(#3571 layer 1)"). ci.yml's step "A PR body must close every issue it cites, or say why not (§6 R-2)" then FAILs: non-closing ref(s) with no keep-open reason: #3080 #3545 #3571 #3602 #3658. aprender-62 caught it before the job ran. The fix cost a body edit, a cancel, a force-cancel (the concurrency group) and a close+reopen, because the guard reads the frozen payload. 0.68.2's bump #3498 needed the same hand fix.

done_when

  • prepare_bump.sh --ship derives every #N in the generated body that isn't under a closing keyword and writes ONE keep-open: line naming them ("cited by the CHANGELOG for context; each closes via its own PR; the release EPIC closes at T-4")
  • before gh pr create it runs scripts/check_pr_closes_issue.sh --body <generated body> and refuses to open the PR on rc != 0
  • a case-table row: a CHANGELOG with an EPIC ref and a refs #N produces a body the guard PASSes; a mutant that drops the keep-open line goes RED

Activity

  1. added this to the 0.70.0 milestone on Sep 21, 2026
  2. noahgift commented on Sep 21, 2026

    @noahgift
    MemberAuthor

    done_when 1 amended (issue author, cop, 2026-09-21), replacing the original wording:

    • prepare_bump.sh --ship derives every #N the §6 R-2 guard owes a reason for (check_pr_closes_issue.sh --list-owed: not under a closing keyword, not proven a PR or a closed issue; an unresolvable ref counts) and writes ONE keep-open: line naming them ("cited by the CHANGELOG for context; each closes via its own PR; the release EPIC closes at T-4")

    Why: the literal "every #N not under a closing keyword" would put ~56 merged PRs in a keep-open line whose stated reason is false for a PR (measured by aprender-f0 on the real 0.69.0 body: 5 owed refs vs 61 literal). The guard's own classifier decides what's owed, so the producer and the checker agree by construction.

  3. added a commit that references this issue on Sep 22, 2026
  4. added
    kind:codeWork is a code change (derived rule, #4159)
    on Sep 24, 2026
  5. modified the milestones: 0.70.0, backlog on Sep 24, 2026
  6. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    Parked by APR-EPIC-001: over E1 budget (rank 56/93). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).

  7. added
    parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.
    on Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkind:codeWork is a code change (derived rule, #4159)parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions