Build LogContent Pipeline
#06
2026-07-166 min read

The cron said zero twice and ten-of-thirteen once. Every answer was correct.

Five mornings of cron firing produced two zero-draft rejections, one partial-pass, and six operator-path publishes. Zero drafts is not a pipeline failure. It is the verifier doing its job when the inputs do not warrant a draft.

Read post→
Build LogAutomation
#07
2026-06-255 min read

Phase 9 claimed self-driving overnight. The first five slots returned twenty percent.

Phase 9 described BBBrain's auto-pipeline as self-driving overnight delivery. Five scheduled slots later, the success rate was twenty percent — four cancellations, two architectural gaps in the publisher, and one duplicate that should never have queued. The rebuild was around explicit failure modes, not the happy path.

Read post→
Build LogDevOps
#08
2026-06-245 min read

Auto-mode opened the PR. It didn't merge it. That was gap one.

Phase 9's 'self-driving overnight' was overstated by two wiring gaps. A 09:00 BST live run on 11 June found both. The afternoon of fixes taught more about auto-mode's real edges than any pre-flight design session.

Read post→
Build LogDevOps
#09
2026-06-066 min read

I built six sprints of article scheduling. For four of them, nothing fired.

Four sprints of Telegram button wiring, queue state machines, and free-text time parsing — all recording intent into `article_queue` without dispatching a single article. Sprint 5 was the first one that actually fired. Separating mechanism-to-record from mechanism-to-execute isn't a new idea; applying it deliberately at the sprint level is.

Read post→
Build LogDVLAW
#10
2026-06-055 min read

The schedule queue took four sprints to remember. One to act.

After four sprints of B-schedule, a scheduled article existed as a database row with a correct timestamp. No article had published. Sprint 5 added the sweep daemon and publisher_lock. That is when scheduling became real.

Read post→