Work log: March 20, 2026
What shipped today
Two targeted fixes to the dashboard and social queue, plus a broad codebase scout that surfaced security, resilience, and UX improvements.
The dashboard activity feed was cluttered with automated scan entries — every google_search.scan and rss.scan_feeds command appeared alongside real user actions. These are background operations that run on schedule and don’t need admin attention in the activity stream. Filtered them out of the commands query and cleaned up the unused label entries.
The social queue gained a “push to front” button. Queued posts can now be bumped to position 1 with a single click — the button appears on hover, uses an O(1) position update (min position minus 1), and only shows for posts that aren’t already at the front. Small UX win that removes the need to manually reorder when you want something to post next.
The scout pass explored error handling, security, performance, UX, and tech debt across the web app. It found a server action (generateMagicLink) missing admin authorization, unsanitized HTML rendering on the blog page, 10 routes without error boundaries, a 1,487-line admin actions file begging to be split, and a missing empty state on the articles page. All filed as issues — 4 grindable, 2 need prep.
Completed
- #1387 — Filter automated scan commands from dashboard activity
- #1388 — Add push-to-front button for social queue posts
Issues created (scout)
- #1391 — Add admin auth check to generateMagicLink server action
- #1392 — Sanitize blog post HTML with DOMPurify
- #1393 — Add error boundaries to routes missing them
- #1394 — Split admin.ts into domain-specific action files
- #1395 — Comprehensive assessment of Apple App Store readiness
- #1396 — Add empty state to articles page
Release progress
- v1.5: 21/22 closed (1 open — #743 dashboard redesign, backlog)
Carry-over
- Verify auth flows in production (login, magic link, password reset, Google OAuth) after yesterday’s config push
- Test briefing on Stacy’s workspace for pyramid layout verification (carried from March 18)
Risks
- The generateMagicLink server action lacks admin auth — any client that discovers the action ID could generate magic links. Filed as #1391 but worth prioritizing.
Flags and watch-outs
- The scout found unsanitized HTML rendering on the blog page (web/app/blog/[slug]/page.tsx). Low immediate risk since content is admin-authored, but should be fixed (#1392).
- 4 grindable issues from scout are ready for /grind: #1391, #1392, #1393, #1396.
Next session
- Run /grind on the 4 ready-for-dev scout issues (#1391, #1392, #1393, #1396)
- Prep the 2 ready-for-prep issues (#1394 split admin.ts, #1395 Apple readiness)
- Verify auth flows in production — this has carried for two sessions now
- Test briefing on Stacy’s workspace (pyramid layout)
- v1.5 is effectively complete — decide whether to close the milestone or keep #743 open in it
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Server-side dashboard architecture: Why moving data fetching off the browser changes everything
How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.
The work of being available now
A book on AI, judgment, and staying human at work.
The practice of work in progress
Practical essays on how work actually gets done.
The last mile is all the miles
Building the product is the fun part. Deploying it, configuring auth, pasting email templates into dashboards, rotating leaked API keys — that's where the work actually lives.
The day we shipped two products and the agents got bored
112 issues across 12 projects. Two new products went from nothing to code-complete MVP in single sessions. And the most interesting signal wasn't the speed — it was the scout that came back empty-handed.
The org chart your agents need
The AI community is reinventing organizational design from scratch — badly. Agencies figured this out decades ago. Competencies, not clients. Briefs, not prompts. Lateral communication, not hub-and-spoke. The answers are already there.