Work log: 2026-04-06
What shipped today
The biggest theme was clearing the dev queue and fixing the signup funnel. The session started with 3 ready-for-dev issues (#1935, #1936, #1937) carried over from yesterday plus 2 prep items. All were completed within the first few hours. The new MCP tools — list_social_posts and bulk_archive_social_posts — give the MCP layer the ability to discover and bulk-manage social posts, which was the missing piece for queue cleanup workflows. The API surface got matching updates: search param on GET /api/v2/social-posts and a new POST /api/v2/social-posts/bulk-archive endpoint supporting both ID-based and filter-based archiving.
A scout run (5 parallel agents: error-handling, security, dead-code, test-coverage, perf/UX) plus Sentry check surfaced 5 new issues. All were executed in the same session: account deletion reordered to delete data before auth (preventing orphaned data on partial failures), blog queue switched from full table scan to targeted queries, ideas page fetch reduced from 3x to 2x the display count, 642 lines of dead ChatPanel code deleted, and the social queue archived tab fixed with lazy-loading. RISKS.md was corrected — 12 untested handlers, not 13 (content_parse_transcript has tests).
The signup flow was completely broken for new users. After email/password signup, users were silently bounced to the login page with no explanation because their email wasn’t confirmed yet. Three fixes shipped: a dedicated /check-email page after signup, then — after Paul’s test revealed the PKCE prefetch problem — the confirmation route was converted from a server handler to a client-side page (matching Eclectis’s fix from the same day, coordinated via #breakroom), and all 5 email templates were updated to use {{ .TokenHash }} instead of {{ .ConfirmationURL }}. Paul pasted the templates into the Supabase dashboard. End-to-end signup was verified on production.
Diktura embedded their customer hub widget on authexis.app (feedback + support modules), replacing Sleekplan. Three prod deploys pushed everything live. Four rounds of Synaxis.AI strategy input were written — covering architecture, data model, AI layer, and practical implementation timeline for the skills-first approach.
Completed
- #1935: API + MCP tool for listing/searching social posts (6 tests)
- #1937: Closed — already covered by list_social_posts from #1935
- #1936: Bulk archive API route + MCP tool (7 tests)
- #1934: fetchPosts explicit columns, archived excluded, 200-row cap
- #1942: Deleted disabled ChatPanel component (647 lines removed)
- #1941: Ideas page fetch 30→20 (2x buffer for time-decay reordering)
- #1940: Blog queue targeted content queries
- #1939: Account deletion — data cleanup before auth, errors visible
- #1938: Archived tab lazy-loading when filter selected
- #1943: Closed — empty state already exists in social queue
- #1944: PKCE email confirmation fix (client-side page + TokenHash templates)
- Signup flow: check-email page, PKCE fallback message, client-side confirm
- Diktura widget integration (2 deploys — initial + www URL fix)
- RISKS.md correction: 12 untested handlers, not 13
- DECISIONS.md: account deletion ordering decision recorded
- Scout: 5 parallel scans, Sentry clean, 5 issues filed
- Strategy: 4 rounds of Synaxis.AI roundtable input
Release progress
- v1.5: 50/50 closed (complete)
- v2.0–v2.2: All complete
- No open milestones with active work. Consider creating v1.6 or v2.3.
Carry-over
- #1945: Dashboard first-run onboarding for new workspaces (ready-for-prep)
- #1829: PostHog event archival (backlogged — external UI housekeeping)
- Synaxis.AI strategy: skills-first architecture accepted, authexis stays as content engine behind skills
Risks
No new risks. Existing open risks unchanged (12 untested handlers, no web tests, missing error boundaries, MCP tokens in-memory, prod DB in dev). The signup flow was a significant user-facing gap now resolved.
Flags and watch-outs
- The Diktura widget is live on authexis.app pointing to diktura.com production. Workspace token:
88c1918a-6704-4610-88c6-b371f79ffc3d. - Email templates were manually pasted into Supabase dashboard — if the templates are ever reset or overwritten, the PKCE prefetch bug will return. The source of truth is
web/supabase/email-templates/. - The
www.authexis.appcanonical redirect (middleware line 14) is by design (GH-818). Don’t change it. - The breakroom webhook uses curl, not urllib.request (urllib returns 403 on Discord webhooks).
Next session
- Execute #1945 — dashboard first-run onboarding (ready-for-prep, highest priority for new user experience)
- Consider creating a new milestone for the next batch of work
- The
check_command_statusMCP tool (from strategy round 4) would be the first step toward skill dispatch if that’s the next priority - Synaxis.AI strategy docs written to /tmp/ — paulos session has the canonical versions
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 most important thing a leader can build is the conversation that happens when they leave the room. Today, five departments started sharing fixes, cracking jokes, and solving each other's problems — without being asked.
I ran my AI agency's first real engagement. Here's everything that happened.
Five AI personas. One client onboarding. Fifteen minutes of things going wrong in instructive ways.
The costume just got cheap
If 80 percent of what you thought was judgment turns out to be pattern recognition, what does that say about you? Not about your job — about you.