One Human, Nine Agentsbook.sgit.ai v0.1.566 Star this site on GitHub

The full book, being written, online: under each scene, what it rests on. Made by review/tools/make_editions.py from the writer's chapters.

Inventing on principle

Cast bar: the editor, alone, then the nine greyed beside him.

Inventing on principle

Narrator. When I started this book, one idea I named was not mine. It comes from a talk by Bret Victor, "Inventing on Principle", given at CUSEC in 2012. His principle, in his words:

"Creators need an immediate connection to what they create. That's my principle."

Narrator. I am not claiming the day lived up to that. A change came back within the hour, not with the next keystroke. But the direction is the same. The distance between what I meant and what the room would see got short enough that I stopped compromising and started fine-tuning, round after round.

Narrator. So what did "immediate" mean on the day? Here is the honest version, from the record, and the card below has every time. In the last stretch before the talk, every ask I made came back in minutes: the quickest inside one, the slowest in about a quarter of an hour.

Narrator. That is not Victor's keystroke. It is minutes. But it is a round trip I could make while the thing was still mine to change.

Narrator. With slides, I made that trip alone, and usually once.

Figure: one ask's round trip drawn to the clock: my ask at 18:25, the commit that answered it at 18:37, and the hold at 18:44 at the edge of the picture.

Band: My afternoon asks with my own time in their commit subjects, and when each came back, as the register holds them.

Narrator. That is what I mean by control of the medium, as I put it when I started this book: seeing the effect of a change while I could still do something about it.

Band: Bret Victor's words as published; the talk named and dated as the register holds it (CUSEC 2012).

The loop

Narrator. That last change is the real story. Not the animation: the loop.

Narrator. In the afternoon of the 29th I came back to the team and started asking for things. The player, the piece that let me press play on stage, was my first priority; I said so at about ten to two. By seven minutes past three a first version was in. From then until the last hour I kept asking, and each time it came back changed, and I looked again. My last ask for the player has my own time on it, 18:25: two back steps in a row while playing went wrong, and the first slide should open already built. It landed at 18:37.

Narrator. That is a feedback loop. See it, ask for it differently, see it again. With slides, the loop ran through me alone. Here it ran through a team, and it ran as fast as I could look.

Figure: "A slide versus a loop" (right half): the same idea as a circle of three arrows, see, ask, see again, with a small factory inside the circle doing the work.

Band: Rests on the player named his main priority (about 13:50), its port (15:07), and the last fixes made at my word, the last asked at 18:25 and landed at 18:37, inside a wake that was opened and never closed.

One ask, followed in full

Narrator. The card has every ask and its time back. One of them, followed from my words to the change, shows what "immediate" meant, including where it fell short. At 17:27 I asked, in the conductor's session, for the new pieces the other agents had made to go into the deck, and ended: "So when in doubt add it."

Narrator. Two minutes later the conductor routed it to deck, with the first list of gaps, and kept the searching for itself.

Conductor (on the minute, routing): "Deck places; it does not search" (record)

Narrator. At 17:52 deck placed every new piece into the talk's second and third parts, quoting me. At 18:15 the storyteller's check found one piece still in no beat. And when I saw it again, the record does not say. That is the honest end of the round trip: every hand-off is written down, and the last step, me looking, is not.

