Skip to content

autonomy: the lane-stop gate covers two of the seven autonomous-pipeline clauses and cannot see a blocked-on-user stop #2010

Description

@kyle-sexton

Surfaced by the Fable 5 prompting-guide alignment audit (PR #2000), from the section auditor assigned to "Rare cases of early stopping". Filed rather than fixed there — the fix would have meant copying upstream text into this repository, which its own documentation doctrine forbids.

What the guide asks for

That section names two failures — ending a turn with a text-only statement of intent and no matching tool call, and pausing to ask permission when the model already has enough to proceed — and prescribes a system reminder for autonomous pipelines carrying seven clauses: the autonomy framing, the named "Want me to…?" / "Shall I…?" phrasings, reversible actions proceeding without asking, follow-ups-are-fine-but-re-asking-is-not, a check-your-last-paragraph self-check, an enumeration of shapes that must be acted on rather than ended on, and ending the turn only when complete or blocked on input only the user can provide.

What the gate actually does

plugins/autonomy/hooks/lane-stop-gate.sh is registered on every Stop event and is default-off, engaging only for a trusted-enabled lane. Its reason string targets stopping on "a self-estimated context percentage, a turn count, or a vague sense that enough was done" — an adjacent failure, not either of the two above.

Against the guide's seven clauses, five have no counterpart at all. The gate performs no content classification of the final message beyond a literal check for its completion sentinel, so it cannot distinguish a turn ending in a genuine blocked-on-user question from a lazy premature stop. Both get the same one-time block, then are allowed on the second attempt with an operator alert.

Why this was judged low priority rather than a defect

The over-blocking is benign in practice: a lane genuinely blocked on user input costs one wasted nudge and then stops with the operator alerted, which is what a blocked lane wants. And the repository is not uncovered — unexecuted intent is carried by playbooks:fable-5 (SKILL.md:110, context/communication.md:40), and the loop lanes carry standing authorization plus "speak to me only when fully blocked."

The real remainder

Nothing ships the guide's autonomous-pipeline reminder as a reusable artifact for a consumer's own pipeline. It exists only hand-authored inline in two of the three lane templates in prompts/loops/loop-lane-prompts.md. Reproducing the guide's text here was rejected as hand-copying upstream content; if this is worth closing, the shape to decide first is whether a pointer plus a locally-authored equivalent earns its place, or whether the doctrine surface already suffices.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions