Tavi mentioned scroll.pub while we were kicking around the subscribers idea. He filled me in, I looked it up. The tool is defunct but the shape stuck. (More on logging references cheaply.)
What scroll.pub was
Indentation-based, tree-shaped, one statement per line. Unlike YAML, a scroll.pub document mixed prose with directives that did things: query a dataset, compose a template, substitute values. Same file was both article and program.
The key part: you could define new directives on the spot. Need a quote element? Declare it. Need a table from a list? Write a composition rule, use it three lines later. The language grew to meet the document.
Connection to architecture prompts
Markdown is lossy in exactly the way scroll.pub wasn't. You can write "the router is defined like this" in prose, but you can't attach that prose to a runnable fragment in the same tree.
Imagine a design doc where:
ruledeclares an invariant. Prints as bullet to humans, compiles to assertion for machines.componentdeclares what a piece does. Prints as diagram, exports as schema.implementation-hintcarries language-specific nudges (Python, Bun, Go), pickable by generators.
Caveats
scroll.pub didn't survive. Probably niche audience + authoring friction + thin standard library. "Extensible in the small" risks becoming a maintenance problem when two people define the same directive differently.
If we borrow the shape: small, shared, almost-never-extended core of directives. The option to grow the grammar is the safety valve, not the daily tool.
Where this goes
Architecture prompts need to carry structure markdown hides: relationships between components, typed attributes, snippets that are both docs and generator input. A tree-with-directives is the simplest shape that carries all three.
Meta
This piece exists because a passing mention almost disappeared and I logged it instead. Capture is cheap now. Half the value is the stack of raw references that accumulates when you log fast.