Docs quality: one fact one home, and index what's read under pressure - #284
Merged
Conversation
Yesterday's pass fixed accuracy. This one is about quality, and it
starts by undoing damage I did: ARCHITECTURE.md appeared in all eight
cross-file duplication clusters. I had restated numbers that already had
homes.
The reasoning behind the agent's isolation existed in three files in
three different phrasings. "23 tools" appeared five ways across three.
Those are precisely the facts that drift — a number in three places gets
updated in one, and then two files are quietly lying.
The rule, now recorded in docs/README.md so it is enforceable:
- reference docs state a value ONCE, in whichever doc owns the subject
- ARCHITECTURE.md carries structure, not values — except facts that
only make sense ACROSS services, like Fly's proxy bind budget, which
is the whole reason two services sleep and one cannot
- operational docs may inline a value where stopping to look it up
would make them unusable ("kill a CameraNode for >90s" is an
instruction, not a specification)
- prefer pointing at code — a value with a good comment beside it is
more durable than the same value copied into prose
Applied, `384 MiB` now appears in no document at all. It lives in
fly.toml next to the comment explaining why it moves together with
memory_mb, which is where someone changing it will actually be looking.
Deliberately left one overlap: the agent's ~10s boot time is in both its
own doc and the cross-service comparison. Removing it from the agent's
doc would serve the rule at the cost of the reader, who would no longer
learn why their machine stays warm without following a link.
Second half: none of the four longest documents had an index. ON_CALL is
611 lines and describes itself as "optimised for being read under
pressure", which it was not — it opened with a tools cheatsheet, and a
responder knows the SYMPTOM, not the scenario letter. It now opens with
a symptom-to-scenario table, including a row for "the data is gone",
which sends you to the other runbook before you waste time here.
DISASTER_RECOVERY had the same problem plus a worse one: I put its index
at line 122, behind a long migration note. An index you scroll to is not
an index. Moved above the fold.
AGENTS.md gets a contents table and now points outward for the two
things it was restating.
79 links and anchors verified, including cross-file fragments.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Yesterday's pass fixed accuracy. This is about quality — and it starts by undoing damage I did.
I made the duplication worse
ARCHITECTURE.mdappeared in all eight cross-file duplication clusters. I'd restated numbers that already had homes.The reasoning behind the agent's isolation existed in three files in three phrasings.
"23 tools"appeared five ways across three files. Those are exactly the facts that drift: a number in three places gets updated in one, and then two files are quietly lying.The rule, now recorded in
docs/README.mdARCHITECTURE.mdcarries structure, not values — except facts that only make sense across services, like Fly's proxy bind budget, which is the entire reason two services sleep and one can't."kill a CameraNode for >90s"is an instruction, not a specification.Applied,
384 MiBnow appears in no document at all. It lives infly.tomlnext to the comment explaining why it moves together withmemory_mb— where someone changing it is already looking.One overlap left deliberately: the agent's ~10s boot time is in both its own doc and the cross-service table. Removing it would serve the rule at the reader's expense — they'd no longer learn why their machine stays warm without following a link.
None of the four longest docs had an index
ON_CALL.mdis 611 lines and describes itself as "optimised for being read under pressure." It wasn't. It opened with a tools cheatsheet — but a responder knows the symptom, not the scenario letter.It now opens with a symptom-to-scenario table, including a row for "data is missing, corrupted, or gone" → DISASTER_RECOVERY.md, so you find out you're in the wrong document before working through procedures that can't help.
DISASTER_RECOVERY.mdhad the same gap plus one I created: I'd put its index at line 122, behind a long migration note. An index you have to scroll to isn't an index. Moved above the fold, and it now leads with "a restore is destructive — read the whole procedure before running its first command."AGENTS.mdgets a contents table and now points outward for the two things it was restating.Verified
79 internal links and anchors checked, including cross-file fragments — 0 broken.
🤖 Generated with Claude Code