Scope
Four enhancements to the babysit-prs skill (plugins/source-control/skills/babysit-prs/), from
the autopilot retrospective (.work/handoffs/babysit-autopilot-retro.md §1.5 / §1.8 / §1.9 / §3).
One PR; bump the source-control plugin version + CHANGELOG. Keep every edit pointer-style — point
at the existing rule, do not restate it.
(a) No-monitor hard STOP at the merge step (retro §1.5)
The no-background-monitor clause already exists in the Worker Contract, the Worker Prompt Template,
and the two-stall rule (reference/orchestration.md). It is NOT restated at the merge /
gate-completion point — which is where finishers repeatedly armed a CI watch after proving a PR
ready. Add a hard STOP there: SKILL.md Guarded mutations + reference/safety.md
Pinned-Command Degradation — once a PR is ready, or its merge is deferred to a human, report and
stop; never arm a watch. Point at the existing clause.
(b) Wrapper invoked bare, JSON parsed separately (retro §1.9)
reference/safety.md Guarded Mutation Wrappers already says invoke the wrapper by its bare pinned
name. Add one sentence: parse the wrapper's JSON in a SEPARATE step — never wrapper | python /
| jq. Piping the wrapper into an interpreter trips the auto-mode classifier
(interpreter-in-pipeline) and blocks the call.
(c) Snapshot exit-code taxonomy (retro §1.9)
scripts/pr_queue_snapshot.py:main() returns 2 on a fatal exception (no state written) and 1 on
ANY snapshot["errors"] (state still written) — so a purely-advisory head-ref alias-check error is
indistinguishable from a substantive per-PR hydration failure. Split exit 1 so an advisory-only,
valid-snapshot run is distinguishable from substantive per-PR errors. Add tests under
scripts/tests/. Finalize the exact code taxonomy in implementation.
(d) Worker→main cross-PR dependency channel (retro §3)
reference/orchestration.md documents main→worker SendMessage. Add a section formalizing the
sanctioned worker→main signalling of a discovered cross-PR dependency (e.g. medley#1567↔#1597,
#224↔#356 coupling) as the coordination channel.
Plus: self-blocking-CI-check bootstrap gotcha (retro §1.8)
Record the self-blocking-CI-check class — a check whose own fix PR carries the same check, so it
can't be gate-merged and needs a one-time admin bootstrap — as a reference/safety.md / SKILL.md
Gotchas entry. The concurrent-same-identity yield rationale (§1.7) is already covered by the
Checkout/Push invariants — confirm, do not duplicate.
Verification
scripts/tests/ unit tests for the exit-code split; markdown lint + link check for the doc edits;
plugin version + CHANGELOG entry present.
Scope
Four enhancements to the
babysit-prsskill (plugins/source-control/skills/babysit-prs/), fromthe autopilot retrospective (
.work/handoffs/babysit-autopilot-retro.md§1.5 / §1.8 / §1.9 / §3).One PR; bump the
source-controlplugin version + CHANGELOG. Keep every edit pointer-style — pointat the existing rule, do not restate it.
(a) No-monitor hard STOP at the merge step (retro §1.5)
The no-background-monitor clause already exists in the Worker Contract, the Worker Prompt Template,
and the two-stall rule (
reference/orchestration.md). It is NOT restated at the merge /gate-completion point — which is where finishers repeatedly armed a CI watch after proving a PR
ready. Add a hard STOP there: SKILL.md
Guarded mutations+reference/safety.mdPinned-Command Degradation— once a PR is ready, or its merge is deferred to a human, report andstop; never arm a watch. Point at the existing clause.
(b) Wrapper invoked bare, JSON parsed separately (retro §1.9)
reference/safety.mdGuarded Mutation Wrappersalready says invoke the wrapper by its bare pinnedname. Add one sentence: parse the wrapper's JSON in a SEPARATE step — never
wrapper | python/| jq. Piping the wrapper into an interpreter trips the auto-mode classifier(interpreter-in-pipeline) and blocks the call.
(c) Snapshot exit-code taxonomy (retro §1.9)
scripts/pr_queue_snapshot.py:main()returns2on a fatal exception (no state written) and1onANY
snapshot["errors"](state still written) — so a purely-advisory head-ref alias-check error isindistinguishable from a substantive per-PR hydration failure. Split exit
1so an advisory-only,valid-snapshot run is distinguishable from substantive per-PR errors. Add tests under
scripts/tests/. Finalize the exact code taxonomy in implementation.(d) Worker→main cross-PR dependency channel (retro §3)
reference/orchestration.mddocuments main→workerSendMessage. Add a section formalizing thesanctioned worker→main signalling of a discovered cross-PR dependency (e.g. medley#1567↔#1597,
#224↔#356 coupling) as the coordination channel.
Plus: self-blocking-CI-check bootstrap gotcha (retro §1.8)
Record the self-blocking-CI-check class — a check whose own fix PR carries the same check, so it
can't be gate-merged and needs a one-time admin bootstrap — as a
reference/safety.md/ SKILL.mdGotchasentry. The concurrent-same-identity yield rationale (§1.7) is already covered by theCheckout/Push invariants — confirm, do not duplicate.
Verification
scripts/tests/unit tests for the exit-code split; markdown lint + link check for the doc edits;plugin version + CHANGELOG entry present.