The gap
A generated dev-loop's open-PR grooming step verifies a rebase with the test command alone, then force-pushes on the strength of that single result. Where a repository's required checks also run a formatter, a linter or static analysis, a branch can be pushed still-red and the failure rediscovered from CI several minutes later.
Observed in the medieval-factions-dev-loop instance (dmccoystephenson/medieval-factions-dev-loop#41), where the grooming snippet reads:
git rebase origin/main
./gradlew clean test # must pass post-rebase
git push --force-with-lease
On the cycle of 2026-08-11, Dans-Plugins/Medieval-Factions#2000 was carried forward with its required build check red on a lint failure (Execution failed for task ':lintKotlinMain'), not a test failure — ./gradlew clean test passes on that exact tree. The same skill's Phase 3 already lists the full local verification set (compile, test, and lint); only the grooming step lists the subset, and nothing explains the difference.
Why it is proposed as template-wide
Nothing in the mechanism is Medieval-Factions-specific. Any repository whose required checks include a task the generated TEST_CMD does not cover has the same hole, and the grooming path is where it hurts most, because a force-push commits to the result.
Suggested direction
The post-rebase verification in the grooming step should run the same tasks the repository's required checks run, rather than a hand-picked subset — ideally by reusing whatever verification set the template already substitutes into Phase 3, so the two cannot drift. A stronger version would derive the task list from the workflow file.
Caveat on verification
The exact upstream wording could not be confirmed during this dispatch: reading create-dev-loop.md here would have required a clone or a gh api/gh search call, all of which the harness refused. The finding above is reported from the generated instance; whether the grooming step's verification line lives in the template or was added locally should be checked before the fix is scoped.
This issue was filed while routing a template-rule finding out of dmccoystephenson/medieval-factions-dev-loop#41, per that skill's rule that template-wide rules are fixed here rather than folded into one instance.
This issue body was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson
The gap
A generated dev-loop's open-PR grooming step verifies a rebase with the test command alone, then force-pushes on the strength of that single result. Where a repository's required checks also run a formatter, a linter or static analysis, a branch can be pushed still-red and the failure rediscovered from CI several minutes later.
Observed in the
medieval-factions-dev-loopinstance (dmccoystephenson/medieval-factions-dev-loop#41), where the grooming snippet reads:On the cycle of 2026-08-11, Dans-Plugins/Medieval-Factions#2000 was carried forward with its required
buildcheck red on a lint failure (Execution failed for task ':lintKotlinMain'), not a test failure —./gradlew clean testpasses on that exact tree. The same skill's Phase 3 already lists the full local verification set (compile, test, and lint); only the grooming step lists the subset, and nothing explains the difference.Why it is proposed as template-wide
Nothing in the mechanism is Medieval-Factions-specific. Any repository whose required checks include a task the generated
TEST_CMDdoes not cover has the same hole, and the grooming path is where it hurts most, because a force-push commits to the result.Suggested direction
The post-rebase verification in the grooming step should run the same tasks the repository's required checks run, rather than a hand-picked subset — ideally by reusing whatever verification set the template already substitutes into Phase 3, so the two cannot drift. A stronger version would derive the task list from the workflow file.
Caveat on verification
The exact upstream wording could not be confirmed during this dispatch: reading
create-dev-loop.mdhere would have required a clone or agh api/gh searchcall, all of which the harness refused. The finding above is reported from the generated instance; whether the grooming step's verification line lives in the template or was added locally should be checked before the fix is scoped.This issue was filed while routing a
template-rulefinding out of dmccoystephenson/medieval-factions-dev-loop#41, per that skill's rule that template-wide rules are fixed here rather than folded into one instance.This issue body was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson