Build LogLearning Hub
#111
2026-07-195 min read

Six navigation phases, one client island: why the keyboard audit took half an hour

The learning hub's navigation plan ran six phases. Five shipped as pure RSC; the server knew the URL, and that was enough. The in-chapter TOC with IntersectionObserver scroll-spy was the only genuine client requirement, and keeping the client surface at one component made the accessible-by-default story apply to everything else.

Read post→
Build LogPipeline
#112
2026-07-195 min read

Three weekdays, zero publishes: draft.py was consuming its own failures

Between 7 and 9 July the UK Calculators cron fired on time, triaged candidates, and assembled source packs. It published nothing. Across ten cycles, skipped climbed from 2 to 7 before the cause was found: draft.py was writing failed-* markers to the same index it used for successful consumption, permanently locking out any topic that had ever failed a draft attempt.

Read post→
AdSenseSEO
#113
2026-07-185 min read

AdSense said 'low value content'. Mapping that to actual pages took a day.

The ads.txt was authorised. The rejection still came back 'low value content' on 10 July — a content quality judgement that maps to three specific gaps: thin surfaces, empty hub listings, and zero images across 38 articles. Passing the re-review required treating Google's inventory-value policy as a content brief, not a configuration checklist.

Read post→
Build LogContent Pipeline
#114
2026-07-185 min read

Five days, ten operator publishes, two cron drafts: where the ukcalculators pipeline actually breaks

Running a 14-day pillar schedule with a parallel operator-publish path made the bottleneck legible: the cron fires on schedule, triage completes, 150 clusters rank — then the ground-and-extract stage drops everything silently. The schedule is not the problem.

Read post→
Build LogContent Pipeline
#115
2026-07-186 min read

Ten of thirteen: why verification without correction is just expensive triage

The morning cron produced a draft with 10 of 13 sentences passing the verifier. Without a corrective step, that's a triage ticket, not a publish. Four days of cron output showed the rescue pattern fires once in four — and what covers the other three.

Read post→