DocsProcess
#51
2026-07-066 min read

The process changed. The docs didn’t. The fix was a folder.

Three times in the captainrandom repo, documentation drifted from actual practice. Each time the fix was the same: a dedicated folder with its own PRD, roadmap entry, and devlog trail — not a patch, but enclosure.

Read post
Build LogDevOps
#52
2026-07-045 min read

Four lines in a published article leaked my macOS username to the live site

PR #17 was a four-line diff across two files. One of those lines was in the body of a published article, rendering a real macOS username in the browser. The fix was substitution — but the pattern it revealed was wider: three surfaces in the same audit window, the same failure.

Read post
Build LogPrivacy
#53
2026-07-025 min read

I patched the same privacy leak four times. The lesson isn't to be more careful.

Private repo names in a language stats page. A macOS username in a published plist example. A missing privacy policy when the newsletter went live. Four separate fixes, each reactive, each after deployment. Four is enough to name the pattern: the publish boundary has no scrubber.

Read post
Build LogContent Pipeline
#54
2026-07-015 min read

145 words shipped on inheritance tax. 949 words fixed it. The gate measured the wrong thing.

The operator-publish gate cleared 145 words on UK Inheritance Tax because word count was above minimum and the verifier passed. IHT is YMYL content. A same-day ultracode rescue to 949 words proved the gate needs a depth signal, not just a length floor.

Read post
DVLAWBuild Log
#55
2026-07-016 min read

The substitute pool stole from future slots because slots didn't exist as rows

Phase B's autonomous publishing pipeline sat at twenty percent success. The substitute pool was recursing through future-scheduled rows to breach — and nothing in the data model could stop it because slots had no identity. Making the slot a first-class entity with explicit state transitions turned six log events into six queryable rows.

Read post