A specimen. Every piece below is documented on Blocks
What we learned shipping to forty workspaces
Three months, one migration, and a queue that would not drain.
The queue
The shell gives you one measure, one body size, and a margin index derived from the sections themselves. Keep that index in a list beside them and a renamed section ends up with a rail link to nowhere.
Turn on the editorial switch in the header to see what this page is designed for. The heading ladder retunes against an 18px body, and the serif takes the heading role at weight 400, because Average has exactly one.
One per essay. A page with three has decided nothing.
The measure
EssayColumns is three tracks, the third often empty. Two tracks would push the prose off-centre the moment an aside appeared, setting body copy on a different axis per page.
The rail
An MDX article composes the pieces instead of using the shell whole: EssayColumns with a ReadingRail in the aside, its headings from extractHeadings(source). Both the rail and the progress bar read shared stores, so mounting both costs a single scroll subscription.
The same content in EssayColumns with a static margin index, which is how an MDX route composes it when the sections come from the markdown.