Skip to content

Process: Definition of Done — a PR may say "Closes #N" only when every Done-when box is checked; otherwise "Part of #N"; PR template + a scope-check gate + a weekly "closed but not done" audit (CONTRIBUTING.md, .github/PULL_REQUEST_TEMPLATE.md, script/check-issue-close-scope.php) #36400

Description

@PurHur

Category

Foundation: · fleet process (the largest throughput leak found) · child of #36379

Why

Of the first six wave-1 issues the fleet closed, four were closed by PRs that delivered a fraction of the scope and said so in their own bodies ("Part B remains", "follow-up remains", a one-line command not found fix closing a five-item issue). Re-spinning cost a day; the five re-spins were then closed the same way in places (#36224 "still ~n^2.6", #36246 "hook only"). At 80–140 merges/day, a closed issue that is not done is invisible forever unless someone re-measures — which is what the last two audits were. The fix is procedural and cheap.

Deliverable

  • CONTRIBUTING.md §Definition of Done: an issue closes only when (1) every ## Done when box is ticked in the PR body with the command output, (2) the named gates were run in the pinned image, (3) partial work uses Part of #N and lists what remains. Issues without a Done-when list get one before being claimed.
  • .github/PULL_REQUEST_TEMPLATE.md with the checklist; script/check-issue-close-scope.php (runs in the compiler gate on PRs): for each Closes #N in the body, fetch the issue, count - [ ] boxes in its Done-when, and fail if the PR body does not contain a ticked copy of each (- [x] + the same text).
  • Weekly audit job: for issues closed in the last 7 days by a PR whose body contains "remain", "follow-up", "partial", "part of", or whose Done-when boxes are not all ticked, post one summary comment on the active tracker and label the issue needs-respin.
  • Tracker hygiene: children of a tracker are re-listed as done / partial / open in the tracker body by the same job.

Done when

  • Template + gate live; a test PR that says "Closes #N" without the ticked list is rejected by the gate
  • First weekly audit posted; every needs-respin from it has a fresh child issue

Activity

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

    MOST IMPORTANTThis are the most important targetsarea:toolingTooling / CI / docsenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-0:FoundationPhase 0 – foundation & DevEx

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions