Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
Seven clusters dark. A zombie IHT draft on its third PR. Both were the same assumption.
Between 30 June and 13 July, ten cron cycles produced one ready draft and zero auto-publishes while the skipped count climbed from two to seven. The same period produced a zombie IHT draft that slipped into a third PR. Both traced to the same assumption: a topic recorded in the index is a topic handled.
The Passage: 32.7 seconds in landscape, three upload IDs, one premiere
The Passage went into YouTube Studio on 24 July at 32.7 seconds in landscape. CJ’s call the same day: that format gets penalised — it has to be a Short. What followed was three uploads, two abandoned, two fix commits, and a lesson about specifying format before the render.
Copy bugs don't throw exceptions
The NAPA SEASON album page attributed production and vocals to Suno. That gave authorship to a rendering engine. The /contact timelines note filtered out prospects before they had sent a message. Neither bug showed up in any log.
The calculator passed every technical check. Three AdSense rejections later, the hub pages were the problem.
Three identical 'Low value content' rejections, all with empty policyIssues fields and an authorised ads.txt. A 15-agent root-cause review pointed at the content estate, not the calculator logic. The fix was architectural, not compliance-oriented.
The timelines note that was filtering out the right prospects
The /contact/ page carried a note about timelines, written to set expectations and catch poor-fit enquiries before they became calls. Re-read through a prospect’s frame, it wasn’t catching poor-fit enquiries — it was rejecting good ones.




