Hello, Forme
This is the inaugural post of the Coding Adventures blog, and the first piece of content shipped end-to-end through the Forme universal authoring pipeline.
The path it took from data/2026-05-15-hello-forme.md to
/coding-adventures/blog/2026-05-15-hello-forme.html is exactly the
shape laid out in the FM00 spec:
forme-source-fswalkeddata/, found this file, and emitted aContentSource.forme-parse-markdownsplit off the frontmatter you see above, parsed the body as GFM, and emitted aContentNode.forme-resolve-asset-refs-fsdiscovered the local diagram below, assigned its stable logical identity, and preserved its fragment target.forme-routerassigned one canonical route, then fanned the routed node out to the page and collection branches.forme-collect-chronologicalsorted this and the other posts by date while preserving that canonical route.forme-render-staticmatched the reusable classless Style IR theme, recordedusedStyle, compiled the page slice through the AOT path, and emitted aRenderedPagewith an asset placeholder.forme-load-assets-fsloaded and hashed the SVG bytes while enforcing canonical storage-root containment.forme-emit-site-fsjoined the rendered page and asset streams, replaced the placeholder with a fingerprinted public URL, copied the SVG, and recorded it in theDeployArtifactmanifest.
The point isn't the post — it's that everything between the parser
and the deployer is plug-compatible. Want a different theme?
Pass a different resolved StyleDocument; the renderer does not change.
Want to ship to S3 instead of disk? Replace forme-emit-site-fs. The rest of
the DAG stays put.
One pipeline, many surfaces. That's the Forme bet.
The next few posts will work through what the kernel + orchestrator gives you, and how collection outputs grow into indexes and feeds.