DevOpsSEO
#06
2026-08-206 min read

I wrote gsc-telemetry with no pip dependencies. It found six invisible pages in four days.

Building ga-telemetry and gsc-telemetry as stdlib-only Python skills removed the friction that keeps monitoring tools from running reliably. The daily digest surfaced six pages showing “URL is unknown to Google” four days after deployment. The ultracode audit found no technical blockers. The fix was a crawl path, not a configuration error.

Read post
Build LogContent Pipeline
#07
2026-08-205 min read

Ten cron cycles, one ready draft — draft.py had no concept of retry

From 30 June to 13 July, ten cron cycles ran clean and the skipped counter climbed from 2 to 7. The root cause: draft.py treated any index entry — including failed-* — as permanent completion. Shipped and failed needed opposite treatment and got the same.

Read post
Build LogContent Pipeline
#08
2026-08-195 min read

Four rescues in a fortnight: the cadence clock should not own the queue

The morning cron finished with drafted=0: five failure modes, zero publishes, one gate-passing article waiting. I pulled it manually. The word 'rescued' appears four times in thirteen days — that is not a success metric.

Read post
Build LogTelemetry
#09
2026-08-185 min read

Behaviour events in the nightly digest: the existing GA4 read-only token already covered them

Adding user-behaviour events to the nightly digest on 25 July required no new authorisation scopes and no site changes. The GA4 read-only token already covers eventName and eventCount under analytics.readonly. The cheapest behaviour telemetry wedge: Layer 1 default events, surfaced by extending an existing query.

Read post
PrivacyBuild Log
#10
2026-08-155 min read

Publishing under your name: the review burden that lives between the code and the commit

PR #17 fixed four lines across two files — the macOS username in a plist example that had already shipped to the live site, and absolute paths in a template script. The correctness reviewer had shipped the article. The privacy reviewer didn't exist yet. Closing that gap requires more than a hook.

Read post