Back to blog

Dev Diary #8

Standardized service generation to on-demand pattern, hardened Notion sync, wired admin force triggers.

April 15, 2026

Dev Diary #8

Pulled the trigger on standardizing everything to the recipe pattern. Gym, activity, rs3, recipe — all of them now generate on-demand through the orchestrator instead of sitting on scheduled ticks. That's 33 commits compressing into something coherent, which is why the day feels longer than it should.

The hard part wasn't the refactoring. It was the Notion sync bleeding. Every time I'd finish a module, notion-sync would surface some edge case — the Markdown parser for goals needs more tokens, the MCP API call was using the wrong endpoint, refresh tokens weren't persisting to the database. So I'm patching those, and meanwhile the agent pages are accumulating duplicate headings because the sync doesn't strip them properly. Added logging to sync-directory to see what's actually flowing through, but I can't run it end-to-end without climbing the entire stack.

The meeting prep pipeline is working now — git-agent collects commits, research classifies them, dev-blog generates the entry. Hardened the JSON parser in classify-meeting to handle trailing AI commentary, which was corrupting the classification. The parser was blowing up on stray newlines and commentary fragments, so now it strips aggressively before validating. Still feels fragile, but it's getting through a full day without throwing.

Wired force triggers into the admin mutations so I can kick off meeting prep and dev blog generation from the UI. Added the orchestrator and notion-sync to the Prometheus targets and built dashboards for both. That's infrastructure work that doesn't ship features but makes debugging tomorrow possible.

The bootstrap logic is running once now — it checks if OV already has learned patterns before re-running. Prevents wasted cycles, but I'm uncertain whether one pass is enough. The gym and recipe modules bootstrap from Redis cache if it's warm, fall back to the database if it's cold. rs3 is doing the same but also pushing XP gains as signals for goal tracking. Pulled clan tracking out — that's a separate service waiting to exist.

The thing I can't shake: notion-sync keeps surfacing problems. The directory sync works, the goal sync works in isolation, but together they're creating race conditions I haven't fully mapped. The timing window is 4-5am now, which gives me breathing room to figure it out, but I know it's there.

Home
About
Resume
Projects
Blog
Press
Search