docs: the landing page says what this is before it draws how it works - #227
Merged
Merged
Conversation
The page opened with a six-node loop diagram. A reader met the mechanism before anything gave them words for it, and the plain statement was sitting third in a paragraph under the code comparison, phrased as a property of the tool rather than as what the thing is. An introduction now sits between the hero and the loop, and `.Content` moves with it, so the order is: what it is, an example, then the diagram of how it moves. The diagram illustrates something the reader already has words for. The words are the ones that worked on somebody who opened with "I don't believe that's possible" and arrived at "typed json with arithmetic?" on his own. Three paragraphs doing three jobs: what it is, which frames it is not, and why that matters. Naming the wrong frames is deliberate rather than defensive. "Not the type system" and "not a sandbox" are the two readings a reader supplies unprompted, and leaving them unstated cost four exchanges before the idea landed at all. "Refusing" rather than skipping, because skipping is what Prepack does: residualise the parts you cannot evaluate and emit the rest. Refusal is per file and the file falls back. The comparison's paragraph loses its third sentence, which the introduction now says better. Cut rather than reworded. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AzfJnYw9p6rAxhJqXK3CPv
"Compiling TypeScript to configuration." is accurate and says nothing about the only thing that distinguishes this. It reads as a description of CDK. "TypeScript configuration, read as data and never run." Not "a subset of TypeScript", which was the first draft and is the one opening the epic warns against by name: "Not 'here is a statically evaluable subset of TypeScript' — Starlark, Dhall, Nickel, Pkl, jsonnet and CUE are all in that space and a reviewer will say so immediately". Leading with the word hands a reader that shelf in four words, before the page can say what differs. Both places, since the tagline is also the fallback meta description. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AzfJnYw9p6rAxhJqXK3CPv
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.
Not filed against an issue — this came out of watching the vocabulary get hammered out against a skeptic in real time. #181's third move is adjacent but this is a different and I think better change than the reordering it proposed.
The inversion
The page order was hero → loop diagram → code comparison → platforms → proof. A cold reader met a six-node mechanism diagram before anything gave them words for it.
And the plain statement already existed — buried as the third sentence under the code:
Phrased as a property of the tool rather than as what the thing is.
Now
Introduction between the hero and the loop, with
.Contentmoved up to join it. Order is what it is → an example → how it moves, so the diagram illustrates something the reader already has words for.Three paragraphs, three jobs: what it is, which frames it is not, why that matters.
Two choices worth defending
Naming the wrong frames is deliberate. "Not the type system" and "not a sandbox" are the two readings a reader supplies unprompted — the first cost four exchanges before the idea landed at all, and the second is the standard objection. Stating them costs one sentence and saves the reader from arriving at them alone.
"Refusing", not "skipping". Skipping is what Prepack does: residualise what you cannot evaluate, emit the rest. Refusal is per file with a fallback, and the wrong verb files you in the wrong family.
Cut
The comparison paragraph loses its third sentence, which the introduction now says better and earlier. Cut rather than reworded.
Left alone
The tagline. "Compiling TypeScript to configuration." is accurate and carries none of the axis, but a wordier one was rejected earlier and the tolerance there isn't mine to guess.
Verification
121 tests in 19 files, prose lint 51 with no regressions,
npm run docs:buildclean, and the rendered order confirmed fromdocs/public/index.html.🤖 Generated with Claude Code
https://claude.ai/code/session_01AzfJnYw9p6rAxhJqXK3CPv