$ cat ./ai-policy

AI policy

This is the living version of the rules argued for in How I use AI. The post is where they came from and stays as written. This page is what's currently true. When a rule changes, the change lands in the log at the bottom and the old entry stays visible.

v1.3 · updated 2026-09-24

# scope

This covers writing I publish under my own name: this blog, and the copies of posts that go out to social surfaces. It doesn't cover project documentation, which is mostly generated from the code and reviewed the way code is. It doesn't cover my day job, which isn't mine to write about.

# the tag

Every post carries one of four labels:

written by hand · I wrote the outline and every sentence. A model answered questions and checked facts, and wrote none of it.

research assist · I wrote the outline and every sentence, and a model gathered or verified source material that shaped the content.

dictated, ai-edited · I dictated it in my own words, and a model turned the transcript into written prose and checked the facts. If the model adds sentences or arguments of its own, the post is ai-drafted instead, and the note says what it added.

ai-drafted, edited by me · Drafted to an outline I argued over first, against a large body of my own prior writing, then edited line by line until it said what I meant.

The labels are for scanning. Every post also carries a note at the bottom describing what happened to that particular piece, and the note is the real disclosure.

Where that stands today: 10 of the 11 posts published so far are tagged "ai-drafted, edited by me," and 1 is tagged "research assist." No post is "written by hand" yet, and one is planned.

# the lines

Writing gets the tag and the note. The standard doesn't change between categories, only the method does.

Engineering uses AI heavily. I direct it, review what comes back, reject a lot of it, and I'm responsible for all of it. I red-team what I ship, especially the parts a model wrote, because those are the parts most likely to look right and be wrong.

Art, music, and voice: no generated assets in anything I ship. Narrative prose is held to the same standard as the rest of my writing. Given the option on anything, I'll use human-created, every time.

# when I get it wrong

A mislabeled post gets corrected in place, and the correction goes in the log below and stays there. Shipped code that breaks is mine. "The model wrote that part" isn't a defense I get to use, and I wouldn't want it.

# enforcement

Nothing enforces any of this except me and the public record of whether I keep it. That's thin, and it's what every personal policy amounts to. The record is the point.

# log

v1.3 · 2026-09-24 · Added a fourth label, "dictated, ai-edited," for posts I speak rather than type. The sentences are mine, and a model cleans up the transcript and checks the facts. It sits between research assist and ai-drafted. The first post that started as a full dictation, "Why I created null," stays ai-drafted, because a model added prose to it.

v1.2 · 2026-09-23 · The "where that stands today" note said every published post was tagged "ai-drafted, edited by me." That stopped being true on 2026-09-08, when "I just wanted to play games" shipped as "research assist," and the note stayed wrong for fifteen days. It is now counted from the posts when the site builds, so it changes when a post does.

v1.1 · 2026-08-26 · The per-post notes promised in v1.0 actually landed. Every published post now carries one. The entry below said this was already done and was wrong for eight days: the backfill set the tag on all nine posts and wrote exactly one note, so six of the seven live posts carried nothing but a label that says the same thing on every post. That is the failure this log exists to make visible, and it is on the half of the policy I called the real disclosure. Also corrected two posts that still told readers about the ai-assisted tag v1.0 replaced, and made it a build failure to publish a post without a note, because remembering did not work.

v1.0 · 2026-08-18 · First version. Replaced the aiAssisted boolean, which was true on all nine published posts and therefore said nothing, with the three-level tag. Backfilled every published post to "ai-drafted, edited by me" and added the per-post process notes.

Corrected 2026-08-26: the last sentence was false when it was written. One note was added, not nine. See v1.1.

Your saved places

Keep a place in an article or case study, then come back to it. These bookmarks stay in this browser, on this site.

In this page