Release posts
One post per release, the conventions adopted across the creadev family: eyestruct’s v0.9.0 post set the shape for the struct-family first releases, and monoforge follows it so approaches to the community discussion stay uniform. The post lives in docs/discussions/ as versioned source so the release trail is in the same tree as the changelog it summarizes, and the file’s raw markdown IS the GitHub Discussions announcement - view source on the file, copy, strip the frontmatter, post.
The conventions
- One file per release, named after it.
announcing-vX.Y.Z.md, matching the npm version on the day the post is drafted. Never reuse a filename; if a release gets a retry, fold the delta into the same post instead. - Frontmatter contract. The four fields every docs page gates on (
permalink,layout,title,description), plusversion- the frontmatter gate treatsversion:as optional, and release posts fill it so the post self-identifies. Permalinks are baseurl-relative like every other page (discussions/announcing-vX.Y.Z). - The file IS the post. No wrapper prose, no nested copy block: below the frontmatter the file carries the announcement body itself, so the source of the doc is the source of the post. To publish, copy the raw markdown from GitHub, stripping ONLY the frontmatter lines at the top. The posting mechanics live in this index, never inside a post.
- Voice and facts. The repo’s content style: direct, dry, no marketing language, no cliches, and every number and claim verified against the changelog, the self-test, or the npm registry before it lands. If you cannot run it, do not write it.
- Timing. Draft against the released version, not the dev tree: cite what shipped in the npm tarball, keep in-tree-only work out of the post. A post describing a version that is not on the registry yet is fiction by promotion.
- Gates.
lint:docsruns on these files like everything else - frontmatter, headings, the style and language gates all apply. Files underdiscussions/are exempt from nav listing (copy sources, reachable by link), not from the other checks.
The index
| post | version | live |
|---|---|---|
| Announcing monoforge v0.9.0 | 0.9.0 | yes - the factory’s first release line; drops to Discussions when the package lands on the registry |
Release-time edits the staged draft accepts: the release URL fills in from the tag, and the npm one-liner moves only if the package slot does.