docs: the command table becomes two tables because it was two audiences, and the page that answers "is this for me" is asked before the install (#591) - #598
Merged
stephrobert merged 5 commits intoAug 29, 2026
Conversation
…ces (#591) Twenty-six verbs in one table on both front pages, and a reader who came to point Terraform at a local cloud had no way to know that ten of them are this repository measuring itself. The length was never the problem: `feint corpus` and `feint shapes` sat between `feint snapshot` and `feint clean` with nothing saying they belong to a different job. Same twenty-six rows, same wording, split under two headings and each half introduced by who it is for. The partition was checked against the dispatch switch in internal/cli/cli.go rather than against a list written by hand: `serve` and `images` were missing from the brief's own split, and they are everyday verbs, so the everyday half holds sixteen and the fidelity half ten. The anchor `#commands` is unchanged, so every link into it still resolves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…for me" is asked before the install (#591) Two things, and neither rests on the length of a file. The first is the guard the split earned. TestEveryCommandIsNamedInTheReadmes accepts a verb mentioned anywhere on the page, which is why `stop` and `restart` once read as documented while both were folded into a single entry about `start`. Two tables add three new ways to be wrong that one table did not have: a verb in neither, a verb in both, a third stray group. So TestEveryCommandHasExactlyOneRowUnderAnAudience asserts the partition instead of the mention, on both pages, and refuses a flattening back to one table. The second is placement, not duplication. docs/confidence.md was cited twice per README, once in the nav strip and once in a paragraph after the demo, and never in either table of contents. It now has a section of its own before the install instructions, in the contents list of both pages, and it copies no verdict: the reason is written in the section itself, and it is #592 — a sentence on line 41 contradicted that page for two days through every green documentation gate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ontrols bite (#591) docs/ held twenty-three files and no guidance, so a reader who clicked into it got the listing GitHub renders and nothing telling them which page to open. The index is four questions and the pages that answer each, and it says in its first paragraph that it is not a listing: naming all twenty-three would repeat what the directory view already shows. No restructuring, and no summary of limits.md: both were refused by the maintainer on the grounds that they are arguments about mass, and the index carries that refusal in the test that guards it — completeness is deliberately not asserted. The falsification runs six mutations and every one of them bites. Four dissolve the split back into one table, drop a verb from every table while leaving it named in prose, describe a verb under both audiences, and leave a row behind a verb the binary no longer dispatches. Two rot a path of the index, once by renaming its file and once by leaving the file and moving the heading. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…es the defect instead (#591) "A sentence on line 41 contradicted that page" is true today and false after the next paragraph anybody inserts above it, which is the shape of claim this whole section exists to argue against. The paragraph now names what the sentence did and cites #592, and the French page stops referring to a line of the English one. Same argument, nothing that rots. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ibe (#591) Two corrections found by reading the pages rather than trusting the sentence that names them. docs/install.md has no "from source" section: that route is in the README beside the others, and the index now says where it is. The confidence paragraph is rewrapped at the width the rest of the page uses. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
stephrobert
force-pushed
the
docs/591-two-audiences-and-the-confidence-signpost
branch
from
August 29, 2026 07:14
e8f433e to
2c20380
Compare
stephrobert
deleted the
docs/591-two-audiences-and-the-confidence-signpost
branch
August 29, 2026 07:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The rest of #591, reduced by a maintainer decision: file size is not a
problem. Two of the audit's recommendations fall with that premise and were
not smuggled back under another name:
docs/restructure — the argument was "at twenty files a flat directorystops working", which is an argument about mass;
docs/limits.md— the argument was "3950 lines isunreadable". That file is a register: nobody reads it whole, they look a
section up, and its length is the evidence it is doing its job.
What survives, survives on other grounds.
1. The command table was two audiences
README.mdREADME.fr.mdSomeone who came to test their Terraform met
feint proxy,feint corpus,feint evidenceandfeint shapesin the same table asfeint up, with nothingtelling them the last four are not theirs. Same 26 rows, same wording, two
headings, each with one sentence saying who it is for.
The brief's split was wrong and the dispatch said so. It listed 24 verbs;
checking against the switch
TestEveryDispatchedCommandIsInTheHelpalreadyparses found
serveandimagesmissing — both everyday,servebeingthe foreground emulator the quick-start banner shows and
imagesbuilding what a--vmuser needs. Neither table is generated, so the READMEs were the rightfiles to edit; that was checked, not assumed.
2.
confidence.mdwas not where it is looked forProbably the best page here: 73 lines answering "what can I reasonably test
against this emulator?", every verdict pointing at its proof, held by
TestEveryConfidenceRowCarriesItsProof. It was cited twice, in a nav strip andin prose after the demo, and in neither table of contents.
A new section — "Is this the right tool for your test?" — sits before
## Installin both pages, in both tables of contents.And it copies nothing. The argument matters more than the section.
The obvious move was a six-row extract in the README. It was refused, for three
reasons in order of weight:
is a judgement.
internal/cli/docs_confidence.gosays in its own headerthat the counts are generated and "what stays hand-written is the table,
because a verdict is a judgement and this file has none to offer". Any rule —
first N, rows by verdict class — either moves when someone reorders the table
or needs a new marker in the source. The generator would silently own an
editorial decision.
injecting it into
README.fr.mdis finding 4 of The documentation's next wave: the code simplified use faster than the documentation simplified its story #591 restated, and feat(docs): the promise on line 41 is derived from a matrix that asks the doorstep, and the quick start is four commands a reader can run (#592, #593) #595 hasjust paid to undo exactly that.
questions — the safety callout and the promise block derived from The README promises Terraform on the three clouds while feint up refuses one of them: a capability claim owned by nobody, and the doc gates check numbers #592's
matrix. A third statement of the same thing is the one fact in two places
class this repository keeps paying for.
The section states the framing and links. No verdict, no count, no capability
pair is duplicated.
And its own first draft was corrected: it cited "a sentence on line 41",
which is true today and false after the next paragraph anybody inserts above it.
It names #592 instead (
d50d620).3. An index, because four paths guide and a listing does not
docs/README.md: run something · does it answer my question · what "proven"means · change it. Every claim in it was checked against the page it
describes, and one was wrong:
docs/install.mdhas no "from source" section —that route is in the README.
The guards, and a weakness they close
Two new tests, and the first closes something that predates this branch:
TestEveryCommandIsNamedInTheReadmesaccepts a mention anywhere on the page,which is why
stopandrestartonce read as documented while both were foldedinto one entry about
start.TestEveryCommandHasExactlyOneRowUnderAnAudienceasserts the partition:every dispatched verb has exactly one row across every group, every row names a
dispatched verb, and the rows sit under at least two headings each holding at
least three.
TestTheDocsIndexResolvesEveryPathItOffers— every link resolves, and a#fragmentresolves to a heading that really produces it. It deliberately doesnot assert completeness: that would turn the index back into the listing
GitHub already renders, which is where the maintainer's refusal is written down
in code.
command-tables-two-audiences.json, 6 mutations, all 6 bite, none dropping anidentifier:
A hand witness was planted on
docs/README.md#quick-startbefore the spec waswritten, to prove the anchor reader can fail at all rather than passing
vacuously.
What
docs:checkcannot see, said plainlyfeint docs --checkcompares only the marker blocks. Neither command table,neither new section, neither ToC entry and none of
docs/README.mdsits insideone —
docs:checkis silent about every line this branch adds. What coversthem is the two new Go tests plus the two pre-existing ones, all running under
mise run checkinsideprepush.Gates
prepush0, twice, the second on the final diff ·docs:check0 ·falsify6/6 ·falsify:lint968 mutations over 150 specs.limits:checkis 2 and pre-existing — threedocs/limits.mdsections cite#365, #570 and #571, all closed 2026-08-28, before this branch.
git diff origin/main -- docs/limits.md docs/limits-acks.jsonis empty.What was not obtained
docs/README.fr.md. The index names the French pages where they existand states that English is the source, but it is itself English. A translated
index is a fifth page to keep in step.
docs/routes.mdopens with "Is yourresource emulated? This page answers it without installing anything." — very
close to the new section's framing. They are complementary (capability versus
operation) and the section links both, but if only one front-page signpost is
wanted, that is the tension to resolve.
Where
testplanwas slightly wrongIt named
limits:checkbecausedocs/README.mdmatched "prose, including whatthis project says it does not do" — but that gate reads only
docs/limits.md,which this diff does not touch. Over-trigger, not a false green, and it cost a run
that exits 2 for somebody else's reason.