{"slug":"research-the-self-sufficient-agent","name":"The Self-Sufficient Agent","rules":{"start":"open","maxDepth":10,"allowRewind":true,"allowReplay":true},"nodes":{"open":{"short":"the note","pose":{"base":"centre"},"beat":{"layout":"center","marker":"experiment · interactive","title":["The Self-Sufficient","Agent"],"glass":1,"lede":"We raised the difficulty until the bare agent should have broken: harder tasks on a real 170-file service. On these tasks it didn't break. With no documentation at all, two coding agents satisfied nine of nine non-obvious functional requirements, identically.","caption":"10 beats · 9 min to read in full"},"prompt":"Where do you want to start?","choices":[{"label":"From the top","to":"premise"},{"label":"the one thing","to":"the-one-thing-that-s-left"},{"label":"Straight to the end","to":"close"}]},"premise":{"short":"the premise","pose":{"base":"flooded"},"beat":{"layout":"left","marker":"01 · experiment","title":["Last time we suspected the agent","of not reading its environment"],"lede":"Last time we suspected the agent of not reading its environment. So we did what we said we'd do: we made the tasks hard enough that a bare agent should fail, on a real codebase big enough to get lost in.","caption":"Condensed from the note."},"prompt":"Where next?","choices":[{"label":"the promise we","to":"the-promise-we-made"},{"label":"Wrap it up","to":"close"}]},"the-promise-we-made":{"short":"the promise we","pose":{"base":"drained"},"beat":{"layout":"right","marker":"02 · the promise we","title":["The promise","we made"],"lede":"The Incurious Agent left a loose end on purpose. Every task in it was easy enough that a bare agent already passed, so we could only ever measure cost, never benefit.","rows":[{"title":"Functional landmines (9). ","note":"A behavioral invariant the agent has to infer: make project creation idempotent; make an event log replay-safe so a redelivered event isn't double-recorded; write files atomically; don't double-count…"},{"title":"Format landmines (5). A project's own house wire-format","note":"the exact shape of an error body, whether a model rejects unknown fields, the envelope a list endpoint returns. These are conventions, not logic, and unknowable from the code alone."}],"caption":"Condensed from the note."},"prompt":"Keep going?","choices":[{"label":"the tasks have","to":"the-tasks-have-teeth-and-the-age"},{"label":"Wrap it up","to":"close"}]},"the-tasks-have-teeth-and-the-age":{"short":"the tasks have","pose":{"base":"recede"},"beat":{"layout":"left","marker":"03 · the tasks have","title":["The tasks have teeth,","and the agent has the logic"],"lede":"Here is what a bare agent (empty workspace, no README, no contract, no memory) solves on each kind of task. A do-nothing answer scores 0% on every one of them, so anything above the floor is real work.","figure":{"kind":"bars","categories":["functional logic, 9 tasks","house format rules, 5 tasks"],"series":[{"label":"Codex","tone":"value","values":[100,4],"display":["100%","4%"]},{"label":"Claude","tone":"value","values":[100,4],"display":["100%","4%"]}],"unit":"% of tasks passed unaided, where a do-nothing answer scores 0 on every one","max":100,"caption":"What the bare agent solves, with no docs at all."},"caption":"Condensed from the note."},"prompt":"What next?","choices":[{"label":"the same picture","to":"the-same-picture-task-by-task"},{"label":"Wrap it up","to":"close"}]},"the-same-picture-task-by-task":{"short":"the same picture","pose":{"base":"flooded"},"beat":{"layout":"right","marker":"04 · the same picture","title":["The same picture,","task by task"],"lede":"Pool the nine functional tasks into one bar and you might wonder if a couple of easy ones are carrying it. They aren't.","caption":"Condensed from the note."},"prompt":"Where next?","choices":[{"label":"the one thing","to":"the-one-thing-that-s-left"},{"label":"Wrap it up","to":"close"}]},"the-one-thing-that-s-left":{"short":"the one thing","pose":{"base":"drained"},"beat":{"layout":"left","marker":"05 · the one thing","title":["The one thing","that's left"],"lede":"Look back at the orange squares. They are not random failures, they are all the same kind of thing: a wire-format convention that lives in this project's head and nowhere in its code.","caption":"Condensed from the note."},"prompt":"Keep going?","choices":[{"label":"from incurious","to":"from-incurious-to-self-sufficien"},{"label":"Wrap it up","to":"close"}]},"from-incurious-to-self-sufficien":{"short":"from incurious","pose":{"base":"centre"},"beat":{"layout":"right","marker":"06 · from incurious","title":["From incurious","to self-sufficient"],"lede":"In The Incurious Agent we watched both agents skip the curated memory directory we had written for them and concluded the bottleneck was consumption: that the missing skill was environmental curiosity, the agent's willingness to go read…","caption":"Condensed from the note."},"prompt":"What next?","choices":[{"label":"scope and limits","to":"scope-and-limits"},{"label":"Wrap it up","to":"close"}]},"scope-and-limits":{"short":"scope and limits","pose":{"base":"flooded"},"beat":{"layout":"left","marker":"07 · scope and limits","title":["Scope","and limits"],"lede":"The caveats shape the claim, so they sit in the body, not a footnote.","rows":[{"title":"\"Self-sufficient\" here means on AC-checkable functional invariants","note":"on small, well-specified tasks. We are not claiming an agent needs no context for a large, ambiguous feature, or for work that spans many sessions."},{"title":"These are landmines, not epics. ","note":"Each task is a small, sharp problem with one hidden requirement. That is what makes the result clean (a do-nothing answer fails; the bare agent passes), but it is a deliberately narrow slice of…"},{"title":"Two agents are two agents. ","note":"That they agree is striking, but it is two model families at one moment in time. We hold the convergence as a strong hypothesis, not a law."},{"title":"The orange band is where the open questions are, and it is small. ","note":"The rest of this series is about that band: what kind of context closes it, what it costs, and which popular ways of delivering it make things worse."}],"caption":"Condensed from the note."},"prompt":"Where next?","choices":[{"label":"what this changes","to":"what-this-changes"},{"label":"Wrap it up","to":"close"}]},"what-this-changes":{"short":"what this changes","pose":{"base":"drained"},"beat":{"layout":"right","marker":"08 · what this changes","title":["What this","changes"],"lede":"If agents are already self-sufficient on the logic of tasks like these, then the job of an agent's environment is not to teach it the project, which it can't, and doesn't need to here.","caption":"Condensed from the note."},"prompt":"Keep going?","choices":[{"label":"Close the note","to":"close"}]},"close":{"short":"the end","pose":{"base":"finale"},"beat":{"layout":"center","title":["That was one path.","The note has the rest."],"glass":1,"lede":"This walk is one route through The Self-Sufficient Agent. The full note carries every chapter, the tables, the code, and the source it was adapted from.","links":[{"href":"/research/the-self-sufficient-agent","label":"Read the full note"},{"href":"/research","label":"All research","tone":"ghost"}]}}}}