Repository navigation
Check every closing keyword in a PR body, not only the intended ones - #171
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Self-review rubric (Phase 4, one intrinsic pass, anchored on Universal
Repo-specific
Fixed during review
Judgment call left for the reviewer
Summary: the change is mechanically consistent and CI is green. It is behaviorally UNVERIFIED and is handed off for a maintainer merge. This review was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener). drafted by Claude on behalf of Daniel Stephenson |
There was a problem hiding this comment.
🔵 Needs a closer look
Required real-repository /create-dev-loop checks were not run, leaving generated Phase 4 behavior unverified by documentation-consistency CI and requiring maintainer validation.
No open issues 🎉
What changed in this PR
Updates the generated dev-loop skill’s Phase 4 guidance to prevent unintended issue closures from negated closing keywords, addressing #125.
Changes:
- Requires checking every closing-keyword/reference pair before PR creation and after later body edits.
- Documents safe wording for mentioning issues without closing them.
- Adds a self-review rubric item requiring inspection of the published PR body and quotation of each closing pair.
| File | Description |
|---|---|
create-dev-loop.md |
Adds closing-keyword guidance and a matching Phase 4 self-review check. |
Review effort: Balanced
Summary
Closes #N". It makes that check run in the other direction too. GitHub's closing-keyword parser ignores negation, so a sentence that says an issue is not being closed still closes it on merge if a keyword sits directly before the reference. The paragraph lists the keyword family, says a keyword may only come before a reference this PR really closes, gives non-keyword wording for mentioning an issue, and requires every keyword-plus-reference pair to be read beforegh pr createand after any later body edit.gh pr view <number> --json body, and the self-review has to quote each pair it finds.fiefs-dev-loop#19,graphik-dev-loop#5,professions-dev-loop#9).No placeholder was added. No Step was added or removed, and no phase was renumbered. The Step 4 table and README's "What it does" list therefore stay the same.
Closes #125
Research grounding
No
RESEARCH.mdfinding applies directly. The behavior being guarded against is a property of GitHub's keyword parser, not something the agent-research literature measures. The rubric item follows §1's framing (score from a command output, not judgment). The motivating harm is close to §7's implication that triage decisions should never be filtered silently: a wrongly auto-closed issue is filtered out of triage with no record. This PR does not implement either finding, so no Implementations entry was added.Doc sync check
{{placeholder}}added or changed has a corresponding Step 4 substitution-table row (none added;check_docs.pypasses)Test plan
python3 scripts/check_docs.py: "Doc consistency check passed."python3 -m unittest discover -s tests: Ran 42 tests, OK/create-dev-loopvalidation run was performed. This PR came from a headless Gardener dispatch. Its sandbox has no second repository to generate against, and Step 6 would create a GitHub repository, which the dispatch may not do (see [self-audit] The repo's own validation anchor is structurally unrunnable in a headless dispatch, so template changes can never merge autonomously #109). None of the five checklist items inCLAUDE.md's "Testing changes" section were exercised. Under the loop's rules the PR is handed to a human, not auto-merged. The change is one prose paragraph and one rubric bullet with no placeholders or fences, so it can be checked by reading it.Retrofit
Per
CLAUDE.md's "Promoting a rule into the template", the skills that reported this gap likely need a retrofit pass:fiefs-dev-loop,graphik-dev-loop, andprofessions-dev-loop. More generally, every generated skill that predates this change writesCloses #Nand is exposed to the same failure.gardener interface
Steps 3, 5, and 6 are not touched, so this is not a breaking change for gardener.
Deferred backlog
The other open issues were deferred this cycle for these reasons:
CLAUDE.md, which the loop may not edit.template-ruleissues each add a separate template rule. Bundling them would make an UNVERIFIED hand-off larger without making it more coherent.#125 was picked because three skills reported it independently and the change is small.
This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
🤖 Generated with Claude Code
drafted by Claude on behalf of Daniel Stephenson