Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
accessibilityReduceMotion should be a contract. Phase D made it one.
Phase D of an iOS budget app Cursed Energy feature adds five animated layers across sigil, energy, claim, level-up, and streak milestone surfaces. Every one checks accessibilityReduceMotion before firing — a hard gate, not a hint. The uniformity was a rule established on the first addition and held through to the fifth.
Four expired slots and the SLA recovery rule we learned in sequence
Between 12 and 14 June, four scheduled DVLAW slots expired without autonomous recovery. Each failure confirmed the same thing: sibling cancel, substitute fallback, and a missed-slot alarm don't work in isolation. They're one system.
The Accounts calendar strip passed every preview check. On my test iPhone, it answered the wrong question.
The Phase K Accounts screen shipped with a horizontally-scrollable calendar strip. Device QA on my test iPhone showed it was answering the wrong question, so mid-design I deepened Phase O to a three-level navigation flow: inline calendar, full-screen month view, day mode. SwiftUI preview had nothing to say about any of it — the back-nav regression that followed only surfaced under a real thumb.
The sibling-rehash rule: wired in the prompt, enforced in the filter
The picker generates three thesis variants per upgrade decision. Multiple upgrade taps on the same topic, same source material, different angles: the pipeline could queue two articles that were really one. Fixing that took two layers — one in the drafter prompt, one in the substitute filter — because prompts are probabilistic and filters are not.
25 PRs, a rescued BoE fetcher, and a composer taught restraint: the editorial pipeline ships
PR #53 merged on 12 June: the first article through the full X.8 grounded editorial pipeline. The morning sweep showed three gaps that had been quietly open — a stale PR that would have deleted the BoE rates fetcher, a composer inferring beyond its sources, and a design sprint that completed the day after. All three closed within 72 hours.




