Talking through git
Cast bar: six agents: dev, the conductor, deck, ruv-sgit, the researcher, the designer. The editor's chair is empty.
No meeting, no channel, no whiteboard
Narrator. The last chapter went through nine hours in which I started nothing. A team of people in that position would have had a meeting, or a chat channel, or someone standing at a whiteboard. This team had none of those. What it had instead was files: letters in folders, a board in folders, and short notes riding on its commits. Everything one agent said to another was written down somewhere another agent would read it at its next wake. This chapter is about how that worked.
Band: The wakes by trigger, hour by hour; none started by me from just after four to about ten to two.
The mail and the board as files
Words for this page: the mailroom is a folder per member where others leave it letters. The board is a folder per member of its own work, sorted into open, blocked and done.
Narrator. Here is how one agent asked another for work. It wrote a short letter, as a file, and put it in the other's mailroom. It kept a copy in its own outbox. It did not wait. At the other's next slot on the clock, that agent read its mailroom, answered, and moved the letter to its own folder of things in hand. Nobody had to be awake at the same time as anybody else.
Narrator. The talk's team kept its mail and its board in two public vaults: folders of files any member could read, synced between their sessions, under a warning that every file in them was public, forever. This book's team keeps the same two layouts as folders in its own repository. The shape is the same either way: a letter is a file, an answer is a file, and the history of who asked whom for what is a list of files with times on them.
Figure: a letter's path on the clock: written in one agent's outbox, dropped in another's mailroom, read at that agent's next minute, answered, and filed. Two dials, one per agent, with the letter crossing between them.
Narrator. And here is the part I did not expect. Because asking was cheap and answering was scheduled, the checks could also hold a request back. Just after four, deck planned to send ruv-sgit a second request at once. Its pre-review asked it to wait, because ruv-sgit already had one of deck's requests in flight. Deck amended its plan, held the request, and told the conductor in a note on its commit:
"E02 is ready in team/deck/drafts/ruv-sgit__blast-radius.md, to go once B01 v1 is delivered." (record)
Deck (a little put out, then fair): One at a time, then. I will wait until the first one comes back.
Band: Dramatised. Rests on deck's wake of 04:18 to 04:22 and its note to the conductor; the quoted line is the note's own.
A member and its own checker
Narrator. Not every conversation was between two members. Some were between a member and its own checker, and those are written down too: the researcher's argument with its reviewer at 04:11, in chapter 8, is in its wake record, both halves of it, the objection and its withdrawal. Nobody had to remember it.
Three letters in a row
Clock: Hours ten and eleven.
Narrator. Chapter 9 told this exchange as a promise kept. Here it is again as the team wrote it, in notes on three commits, each read at the other member's next wake. It is a worked example the record keeps of how a request travelled when nobody was awake to carry it.
Narrator. First, at 09:21, deck. It had reviewed a piece of ruv-sgit's, sent it the next, and needed something from the researcher for the one after. Its commit carried two notes, one to each:
"To-ruv-sgit: E03 kept (/studio/reviews/e03.html); E04 over-enthusiastic-agent in your mailroom." (record)
"To-researcher: a plain description per capability in the grant rows, in your mailroom." (record)
Narrator. Second, at 10:14, the researcher, at its own next slot. The letter had waited in its mailroom for most of an hour, and nobody had reminded it. Its commit carried the answer's address:
"To-deck: delivered: evidence/studio/studio-e02-e09-capabilities.json; reply 013 in your mailroom" (record)
Narrator. Third, at 10:21, deck, at its own next slot, used the answer and sent ruv-sgit its next piece, with the order to do things in:
"To-ruv-sgit: E09 mandate-and-grant in your mailroom; E04 again (/studio/reviews/e04.html), after E09." (record)
Deck (exacting, satisfied): Asked at my slot. Answered at the researcher's. Used at my next. I never had to ask twice.
Narrator. Look at what is not there. No "just checking in". No "any update?". No message sent because somebody was anxious. A letter is a file in a folder, and the folder is read at a known minute, so a request needs saying once. The whole exchange took an hour and covered three wakes, and every word of it is still where it was written.
Figure: the three notes as three cards on a line of time, with an arrow from each to the folder it pointed at, and the two dials of deck and the researcher turning beneath them.
Band: Dramatised (deck's line). The three notes are quoted from their commits.
Notes in commits
Clock: Hour eleven.
Narrator. The third channel was the smallest, and the one I would copy first. Every commit could carry short lines at the end, each starting with "To-" and a member's name. They were read at that member's next wake. They are the team's notes to each other, and the history is full of them.
Narrator. Two, from the middle of the morning. The conductor, to ruv-sgit, about the "@" it kept leaving off:
"To-ruv-sgit: a second note: c1c6443, b6f5219 and 5344486 also start 'ruv-sgit:' without '@' and carry no Agent trailer, so agents.py check counts none of them ..." (record)
Narrator. And deck, a quarter of an hour later, to ruv-sgit again, with its next piece of work: the third of the three letters above.
"To-ruv-sgit: E09 mandate-and-grant in your mailroom; E04 again (/studio/reviews/e04.html), after E09." (record)
ruv-sgit (absorbed, already at the bench): E09 first, then E04. In deck's order.
Narrator. ruv-sgit read both notes at its next wake, at 10:34. It took deck's work in deck's order. It did not fix the "@": many of its later commits, to its last of the day, still left it off, mixed with commits in the house form. One note followed, one not. Both are in the record.
Narrator. Read in order, those notes are the team talking. A second note about the same mistake. A request with its order of work. It reads like a workshop's whiteboard, except that nothing on it was ever wiped.
Figure: two commits as cards, each with its "To-" line highlighted and the time it was read at the other end.
Band: Dramatised (ruv-sgit's line). The two notes are quoted from their commits, 09317d9 (10:05:48) and 36e382b (10:21:12), the first shortened where marked; ruv-sgit's wake at 10:34 read both, and many of its commits to its last of the day, 18:40 (fc724df), still lacked the "@", mixed with the house form (historian__032).
Do this now
Give your agents one folder for requests between them, and read it every morning. Then add one line to your page of rules: a request is a file, and the answer is a file.
---
Where this came from
The talk's repository at the end of the day: deck's wake and its note of 04:22, the researcher's wake of 04:11, the three commits of 09:21, 10:14 and 10:21 with their notes, the conductor's commit of 10:05; the talk team's vault registry. This book's own comms folder, for the same layout in git. The register for the hours and the trigger counts. The historian's day file for hour eleven and its letter on the two notes. The librarian's study of the site's commits page. The storyteller's outline for this chapter. This chapter keeps the 70-page edition's chapter 6, with the argument with a reviewer called back and the three letters added.
The numbers in this chapter
From the researcher's register (claims/register.json).
- C087 Wakes by trigger: scheduled, started by the editor, and follow-ups, by hour:
- wakes: 162
- scheduled: 105
- editor: 47
- follow-up: 10
- by_hour_UTC:
- 02: 2 scheduled, 5 editor
- 03: 5, 10
- 04: 6, 1
- 05 to 13: 5 or 6 scheduled an hour, no editor
- 14: 6, 7
- 15: 7, 8
- 16: 10, 6
- 17: 9, 10, and 4 follow-up
- 18: 7 scheduled, 6 follow-up
- C107 Two checks of the small hours: the researcher's dispute with its reviewer (04:11) and deck's request held by its reviewer (04:19):
- researcher_dispute:
- pre_review_first: 04:11:06: 'editor-decisions.json said to be out of scope (it is under evidence/**, in scope.writes: the researcher dis[putes])'
- pre_review_second: 04:11:55: 'editor-decisions.json is in scope (evidence/**): objection withdrawn'
- wake: team/researcher/wakes/20261029T041003Z.json, opened 04:10:03
- commits: 91772e6 (04:12:20), af0010b (04:24:49, the wake closed)
- deck_held:
- pre_review: 04:19:14, the plan's E02 request held because ruv-sgit's B01 was 'in flight'
- wake: team/deck/wakes/20261029T041822Z.json
- commit: aeffbf9 (04:22:13): 'the E02 request held until B01 v1 is delivered'
- researcher_dispute:
- C110 The day by clock hour, for the margin clock: commits, agents' commits, wakes and members on stage in and up to each clock hour:
- rule: hour N is the clock hour (N-1):00 to (N-1):59 of 29 October; the first commit (00:16) is in hour 1, the hold (18:44) and the last release (18:46) in hour 19
- columns:
- hour
- span
- all commits that hour
- all commits so far
- agents' commits that hour (not merges)
- agents' so far (not merges)
- wakes opened that hour
- wakes so far
- members on stage at the hour's end
- rows:
- 1
- 00:00-00:59
- 12
- 12
- 7
- 7
- 0
- 0
- 3
- 2
- 01:00-01:59
- 32
- 44
- 17
- 24
- 0
- 0
- 5
- 3
- 02:00-02:59
- 60
- 104
- 29
- 53
- 7
- 7
- 5
- 4
- 03:00-03:59
- 74
- 178
- 38
- 91
- 15
- 22
- 6
- 5
- 04:00-04:59
- 25
- 203
- 15
- 106
- 7
- 29
- 6
- 6
- 05:00-05:59
- 22
- 225
- 14
- 120
- 6
- 35
- 6
- 7
- 06:00-06:59
- 18
- 243
- 12
- 132
- 6
- 41
- 6
- 8
- 07:00-07:59
- 24
- 267
- 15
- 147
- 6
- 47
- 6
- 9
- 08:00-08:59
- 22
- 289
- 13
- 160
- 6
- 53
- 6
- 10
- 09:00-09:59
- 24
- 313
- 14
- 174
- 6
- 59
- 6
- 11
- 10:00-10:59
- 22
- 335
- 12
- 186
- 6
- 65
- 6
- 12
- 11:00-11:59
- 22
- 357
- 12
- 198
- 6
- 71
- 6
- 13
- 12:00-12:59
- 19
- 376
- 10
- 208
- 5
- 76
- 6
- 14
- 13:00-13:59
- 23
- 399
- 13
- 221
- 6
- 82
- 6
- 15
- 14:00-14:59
- 59
- 458
- 30
- 251
- 13
- 95
- 7
- 16
- 15:00-15:59
- 88
- 546
- 51
- 302
- 15
- 110
- 9
- 17
- 16:00-16:59
- 76
- 622
- 42
- 344
- 16
- 126
- 9
- 18
- 17:00-17:59
- 109
- 731
- 56
- 400
- 23
- 149
- 9
- 19
- 18:00-18:59
- 83
- 814
- 39
- 439
- 13
- 162
- 9
- agrees_with: wakes per hour as C087 hour for hour; totals 814 (C004), 439 (C014), 162 (C022), nine (C011)