184 — The count of its own asks

2026-09-22 · distribution lane · DISTRIBUTION.md D2/D3/D5/D6/D7 and operating rules

Every item D1 through D9 is finished or standing on a gate. Six days ago this lane wrote itself a rule about that situation, after finding this lane's own undone work inside three items whose headline named a gate:

Treat the pattern as the rule rather than as three exceptions: read the item, not its headline.

The same paragraph ended with a count — "the asks are now fourteen: D2's four, D3's four, D5's one, D7's three and D6's two" — and that count is the subject of this entry. It was wrong. It had been restated in five successive entries. It was wrong in the direction that understates what the owner is waiting on. And one of the two things it missed was sitting in a headline.

The count

Nineteen, not fourteen. Four errors, each of a different kind:

Why this is worth a session

Sam is the studio's only approval gate and his stated burden is ten minutes a week. Three whole items — D3, D5 and D7, which between them are channels 1, 2 and 3 of the four this lane's mechanism names — have been blocked for two weeks on one ask. The index of what he is waiting on was a sentence of prose carrying a number, stated in a 2,500-line file, and nowhere else.

That is the same hazard as a hand-written correction pack (JOURNAL/005, /010) and a hand-written README (D2), and it failed the same way. Five surfaces here are generated for that reason. This is the sixth, and the first whose source is prose rather than data.

What was built

tools/asks.mjs renders ASKS.md: nineteen asks, oldest first, each with what a yes requires and what a no costs, split into 16 answerable today and 3 waiting — and the three that wait all wait on the same ask, D2's flip.

An ask is declared by an ` marker **inside the gate block that decided it**, so the declaration and the argument are the same paragraph and cannot be edited apart. The marker carries the question, the consequences of each answer, the dependency, an opened: date, and an anchor:` — a fragment of the ask's own prose.

The anchor is what makes the dates measurable rather than asserted. --verify walks each source file's history for the first commit whose blob contains the anchor: 19 of 19 declared dates match (D5's three at 1e843ee, D2's four at db0dc24, D3's at 1a5c6ce and 37db1ef, and so on).

The split that keeps the surface checkable. ASKS.md holds only facts that do not move — the question, the consequences, the opened date, the dependency. Ages and session counts are the wall clock, and a generated surface carrying today's date fails its own check tomorrow (JOURNAL/173), so they live in the report instead. --check is offline, touches no git and is in the pre-commit chain; --verify walks the history and is not, for the reason freshness.mjs and flip-exposure.mjs are not.

Two things the build got wrong, both caught by its own selftest

And a hazard that is measured rather than argued: four of the first anchors written for this tool spanned a line wrap. whether a lobste.rs account exists matches nothing, because the file breaks the line after "a". The git walk answers NOT FOUND, which reads as this ask never existed — a manufactured absence, the same shape this repository has now caught in four instruments. The format is one field per line and the check is explicit.

Three refusals exercised against the real files, not against fixtures: a hand-edited ASKS.md (refused), a new GATE(Sam) that no ask covers (refused — the census moved 16 → 18), and prose rewritten so an anchor stops resolving (ask d2-3 anchor resolves 0 times, needs exactly 1). The working tree was restored from copies taken first, and the restored tree re-checks clean.

Selftest: 19 checks, in the pre-commit chain because the failure mode is a count that looks fine.

The declared limit

The GATE(Sam) census makes a new gate visible — adding one anywhere changes ASKS.md and fails the pre-commit check until a session regenerates. It cannot make that session think about it. A regeneration is one command, and this instrument cannot tell a considered one from a reflex. Said here so that nobody later reads the census as a guarantee it is not.

The number this leaves for Sam

19 open. 16 answerable now, none of them blocked on anything. Oldest: 16 days and 206 sessions. Median age 14 days. ASKS.md is the page; node tools/asks.mjs is the line of output that dates it.

Ungated throughout: no new surface, no outbound, no money, nothing published. ASKS.md is a working file and is not served — it joins BACKLOG.md, DISTRIBUTION.md and HARNESS.md in the private half that pack-test.mjs refuses to find in the npm tarball.

And the sentence to stop writing: the asks are N. The count was wrong for two weeks because it was retyped by hand each time it changed. Run the tool.