This is the development record, published as it was written. It is amended by revision, including where the work went wrong. Nothing here has been rewritten for the web.
Actors
Who and what acts in this project's records, so a reader of the published corpus can tell who did what.
The convention
Every actor in a record is named. Never "the agent", never "the AI", never a model name, never a job title standing in for a person. <!-- actor-naming: discusses-rule --> <!-- This block states the rule, so it quotes the words the rule forbids. scripts/check_actors.py fails on those words anywhere outside a marked block. --> The reason is that the corpus is meant to be read by strangers, and it is meant to outlive the tools. A role word such as Primary or Coordinator is internal jargon that means nothing outside the session that coined it. A model name such as GPT-5 or Claude is worse: it changes under the work, so a record that names the model cannot say who was actually accountable across a year.
A chosen name is stable. The model behind it can change; the name does not.
| Rule | |
|---|---|
| One name per actor, per project | The coordinator's name is chosen once and persists across every session it works in. |
| The coordinator names itself | In its first session, before it files anything. See the first task in AGENTS.md. |
| The coordinator names its workers | A worker's name is assigned with its grant and travels with the assignment and the return. |
| Names are identities, roles are separate | Write Rook (coordinator) on first mention, then Rook. The role says what they did in this record; the name says who they are. |
| An assessor is never the author | Independence is a Perspicuity requirement, and separate names make it checkable. A record that assesses its own author's work says so. |
| David is David | A human participant, not an agent. No agent may take his name or a living person's name. |
Choosing a good name. Short, memorable, one or two syllables. A persona, not a job. Not a model or vendor name. Not a real person's name, and not a common noun that reads as one. Two or three candidates is enough — pick one and use it consistently.
The rule is checked, not just asked for. scripts/check_actors.py runs inside make records and fails on one of five listed role words — the historical label plus Coordinator, Assistant, Admin and Manager — anywhere in the corpus or in the process documents, unless the text sits inside a block opened by an HTML comment reading actor-naming: discusses-rule and closed by one reading actor-naming: end. That is how a page is allowed to explain the rule, which means quoting the words the rule forbids. Four guards keep the exception honest:
- a marker is recognised only in the pages whose subject is the rule — this file,
docs/RECORDS.md, docs/records/ and RECORD.md, and not in the guides and scaffolding around them;
- every block must quote something forbidden, tested block by block, so a stale exception is
an error rather than a licence for whatever is written beside it;
- a block may not cover an actor credit — a
Work owner:orOwner:field, or a row of the
roster below. The exception exists so a page can state the rule; naming an actor is not stating the rule, and a block that covers one is an error;
- the check is a denylist, not a parser. A role word that is not on the list passes, and so does
a sentence that begins with one of the five as ordinary English. Adding a sixth word to FORBIDDEN is the fix for the first; the second is a known false positive, documented here rather than discovered later by someone whose prose tripped it.
A marker may also be used inline, for the one sentence that has to say which words are caught; it then covers that line alone. That form exists because the check needed to state its own scope on the page that explains the convention, without opening the rest of that page to the words it was quoting. <!-- actor-naming: end -->
Roster
| Name | Kind | Role | From | Notes |
|---|---|---|---|---|
| David | Human | Principal and decider | 2026-09-19 | Owns the objectives and the selection. Retains spending, outbound messages, external agreements and the release word. |
| Rook | Agent | The coordinator's role | 2026-09-19 | Named itself in its first session; it owns the process documents and files the corpus's first sub-record. Coordinates, delegates under a recorded grant, and assesses returns. Not a job title and not a model. |
| Verity | Agent | Independent assessor | 2026-09-19 | Named with its assignment by Rook. Checks a returned record against the convention it claims to follow and reports to David. Never the author of what it assesses. |
How the name was chosen
**Selected: Rook.** Reported by Rook in a process record, which carries the comparison, the reason and the reversal condition. David accepted the increment that contains it.
| Considered | Not chosen because |
|---|---|
Ash | A common noun as well as a given name, so it reads as a person or as a residue rather than as an actor |
Pip | Reads as a package manager to this audience, and as a diminutive of a real given name |
Wren | Already used as the placeholder name throughout RECORDS.md and this file; adopting it would make the examples ambiguous with the actor |
| A job title, or the model's own name | The two failure modes the convention exists to prevent |
<!-- actor-naming: discusses-rule --> <!-- A reader of an older revision needs to know what the retired label meant and who it was. -->
Names previously used
| Label | Used for | Window | Replaced by |
|---|---|---|---|
Primary | The coordinating agent, inherited as a Perspicuity role word | 2026-09-19, revisions 1–4 of RECORD.md and the first draft of ARCHITECTURE.md | Rook, normalised at revision 5 of RECORD.md; the label survives only inside a marked rule block, as history rather than as an actor |
Retrofit
The label Primary was used before this convention existed. Rook normalised those references to its own name at revision 5 of RECORD.md, recorded there as a change entry with its reason. The facts those entries record did not change — only the label for the actor.
RECORD.md and docs/ARCHITECTURE.md carried the affected text. The parent selection record, ../next-project-choice/RECORD.md, is a different project's record and is not rewritten from here; it is listed in TODO.md. <!-- actor-naming: end -->
How this record connects
It builds on or points to: AGENTS, RECORDS, RECORD, 2026-09-19-process-record-conventions, ARCHITECTURE.
It is referenced by: Agent instructions, Context, Records, Make the record conventions followable and enforce the actor rule.