Human in the /loop ๐Ÿ”— **Source:** [Human in the /loop](https://twitter.com/ericzakariasson/status/2070493377267646797/?rw_tt_thread=True) > [!note]+ Document Notes > tags: [loop-engineering, ai-agents, agentic-workflows, human-in-the-loop, definition-of-done, async-development] > author: eric zakariasson > source: Twitter/X > reference: https://twitter.com/ericzakariasson/status/2070493377267646797/?rw_tt_thread=True > date created: 2026-06-26 09:00 > > # ๐Ÿท๏ธ Title: Human in the /loop > <!-- deep-read:sections start --> ## ๐Ÿงญ Table of Contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical Validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) ### ๐Ÿ”— References - [eric zakariasson โ€” "Human in the /loop" (original thread)](https://twitter.com/ericzakariasson/status/2070493377267646797/?rw_tt_thread=True) - Andrej Karpathy's "autoresearch" framing for ML training loops (referenced inline, no link in source) - Playwright (browser automation, referenced as a QA tool) - MCP plus a `/notify` path routed to Slack (referenced as the notification channel) ## ๐Ÿ“ Summary - A practitioner describes how he runs several agent coding tasks in parallel while doing other work, showing up only when a run finishes or needs a decision. - It matters because it reframes "agentic coding" from babysitting one prompt into operating a small fleet of self-scoring loops โ€” the human becomes a reviewer and escalation target, not a driver. - Key stakeholders: developers using coding agents, tooling vendors who ship loop and notify primitives, and anyone building maker/checker automation. - Risks and tradeoffs: loops only work when "done" is genuinely measurable; a weak definition of done lets a loop hill-climb toward the wrong target, and running three to five at once raises review-queue and context-switch load. - Bottom line: write the check first. The whole method rests on a definition of done the agent can score by itself, a loop that stops on clear conditions, and pings so the human leans in at the right moment. ## ๐Ÿ“– Main Content - The core argument: the value in current agent coding is parallelism with low attention cost. You start a long-running task, walk away, and return when it finishes or gets stuck. - The enabling move is a "definition of done the agent can score" โ€” an objective check the agent can run without you. Examples given: a target eval score for model work, a QA pass (load the page or run Playwright, screenshot, confirm behavior) for web/UI, a green test suite for backend/refactor, a number like p95 or a benchmark for speed/flakiness, and a zero-failures count for data/content cleanup. - He frames writing the loop as "writing how you'd check the work yourself" โ€” the check is the spec. He starts more explicit than feels necessary, then loosens once he sees what the model can infer. - The loop is: change something, measure, keep or revert, repeat. The step doesn't have to be tiny; it just has to be measurable against the target. He cares most about stop conditions: metric hits target, no improvement after a few tries, out of ideas, or blocked/unsure (stop and ask). - Instead of babysitting, the agent gets a notify path (MCP plus `/notify`), usually to Slack because that's where everything else lives. He treats it as a generic notification channel, not full Slack access. His reply becomes the next thing the loop runs on. - It runs in the cloud so loops persist for hours without his laptop open; his own client acts as orchestrator and fans work out to cloud agents. - Then he starts the next loop โ€” usually three, sometimes five long loops, plus shorter agents on PRs or one-off investigations. If three are waiting on him, he stops launching and goes to review. - Uncertainty/contested: "loosen the prompt once you see what it can infer" is judgment-heavy and unmeasured; there's no data on failure rates or how often a loop hill-climbs to a bad target. The prompt template image ("/loop drives the iterations and /notify keeps me posted") couldn't be imported, so the exact prompt shape isn't in the text. ### ๐Ÿ—’๏ธ Notes - The unit of work is a *verifiable* task, not a prompt. If you can't state the check, you can't loop it. - Five concrete done-definitions map cleanly to maker/checker: eval score, QA/Playwright pass, green test suite, perf number under a line, validation count to zero. - Stop conditions are first-class. "Blocked or unsure โ†’ stop and ask" is the human-in-the-loop hook; the human's answer is the loop's next input. - Notification is deliberately thin: a generic channel (Slack/iMessage), not agent access to the whole tool. Status updates and "I need a decision" arrive as normal messages. - Concurrency is throttled by the human's review capacity, not by the machine: three waiting โ†’ stop starting, go review. - Cloud execution decouples loop lifetime from the laptop; the local client is just the orchestrator. - Explicit nod to Karpathy's autoresearch for ML training loops as the closest prior pattern. ## ๐Ÿ“š References - [eric zakariasson โ€” "Human in the /loop"](https://twitter.com/ericzakariasson/status/2070493377267646797/?rw_tt_thread=True) - [Playwright](https://playwright.dev/) โ€” used for the web/UI QA check - Model Context Protocol (MCP) โ€” the transport behind the `/notify` path ## ๐Ÿ—ฃ๏ธ Paraphrase - The best part of coding with agents now is being able to leave a few runs going and keep working; you show up only when something finishes or needs a call. The setup is a definition of done the agent can score, a loop that runs until it should stop, and pings so you know when to lean in. - Before a long task, lock a check the agent can verify: a target score, a QA/Playwright pass, a green test suite, a perf number, or a validation count to zero. Writing the loop is mostly writing how you'd check the work yourself โ€” start explicit, then loosen. - Wrap the check in a loop (change, measure, keep or revert, repeat) and care most about the stop conditions. Give the agent a thin notify path to Slack so it pings you for status or a decision; your reply is what it runs next. Run it in the cloud, then start another loop โ€” about three at a time, and when several wait on you, stop starting and go review. ## ๐Ÿ“ฐ Newsletter - Not applicable to this source โ€” the thread is about general agent-coding loops with no WordPress hook. Light bridge for the .org crowd: the same "definition of done the agent can score" discipline maps onto OSS automation โ€” a green PHPUnit suite, a passing Playwright e2e run, or a Lighthouse/perf number under a set line are all stop-conditions a contributor's agent could loop against, with a thin Slack/Matrix ping when it needs a human decision. ## โœ… Action Items #### DevRel - Developer advocacy: draft a short demo showing a "definition-of-done" loop (green test suite as the target) for a coding-agent talk; measure audience adoption via a follow-up poll. - Education: build an office-hours module on writing the check first โ€” turn each done-definition into a hands-on exercise. - Developer experience: ship a quickstart template pairing a `/loop`-style runner with a `/notify` webhook so devs copy a working stop-condition setup. - Developer marketing: content series on "agent fleets, not single prompts" with attribution to which done-definition drove the most engagement. - Community management: open a thread asking practitioners which stop conditions they actually use. - Internal/external/cross-project: align on a shared notify-channel convention so agent pings don't fragment across tools. #### OSPO - Policy & Governance: set a contribution policy that agent-submitted PRs must carry a machine-checkable definition of done. - License Compliance: ensure looped agents run a license scan as one of their pass/fail checks. - Security Management: require a security check (SAST pass) as a stop condition before an agent loop marks "done." - Software Inventory: treat each loop's check output as an artifact with ownership and freshness SLOs. - Developer Support: offer consultation hours on safe cloud-agent orchestration patterns. - Community Engagement: fund a reference implementation of the maker/checker loop for upstream projects. - Strategic Alignment: report on how many automated contributions pass their own checks unattended. #### Community - Maintainers: publish a release-hygiene checklist that doubles as an agent stop-condition set. - Contributors: add a "first issue" rotation where the issue ships with its definition of done pre-written. - Sponsors: tie milestone payouts to checks the work passes on its own, not subjective review. - Ecosystem: run a cross-project drill where agents loop on a shared benchmark and ping a common channel. #### WordPress - Core: define machine-checkable release criteria that an agent could score against. - Core Performance: set p95/LCP numbers as explicit "under-the-line" loop targets with a perf dashboard. - Core AI: build evaluation sets so AI features have a "target is a score" done-definition. - **Core Program Team:** add a ritual where cross-team dependencies declare their own pass/fail check. - Mobile: wire telemetry checks into agent loops for offline UX changes. - Playground: host reproducible loop demos (green-test-suite target) as education modules. - Community: include "write the check first" in WordCamp speaker mentorship kits. - Training: add a learning-path lesson on definition-of-done and stop conditions. - Marketing: narrative on human-in-the-loop contribution, not full automation. - Support: turn escalation paths into the agent's "blocked or unsure โ†’ stop and ask" route. - Design: audit the UX of agent status/decision notifications. - Documentation: examples-first guide to looping an agent against a test suite. - Photos: validation-count loop (zero failing items) for taxonomy hygiene. - TV: caption-quality pass as a stop condition for submitted content. - Polyglots: translation-coverage count as a loop target. - Accessibility: WCAG check as a required pass before an agent loop reports done. - Meta: expose API reliability numbers an agent could measure against. - CLI: scaffold a `wp` smoke-test command usable as a loop check. - Hosting: cross-host checklist that agents can run as their pass/fail gate. - Tide: false-positive review loop as a worked example of stop conditions. - Openverse: ingestion validation count to zero as a loop target. - Themes: lint/test matrix as the theme-review agent's definition of done. - Plugins: provenance and security checks as required loop pass conditions. #### The WPCC - Programs: fund a fellowship building maker/checker loop tooling for maintainers. - Projects: documentation sprint turning the five done-definitions into reusable templates. - Funding experiments: milestone payouts gated on self-passing checks. ### FAIR - Technical independence: run provenance and signature checks as agent stop conditions, locally verifiable. - Policies and covenants: require funding transparency artifacts to pass their own validation loop. - Productized governance artifacts: ship scorecards whose criteria are machine-checkable. ## ๐Ÿงช Hypotheses - Teams that write the verification check before starting an agent task complete more tasks unattended than teams that prompt first and check later. - A measurable definition of done reduces the rate of "wrong-target" hill-climbing compared with subjective done criteria. - Throttling concurrency to the human's review capacity (stop starting when three wait) yields higher throughput than fixed maximum concurrency. - A thin, generic notify channel produces faster human response than embedding the agent in a full chat tool. - Cloud-resident loops complete more long-running tasks than laptop-resident loops over a multi-hour window. - Starting explicit and loosening prompts over time improves output quality more than staying maximally explicit throughout. ## ๐Ÿ“Š Methodology - Run a controlled study: two cohorts of developers on matched tasks, one writing the check first, one prompting first; measure unattended completion rate and rework. - Instrument loops to log target, each step's measurement, and the stop reason; analyze hill-climb-to-wrong-target frequency against done-definition type. - A/B concurrency policies (capacity-throttled vs fixed) and measure tasks completed per reviewer-hour. - Compare median human response latency across notify channels (thin webhook vs full chat integration). - Track completion of long (>1 hour) loops in cloud vs local runners over the same task set. ### โ“ Questions - What fraction of real coding tasks actually admit a definition of done an agent can score without a human? - How do you detect a loop that's improving the metric but degrading something unmeasured? - What's the right ceiling on parallel loops before review quality drops? - How do you keep a thin notify channel from becoming a noisy interrupt stream? - When does loosening the prompt start to cost more in errors than it saves in effort? ### ๐Ÿ”ฎ Future Research - A taxonomy of done-definitions by task type, with reliability data on each. - Guardrails that detect goodharting (metric up, true quality down) inside a loop. - Patterns for batching agent pings so the human gets a single review window, not constant interrupts. - Orchestration models for human-capacity-aware scheduling of agent fleets. ### ๐Ÿ’ก Implications - Practice: the skill shifts from prompt-craft to check-craft โ€” defining and instrumenting verifiable targets. - Policy: contribution and CI policies can require a machine-checkable done-definition for agent-submitted work. - Security: stop conditions are a natural place to gate on scans and attestations before "done." - Education: curricula should teach writing the check first and choosing stop conditions. - Funding models: milestone payouts can key on self-passing checks rather than subjective review. ### ๐Ÿง  Learning Styles Assessment - Reading level estimate: Flesch-Kincaid Grade ~7โ€“8 (short sentences, plain words, conversational). Flesch Reading Ease roughly 65โ€“75. #### ๐Ÿ‘€ Visual learners - Present: an embedded prompt-template image (which failed to import). - Improve: add an architecture diagram of orchestrator โ†’ cloud agents โ†’ notify channel, and a before/after of one loop iteration. #### ๐Ÿ”Š Aural learners - Present: none. - Improve: a 2โ€“3 minute audio walkthrough of the loop setup. #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: clear definitions, worked examples per task type, the analogy to Karpathy's autoresearch. - Improve: a short glossary (definition of done, stop condition, orchestrator). #### ๐Ÿงฉ Kinesthetic learners - Present: concrete recipes (run Playwright, screenshot, keep-or-revert). - Improve: a reproducible sandbox with a runnable `/loop` + `/notify` template. #### ๐Ÿง  Logical learners - Present: explicit stop-condition list, keep/revert decision rule. - Improve: a decision tree for "loop vs don't loop," KPIs for loop health. #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: closing call for others to share how to make looping easier. - Improve: a discussion prompt or shared repo of done-definitions. #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: self-contained, self-paced explainer. - Improve: reflection prompts on which of your tasks are actually checkable. #### ๐ŸŒฟ Naturalistic learners - Present: none. - Improve: frame loops as an ecosystem of agents with feedback cycles; note compute/energy cost of long cloud loops. ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: plain text thread, readable in order. - Improve: the embedded prompt image needs descriptive alt text; "content could not be imported" leaves a gap for screen-reader users. #### Keyboard navigation - Present: native platform (X) handling; not author-controlled. - Improve: n/a at the source level. #### Contrast and readability - Present: platform default contrast. - Improve: ensure any republished version meets 4.5:1. #### Text resizing and reflow - Present: platform reflow. - Improve: n/a at source. #### Media and captions - Present: no audio/video. - Improve: provide a text version of the prompt-template image so no information is image-only. #### Forms and interactions - Present: none. - Improve: n/a. #### Standards reference - Gap maps to WCAG 2.2 AA 1.1.1 Non-text Content (the un-imported prompt image carries information with no text alternative). ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: tool-agnostic framing ("Slack, iMessage, or whatever"). - Improve: examples beyond a single Western-default tool stack. #### Inclusive language - Present: gender-neutral, jargon mostly defined. - Improve: define "p95," "MCP," "autoresearch" inline for newcomers. #### Neurodiversity support - Present: chunked sections, consistent structure, short paragraphs. - Improve: a summary box up top and icon+text section labels. #### Representation - Present: single first-person practitioner voice. - Improve: cite varied practitioners' loop setups. #### Psychological safety - Present: low-stakes, invitational tone ("I'd love to hear how we can make it easier"). - Improve: none needed. ### โœ… Logical Validity #### Strong reasoning - Inductive (whole thread): generalizes from five concrete task types to a single method โ€” strong because each example is independently checkable and the pattern (target โ†’ loop โ†’ stop) holds across all five. Clarify by adding failure cases where no good check exists. - Causal (loop section): "writing the loop is mostly writing how you'd check the work yourself" โ€” a sound causal claim that verifiability enables autonomy. Strengthen with data on how often verifiable tasks complete unattended. - Analogical (model-work example): mapping to "Karpathy's autoresearch for ML training loops" โ€” apt because both are score-driven iteration. Clarify the limits of the analogy for non-numeric targets. #### Fallacies - Hasty generalization (risk, line: "Most of this doesn't stay on my laptop... It runs in the cloud"): presents one personal workflow as the default without sample or counterexamples. Weakness: readers may assume cloud orchestration is necessary. Fix: scope the claim to "in my setup" and note when local runs suffice. - Suppressed/uncontested premise (line: "Writing the loop is mostly writing how you'd check the work yourself"): assumes the work is checkable at all; tasks with no objective check are silently excluded. Fix: state the precondition explicitly and give an example of a task that doesn't qualify. - Anecdotal evidence (overall): the whole method rests on first-person experience with no metrics. Fix: pair claims with even rough success rates or before/after numbers. #### Tone of voice - Practical, modest, and invitational. Examples: "Examples I actually use," "I start more explicit than I think I need, then loosen it," and the closing "I'd love to hear how we can make it easier for you!" The tone teaches by demonstration rather than asserting authority. ### ๐Ÿ›ก๏ธ DARVO Analysis - Not applicable to this source โ€” the thread is a non-adversarial how-to with no accusation, denial, or victim/offender dynamic. ## ๐ŸŽฏ Conclusion - Bottom line: agent coding scales when each task carries a definition of done the agent can score, a loop that stops on clear conditions, and a thin ping so the human leans in only when needed. The check is the spec. - Next steps for readers: pick one current task, write its check first (test suite, eval score, perf number, or validation count), wrap it in a change-measure-keep/revert loop with explicit stop conditions, route a `/notify` ping to wherever you already are, and only start a second loop once the first runs clean. For Courtney's loop-engineering OS this is direct reinforcement: the "definition of done the agent can score" is the maker's target and the stop conditions are the checker's gate โ€” same maker/checker discipline, framed for a fleet of parallel coding agents. ## ๐Ÿ”„ Refactor Appendix โ€” Human in the /loop > Density: 2โ€“5 Literature atoms (H3), 0โ€“3 Permanent candidates (H4). > Defaults: 3 Literature, 1 Permanent. ### ๐Ÿ“š Literature Atoms (H3) #### [H1] Lock a definition of done the agent can score > [!quote] ID:rw_1 > "Before kicking off a longer running task, I lock a definition of done." **Context & use**: - Thread, "Find something the agent can verify" section. - This is the load-bearing move โ€” without a self-scorable check there's no autonomous loop. Mirrors Courtney's maker target. **Tags**: #xref #aphorisms **Highlight**: [view highlight](readwise://) <!-- atomicity: 1 idea โœ“ --> #### [H2] Writing the loop is writing your own check > [!quote] ID:rw_2 > "Writing the loop is mostly writing how you'd check the work yourself." **Context & use**: - Thread, "Wrap it in a loop" lead-in. - Reframes prompt-craft as check-craft; the check is the spec. **Tags**: #xref #aphorisms **Highlight**: [view highlight](readwise://) <!-- atomicity: 1 idea โœ“ --> #### [H3] Stop conditions are the loop's real design > [!quote] ID:rw_3 > "I care most about the stop conditions, which might be" **Context & use**: - Thread, "Wrap it in a loop" โ€” precedes the list (metric hits target, no improvement, out of ideas, blocked/unsure). - "Blocked or unsure โ†’ stop and ask" is the human-in-the-loop escalation; maps to the checker's gate. **Tags**: #xref **Highlight**: [view highlight](readwise://) <!-- atomicity: 1 idea โœ“ --> #### [H4] Throttle concurrency to your review capacity > [!quote] ID:rw_4 > "If three are waiting on me I stop starting stuff and go review." **Context & use**: - Thread, "Then start the next one" section. - Human review bandwidth, not the machine, caps the fleet size. **Tags**: #xref **Highlight**: [view highlight](readwise://) <!-- atomicity: 1 idea โœ“ --> #### [H5] The reply is the loop's next input > [!quote] ID:rw_5 > "When I answer, that reply is the next thing the loop runs on." **Context & use**: - Thread, "Get pinged instead of babysitting" section. - Closes the human-in-the-loop cycle: the agent pings, the human decides, the decision feeds the next iteration. **Tags**: #xref **Highlight**: [view highlight](readwise://) <!-- atomicity: 1 idea โœ“ --> ### ๐Ÿง  Permanent Candidates (H4) #### [P1] A loop is only as good as its check **Claim** (one sentence, Courtney's voice): An agent task can run unattended exactly as far as its definition of done is machine-checkable. **Evidence pointer**: [[#H1]] and [[#H2]] **Scope & conditions**: Holds when the target is objective (score, green tests, perf number, validation count); breaks when "done" needs human judgment that can't be scored. **Links**: - [[Maker-checker discipline]] โ€” because extends - [[Goodhart's law]] โ€” because contrasts on metric-vs-true-quality - [[Loop engineering OS]] โ€” because applies-in Courtney's fleet <!-- atomicity: 1 idea โœ“ --> ### โœ๏ธ Fleeting Queue - [F1] The prompt-template image didn't import โ€” find the original to capture the exact `/loop` + `/notify` shape. โ€” thread "Prompting" section #fleeting #inbox - [F2] Map each of the five done-definitions to a concrete check in Courtney's loop-registry. โ€” #fleeting #inbox ### โ†’ Things 3 (max 2 actions) - [ ] Add a "definition of done the agent can score" field to the loop-template skill โ€” #things - [ ] Cross-link this note to the loop-engineering OS hub in the vault โ€” #things <!-- deep-read:sections end --> ## Links - [[Human Review Capacity Sets the Agent WIP Limit]] โ€” distilled claim: stop starting agent work when the human review queue reaches capacity. - [[A Nondeterministic Check Breaks the Loops Stop Condition]] โ€” applies-in: an unattended loop is bounded by the check it can score.