Band: Dramatised (the conductor's line is its own, from a618b29). Rests on the historian's trace of one ask, from my words at 17:27 to the storyteller's check at 18:15.

What a factory is

Narrator. So what gave me that loop? Not a better slide tool. A factory.

Narrator. By factory I mean something specific, and fairly modest. A team of AI agents, gathered around one objective, run hard for one day, and taken apart when the job was done. Nine of them, each with one job and one page of rules. Most of the parts were not new: the build, the check every change had to pass, the brief. Each came from something I had built before. The brake that could stop them all was made that night. What was new was having all of them at once, as a team.

Words on this page: an agent, here, is an AI that works in a loop: it reads, decides, acts with tools, and checks the result. The player is the part of the talk's site that let me press play on stage.

Narrator. It sounds grander than it is. You will meet each of them in the chapters that follow, in the order they arrived: the first four within the hour of an empty project, the rest through the day. One chair at the table stays empty all day, and that matters later.

Figure: the cast cards, greyed, in a row, each with its job in one line: dev, the site and its build; the conductor, the clock and the plan; deck, the talk's beats and slides; ruv-sgit, the workshop of experiments; the researcher, every fact checked against its source; the designer, how it looks on the projector; the storyteller, the order of the story; motion, the pieces that move; studio, several versions side by side.

Narrator. This book is about the factory. The talk was what it happened to make that day. If you have an idea you keep talking over, the factory is the part you can take home.

Band: Nine staffed agents and security proposed and never staffed; arrival times are each agent's first commit after the empty repository at 00:16.

Narrator. Why a day? Because the factory was built fast from parts I already had, run hard on one objective, and taken apart when the objective was met. A factory that is meant to be temporary can be built without the ceremony a permanent one needs, as long as everything it does is written down.

Do this now

Write down the one idea you want somebody to understand, and what they should be able to do after. That sentence is your first brief. Working with others? Write it together, and keep one copy everyone can see.

---

Where this came from

Bret Victor's talk, as the register holds it. My afternoon asks and when each came back, and the player's afternoon, from the register and the historian's day. The cast and its arrivals. My description of the factory, 1 November 2026. The storyteller's outline for this chapter. This chapter grows from the 70-page edition's chapter 1, its last two sections, and the 30-page edition's "What a factory is", kept as written.

The numbers in this chapter

From the researcher's register (claims/register.json).

  1. C001 First commit of the day: 00:16:23 UTC, 29 Oct 2026 (London was on GMT: UTC = London) checked
  2. C011 Members of the talk's team:
    • staffed: 9
    • proposed_never_staffed:
      • security
    • first_commit:
      • dev: 00:40 1f7c633
      • conductor: 00:44 97b98d9
      • deck: 00:51 20ab1a3
      • ruv-sgit: 01:08 defe526
      • researcher: 01:52 01e9ed3
      • designer: 03:41 c6dcf89
      • storyteller: 14:15 7d0244d
      • motion: 15:31 f1cbca0
      • studio: 15:31 8d208d3
    • first_key:
      • conductor: 00:51 17b287b (published at team/keys/conductor.json; moved to team/conductor/key.json at 00:58, 41d38ba)
      • researcher: 01:52 01e9ed3
      • dev: 01:53 56cbe55
      • deck: 02:20 79b6709
      • ruv-sgit: 02:36 1c7d22c
      • designer: 03:41 c6dcf89
      • storyteller: 14:15 7d0244d
      • motion: 15:31 f1cbca0
      • studio: 15:31 8d208d3
    open
  3. C088 Commits made with no wake of their member open:
    • agent_commits: 439
    • in_a_closed_wake: 382
    • no_wake_open: 46
    • in_a_wake_opened_and_never_closed: 11
    • no_wake_open_by_member:
      • conductor: 15
      • deck: 12
      • dev: 8
      • ruv-sgit: 7
      • researcher: 4
    • no_wake_open_by_hour_UTC:
      • 00: 7
      • 01: 17
      • 02: 12
      • 03: 1
      • 14: 6
      • 17: 1
      • 18: 2
    • never_closed: dev's wake opened at 17:48:50 (10 commits, 17:54 to 18:37, the editor's player fixes among them) and deck's at 18:20 (1)
    checked
  4. C103 Inventing on Principle: speaker, venue, year and the principle in his words:
    • title: Inventing on Principle
    • speaker: Bret Victor
    • venue: CUSEC 2012 (the Canadian University Software Engineering Conference)
    • words: Creators need an immediate connection to what they create. That's my principle.
    • date_detail: 20 January 2012 from the talk page's title as search returned it; not read on a page (the page now redirects to the video)
    checked
  5. C104 When chapter 6's decisions of the afternoon were made and recorded, 29 October:
    • feedback_round:
      • given: about 13:50 (dictated; the brief's own words)
      • recorded: 14:07:04, c9ced4e (the conductor commits and routes it)
    • decisions_round:
      • given: about 15:00 (the brief's own words)
      • recorded: 15:16:37, 78d517d
    • longer_work_step:
      • recorded: 15:21:31, 545a473 ('the work step's limit is 45 minutes, at the editor's word (it was 8)')
    • two_members_brought_on:
      • given: about 15:25, at the editor's word (the onboarding briefs' own words)
      • recorded: 15:25:40, f00734f (briefs and first prompts for motion and studio)
      • on_stage: 15:31, first commits of motion and studio (C011)
    • policies_agreed:
      • given: about 17:40 ('So I agree with all those policies', as the conductor relays it)
      • recorded: 17:41:29, c3f546e (the six remaining policies; the conductor's recorded, the five owners told)
      • held_at_end_of_day: 8 agreed, studio draft, security proposed (C072); 'all ten by 17:40' stays open (C081)
    checked
  6. C105 The editor's afternoon asks that carry his own time in a commit subject, and when each came back:
    • asks: 8
    • first: 17:27 (a618b29, recorded 17:29:41)
    • last: 18:25 (dbd75ad, landed 18:37:02)
    • rows:
        • 17:27
        • a618b29
        • 17:29:41
        • conductor routes
        • 17:30
        • 7c91afc
        • 17:33:07
        • conductor routes
        • 17:35
        • d252155
        • 17:39:22
        • conductor routes
        • 17:45
        • 93f4191
        • 17:48:46
        • conductor routes
        • 18:05
        • 23739cc
        • 18:04:48
        • player fix
        • 18:10
        • 12e93db
        • 18:14:14
        • player fix
        • 18:15
        • 013d97e
        • 18:15:58
        • player fix
        • 18:25
        • dbd75ad
        • 18:37:02
        • player fix
    • also_matching: 3 site-release commits repeat three of the player subjects; not asks
    checked