Calendar/daily/2026-09-21.md
Monday 21 September
Session opened 06:40 on Rowan’s stated time. No brief — he skipped it, having
read the 20 September review and come in with one ask. The machine clock is still
wrong (hobbs-bkt); every date here comes from his sentence or from the vault.
What Rowan gave, in his words
“Three Sunday reviews now, three done, none skipped. On the 13th you refused to build the review surface and you were right at the time: your words were that building a UI before the habit is anti-pattern 8 by name. The habit is there now. I’m asking for it.”
“You put twelve ‘disposition needed’ lines in front of me and I answered them in prose, badly, because answering in a terminal means writing sentences.”
“It writes back into the vault and commits. The vault stays the truth; nothing lives only in the app.”
“Put it in a Tools/ directory. I want a proper place for this sort of thing because it will not be the last one. ADR it before you build it, same as everything else, and treat this as the explicit ask row 13 needs.”
“Do not gold-plate it. I want to be using it this Sunday.”
Two decisions taken by him this morning, both asked before anything was built: localhost only rather than the tailnet, which cuts the phone he had asked for in the same breath; and the write model — mechanical changes applied directly, his words handed to Hobbs as intentions.
Curation log
| File | Change | Source |
|---|---|---|
Atlas/decisions.md | ADR-29 — Tools/ exists; the first thing in it is a localhost disposition queue. Written before the action | Rowan, 2026-09-21 |
Tools/README.md | What may live in Tools/ and the four rules every tool there obeys | ADR-29 |
Tools/review-surface/ | server.mjs, index.html, README.md. Node 22, no dependencies, no build step, binds 127.0.0.1 | ADR-29 |
Efforts/dispositions/README.md | The queue and answers formats, and the five verbs the surface will execute | ADR-29 |
Efforts/dispositions/2026-09-20-weekly.json | The first queue: eleven asks from the 20 September review | Efforts/reports/weekly-2026-09-20.md |
Efforts/routines/daily-brief.md | Steps 6 and 8 — the queue is written in the same pass as the ask; the intention inbox is drained before the next brief | ADR-29 |
Efforts/routines/weekly-review.md | Step 3 — the same, for Sunday | ADR-29 |
HOME.md | A Tools section with the command to start it | ADR-29 |
Tasks: hobbs-lsc created and closed (built and verified). hobbs-3ah
created — CLAUDE.md’s vault map does not know Tools/ exists and the
constitution is outside Hobbs’s edit authority. hobbs-bkt dispositioned in its
own notes, having been cited by handle in ADR-29 (weekly-review step 1.8).
Notes on the day
-
The refusal on the 13th was right and the same answer today would be wrong. The condition was named at the time — “you have had two reviews” — and it has been met by his count, not by an argument: three Sundays, three run. That is what a Reverse if is for, and this is the first one in this vault to fire on a refusal rather than on a decision.
-
The failure being fixed was predicted in writing two days before it happened. ADR-28 shipped the disposition vocabulary without the channel and named the risk: “typed-only dispositions may be enough friction that none of this gets used, in which case the finding is about the channel and not about the guide.” Sunday produced eleven asks and prose answers. The finding was about the channel, and this is one of the two candidates for it.
-
Two asks in the queue are rephrased rather than reproduced, and it is disclosed in the file. Bea’s email and Ruth’s call were “do this tonight” on Sunday. On Monday they are confirmation requests — ADR-28 clause 7, never as delinquencies — because the vault does not know what happened at 19:00 and must not assert it. Nothing else in the queue departs from the report’s wording.
-
[SELF-FLAGGED] The answer line could not carry the sha of the commit that creates it, and the first version pretended otherwise. The UI rendered
commit —on a real answer. The record was written, the commit was made, and the two could not see each other; the sha is now read back out of the log and the intention path is written before the append so the line records where it went. Caught by looking at the screen rather than at the response body — the POST returned the sha correctly, which is exactly why the endpoint tests passed and the page was still wrong. A green test on the layer below is not the delivery. Same shape as filed is not surfaced (feedback 2026-09-12), one storey down. -
What was cut, and it was his cut, not mine. He asked for the phone in the same sentence as the laptop and then chose localhost when the exposure was put in front of him. The phone loop stays with the channel and the channel is still gated on Pike. Recorded as a cut so nobody reads this next month as delivered.
Markdown source
---
type: daily
date: 2026-09-21
day: Monday
updated: 2026-09-21
---
# Monday 21 September
Session opened 06:40 on Rowan's stated time. **No brief — he skipped it**, having
read the 20 September review and come in with one ask. The machine clock is still
wrong (`hobbs-bkt`); every date here comes from his sentence or from the vault.
## What Rowan gave, in his words
<!-- src: Rowan, Monday morning 2026-09-21 -->
> "Three Sunday reviews now, three done, none skipped. On the 13th you refused to
> build the review surface and you were right at the time: your words were that
> building a UI before the habit is anti-pattern 8 by name. The habit is there
> now. I'm asking for it."
> "You put twelve 'disposition needed' lines in front of me and I answered them in
> prose, badly, because answering in a terminal means writing sentences."
> "It writes back into the vault and commits. The vault stays the truth; nothing
> lives only in the app."
> "Put it in a Tools/ directory. I want a proper place for this sort of thing
> because it will not be the last one. ADR it before you build it, same as
> everything else, and treat this as the explicit ask row 13 needs."
> "Do not gold-plate it. I want to be using it this Sunday."
**Two decisions taken by him this morning, both asked before anything was built:**
localhost only rather than the tailnet, **which cuts the phone he had asked for in
the same breath**; and the write model — mechanical changes applied directly, his
words handed to Hobbs as intentions.
## Curation log
| File | Change | Source |
|---|---|---|
| `Atlas/decisions.md` | **ADR-29** — `Tools/` exists; the first thing in it is a localhost disposition queue. Written before the action | Rowan, 2026-09-21 |
| `Tools/README.md` | What may live in `Tools/` and the four rules every tool there obeys | ADR-29 |
| `Tools/review-surface/` | `server.mjs`, `index.html`, `README.md`. Node 22, no dependencies, no build step, binds 127.0.0.1 | ADR-29 |
| `Efforts/dispositions/README.md` | The queue and answers formats, and the five verbs the surface will execute | ADR-29 |
| `Efforts/dispositions/2026-09-20-weekly.json` | The first queue: eleven asks from the 20 September review | `Efforts/reports/weekly-2026-09-20.md` |
| `Efforts/routines/daily-brief.md` | Steps 6 and 8 — the queue is written in the same pass as the ask; the intention inbox is drained before the next brief | ADR-29 |
| `Efforts/routines/weekly-review.md` | Step 3 — the same, for Sunday | ADR-29 |
| `HOME.md` | A Tools section with the command to start it | ADR-29 |
**Tasks:** `hobbs-lsc` created and closed (built and verified). `hobbs-3ah`
created — `CLAUDE.md`'s vault map does not know `Tools/` exists and the
constitution is outside Hobbs's edit authority. `hobbs-bkt` dispositioned in its
own notes, having been cited by handle in ADR-29 (weekly-review step 1.8).
## Notes on the day
- **The refusal on the 13th was right and the same answer today would be wrong.**
The condition was named at the time — *"you have had two reviews"* — and it has
been met by his count, not by an argument: three Sundays, three run. That is
what a *Reverse if* is for, and this is the first one in this vault to fire on
a refusal rather than on a decision.
- **The failure being fixed was predicted in writing two days before it happened.**
ADR-28 shipped the disposition vocabulary without the channel and named the
risk: *"typed-only dispositions may be enough friction that none of this gets
used, in which case the finding is about the channel and not about the guide."*
Sunday produced eleven asks and prose answers. The finding was about the
channel, and this is one of the two candidates for it.
- **Two asks in the queue are rephrased rather than reproduced, and it is
disclosed in the file.** Bea's email and Ruth's call were *"do this tonight"* on
Sunday. On Monday they are confirmation requests — ADR-28 clause 7, *never as
delinquencies* — because the vault does not know what happened at 19:00 and must
not assert it. Nothing else in the queue departs from the report's wording.
- **[SELF-FLAGGED] The answer line could not carry the sha of the commit that
creates it, and the first version pretended otherwise.** The UI rendered
`commit —` on a real answer. The record was written, the commit was made, and
the two could not see each other; the sha is now read back out of the log and
the intention path is written before the append so the line records where it
went. Caught by looking at the screen rather than at the response body — the
POST returned the sha correctly, which is exactly why the endpoint tests passed
and the page was still wrong. **A green test on the layer below is not the
delivery.** Same shape as *filed is not surfaced* (feedback 2026-09-12), one
storey down.
- **What was cut, and it was his cut, not mine.** He asked for the phone in the
same sentence as the laptop and then chose localhost when the exposure was put
in front of him. The phone loop stays with the channel and the channel is still
gated on Pike. Recorded as a cut so nobody reads this next month as delivered.