π€ Agent-authored β filed by the adversarial adjudication of #1614. This one is deliberately filed without a recommendation: it adjudicates the merge authority of the same lane that would otherwise decide it, so the conflict of interest is structural and the call is the operator's.
The question
In a repository that has adopted the babysit loop, should a direct /source-control:babysit-prs autopilot <owner/repo>#<N> invocation be able to merge?
Three safeguards live at the loop level and have no counterpart in the single-pass mechanic. An invocation that goes straight to the mechanic bypasses all three at once.
What the loop provides that the mechanic does not
Grace window. babysit-loop marks every PR whose head moved or that received comments within the window as report-only β "never elevated, never thread-resolved, never merged." babysit-loop/SKILL.md is explicit that this is a loop-level overlay: "The grace window below is an additional loop-level overlay, never a replacement for them." This repository tracks babysit_loop_grace_window_minutes: 30 in .claude/source-control.md.
Rung partition. The loop resolves each PR's close-linked work item and admits it only when the item's work class sits within the effective merge rung, fail-closed: "Unlinked or unclassified PRs never auto-merge." This repository tracks babysit_loop_merge: c2-mechanical and babysit_loop_tier: worker.
Reviewer awareness. Configured through the loop's seam keys, and separately blind in the merge gate itself β filed alongside this issue.
The mechanic's own tier matrix has none of these. autopilot is documented as "maximum autonomy β¦ merge everything the gate proves ready", and the gate is exactly the deterministic merge gate β which is real, but is a different and narrower thing than the lane's governance.
Evidence β PR #1594
The merge lane was running at the time and did not merge #1594. From its own telemetry, issue #1214 (Lane telemetry: babysit-loop), cycle 13:
So the merge came from a session outside the lane. The PR carries a claim marker naming lane=fable-autopilot, consistent with a direct babysit-prs autopilot invocation.
Had the lane's own governance applied, #1594 would not have merged autonomously on two independent grounds:
Consequence: the merge landed 26 seconds before the reviewer's fifth round, which carried two valid findings including a regression the PR itself introduced (#1613).
I could not determine from the artifacts whether that autopilot invocation was operator-ordered β which babysit-prs explicitly sanctions ("Any tier also honors an explicit user instruction to merge or resolve specific PRs now") β or lane-elected. That distinction may matter to the decision and is not recoverable from GitHub state.
Options, stated neutrally
A β Forbid out-of-loop merges in lane-adopted repositories. A repository whose tracked config carries babysit_loop_* keys is declaring the loop as its merge authority; the mechanic would refuse to merge there when invoked outside a loop cycle, and report merge-ready instead.
For: one merge authority per adopted repo; the tracked seam means what it says. Against: removes a sanctioned direct-order path; needs a reliable way for the mechanic to know it is inside a loop cycle, which does not exist today; an operator who genuinely wants a one-off merge loses it or needs a new override token.
B β Require out-of-loop invocations to honor the loop's grace window and rung. The mechanic reads the same babysit_loop_* keys and applies the overlay and partition itself when they are present.
For: keeps the direct path; makes the safeguards a property of the repository rather than of the entry point. Against: duplicates loop logic into the mechanic, which today deliberately owns none of it (babysit-loop/SKILL.md: "The single-pass mechanics belong to /source-control:babysit-prs β¦ this loop restates none of that" β this would push the coupling the other way); two implementations of one overlay is a drift risk; a legitimate urgent merge now waits out a 30-minute window.
C β Status quo. The mechanic's tier matrix and gate remain the whole story for direct invocations; the loop's overlays apply only to loop cycles.
For: no new coupling; the direct path stays available and honest about what it is; the merge gate is still never bypassed. Against: a repo can adopt the lane, track a conservative rung, and still have every one of those constraints bypassed by one invocation β which is what happened on #1594; the tracked config gives a false impression of the repo's effective merge policy.
These are not mutually exclusive. B could be scoped to the grace window alone, and A could be an override-gated form of B.
Why this is filed for a human
Under every option the deciding party is a lane whose own authority is what is being scoped. An autonomous session evaluating this is evaluating whether to keep a capability it holds. The adjudication that produced this issue takes no position beyond naming that conflict.
Related: #1614 (the policy issue this came out of), #1594 (the run), #1613 (the findings that arrived after the merge), #1214 (the lane telemetry quoted above).
π€ Agent-authored β filed by the adversarial adjudication of #1614. This one is deliberately filed without a recommendation: it adjudicates the merge authority of the same lane that would otherwise decide it, so the conflict of interest is structural and the call is the operator's.
The question
In a repository that has adopted the babysit loop, should a direct
/source-control:babysit-prs autopilot <owner/repo>#<N>invocation be able to merge?Three safeguards live at the loop level and have no counterpart in the single-pass mechanic. An invocation that goes straight to the mechanic bypasses all three at once.
What the loop provides that the mechanic does not
Grace window. babysit-loop marks every PR whose head moved or that received comments within the window as report-only β "never elevated, never thread-resolved, never merged."
babysit-loop/SKILL.mdis explicit that this is a loop-level overlay: "The grace window below is an additional loop-level overlay, never a replacement for them." This repository tracksbabysit_loop_grace_window_minutes: 30in.claude/source-control.md.Rung partition. The loop resolves each PR's close-linked work item and admits it only when the item's work class sits within the effective merge rung, fail-closed: "Unlinked or unclassified PRs never auto-merge." This repository tracks
babysit_loop_merge: c2-mechanicalandbabysit_loop_tier: worker.Reviewer awareness. Configured through the loop's seam keys, and separately blind in the merge gate itself β filed alongside this issue.
The mechanic's own tier matrix has none of these.
autopilotis documented as "maximum autonomy β¦ merge everything the gate proves ready", and the gate is exactly the deterministic merge gate β which is real, but is a different and narrower thing than the lane's governance.Evidence β PR #1594
The merge lane was running at the time and did not merge #1594. From its own telemetry, issue #1214 (
Lane telemetry: babysit-loop), cycle 13:merge_rung: human-onlyand records "Direct merges: 0".safe-tier fixer against it β "fix + push only, no merge, no thread-resolve".So the merge came from a session outside the lane. The PR carries a claim marker naming
lane=fable-autopilot, consistent with a directbabysit-prs autopilotinvocation.Had the lane's own governance applied, #1594 would not have merged autonomously on two independent grounds:
needs-humanand no work-class label, so it was unclassified and ineligible at any rung.Consequence: the merge landed 26 seconds before the reviewer's fifth round, which carried two valid findings including a regression the PR itself introduced (#1613).
I could not determine from the artifacts whether that autopilot invocation was operator-ordered β which
babysit-prsexplicitly sanctions ("Any tier also honors an explicit user instruction to merge or resolve specific PRs now") β or lane-elected. That distinction may matter to the decision and is not recoverable from GitHub state.Options, stated neutrally
A β Forbid out-of-loop merges in lane-adopted repositories. A repository whose tracked config carries
babysit_loop_*keys is declaring the loop as its merge authority; the mechanic would refuse to merge there when invoked outside a loop cycle, and report merge-ready instead.For: one merge authority per adopted repo; the tracked seam means what it says. Against: removes a sanctioned direct-order path; needs a reliable way for the mechanic to know it is inside a loop cycle, which does not exist today; an operator who genuinely wants a one-off merge loses it or needs a new override token.
B β Require out-of-loop invocations to honor the loop's grace window and rung. The mechanic reads the same
babysit_loop_*keys and applies the overlay and partition itself when they are present.For: keeps the direct path; makes the safeguards a property of the repository rather than of the entry point. Against: duplicates loop logic into the mechanic, which today deliberately owns none of it (
babysit-loop/SKILL.md: "The single-pass mechanics belong to/source-control:babysit-prsβ¦ this loop restates none of that" β this would push the coupling the other way); two implementations of one overlay is a drift risk; a legitimate urgent merge now waits out a 30-minute window.C β Status quo. The mechanic's tier matrix and gate remain the whole story for direct invocations; the loop's overlays apply only to loop cycles.
For: no new coupling; the direct path stays available and honest about what it is; the merge gate is still never bypassed. Against: a repo can adopt the lane, track a conservative rung, and still have every one of those constraints bypassed by one invocation β which is what happened on #1594; the tracked config gives a false impression of the repo's effective merge policy.
These are not mutually exclusive. B could be scoped to the grace window alone, and A could be an override-gated form of B.
Why this is filed for a human
Under every option the deciding party is a lane whose own authority is what is being scoped. An autonomous session evaluating this is evaluating whether to keep a capability it holds. The adjudication that produced this issue takes no position beyond naming that conflict.
Related: #1614 (the policy issue this came out of), #1594 (the run), #1613 (the findings that arrived after the merge), #1214 (the lane telemetry quoted above).