Engineering in a Compressed Loop
00 / 15
Contents · 15 minutes

    A fifteen-minute visual digest

    Engineering in a compressed loop.

    The distance between an idea and running code shrank from weeks to minutes. The loop did not disappear. It compressed, and everything that used to hide inside the slow part is now on the surface: judgement, verification, and taste. This digest covers how to work well in that loop, and why the craft is worth more than it has ever been.

    15chapters
    1minute each
    10live figures
    50/50science / art

    Presenting? J next chapter, K previous, C contents.

    Then

    Release loop. Quarters, then sprints.

    Recently

    CI loop. A build per commit, daily deploys.

    Now

    Agent loop. Brief to diff in minutes.

    01Foundations1 min

    The loop got shorter. The thinking did not.

    Every engineering loop has the same four beats: decide what to build, build it, check it, learn from it. For most of our careers the build beat was the slow one, so it hid the others.

    Agents collapsed that beat. A change that took an afternoon now takes minutes, and you can run it ten times before lunch. What did not compress is the part that decides whether those ten runs were any good: understanding the problem, reading the result, and knowing when to say no.

    So the bottleneck moved. It used to be how fast you could write a correct solution. Now it is how fast you can recognise one. That is a different skill, and it is what the rest of this digest is about.

    Where a feature’s hours go
    Share of effort on one medium-sized change
    Illustrative shape
    The trade. Building is now cheap, so spend the hours you save on deciding and verifying. Teams that bank the savings instead end up shipping more of the wrong thing, faster.
    02Foundations1 min

    Start from what is true, not from what is usual.

    An agent is a superb pattern matcher. Ask it for a retry and it reaches for the most common retry on the internet. That is habit, at machine speed.

    First-principles thinking is the counterweight. Before choosing a solution, reduce the request to the few things software is actually made of: data that must stay true, time and ordering, failure, and the people who read and run the system. Then build up from there.

    With agents this matters more, not less. A model will produce a fluent answer to the wrong question. Four questions catch most of the expensive mistakes before any code gets written. Pick a request.

    One request, reduced to fundamentals
    Habit answers the common case. The four questions answer this case.
    Habit gives you the common answer. First principles give you the right one for this system.
    03Foundations1 min

    Software is half science, half art.

    The science half is what you can prove: a test that fails before the fix, a load profile, an invariant, a hypothesis you tried to break. The art half is what you can only judge: names, boundaries, what to leave out, how a change will read to the next person.

    Agents are strong at the science when you ask for it. They will produce evidence on demand. They are weaker at the art, because taste is not in the average of their training data. It lives in the specific choices your team made, and in the reasons behind them.

    Too far in either direction and quality falls. Drag the slider to see what each extreme feels like to work in.

    Quality against the science and art mix
    Peak sits near the middle, and the curve is unforgiving on both sides
    Model, not measurement
    Science 50%
    Art 50%
    Science

    What you can prove

    Falsifiable claims about behaviour. Run them, repeat them, compare them against a baseline.

    • 01red test before green
    • 02load profile at real volume
    • 03invariant enforced by the database
    Art

    What you can judge

    Choices with no single right answer, which still decide whether the code survives its second year.

    • 01a name that explains intent
    • 02a boundary in the right place
    • 03the feature you chose not to build
    04Foundations1 min

    How would you do this work?

    Ask that before you write a single instruction for an agent. If you cannot explain how a senior engineer would approach the change, no prompt will explain it for you.

    The answer lives on a small shelf of books that used to pay off slowly, one design review at a time. Now every principle you can put into words becomes a line in a skill, and that line runs on every task an agent touches. Their value went up when code got cheap, roughly tenfold.

    Read them in this order. It climbs from one function to a whole organisation, the same path pressure travels through a real system.

    05Agents1 min

    The model listens now. So what you write is the work.

    Two years ago prompting meant coaxing: you repeated yourself and hoped. Today’s models hold a written system across hundreds of steps, made of rules, a way of thinking, and the values that settle ties.

    That moves the leverage. A clever line buys you one good answer. A coherent system buys you consistent behaviour on tasks you have not seen yet. Good systems have three parts: a Law (a short set of rules grouped by concern), a Bar (what a result must clear before it counts as done), and Field sense (how far beyond the edited file the agent has to look).

    Instructions

    What to do

    Concrete steps, done-criteria and stop conditions. Agents follow these almost literally, which is exactly why vague ones are dangerous.

    • e.g.write the failing test first
    Ideas

    How to think

    Heuristics the agent can apply to new cases. They generalise where instructions cannot.

    • e.g.fix at the lowest level that owns the fact
    Values

    What to protect

    The tie-breakers. When the plan and the code disagree, values decide what happens next.

    • e.g.no claim without a check run this session

    Field sense, five levels

    L1The function
    L2The module and its callers
    L3The service, its jobs and its schema
    L4Other services, consumers and the warehouse
    L5People, on-call, and data that outlives the code
    Precedence, read top to bottomhigher wins
    1. The user’s words
    2. The repo’s conventions and decision records
    3. The Law (complete, restrained, honest)
    4. Habit (what the model would do by default)
    An agent knows exactly what you wrote, and nothing else.
    06Agents1 min

    Context is a budget, and one session spends it badly.

    Every file read, failed attempt and stack trace stays in the window. After enough turns, the rule you wrote at the start is competing with forty screens of noise, and it loses.

    Three things drive this. Attention is uneven, so material in the middle of a long context gets less weight than the start or end. Failed attempts teach the model the wrong patterns, because it sees its own mistakes as precedent. And compaction keeps a summary, which is lossy by design.

    The fix is structural, not verbal. Give each concern its own fresh session and pass only the result forward.

    Instruction adherence over a working session
    One long session against scoped sessions that restart from a clean brief
    Illustrative shape
    Rule of thumb. One session, one concern, one reviewable diff. If you are about to paste the same constraint for the third time, the session is already too long.
    07Agents1 min

    A written brief keeps the main session clean.

    A subagent starts with nothing. The brief is the only world it has. Write the brief well and the subagent does focused work in its own window, then returns thirty lines instead of three hundred.

    That is what metaprompting means in practice. The main session does the recon, then writes a prompt for another agent. The main session keeps the facts and the decisions. The subagent keeps the mess. Full output goes to a file on disk, so nothing depends on remembering a conversation.

    Where the context goes
    Share of one context window used, per session
    Illustrative shape
    Objective

    One sentence: what changes and why.

    Done means

    An observable check, not a feeling.

    Read first

    Exact files and symbols, not a folder.

    Known facts

    Each marked verified or unverified.

    Locked decisions

    What is settled and not up for debate.

    Constraints

    Scope, budgets, what must not move.

    Traps

    The second caller the ticket forgot.

    Stop conditions

    When to stop and ask instead of guessing.

    Return

    A short handoff, with the full output in a file.

    Brief that invites guessing
    Refactor the sync worker to be
    more robust. Follow best
    practices and add tests.

    Which worker? Robust against what? “Best practices” rules nothing out.

    Brief that rules out wrong moves
    Objective: make order-sync retries
      idempotent (duplicates since v4.2).
    Done means: a test replays one message
      twice and one row results.
    Read first: sync/worker.ts#handle
    Known: a nightly job also writes
      orders (verified).
    Trap: rows written today outlive the code.
    Return: 30-line handoff, plan in
      .work/01-plan.md

    Before you send it, reread the brief as if you were the subagent. For anything you would get wrong with only that text, add one line.

    08Agents1 min

    Too many agents in a row is a game of telephone.

    If one session is too crowded, the tempting fix is a chain: analyst, architect, planner, builder, reviewer. Each gets a clean window. Each also gets a summary of a summary.

    Two forces pull against each other. More sessions give each agent more headroom. More handoffs lose intent every time. At ninety percent kept per handoff, four handoffs keep about two thirds of what you meant. Drag the sliders. The best point is usually a small number of owners, each of whom re-reads the code rather than trusting the agent before them.

    Sequential agents: headroom against fidelity
    Overall = intent kept × context headroom
    Model, not measurement
    Intent kept81%
    Headroom83%
    Overall67%
    1. 01

      Every handoff is a compression.

      A thirty-line reply cannot carry everything its author saw. The second caller and the flag that defaults to off are the first details to fall out.

    2. 02

      Nobody owns the plan.

      When the builder finds the plan is wrong, the planner is gone. An owner who can both plan and attack the plan fixes it in place.

    3. 03

      Long sequential runs drift.

      Ten back-to-back sessions on one feature each start from the last handoff, not from the code. Drift compounds quietly until a human reads the diff.

    09Agents1 min

    A build skill: two agents, one brief, no telephone.

    Here is one shape that works. An orchestrator with Staff-level judgement does the recon himself, writes two briefs, reads two handoffs and closes. He never edits production code, so he has no attachment to any diff.

    The pairing is the design. Author and critic share one context, so nothing is lost between them, and a forced change of hats keeps the critic honest. Two loops are bounded on purpose: one plan revision, two defect loops, then stop and report.

    Orchestrator

    Judges

    Sizes the task, runs focused recon, writes the briefs, gates the plan, and closes in a fresh shell.

    • OUTrecon file and a 20-line report
    Planner

    Plans, then attacks

    Re-verifies recon, weighs two or three approaches, picks the smallest complete one, then tries to break it as if a respected colleague had written it.

    • OUTREADY · RISKS · BLOCKED
    Builder

    Builds, then reviews

    The only role that edits code. Writes the failing proof test first, matches the neighbours, then mutation-tests her own lines.

    • OUTred to green, mutations caught
    SizeWhenWhat changes
    SmallOne module, no contract changeShort recon, light plan review, proof test still required
    StandardSeveral files, one serviceFull recon, plan attacked before build, mutation check
    DeepAuth, migrations, schemas, events, public contracts, cross-repoBlast radius mapped beyond the repo, rollback written before the build

    1Recon

    Make the briefs true.

    Gates, premise, target symbols, closest neighbours, invariants, blast radius, and the traps the ticket forgot. Each fact marked verified or unverified.

    2Plan

    A plan that survived its own author.

    One revision allowed. The proof test must be able to fail today, or it proves nothing.

    3Build

    Red, then green, then mutation.

    Existing tests are read-only. If breaking a new line keeps the suite green, the tests were hollow.

    4Close

    Deterministic and cheap.

    Fresh shell, baseline comparison, scope check on git diff --name-only, and a sweep for .only and weakened assertions.

    The Bar, five points. It solves the problem as asked. It fits its neighbours. A test proves it and failed first. Nothing outside scope moved. And the case for leaving the code alone was weighed honestly.
    10Agents1 min

    An audit skill: a bug hunt that tries to disprove itself.

    The build skill builds. The audit skill reads. It runs the suite for a baseline, states the system’s invariants in its own terms, splits the codebase into three to ten vertical scopes, and investigates each one in isolation.

    Its value is the discipline around false positives. A finding needs a real trigger, a traced path with line numbers, and a named attempt to disprove it. Then a second, independent pass tries to kill it again. What survives is a short list of real pressure points. That is what you need to plan a refactor before it turns into an incident.

    00

    Recon

    Run the suite, record the baseline

    01

    Invariants

    This repo’s rules, cited

    02

    Scopes

    Vertical slices along real seams

    03

    Investigate

    Isolated, parallel or one by one

    04

    Disprove

    Second pass, from report files only

    05

    Fix

    One finding, one failing test, one diff

    06

    Regress

    Whole suite against the baseline

    07

    Report

    Including what was left alone

    From suspicion to fix
    Most suspicions should die before anyone touches code
    Illustrative shape
    security data / contract crash quality
    One findingaudit-reports/scope-auth.md
    ### [SECURITY] role check fails open on token refresh
    File: auth/middleware.ts:88
    Trigger: expired token + refresh race, second request
    Evidence: catch block at :91 calls next() with no user
    Disproof attempt: route guard in router.ts:40 only runs
      on initial load, not on refresh
    Status: confirmed
    Proposed fix: return 401 in the catch, no refactor

    An example finding written for illustration, in the audit skill’s report format.

    11Quality1 min

    Think in agents to find the pressure points.

    Every system has a few places where a small mistake costs a lot. They sit at every level, from the bits on disk to the pixels on screen, and they converge on a handful of vertically integrated paths.

    Each level needs its own probe and its own agent. And each needs your instruction about how much is enough, because an agent left alone will either skim a layer or gold-plate it. Pick a layer.

    Dots show the cost of one mistake at that level. Cost rises the lower you go, because data outlives the code that wrote it.

    12Quality1 min

    QA deserves the same attention as the feature.

    For years, features got a brief, a design, a review and an owner. Testing got whatever time was left on Thursday. In a compressed loop that habit breaks, because code now arrives faster than confidence does.

    So treat verification as feature work. The test strategy, the load profile and the user journeys are deliverables with a brief, an owner, a review and a definition of done. If you would not ship a feature without a plan, do not ship a test suite without one either.

    GetsFeatureQuality
    A written briefyesyes
    A named owneryesyes
    Design reviewyesyes
    Definition of doneyesyes
    Time in the estimateyesyes

    QA is also where parallel agents pay off most, because the runs are independent. One agent writes and runs a k6 load script. Others walk user journeys in a text browser, which shows the page the way a screen reader and a crawler see it, and turns UI into plain text an agent can diff between releases. Another checks accessibility. Each one writes a report file, and a single pass merges them.

    One QA round, one after another versus fanned out
    Minutes of wall-clock time
    Illustrative shape
    For engineers

    Explainers from the same source

    Generate short animated explainers of a flow from the domain map and the reports: what calls what, where the retry lives, what the last load test showed.

    For QA

    The strategy, made watchable

    The same material, cut for QA: which journeys are covered, which pressure points have probes, which reports are stale. Two minutes of video beat a forty-page plan nobody opens.

    13Quality1 min

    Never under. Never over. Fit the problem.

    Agents make both failures cheap. The under-built change passes its test and forgets the second caller. The over-built one adds a layer with one caller and an option nobody asked for. They are the same failure: a change that does not fit its problem.

    The cure is to build testfully, which is different from building with lots of tests. Write the one test that fails before the fix and passes after, at the lowest level that can see the bug. A suite that never fails proves nothing, and a thousand generated assertions are bloat, not safety.

    Total cost against design size
    Hover the curve
    Illustrative shape
    Signs of under-building
    fix lands where the symptom showed
    one caller updated, siblings not
    error path is "log and continue"
    migration assumes today’s data
    Signs of over-building
    BaseManager with one subclass
    a config flag nobody asked for
    a dependency to save twenty lines
    diff far larger than the problem
    14Craft1 min

    Write down your taste, then keep it alive.

    An overloaded skill reads like a policy binder. The agent tries to satisfy all of it at once and satisfies none of it well. A good skill is small, specific to your department’s needs and values, and written in your team’s own words.

    Write values first, heuristics next, steps last. Then let real failures grow it: every time review catches something the process missed, add one line under Lessons. Cohesive, simple, evergreen software comes from guidance that stays the same way.

    Overloaded
    400 lines. Every framework rule,
    every style preference, three
    contradicting examples, no order
    of precedence, no stop condition.

    The agent averages the rules, so you get the midpoint of everything.

    Tailored
    Values (5 lines)
    Heuristics (10 lines)
    Steps with stop conditions
    Lessons: one line per real miss

    Short enough to follow every time. Specific enough to be yours.

    Docs that hold

    When you brainstorm a feature with an agent, it fills gaps with plausible inventions. The cure is a map it can read in one pass, not a three-level wiki it has to summarise. Keep one high-level domain map: each domain, what it owns, and what it depends on. Detail stays in the code, where the agent should be reading anyway.

    Three-level LLM wiki
    Summaries of summaries, stale by Friday
    One-level domain map
    Owners and dependencies only

    The second version costs ten times the first

    The first version of a good skill is an afternoon’s prompt. The version worth sharing comes from running it on real tasks, reading what broke, and writing down why. Most of that time is understanding: failure analysis, explainers, documentation, QA on real repositories, and keeping the domain map and architecture intact so future brainstorming stays grounded.

    Where the hours went
    First version against the version worth sharing
    Illustrative shape
    15Craft1 min

    The tooling takes a hundred hours. Judgement takes a career.

    Fifty hours of study and fifty hours of practice will teach you subagents, skills, briefs, MCP and hooks. That knowledge is real, and it plateaus quickly.

    The part that keeps growing is the ability to evaluate what comes back, and to write your taste down precisely enough that an agent can apply it. That is worth roughly ten times the tooling, because it decides whether this week’s hundred fast diffs are an asset or a liability. It comes from the shelf in chapter four, from production incidents, and from years of reading code with care.

    Two learning curves
    Relative capability against hours invested
    Illustrative shape

    Ten lines to return to

    1. I reduce every request to data, time, failure and people before choosing a solution.
    2. I keep the science and the art in balance, and I name which one I am using.
    3. I can explain how a senior engineer would do the work before I ask an agent to.
    4. I write systems for agents, not one-off prompts.
    5. One session, one concern, one reviewable diff.
    6. Few owners who re-read the code beat long chains of handoffs.
    7. Every finding must survive an attempt to disprove it.
    8. Quality work gets the same brief, owner and review as feature work.
    9. I fit the change to the problem, and I prove it with one honest test.
    10. The code, the bugs and the architecture are mine.

    Closing

    The craft got more valuable.

    Agents made typing cheap. That makes judgement, taste and the ability to explain both the most valuable things in the room. Software is still half science and half art, and the loop just got short enough to show it.