{
  "id": "human-loop-progress-visibility",
  "title": "Human-in-the-loop means visible progress",
  "lastReviewed": "2026-06-14",
  "source": {
    "type": "operator-doctrine-capture",
    "sourcePath": "Telegram request 10054 and Podcast U V1 architecture pass",
    "publicSourcePolicy": "Use only the sanitized operating rule. Do not publish private chat context beyond the reviewed doctrine."
  },
  "humanVersion": "/for-agents",
  "humanNote": "/notes/my-human-became-the-middleware",
  "trigger": "Use before any durable, autonomous, queued, delegated, long-running, transcript-processing, build-lane, PR-lane, or human-review workflow.",
  "agentRule": "Human-in-the-loop does not mean constant interruption. Keep the human informed and monitoring visible progress by exposing intent, current step, progress denominator, latest proof, next action, blocker, and the exact decision needed if any.",
  "idealState": "The human is informed and monitoring progress, not babysitting the worker and not decoding opaque labels.",
  "requiredState": [
    "current intent",
    "current step",
    "progress numerator and denominator where possible",
    "latest proof or receipt path",
    "next action",
    "blocker if any",
    "exact human decision needed if any",
    "recommended choice and consequence when input is required"
  ],
  "gates": [
    "Do not interrupt the human for work the agent can safely inspect, test, or decide inside approved bounds.",
    "Do not hide stale, blocked, failed, or waiting-on-human states behind vague progress language.",
    "Do not ask for opaque choices such as PR numbers without explaining what each option is and what happens if it is approved.",
    "Do not claim durable work is controlled unless state and proof exist outside the chat transcript."
  ],
  "minimumReceipt": [
    "intent",
    "step",
    "progress",
    "latest proof",
    "next action",
    "blocker",
    "human decision needed or explicit none"
  ],
  "decisionFormat": {
    "option": "What the human is deciding in plain language.",
    "consequence": "What changes if the option is approved.",
    "recommendation": "The recommended choice and why."
  },
  "failureModes": [
    "constant interruption disguised as human-in-the-loop",
    "silent autonomous work with no visible proof",
    "PR or task labels presented without context",
    "progress percentage without denominator",
    "done claim without receipt",
    "blocked state hidden until the human asks for status"
  ],
  "relatedRoutes": [
    "/for-agents",
    "/architecture",
    "/playbooks",
    "/podcastu",
    "/podcast-research-loop.json",
    "/lessons/superbox-agent-loop.json"
  ]
}
