/idle-dwell-gate
Mechanical autonomy gate: flag no-input-decisions + idle-seat-with-open-queue over agent transcripts. Triggers: turn-end autonomy check, /orc + /pr-loop completion, lead about to pause.
$ golems-cli skills install idle-dwell-gateUpdated 1 week ago
An idle seat with an open queue is not done. Authorization IS permission to drive. This is the MECHANICAL gate the prose kept failing to replace (R-001, 6+ generations BROKEN-OPEN).
What It Is
A deterministic detector over an agent transcript that classifies the terminal action as an
autonomous DRIVE or an idle-dwell VIOLATION. Build-the-gate-not-the-prose: the pinned RED/GREEN
transcript fixtures in evals/fixtures/ ARE the replayable gate (R-003/R-014 pattern, consumed in
the T6 deterministic-CU smoke-spec shape).
The Rule
When work is authorized (mission sign-off, approved queue, plan-authorized next phase with no hard gate, collab dispatch) and the queue is open, the next action MUST be a drive:
- a worker dispatch (
send_to_agent/ cmux spawn into an existing seat), OR - a resume of the original session (
repoGolem --resume <session-id>— never a fresh spawn over a resumable crashed lead), OR - self-driving the authorized work (push, open the PR, edit, build), OR
- a genuine hard-gate pause only (visual sign-off, irreversible external action, missing secret, physical presence, true external blocker).
Anything else with an open queue is a FLAG.
Violation Taxonomy (codes the detector emits)
| Code | What it catches |
|---|---|
NO_INPUT_DECISION | AskUserQuestion / "should I merge X?" / "want me to…" for coordination on already-authorized work |
IDLE_SEAT_OPEN_QUEUE | terminal turn is a summary-and-stop while authorized work is queued |
DEFERRAL_AFTER_AUTHORIZATION | re-confirm / "ready when you are" / "awaiting approval" after the work was authorized |
BACKLOG_HANDED_TO_USER | hands the remaining queue to the user as triage items |
SPAWN_OVER_RESUMABLE | fresh spawn_agent over a resumable crashed lead (R-036; discards live context) |
Full SKILL.md source — includes LLM directives, anti-patterns, and technical instructions stripped from the Overview tab.
An idle seat with an open queue is not done. Authorization IS permission to drive. This is the MECHANICAL gate the prose kept failing to replace (R-001, 6+ generations BROKEN-OPEN).
What It Is
A deterministic detector over an agent transcript that classifies the terminal action as an
autonomous DRIVE or an idle-dwell VIOLATION. Build-the-gate-not-the-prose: the pinned RED/GREEN
transcript fixtures in evals/fixtures/ ARE the replayable gate (R-003/R-014 pattern, consumed in
the T6 deterministic-CU smoke-spec shape).
The Rule
When work is authorized (mission sign-off, approved queue, plan-authorized next phase with no hard gate, collab dispatch) and the queue is open, the next action MUST be a drive:
- a worker dispatch (
send_to_agent/ cmux spawn into an existing seat), OR - a resume of the original session (
repoGolem --resume <session-id>— never a fresh spawn over a resumable crashed lead), OR - self-driving the authorized work (push, open the PR, edit, build), OR
- a genuine hard-gate pause only (visual sign-off, irreversible external action, missing secret, physical presence, true external blocker).
Anything else with an open queue is a FLAG.
Violation Taxonomy (codes the detector emits)
| Code | What it catches |
|---|---|
NO_INPUT_DECISION | AskUserQuestion / "should I merge X?" / "want me to…" for coordination on already-authorized work |
IDLE_SEAT_OPEN_QUEUE | terminal turn is a summary-and-stop while authorized work is queued |
DEFERRAL_AFTER_AUTHORIZATION | re-confirm / "ready when you are" / "awaiting approval" after the work was authorized |
BACKLOG_HANDED_TO_USER | hands the remaining queue to the user as triage items |
SPAWN_OVER_RESUMABLE | fresh spawn_agent over a resumable crashed lead (R-036; discards live context) |
How /orc and /pr-loop Consume It
/orcautonomy eval — before a lead/orc seat ends a turn with an open queue, run the gate on the turn.FLAG⇒ do NOT stop: dispatch, resume, or self-drive the queued work. Only aHARD_GATEpause is allowed. The orchestrator may pass{ queueOpen: <bool> }when it knows the queue state authoritatively./pr-loop— the gate backs "Parking Is the Violation": a finished, approved branch left "awaiting PR approval" isIDLE_SEAT_OPEN_QUEUE. Finish the loop to MERGED; surface the PR number, not a permission question.
Run It
# Replay the deterministic gate (CI-safe, the standing regression suite):
bun test skills/golem-powers/idle-dwell-gate/evals/idle-dwell-gate.test.mjs
# Run the gate over a live transcript (exit 3 = FLAG, 0 = PASS — wireable as a Stop hook):
bun skills/golem-powers/idle-dwell-gate/scripts/idle-dwell-gate-cli.mjs <transcript.jsonl|->Programmatic: import { detectIdleDwell } from "./src/idle-dwell-gate.mjs" → { verdict, violations, terminalAction, queueOpen }.
Stated Limits (honesty rule)
- Detects the terminal action; it is a turn-end / completion check, not a mid-turn monitor.
- Marker-anchored: a hard gate fabricated with hard-gate phrasing can mask a real idle-dwell. The fixtures pin the known specimens; new evasion shapes are added as RED fixtures (the R-003 model).
- "Authorized" is inferred from transcript markers unless the caller forces
opts.queueOpen.
Provenance
RED specimens: golems/424e8065#1, orchestrator/263b3559#2, orchestrator/9bfa306b#3, codex/019ed5dd#1, orchestrator/1e8746db#5, cmuxlayer/3983543f#1. GREEN reference: narrationlayer/019ee3dd#5 (Codex worker drove the full pr-loop to MERGED — proving the gap is orchestrator-seat-specific, not universal).
Changelog entries are derived from eval runs and skill version updates. Full cascading changelog (Phase 4D) coming soon.
- +Initial release to Golems skill library