Skip to content

Loop Engineering from First Principles — Kyle Mistele,…

Kyle Mistele (HumanLayer) argues that unreliable AI coding agents need better loops, not better prompts. Borrowing from control theory — sense the error, emit a control signal, measure again — the talk shows how to design agent loops so each iteration produces a small, verifiable change instead of one giant unreviewable diff. A worked example walks through migrating a codebase one procedure at a time: a sensor (e.g., Grep or structural search) finds the smallest unmigrated piece, a controller picks the next task, and an actuator agent makes changes against hand-defined golden patterns, gated by deterministic CI. The loop tracks its own PRs in version control and refuses to stack changes while earlier ones remain open. # Channel Identity Observations: Kyle Mistele, HumanLayer ## Explicit Self-Description - **Creator identity and affiliation**: Kyle states directly: *"My name's Kyle. I'm co-founder of a company called Human Layer."* - **Company offering**: He mentions a product at the close: *"If you want to try this yourself, uh we built a scale. Please try it out."* — indicating HumanLayer ships a tool related to the talk's content. - **Hiring signal**: *"At HumanLayer we're hiring here in San Francisco."* and *"if you're working on mission critical systems and want to figure out how to get more out of AI, we'd love to chat."* ## Intended Audience - **Professional software engineers on teams**, explicitly contrasted with solo builders: *"It works very well if you're not building on a team... But most of us are working on teams and we don't fit in that box."* - **Engineers at companies with production obligations**: *"systems that have real customers, real users, real regulatory obligations and service level agreements."* - **Attendees of a developer/AI conference** — references like *"I'm sure you all are going to see this slide a lot this week"* and *"a conference that was here in town last month"* indicate a live talk format. ## Claimed Scope - The talk positions itself against hype-driven discourse: *"so much of the discourse around them is hype driven and just really not helpful."* - Core claim: teaching **practical, incremental, reviewable agentic loops**: *"I want to talk about how to build loops that work in large complex code bases... how to build loops for the real world."* ## Demonstrated Presentation Patterns - **Technical depth with production examples**: walks through a real internal migration — *"a control loop that we use internally at Human Layer... incrementally migrating our RPC API to Effect."* - **Hands-on pragmatism**: names concrete tools (AST grep, ripgrep, ESLint, GitHub Actions, Effect, React Doctor's Aiden) and describes operational lessons: *"when we first did this it was actually really frustrating and we turned the loop off."* - **Theoretical framing**: grounds practice in **control theory** — sensors, set points, controllers, actuators, disturbances — with accessible analogies (thermostats, Kubernetes autoscaling, his aerospace-engineer twin brother). - **Engagement with industry figures/discourse**: cites Geoff Huntley's Ralph, Peter Steinberger, Boris Cherny ("this is his entire job as an engineer now is just writing loops to prompt Claude"), Matt Pocock, OpenClaw — showing the channel situates itself within current AI-engineering debate. - **Critical, non-hype stance toward agentic coding**: *"all of our loops that we're building are producing so much code that we can't possibly read all of it"* — while still endorsing loops: *"we can design loops and still read the code."* ## Observable Evidence Gaps - No channel-wide self-description (e.g., tagline, subscriber pitch) appears in this material; identity is inferred only from this single conference talk. - No curated metadata was supplied for additional identity context. # Delivery Observations — Kyle Mistele, "Loop Engineering from First Principles" ## Tone - **Conversational and colloquial**, mixing technical depth with informal asides: > "The syntax is really weird. We're psychos. We really like it. It's not for everybody. That's okay." - **Lightly sarcastic toward industry hype**, especially early on: > "We're just going to have like swarms of agents designing loops to prompt agents building swarms for loops and like I don't know, somewhere where like writing production code, what I assume." - **Conciliatory when critiquing others** — he explicitly hedges criticism: > "And this isn't to throw shade at Jeff Huntley, right? This is Ralph is an innovative uh it's a sharp tool that works very well for certain types of problems." ## Vocabulary - **Controls/engineering terminology** dominates the technical half: *set point, sensor, controller, actuator, measured error, disturbance, disturbance dampener, control signal*. - **Repeated self-coined or niche terms**: "blind Ralph loop," "agentic control loops," "golden patterns," "Claude's law" (apparently a coinage for AI-generated code churn). - **Folksy fillers**: "y'all," "cuz," "uh" frequent throughout: > "But uh to do this is going to take some real engineering, y'all." ## Recurring Phrases - **"right?"** as a constant check-in tag — appears dozens of times: > "we can build software this way, right?", > "It's just a bash loop... right?" - **"the real world"** as a framing anchor: > "I want to talk about how to build loops for the real world," and > "what I think works in the real world." - **The word "deterministically"/"deterministic"** recurs as a value judgment: > "we're going to filter it down to four and we're going to sort it deterministically," > "I don't think you should ever send an agent to do deterministic code's job." - **"incremental"/"incrementally"** repeated as a core principle: > "Control loops change a system incrementally instead of just trying to get straight to the end state." ## Teaching Habits - **Concrete analogy to ground abstract theory**: control theory is introduced, then immediately anchored via > "Does anyone have one of these? Uh a thermostat uses a control loop." - **Familiar-system enumeration** to make concepts relatable: Kubernetes autoscaling, infrastructure-as-code, Postgres autovacuum, React virtual DOM in one breath. - **Numbered step-by-step walkthrough** of a real internal example (Effect migration), with explicit sequencing: "step one, we have to build our sensor," then controller, actuator, flow control. - **Rhetorical questions to structure decisions**: > "Why are we doing that?", > "The key questions are, can we find something we can measure?" - **Citing named figures/communities** for credibility and context: Peter Steinberger, Boris Turney, Matt Pocock, Jeff Huntley. - **Honest acknowledgment of failure modes** in his own approach: > "when we first did this it was actually really frustrating and we turned loop off." ## Communication Patterns - **Contrarian-but-constructive arc**: open by challenging industry consensus, then spend the bulk of the talk offering an alternative framework. - **Live self-correction and audience-aware recovery** from technical hiccups: > "Ooh, clicker's not working. Cool," > "Oh, man. There we go." - **Audience address**: direct address ("Hey everybody," "Does anyone have one of these?", "for any of our European friends in the audience"). - **Closing with call to action + hiring pitch**: > "Please try it out... we're hiring here in San Francisco." ## Pattern Confidence - **High confidence**: the "right?" tag, incremental-change vocabulary, and step-by-step teaching structure are heavily repeated and clearly stable patterns. - **Moderate confidence**: the sarcastic-hype tone — strong in the opening but less prevalent in the technical half; may be situational to the intro rather than a stable delivery trait. - **Uncertain**: the clicker mishaps and fillers ("uh") are single-talk artifacts and should not be treated as durable delivery features without more samples. # Loop Engineering from First Principles — Position Record **Speaker:** Kyle (self-identified), co-founder of HumanLayer **Format:** Conference talk on building agentic loops ## Core Thesis - **The industry discourse on loops is hype-driven and unhelpful.** Kyle argues many believe piping a prompt in a loop to a coding agent can build software, but this yields **40,000-line PRs nobody wants to read**. - Loops are powerful, but they should be built as **agentic control loops** based on control theory — incremental, measurable, feedback-driven — rather than "blind Ralph loops." - Explicit target audience: teams working on **large, complex codebases with real customers, regulatory obligations, and SLAs** — "loops for the real world." ## Positions on Others' Work (with qualifications) - **Geoffrey Huntley's Ralph**: *"This is not to throw shade."* Kyle calls Ralph "an innovative, sharp tool" that works well **if you're not on a team** and **not working on critical systems** — but "most of us... don't fit in that box." - Qualification: *"Not all Ralph loops are blind loops. The best Ralphs are actually applying control theory."* Kyle asserts Huntley himself would say Ralph is a **teaching device**, and "some of us read it a little too literally." - **Peter Steinberger's claim** (that we should design loops that prompt agents rather than prompting directly): cited, with the caveat "I'm sure you all are going to see this slide a lot this week." - **OpenClaw / Claude Code / Boris Cherny**: loops built on loops — "loops all the way down"; Cherny reportedly said his whole job is writing loops to prompt Claude. Kyle notes unresolved skepticism: - "It's not clear how well this works yet" — **6 months to fix the Claude Code terminal flicker**; the OpenCode team wrote a renderer "in a fraction of that time"; OpenClaw "notoriously has stability issues." - The approach is **expensive** without a frontier lab's token budget. - **Matt Pocock** cited: bad code is more expensive in the age of agents than ever before. - **Aiden by React Doctor**: praised as "fantastic" — a **hybrid sensor and controller** example. ## Control Theory Framework Kyle maps control loops onto codebases: - **Sensor** — measures current state (deterministic: ESLint, AST grep, packwork; or non-deterministic: agents with natural-language rules; or pipelines). - **Set point** — desired end state with respect to a property. - **Controller** — reads measured error, decides incremental change. Kyle emphasizes a **well-tuned controller** is essential; without one, a loop makes too-large or wrong changes and "you're in trouble pretty quickly." - **Actuator** — applies the change. - Everyday examples cited: thermostats, Kubernetes autoscaling, infrastructure-as-code, Postgres autovacuum, React virtual DOM (approximate). Key principle: **incremental change** minimizes risk, avoids over-steering and destabilizing the system — "the opposite of a blind Ralph loop." **Stated opinion:** *"I don't think you should ever send an agent to do deterministic code's job."* ## HumanLayer Case Study: Migrating RPC API to Effect - **Motivation:** adopted Effect for race-prone code; likes it (syntax "really weird. We're psychos. We really like it. It's not for everybody."). - **Sensor:** AST grep rule finding unmigrated procedures; output filtered to 4 keys and **sorted deterministically**. - **Disturbance dampener** (Kyle's own loose term — "doesn't map directly" to control theory): a baseline scan on main tracked in version control; each PR checked so new unmigrated procedures are blocked — preventing teammates "shipping Claude slop" from undoing the loop's work. - **Controller options:** pick first violation, smallest procedure, or use telemetry to prioritize procedures with most errors / least instrumentation — so migration improves code rather than one-to-one porting. - **Actuator:** agent + skill; HumanLayer hand-writes **"golden patterns"** first ("they're just pattern replicators"). PR created deterministically with the agent's final message as description. - **Orchestration:** GitHub Actions recommended (access to code, secrets, scheduling) — "we don't need a new cluster for this." ## Lessons from Iteration (friction acknowledged) - Initial loop was **high friction** — "actually really frustrating and we turned the loop off" — due to constant skill updating. - **Human-on-the-loop fix:** a version-controlled **feedback markdown file** loaded into agent context; `/iterate` comment trigger reloads PR context (diff, comments, reviews) and instructs the agent to update both code and feedback file. Benefits: tracked history, revertible. - **Flow control:** if any PR with the loop's label is still open, the workflow shuts down — max one open PR per loop; prevents stacking, duplication, conflicts. Rationale: loop work is important "but it's not that important." - **Velocity options:** controller picks 3–5 procedures; separate implementation phases per procedure (cheaper, more reliable — own context window); or run workflow 4× for 4 reviewers. Stated tradeoff: one-at-a-time migration of 150 procedures would take ~6 months, "way longer than I want to wait." ## Closing Claims - Summary: the built loop improves code incrementally, code is still being read, has adaptive flow control, and can be re-steered "in a super low friction way." - HumanLayer built a tool ("a scale" per transcript) for others to try; company is hiring in San Francisco. # Speaker & Provenance Observation Record ## Video Metadata - **Title:** Loop Engineering from First Principles — Kyle Mistele, HumanLayer - **Video ID:** `01a15ca8-3aad-7dba-8f59-4361803c6330` - **Type:** Conference talk (explicit: "you're going to see this slide a lot this week", live audience, applause) - **Curated metadata:** Not supplied (no comment availability info) ## Speakers & Roles ### Primary Speaker - **Kyle (Kyle Mistele)** — **Creator / Presenter** - Self-identified: > "My name's Kyle. I'm co-founder of a company called Human Layer." - Role: sole substantive speaker; presents talk on agentic control loops. - **Audience applause** at end (non-speaking participants). ## Referenced Sources & Third-Party Claims (as attributed by Kyle) - **Geoff Huntley** (transcribed as "Jeff Huntley") — attributed the **Ralph** loop technique; Kyle states Huntley describes Ralph as "a teaching device." - **Peter Steinberger** — claimed "we shouldn't be prompting coding agents anymore… designing loops that prompt our agents." - **Boris Cherny** (transcribed as "Boris Turney") — identified as "creator of Claude code"; claimed his job is "writing loops to prompt Claude." - **Matt Pocock** — claimed "bad code is much more expensive in the age of agents." - **OpenClaw / "open claws"** (transcription uncertain) — described as loop-built, with stability issues. - **OpenCode team** — described as writing a renderer faster than a 6-month Claude Code terminal flicker fix. - **Aiden by React Doctor** — cited as a hybrid sensor/controller tool. - **Unnamed conference "here in town last month"** — attributed thesis that AI-generated code need not be read. ## Referenced Tools/Technologies (mentioned, not endorsed as sources) AST grep, ripgrep, ESLint, Kubernetes, Postgres autovacuum, React virtual DOM, GitHub Actions/GitLab/CircleCI, Effect library, MCP specification, Next.js. ## Promotional Segments (Flagged) - **Closing promotion:** > "we built a scale. Please try it out. My Twitter handle is down there… Please share it." - **Hiring pitch:** > "at HumanLayer we're hiring here in San Francisco." - **Customer solicitation:** > "if you're working on mission critical systems… we'd love to chat." ## Uncertainty Notes - Several proper names rendered uncertainly in transcript ("Jeff Huntley"/Geoff Huntley, "Boris Turney," "open claws," "HypeScript"); recorded as transcribed with likely corrections flagged. - Kyle's claims about third parties are his attributions in a live talk; no independent verification available in source. - **Comment availability:** unknown (no metadata supplied). \>\> Hey everybody. My name's Kyle. I'm co-founder of a company called Human Layer. And I'm here to talk about loops. I think we've all been building loops lately. And I realized recently, I think we're all doing it wrong. Loops are really powerful, don't get me wrong. But so much of the discourse around them is hype driven and just really not helpful, right? We I think we have this idea just kind of as an industry somehow that we can like pipe a prompt in a loop to a coding agent and that we can build software this way, right? Maybe we're investing a lot of time in verifiers. Maybe you have six different code review agents. But at the end of the day, if we're doing this, we're still building 40,000 line PRs that just nobody wants to read, right? And this isn't to throw shade at Jeff Huntley, right? This is Ralph is an innovative uh it's a sharp tool that works very well for certain types of problems. It works very well if you're not building on a team. And it works very well if you're not working on critical systems. But most of us are working on teams and we don't fit in that box. So today I want to talk about how to build loops that work in large complex code bases. For systems that have real customers, real users, real regulatory obligations and service level agreements and everything else that keeps us from shipping YOLO 40,000 line PRs straight to production. In other words, I want to talk about how to build loops for the real world. If you're not aware, uh this post actually dates back to July. It went viral this past January, which is when a lot of us I think started building loops. And of course much more recently, I'm sure you all are going to see this slide a lot this week, but Peter Steinberger said that we shouldn't be prompting coding agents anymore, right? We should just be designing loops that prompt our agents. Of course, open claws notoriously built on loops. Loops build the code, loops review the code, they merge and release the code, they find and fix the bugs. There's even loops for finding and fixing bugs in the loops that are merging the things, right? It's loops all the way down. It's Boris Turney, also the creator of Claude code, recently said that this is his entire job as an engineer now is just writing loops to prompt Claude. And eventually, we might not even need loops, right? We're just going to have like swarms of agents designing loops to prompt agents building swarms for loops and like I don't know, somewhere where like writing production code, what I assume. And in fact, all of our loops that we're building are producing so much code that we can't possibly read all of it, right? So we might as well just not read any of it, right? We're we're investing in verification and in code review, but all this code is read only. This is the thesis of a conference that was here in town last month. So a lot of smart people at Frontier Labs think that this is the future of software development. And if you're doing this, you're moving 10x faster and everybody else is getting left behind. Now, it's not clear how well this works yet. Uh Took 6 months to fix the Claude code terminal flicker. The open code team wrote a renderer in a fraction of that time. And open claw of course also notoriously has stability issues. What is abundantly clear, however, is that this is really expensive if you don't work at a Frontier Lab and have an unlimited token budget. And all this code that we're writing is actually really expensive, right? Matt Pocock talked about this recently. Uh bad code is much more expensive in the age of agents than it it has ever been at any point in the past. So, today I want to talk about what I think works in the real world and what we started doing at Human Layer, which to be clear is still building loops, right? I think loops are super powerful, but we can design loops and still read the code. In fact, we can design loops to make it easier to read the code because the loops are making the code better. We can solve hard problems in complex codebases with loops, and we can build our software factory incrementally. But uh to do this is going to take some real engineering, y'all. So, let's talk about control theory. Control theory is all about how we drive a dynamic system, which would be your codebase, towards some desired, stable, or optimal end state, right? You have a sensor that measures the current state of the world. You have your set point, right? The desired state of the world. And the difference between those two things is your measured error. You have a controller that reads that measured error and turns it into a control signal about an incremental change to apply to the system. We have an actuator that applies that change to the system, which is undergoing disturbances in the meantime. And then we remeasure, recompute our measured error, and we're back where we started. Now, this sounds really complicated, and it can be. I have a twin brother, actually, who's an aerospace engineer. This is how they keep fighter jets from falling out of the sky. Uh but uh it's probably a little bit simpler than most of y'all think. Does anyone have one of these? Uh a thermostat uses a control loop, right? Uh for for any of our European friends in the audience, this part of something we have uh here in the States. It's called air conditioning. And uh most of us probably actually use control loops on a daily basis, right? Kubernetes auto scaling systems are built on control loops. Infrastructure as code uses a desired state, current state, iterative change like control loop pattern. Postgres is auto vacuum and React's virtual DOM both use approximate control loops. Control loops are ideal when we have a system that we want to change, a problem we can measure, and a way to get feedback on the result of that change. Like good software engineers have always been taught to do, control loops change a system incrementally instead of just trying to get straight to the end state immediately all at once and risk blowing everything up, right? They help us to avoid over steering and destabilizing the system and it minimizes risk. So, control loops are the opposite of what I'm going to call a blind Ralph loop. They're how we avoid PRs that look like this cuz nobody wants to review this, right? Which is not to say that all Ralph loops are blind loops. The best Ralphs are actually applying control theory. I know Jeff Huntley is out in the hall somewhere wandering around. If you go talk to him, he's going to tell you the same thing, right? That Ralph is a teaching device and I think some of us read it a little too literally, but this is how we should have always been building loops. But, the other issue with Ralph loops they're not incremental, right? It's just a bash loop. So, we have to build agentic control loops. And to do that, we start by defining a set point which is the desired end state of our code base with respect to some property of it. And we add a sensor. There's a lot of ways to build a sensor. It can be strictly deterministic, your ESLint rules, your AST grep, your packwork, or it can be non-deterministic. You can have an agent and a skill and a bunch of natural language rules, and you could also just have a pipeline like a combination of the two. So, how do we build agentic Oops. There we go. Now, this is all theory, right? Practically speaking, and because we're using agents, we can blur the lines a little bit between system components. So, Aiden by React Doctor, for example, is fantastic. It is uh it's a great way to catch all of the React slot that Claude snuck into your code base last week. But uh it's a hybrid sensor and controller. It tells you what are all the problems with your React code, and also, by the way, what are the top three things you should fix, and how do you fix them? Similarly, our controller and actuator might actually just be a single agent deciding on an incremental change to make and then applying it in the same context window. But I want to zoom in on the controller a little bit because without one, or without a well-tuned one, we might make too large of a change all at once, or we might make the wrong change entirely. And if you put that in a loop, you're in trouble pretty quickly. So, we can use control loops to root out bad patterns and to clean up our code, but we can actually use them for all sorts of things, right? We could make sure that our API is compliant with someone else's open API spec. We can make sure that our MCP server is compliant with whatever version of the uh the MCP specification that we're currently on. Haven't checked. You could mirror a project from Python into HypeScript, or vice versa. You could even maintain your uh Beat-based slot fork of Next.js against the upstream. The key questions are, can we find something we can measure? Can we apply changes incrementally? And can we get feedback on the quality of those changes? To illustrate that, I'm going to walk through a control loop that we use internally at Human Layer. Uh for our loop, we are incrementally migrating our RPC API to Effect. We adopted it for some of our race-prone code. We like it, so we're adopting it across the rest of our code base. If you've never seen Effect's code before, the code on the right is just the kind of trivial procedure on the left rewritten in Effect. Uh the syntax is really weird. We're psychos. We really like it. It's not for everybody. That's okay. Uh this isn't a talk about Effect, so we'll keep moving. Ooh, clicker's not working. Cool. So, step one, we have to build our sensor to find unmigrated procedures. We can have an agent do this or we could use grep or rip grep. But, instead we're going to use AST grep cuz it's really powerful. It's a great tool to have in your toolbox for building loops. It's language-agnostic. It's out of band from your TypeScript config or ESLint rules, which if you're a TypeScript developer, you have watched Claude disable those with inline comments. Uh but, so we can just write a simple rule that finds unmigrated procedures uh based on the pattern above. We Over time, we can even layer on more rules that describe other patterns we want to get rid of with granular include and exclude paths. If you have a multilingual monorepo like we do, uh it'll work for any language you could possibly imagine. And we can just scan our codebase and it'll produce a long list of violations. Uh way too long, in fact. It'll give you about 50 keys per violation, so we're just going to filter it down to four and we're going to sort it deterministically. Why are we doing that? At the beginning, I said this was going to be practical. And so, we're going to step outside of our control loop paradigm for a second because before we start incrementally migrating procedures one at a time, we need to enforce that all new procedures are using effect, right? So, we're going to run a full scan once on main, sort all the violations deterministically, and track it in our version control. And then on every new PR, we can see if it the branch added any unmigrated procedures, right? So, this is our control loop and our system is undergoing disturbances. In this case, uh all of our teammates shipping Claude's law. And this is how we make sure that they're not undoing our loop's work. This doesn't map directly to a part of the control loop, but we can kind of like squint at it a little bit and call it a disturbance dampener. So, now that we've stopped the bleeding, we can actually design our controller. For a simple controller, we could just deterministically pick the first violation from the list. You can use bash and jq or we could get a little cleverer and use AST grep to find the smallest unmigrated procedure and always pick the smallest one to reduce the risk. Uh we could have an agent make the decision if we really want to. I don't think you should ever send an agent to do deterministic code's job, but you certainly can. In fact, depending on the complexity, we could have the agent pick the procedure to migrate and just do it at the same time like we just talked about. But we can make this even more powerful, right? Because we're not just migrating to a factor for the sake of it. We're doing it because it's helpful for handling errors and for helping us instrument our code better. And so what we could do if we want to get really clever is we can look at our telemetry and figure out which procedures have the most errors or the least instrumentation or has a gap in our APM, right? And when we send a control signal to our actuator agent, we can include not just the procedure to migrate, but also all the data about the things that we're trying to fix with this migration so that the actuator agent can actually make the code better instead of just doing a one-to-one migration. Oh, man. There we go. So next is building our actuator. Our actuator is just an agent plus a skill. Um bring your CLI coding agent of choice. You should spend a lot of time on the skill. Not all of that should be up front. You'll want to iterate on it over time based on what works. At Human Layer, we like to build out what we call golden patterns by hand before setting the agent loose. These are just like idiomatic handwritten examples for the agent to follow because they're just pattern replicators and otherwise you're getting what's in the docs or what the agent knows from the internet. And so we pipe the skill plus our control signal into our actuator agent. And if the skill of course should include a response template, and the agent's going to work and work and work, and it'll produce a final response, and then we're going to deterministically commit and push and create a PR using the final message as our PR description. Now all we have to do is actually run the loop, right? Uh my recommendation is to use GitHub actions or your GitLab or your CircleCI or whatever else you're using because it has access to your code, it has access to your secrets, and it has great dispatch and scheduling primitives, right? We don't need a new cluster for this. So, we can write a workflow that runs a single iteration of the loop, sense, control, actuate, and creates a PR. And then we can schedule this to run once a day. And every morning we walk into the office to a small incremental PR that's low risk. And when we first did this it was actually really frustrating and we turned loop off and it cuz we had to constantly update the skill, we had to constantly check out the branch, change the skill, change the code, commit and push, and our loop was actually really high friction, right? But there's a better way to do this uh where we can put a human on the loop in a really low friction way to re-steer it when it goes wrong. And the way to do this is to just create a feedback file that's tracked in version control just as a markdown file, right? We can deterministically load it into our actuator agent's context every time that it runs after we run the controller. Then we can add a label to the PR, right? Each workflow needs to be able to identify PRs that it created since there might be a bunch of different loops running and we only want workflows to respond to feedback from uh comments on their PRs. And we're going to add a comment trigger to each loop workflow. So, the when a user leaves a \{slash\} iterate comment on the PR uh the loop workflow is going to pick that up, it's going to deterministically load all of the PR context, the diff, the comments, the review comments, the description into the agent's context along with the skill, and it's going to instruct the agent to fix the code, but also to update that feedback file, right? It looks kind of like this. And the benefit of doing this way is that now that feedback file with instructions is tracked in your version control, you can see how you've changed it over time, you can revert it if you need to. So, the next thing we're going to do is add flow control because the other problem that we had when we did this was that if we were at a customer site for a week or if we were traveling or spent 6 days working on slides instead of writing code. Uh the PRs from all of our loops would just stack up. They duplicate work. They'd conflict. And we wouldn't get around to doing it. And like the loops work is important, but it's not that important. And so now we just had all this like junk we had to deal with that wasn't important. So this is actually really easy problem to fix uh because each loop and its workflow has a label that gets attached to PRs. When the workflow first runs uh before we check out the code and install the dependencies and run our sense actual or sense control actuate steps, we can just check and see if the last PR that we created or any PR with the loops label on it is open. And if so, we just shut down, right? Because this means that the last time that a human uh reviewed the code from this loop was before the loop ran, right? No human reviewed the last output, so there's no reason to stack up even more work for humans to review. This way we have exactly one PR at most open per loop at a time. No stacking, no duplication, hopefully no conflicts. And of course, once you're feeling confident in the loop, we're going to want to speed it up, right? I have 150 RPC procedures to migrate. If I do one at a time, it's going to take 6 months, which is way longer than I want to wait. Fortunately, there's a lot of ways to pick up the the velocity of our loop. Uh we could have our controller pick three procedures to migrate instead of one at a time or five. Uh we could have our controller pick three or five and then do each of those in a separate implementation phase, which will be both cheaper and more reliable since each migration gets its own context window. Or we could just run the workflow four times and give one PR to each of four people on the team. So let's put it all together. We built a control loop that improves our code incrementally. And we're actually reading the code. It has adaptive flow control, so we're not creating a bunch of loop or a bunch of work that nobody wants to review. And we can restir it on the fly in a super low friction way. If you want to try this yourself, uh we built a scale. Please try it out. My Twitter handle is down there on the bottom. Please share it. I would love to see what you build. And if you get excited by this, at Human Layer we're hiring here in San Francisco. And if you're working on mission critical systems and want to figure out how to get more out of AI, we'd love to chat. Thank you so much. \>\> Woo! \>\> \[applause\]