human-in-the-loop
Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-12
- Stars
- ★ 16
- Forks
- 4
01 前言 Front Matter
- name
- human-in-the-loop
- metadata
- { "openrig": { "stage": "factory-approved", "sibling_skills": [ "queue-handoff", "workflow-runtime", "watchdog", "refocus", "looping-workflows", "intake-routing", "attention-queue", "dispatching-parallel-agents", "subagent-driven-development", "control-plane-capabilities", "status-not-chat-orchestrator", "control-plane-queue", "control-plane-watchdog", "control-plane-workflows", "control-plane-delivery-loop", "control-plane-rollout-manager" ] } }
- description
- Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached.
03 SKILL.md 正文
Human In The Loop
The primitive that treats humans as durable network participants — attention surfaces, queues, decision records, routing semantics — not as ad-hoc chat receivers.
Autonomy is not the absence of humans; it is knowing when human judgment is needed and making that handoff crisp.
Use this when
- A slice closeout needs classifying: auto-continue, human gate, or park
- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)
- Designing a human queue/dashboard surface
- Returning a hot potato to orchestration after human approval
Don't use this when
- The slice closeout is clean and
PROGRESS.mdalready names the next safe slice. Default RSI conveyor continues; do NOT manufacture a human gate. - The escalation is just a status update. Humans are participants for decisions, not narration.
- The next owner is another agent. Use queue-handoff, not human-in-the-loop.
The 3-class closeout classification
In a productized daemon-backed version, closeout classifies the next step BEFORE touching the human queue:
| Class | When | Action |
|---|---|---|
| auto-continue | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |
| human gate | Genuine decision needed (usage limits, provider auth, product-intent ambiguity, roadmap tradeoff) | Create human queue item with proof + decision text + recommended default + action outcomes |
| park | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |
Failure modes (5)
- Human decision needed, but the rig only mentions it in chat. Decisions belong as durable attention items, not chat messages.
- Human queue item lacks enough plain-English context for a decision. Include proof + decision text + recommended default + action outcomes.
- Human response updates a file but does not wake the next owner. Approval should return the hot potato; feedback should create the next durable qitem.
- The dashboard shows too much raw rig state and hides the actual decision queue. Decision queue is the primary surface; rig state is secondary.
- A clean closeout is parked on the human even though
PROGRESS.mdalready names the next safe slice. Don't manufacture human gates.
Proof standard (both paths)
A trustworthy human-in-the-loop system proves both directions:
- Blocking gate path: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner
- Non-blocking closeout path: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate
A primitive that only wakes humans is not trustworthy. It must also know when NOT to.
Product shape (SHIPPED — Mission Control, PL-005)
This surface has shipped as Mission Control (product UI, /mission-control
route; actions via POST /api/mission-control/action). The seven verbs the
human acts with:
- approve (returns the hot potato to orchestration or the chosen owner)
- deny (reject the item)
- route (send to a different owner)
- annotate (add context without action)
- hold (intentional pause with reason)
- drop (mark not-actionable)
- handoff (hand to a specific next owner — creates the next durable qitem)
Approval returns the hot potato to orchestration or the chosen owner;
feedback creates the next durable qitem rather than only mutating the source
queue file — enforced by the shipped verbs (handoff/route create qitems).
See docs/as-built/architecture/mission-control.md.
Long-term shape
Likely needs multiple humans with different scopes, not a singleton human attention feed. Different humans own different decision domains; queue items route by scope.
See also
queue-handoffskill — durable handoff via queue items; human-in-the-loop is the human-side complementwatchdogskill — when to wake (humans included) vs no-oplooping-workflows(convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch
04 同仓库更多 Skills
notes
Use when taking notes.
software-for-agents
Use when older OpenRig instructions name software-for-agents or describe agent-in-the-middle or studio software under the former skill name.
session-compaction-and-restore
Use when reasoning about what survives compaction/context-loss/restart/seat-refresh, designing a high-fidelity restore packet, or distinguishing native runtime resume vs fork vs artifact-backed mental-model rebuild. Covers the 4 failure modes that prevent honest restore (compacted seat drops hot potato; restore packet preserves details but loses product intent; runtime resume mistaken for handover or fork; rebuilt seat starts with stale instructions).
seat-continuity-and-handover
Use when replacing a seat's occupant (rebuild/handover/swap), reasoning about stable-seat-identity vs fluid-occupant-identity, choosing an old-occupant disposition (retire/advise/shadow), or recording provenance for an occupant change. Two independent outcomes (continuityOutcome + seatBindingOutcome) and the 5 failure modes that prevent silent dishonesty.
retiring-and-inheriting-a-seat
Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (session-compaction-and-restore / claude-compaction-restore) and NOT the seat-binding primitive mechanics (seat-continuity-and-handover).
refocusing
Use when a long-running agent may have lost the product outcome, when context was compacted, when work has crossed a major boundary, or when a fresh path-based trace is needed before the next consequential action. Not for fresh-session orientation, waking an idle seat, or checkpoints.