What to build
A rule for when /implement may push, and a prohibition on leaving a branch parked on a commit that was deliberately broken to prove something.
The gap
CLAUDE.md says /implement "stops at the commit", and pushing belongs to /draft-pr. But an acceptance criterion can require evidence that only GitHub can produce. CAN-54 Fail a push that adds a known-vulnerable dependency asked that a vulnerable dependency "fails the job", and the job is GitHub's. There is no way to satisfy that from a laptop, and docs/agents/workflow.md → The gates says as much in its own words: the gate is GitHub's copy of those checks, not yours.
So the push happened twice mid-implement, with nothing covering it.
The sharper half
Proving a gate works means pushing a commit that is deliberately broken. On CAN-54 that was a package carrying a critical advisory. The remote branch then sat at that commit for as long as the rest of the work took, and would have stayed there indefinitely if the session had ended, because /implement is documented as stopping before the push that would move it on.
That is the part worth a rule: not that the push happened, but that the branch was left parked on it.
Acceptance criteria
Not in scope
Changing who opens the pull request, or moving any part of /draft-pr into /implement.
What to build
A rule for when
/implementmay push, and a prohibition on leaving a branch parked on a commit that was deliberately broken to prove something.The gap
CLAUDE.mdsays/implement"stops at the commit", and pushing belongs to/draft-pr. But an acceptance criterion can require evidence that only GitHub can produce. CAN-54 Fail a push that adds a known-vulnerable dependency asked that a vulnerable dependency "fails the job", and the job is GitHub's. There is no way to satisfy that from a laptop, anddocs/agents/workflow.md→ The gates says as much in its own words: the gate is GitHub's copy of those checks, not yours.So the push happened twice mid-implement, with nothing covering it.
The sharper half
Proving a gate works means pushing a commit that is deliberately broken. On CAN-54 that was a package carrying a critical advisory. The remote branch then sat at that commit for as long as the rest of the work took, and would have stayed there indefinitely if the session had ended, because
/implementis documented as stopping before the push that would move it on.That is the part worth a rule: not that the push happened, but that the branch was left parked on it.
Acceptance criteria
docs/agents/workflow.mdsays when/implementmay push before/draft-pr, with the evidence-only case named rather than left to inference.CLAUDE.md's one-line description of/implementis either corrected or explicitly deferred to the fuller rule, so the two do not disagree.Not in scope
Changing who opens the pull request, or moving any part of
/draft-printo/implement.