The decision file was written before any code existed and said so in its opening line. That line is now false, and the fix is not to delete the tense but to name it: everything above "What shipped" is the record of what the feature was ALLOWED to be, and the closing section reports what was built against it. Also records the one thing the decision could not have known, because it was found by reading the consumer's parser rather than assuming it: paragraph mode discards any block without tab=, so neither a '#' comment nor a bare key=value in the header ever reaches the driver's records. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186vKCzuUEN5WcJB82kddzF
7.3 KiB
--focus: what was decided, and the one condition it rests on
Measured 2026-08-02 across 27 STATE.md in the operator's tree. This file exists
because the decision constrains the feature, and the exchange that produced it
lives in a private mailbox and a local-only STATE.md — neither of which is a
durable record. Everything above "What shipped" is the decision as it stood
before any code existed, kept in that tense on purpose: it is the record of
what the feature was permitted to be, and the section at the end reports what
was then built against it.
Repos other than morning-driver (the plan format's second declared consumer)
are deliberately unnamed: this is a public mirror, and which repo carries which
malformed marker line is that repo's business, not this one's. Every count below
is reproducible by the party that owns the data.
The decision
A --focus "<free text>" argument may filter --plan down to the repos whose
STATE.md declares a matching topic slug, on the condition that the same run
also reports the repos it held back: those whose STATE.md mentions the resolved
slug without a valid marker line. Without that report the feature is not built.
Why the report is a precondition, not an improvement
--plan already documents three properties about itself: it takes exactly one
position (the order), it has no cutoff so it hides nothing, and repos with no
board line are labelled rather than dropped — because a plan that omitted them
silently would repeat the defect the plan exists to avoid.
--focus is a cutoff. Absent a line saying what fell outside it, the flag breaks
a property the format has already written down. The report is what keeps the two
compatible. command_missing= and today's MERK: N repo mangler board-linje are
the same shape: they report, they select nothing, and the boundary at
board.sh:45-51 is untouched by either.
What the report actually yields (measured)
Strict marker lines over 27 STATE.md yield 7 distinct topic slugs; the slug
used as the worked example is declared by 6 repos. For the operator's real phrase
the truth set is ~11 repos, so a strict-marker answer has ~55% recall and no way
to say so. A predicate at that recall presenting itself as a finished day plan is
not a partial answer — it is a wrong one.
"The matched token" has two readings, differing only in noise:
| reading | STATE.md mentioning |
of those, unmarked |
|---|---|---|
| the operator's bare word | 16 | 10 |
| the resolved slug | 13 | 7 |
Both catch every known miss. The resolved slug is the chosen reading: same recall, half the noise, and the breadth of the report stops depending on the operator's choice of words.
The 7 unmarked mentions fall into three classes, all owned by the topic register
(~/.claude/coord/register.md), none by this repo:
- Malformed marker — the declaration exists but the register's own grep loses it: a status token wrapped in bold, or a status token outside the register's closed set of seven.
- Participation without declaration — the repo owns the specification, or names the subject in prose, and never writes a marker line at all. One case is the repo that is the subject, which carries zero marker lines.
- Discussion — see the next section.
The most consequential single find was class 1: a repo that pins the library in its build file, one of the heaviest consumers in the tree, invisible to every measurement in the exchange until the held-back population was listed. That is the argument for the report, and it was found by enumerating, not by reasoning.
Two constraints on the wording
It says "mentions", never "covers". The population is self-modifying: this
repo and morning-driver enter it only because they spent 2026-08-02 discussing
the subject. Excluding both reproduces exactly the count morning-driver
measured independently. A repo can enter the report by talking about a subject,
so the line must state a fact about text found (N repo nevner <slug> uten markørlinje) and never a claim about relevance, which board.sh has no grounds
for.
It states its own reach. board.sh reads STATE.md and no other file, and
will not start reading others. One repo in the measured set has its strongest
evidence in a README, which the scan never sees; it is caught only because a
different line in its STATE.md happens to mention the slug. The report has
searched 27 STATE.md, and must say that rather than imply it searched repos.
A third invariant is inherited, not new: the scan must never be built on an
ignore-aware search tool. STATE.md is gitignored by policy in exactly the repos
that have a public mirror, so such a tool loses precisely that class — it
inverts its own purpose. board.sh is immune today because it reads each
STATE.md by explicit path in a plain loop. Any topic reader must stay that way.
topics= is closed, not deferred
A topics= line per plan block was requested so a natural-language layer in
morning-driver could upgrade its evidence from "prose hit" to "declared". That
layer was withdrawn when selection moved here, so the field has no reader, and a
reported field with no reader is noise in a format with two declared consumers.
The need it covered survives but relocates: a focused run must say why each
surviving block survived. That is per-block evidence inside --focus, not a line
in all 27 blocks on every day the operator has no focus.
Before any of this is built
No order from the operator exists. If one comes: a failing board-selftest.sh
check first, the report in the same commit as the filter — never after it — and
morning-driver notified before any field in the block format changes.
--focus is the chosen spelling over --topic: "topic" names the vocabulary,
which the register owns and this repo only reads; "focus" names the operator's
day, which is what the argument carries.
What shipped
Built 2026-08-02, after the operator's order. The condition held: the filter and
the report landed in one commit, and a failing board-selftest.sh check came
first — the narrowing check is comparative (focused block count strictly below
unfocused, and non-zero), because every presence-only assertion passes against a
no-op filter, which is what the flag was while the unknown-argument fallback
swallowed it.
Fields: fokus=, fokus_droppet=, fokus_utenfor=, fokus_rekkevidde= in the
header, fokus_treff= per surviving block, and fokus_ikke_brukt= when the
prose resolves to nothing. They are key=value and not # comments for a
reason found by reading the consumer's parser rather than assuming it: it runs
in paragraph mode and discards any block without a tab= line, so a comment —
and equally a bare key=value in the header — never reaches its records. The
disclosure is therefore emitted in both regions, and morning-driver was told
the field names so their side can surface it. A cutoff whose disclosure is
dropped by the consumer is applied unseen, which is the failure this whole
condition exists to prevent.
Measured on the real tree the day it shipped: 26 blocks to 6 for the worked slug, 20 dropped, 3 repos mentioning it without a marker line. The doc's own earlier counts (13 mentioning / 7 unmarked) no longer reproduce — the population is rewritten every session, which is the argument for the report counting live and never carrying a baked-in number.