Skip to content

docs: the three claim pages show the thing before naming it - #230

Merged
lex00 merged 1 commit into
mainfrom
docs/enables-readable
Sep 21, 2026
Merged

lex00 merged 1 commit into
mainfrom
docs/enables-readable

Conversation

@lex00

@lex00 lex00 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Read all three as a TypeScript and IaC novice. They're professorial and they over-explain, and those are the same disease.

What was wrong

They teach before they show. Each opened with a definition, moved to distinctions, and reached anything concrete four screens down under "See it hold". no-execution.md reached paragraph three before showing anything, and paragraph three was:

In the data-host profile nothing is invoked to produce the values. That profile redefines revival as serialization and removes every rule that needs a JavaScript runtime. Each envelope reaches the serializer as data and no constructor is invoked.

Six unfamiliar nouns, none load-bearing for someone deciding whether to care.

They correct claims the reader never made. That's the professorial tell:

The editor catches a misspelt key... That is TypeScript's type checker, and it is not linting.

A rule over values is a check over what a project declares. The specification defines no such check. It defines the contract a host's checks run under.

Three sentences of "it isn't X, it's the contract governing X" before the reader has seen a single rule.

Now

Each page opens on something that happens to you, and names it after.

Your config says a repo has no wiki and squash merges on. A tool reads it and tells you what it will deploy.

You set requirePullRequestReviews: true and requiredApprovingReviewCount: 0 in the same block. Those contradict each other. Nothing tells you, because each one is fine on its own.

You already have infrastructure. A CloudFormation template, a live Kubernetes namespace, an org whose settings somebody clicked into a web UI years ago. You want it as TypeScript without hand-copying a thousand lines and hoping.

The profile distinction is gone

Nine mentions across the three pages, down to one. data-host versus full is an implementer's concern. The two places it genuinely bears on a claim now say "with no JavaScript runtime" instead.

One of those nine was mine, added in yesterday's limits pass, in an opening paragraph.

Also cut

  • "quantifying over the binding space is still a model-checking problem"
  • "a YAML-to-YAML round trip is the identity"
  • a five-item comma series I introduced by collapsing a bulleted list that was already readable

Verification

124 tests in 20 files, prose lint 51 with no regressions, voice gate clean, readability gate clean (rule-id budget unchanged or lower on every page), npm run docs:build clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AzfJnYw9p6rAxhJqXK3CPv

They read as explanations of the specification rather than answers to a
question somebody arrived with. Each opened with a definition, moved to
distinctions, and reached anything concrete four screens down under "See it
hold".

`no-execution.md` reached paragraph three before showing anything, and
paragraph three was profiles, revival, serialization, envelopes and
constructors: six unfamiliar nouns, none of them load-bearing for a reader
deciding whether to care.

Two habits made them professorial. They corrected claims the reader had not
made — "That is TypeScript's type checker, and it is not linting", "The
specification defines no such check. It defines the contract a host's checks
run under" — and they explained distinctions before the reader had hit the
problem the distinction solves.

Each page now opens on something that happens to you.

  Your config says a repo has no wiki. A tool reads it and tells you what it
  will deploy.

  You set two settings that contradict each other and nothing tells you.

  You already have infrastructure, and you want it as TypeScript without
  hand-copying a thousand lines and hoping.

Then the name, once, after the thing has been seen.

The profile distinction leaves the pages almost entirely, from nine mentions
across the three to one. `data-host` versus `full` is an implementer's
concern, and the two places it genuinely bears on a claim now say "with no
JavaScript runtime" instead. One of those mentions was mine, added in
yesterday's limits pass, in an opening paragraph.

Gone too: "quantifying over the binding space is still a model-checking
problem", "a YAML-to-YAML round trip is the identity", and a five-item comma
series I wrote while collapsing a list that was already readable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AzfJnYw9p6rAxhJqXK3CPv
@lex00
lex00 merged commit 1e8411f into main Sep 21, 2026
3 checks passed
@lex00
lex00 deleted the docs/enables-readable branch September 21, 2026 00:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant