Hours four and five: before dawn
Cast bar: six agents: the conductor, dev, deck, ruv-sgit, the researcher, and the designer from 03:41; the editor in the sessions until just after four, then his chair empty.
Clock: Hour four.
Every member on its own slot
Narrator. Hour four is the first hour in which every member that existed but the researcher woke on its own slot; the researcher's first came at ten past four. The conductor's first scheduled wake with a record came at 03:03, and it made deck's programme of experiments the team's queue. Deck's first scheduled wake followed at 03:18, ruv-sgit's second at 03:33, with deck's first experiment delivered in two versions.
Narrator. And yet most of the hour's wakes were still mine. I was in the sessions, asking. The schedule ran beside a present editor, not instead of one. The card has the hour.
Figure: a card, hour four's wakes by trigger: those the schedule started and those I started.
Conductor (on the minute): Backlog, then schedule, then work. For everyone. A new ask goes into the schedule, not straight into somebody's hands.
Band: Dramatised (the conductor's line). Rests on its first scheduled wake and its commit of 03:10; the count is the register's.
Two failures, two rules
Narrator. Two failures in this hour stay in. Both were caught by the team's own checks after the fact, and in both the answer was a rule, not a retry, written down within the hour.
Narrator. The first was the researcher's. In a wake I had asked for, opened at 03:05, its post-review returned a finding: pages it had captured as evidence for the talk's claims had carried other sites' data in with them, and gone out with its first push. The researcher redacted it in the files and told me.
Researcher (unbudging, and for once not pleased with itself): My own review found it. After the push. A review that runs after the push is a review that runs late.
Narrator. That is the lesson the register draws, and it is the right one: redaction does not reach a commit already pushed. The review worked; it worked at the wrong end. Hour five, below, shows what changed.
Band: Dramatised (the researcher's line). Rests on its wake of 03:05 and the register's account of the finding; told as the team's finding and its rule only.
Narrator. The second was dev's. Its release loop had counted a push the server refused as a push that went through, and commits stayed off the team's branch until dev checked. The rule it wrote at 03:34 is one line, and this book's own team still follows it: a push is done when the commit is on the shared branch, not when the command says so.
Dev (fast, then sheepish): The loop said pushed. The branch said otherwise. The branch wins.
Band: Dramatised (dev's line). Rests on dev's commit of 03:34 and the rule in its page.
Narrator. And a third, smaller, the conductor's own: at 03:07 it closed a wake with a correction whose time it had typed by hand, and the time was wrong. From then on, its times came from the clock. Small failures with small rules are the ones most teams never write down.
The night log
Narrator. At 03:27 the conductor gave itself a new duty, and it changed what the record is. At every one of its wakes from then on, it wrote a snapshot of the team and an article about it, regenerated from the team's own files: who woke, what they did, what waits. Not from memory, and not from what anyone said. From the files.
Conductor (pacing, pleased): Every round, the team as its files say it is. If the files are wrong, the log is wrong, and somebody will see it.
Narrator. It is the page I would have read first.
Narrator. This book does not cite the log itself; it cites the wakes and commits the log was built from, because the log is a reading and the commits are the record.
Figure: the night log's first edition, drawn as a page: the hour, each member's line, what waits on the editor.
Band: Dramatised (the conductor's line). Rests on its commits of 03:27 to 03:29.
The designer arrives, and my last word of the night
Narrator. At 03:41 the sixth member joined: the designer, with its role, its policy, its key, its own task at :39, and a first design note, all in its first session. Its first scheduled wake, at its own :39 slot, had nothing to do: the session that made it had already done the hour's work. It said so, and closed idle.
Designer (beret and pencil, exacting): Idle is a true answer. I will not invent work to fill a slot.
Narrator. At 04:02 I asked for one more wake, in the designer's session, and agreed its policy. That commit, at 04:03, is my last word of the night. The next is at about ten to two in the afternoon. The record does not say where I went, and I am not going to tell you either: it does not matter. What matters is what happened while I was gone.
Band: Dramatised (the designer's line). Rests on its first commit and its idle first wake; my last word of the night is the commit of 04:03.
Hour five: the schedule alone
Clock: Hour five.
Narrator. From four o'clock, every wake in the record is scheduled but one, and every one closes with all five steps. The team settles into the order the schedule set: the conductor plans the hour, the researcher gathers, deck reviews and holds, ruv-sgit makes, the designer notes, dev builds.
Figure: a card, hour five's wakes by trigger: almost all the schedule's.
Deck holds itself back
Narrator. Just after four, deck had a second request ready for ruv-sgit and planned to send it. Its reviewer pointed out that ruv-sgit already had one of deck's requests in flight.
Deck (a little put out, then fair): One at a time, then. I will wait until the first one comes back.
Narrator. It is the first sign in the record of members pacing each other, rather than the conductor pacing them. And it came from a review, not from a rule anyone had written for it.
Band: Dramatised. Rests on deck's wake of 04:18 and its commit of 04:22: its reviewer asked it to hold the second request while the first was in flight.
The argument with a reviewer
Narrator. At ten past four the researcher woke on its own slot for the first time, and its wake holds two scenes. The first is an argument. It planned to write a file of my decisions, and its reviewer read the plan and said no: that file, it said, was outside the researcher's rules.
Researcher (unbudging): My reviewer said a file was not mine to change. I showed it was.
Researcher (pointing at its own page of rules): It sits in my evidence folder. My rules let me write there. I am not asking for an exception; I am asking you to read the line again.
Reviewer (the clipboard): "objection withdrawn." (record)
Narrator. The argument is in the wake record, both halves of it. A reviewer that can be argued with, on the record, by pointing at the rules, is a reviewer doing its job. So is a member that argues by pointing at the rules and not at its own certainty.
Figure: ruv-sgit's two-panel reviewer card (lab/experiments/30-ruv-the-reviewer-card/card.svg).
Band: Dramatised. Rests on the researcher's wake at 04:11; the reviewer's words are its own.
The same failure, caught in time
Narrator. The second scene in the same wake is the one I would put in front of anyone building a team like this. The researcher's post-review returned a finding of the same kind as the one at 03:05: more of other sites' data, captured along with a page. The card has the register's count.
Figure: a card, the researcher's two findings of the small hours side by side: at 03:05, found after the push; at 04:10, found before the close, the values counted, the files redacted in the same wake, none left.
Narrator. This time the finding came before the close, and the files were redacted in the same wake. The control did not change. The reviewer was the same kind of reviewer, with the same brief, at the same step. What changed was the member's practice: it was looking for the thing it had already been caught on once.
Researcher (unbudging, quietly): Same kind of mistake. Found before the close this time, and redacted in the same wake.
Narrator. Hold on to that difference, and to its limit. A check after the push finds what has already gone out. A member looking for the thing it was caught on last time found this one before its wake closed. It did not make the team safe: later in the morning, at 06:14, the researcher found a third case of the same kind, and that one had gone out in the first push, like the case at 03:05. Found late again. Part 4 counts them all, and keeps them all in.
Band: Dramatised (the researcher's line). Rests on its wake of 04:10 and the register's account; told as the team's finding and its rule only.
Six agents, a clock and a brake
Narrator. So by four in the morning there were six agents, a clock and a brake. A factory that could run without me. From just after four, it did.
Figure: the cast bar at four in the morning: six cards lit, three greyed, one empty chair.
Map: the factory as a value chain: what I wanted at the top; the slides, the site and the player; the agents; and at the bottom the agent tool, the build, the check and the brief at the ordinary end, and the hold at the new end.
Words for this page: a Wardley map is a picture that shows what something depends on and how settled each part is.
Figure: hours one to five on the margin clock: each hour's commits, and its wakes by trigger where the register has them by hour (from hour three, when wake records began).
Band: The narrator's close is kept from the 30-page edition; the counts are the register's.
Do this now
Write your one page of rules: what your agent is for, what it may change, and when it must stop and ask you. Then write your hold: one file that stops everything, and the name of the one person who may lift it.
---
Where this came from
The talk's repository at the end of the day: the conductor's first scheduled wake, its rule on asks and its night log; the researcher's wakes of 03:05 and 04:10, with their findings and its dispute; dev's rule on pushes; the conductor's correction of a typed time; the designer's arrival and its idle first wake; my last word of the night; deck holding its next request. The historian's account of hours four and five. The register for the members, the wakes by trigger, the commits by hour and the post-review findings. ruv-sgit's reviewer card. The storyteller's outline for this chapter. The narrator's close and the scenes of the reviewer and of deck's hold are kept from the 30- and 70-page editions.
The numbers in this chapter
From the researcher's register (claims/register.json).
- 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
- C025 Post-review findings and what each fixed:
- wake: conductor 02:14
- finding: CLAUDE.md written outside the conductor's scope (allowed by the editor) not named in the commit message, as the pre-review required
- fixed: named in the debrief and the closing commit
- wake: researcher 03:05
- finding: public third-party tokens that sites publish in their pages went out in the 02:22 push inside captured pages, and a check printed several to the session log
- fixed: redacted in the files; the 02:22 commit stays in history; the editor told
- wake: researcher 04:10
- finding: 28 anonymous cookie values, issued to the fetcher, in captured response headers
- fixed: 30 files redacted in the same wake, 0 left
- wake: researcher 06:14
- finding: form tokens in 10 captured pages, missed by the first pattern, also in the 02:22 push
- fixed: redacted in the same wake, 0 left; still in the 02:22 commit's history
- 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
- C095 The talk's commits by member and by hour, 00:00 to 18:59 on 29 October (for the LK1 chart):
- non_merge_commits: 650
- by_@member:
- conductor: 99
- ruv-sgit: 54
- dev: 52
- deck: 59
- researcher: 57
- studio: 26
- designer: 19
- storyteller: 15
- motion: 9
- releases: 210
- no_@member_prefix: 50
- night_00_to_05: 182
- day_06_to_18: 468
- table: claims/talk-commits-by-member-hour.md
- 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)