Skip to content

v1.91.0 ·

Every post now sounds like one person

Most of this blog did not sound like me. Until this change, 75 of the release posts were assembled by a script: the problem section from one lifecycle file, the options from another, what shipped from a third. None of those files were written for a reader. Four older posts were written by hand, but before I had written down how a post should sound. Between them, 76 posts carried em dashes, which I never use.

An earlier release fixed four posts as a sample and asked me to approve the tone before doing the rest. I read them and approved them as written. This release does the rest.

What changed

Every published post now renders from a body written in one voice, the rules in .aidlc/guidance/blog-voice.md. For the 75 generated posts, the new text sits in an override file next to the post, and the manifest entry points at it. The slug, the title and the metrics snapshot stay as they were, so every link still works and the cost on each card is the number captured at release. The four hand-written posts were edited in place.

No post on the site has an em dash now. A test checks that, and another checks that no post names a requirement ID or a lifecycle phase, which a reader cannot know.

How it was done

Five agents did the writing, each with a batch of posts and the four approved samples as the target. The source for each rewrite was the old post, checked against the instance's own files where the old post was unclear. Then everything was checked here: em dashes, paths, frontmatter against the committed version, and the generator's own content guard on every post.

The em-dash check was also how I found the posts to rewrite, and that was a mistake. Three posts rendered from the old path with no em dash in them, and a test written for this change caught them. They were rewritten too.

What it does not fix

The posts run long. The voice file asks for 250 to 500 words. The median here is 576, and the longest is over a thousand. The writers kept facts rather than cut them.

The code that assembled posts from lifecycle files is still in the generator, with two guards that only check that path. Nothing published uses it now. Deleting it is a separate item on the roadmap.