Work log: Authexis — March 16, 2026
What shipped today
Two major themes: hardening the engine and closing test gaps.
The engine got several reliability fixes. The newsletter processor was generating non-deterministic fallback URLs using datetime.now(), which meant reprocessing the same newsletter created duplicate articles. Replaced it with a SHA-256 content hash, so the same email always produces the same URL. While in there, converted the N+1 per-link processed_posts lookup to a single batch WHERE url = ANY($2) query — meaningful for newsletters with 20+ links. The settings server actions had three silent RPC/delete failures where Supabase errors were unchecked; those now return proper error messages to the UI. A Vercel deploy failure from a stale isSuperAdmin prop mismatch was caught and fixed.
The session’s biggest output was test coverage. Scout identified that 19 of 44 engine handlers had zero tests, and the decompose/prep/exec pipeline efficiently created and shipped tests for the three highest-priority untested handlers: article_batch_fetch (pre-scoring gate, error isolation), content_refine (ValueError paths, humanizer integration), and article_enrich (JSON parsing, code fence stripping, partial metadata). That’s 21 new tests across 3 files, all verifying the critical content pipeline handlers where silent failures would corrupt published content.
On the web side, ESLint errors that would break Vercel builds were fixed — unescaped HTML entities in apostrophes, a let that should be const, and a bare <a> that needed to be a Next.js <Link>. An admin email delivery log page also shipped from the previous session’s carry-over.
Completed
- #1276 — Add email delivery log page to admin area
- #1277 — Add recency filter to Google search scan
- #1282 — Fix Vercel build — remove unused isSuperAdmin prop
- #1287 — Fix silent RPC failures in settings server actions
- #1288 — Blog publish loop (closed — false positive, already handled)
- #1289 — Fix newsletter duplicate processing — non-deterministic fallback URLs
- #1290 — Fix ESLint errors that break Vercel builds
- #1291 — Add missing handler tests (decomposed into children, all shipped)
- #1298 — Add tests for article_batch_fetch handler
- #1299 — Add tests for content_refine handler
- #1300 — Add tests for article_enrich handler
- 14 Sentry duplicate issues closed (#1285, #1286, #1294, #1295, #1301, #1302, #1306, #1307, #1308, #1309, #1310, #1311, #1312, plus earlier ones)
Release progress
- v1.5: 1 open / 11 closed (dashboard redesign is the remaining issue — backlogged)
Carry-over
- Uncommitted changes in
engine/uv.lock,web/actions/admin.ts,web/app/(app)/admin/workspaces/[id]/workspace-detail-client.tsx— pre-existing from earlier sessions, not from today’s work - #1215 — Humanizer phrases: needs-clarification, no author reply
- #1292 — Social post trimming: needs-clarification, no author reply
- #1036 — Upstash rate limiter: blocked on manual Upstash account setup
Risks
- Sentry auto-create spam — The Sentry→GitHub integration created 14+ duplicate issues this session for AUTHEXIS-12 and AUTHEXIS-13. Request sent to paulos session to fix the integration filtering. Until resolved, every triage run wastes time closing duplicates.
- Claude API 429 rate limits — AUTHEXIS-13 shows 76 events of concurrent connection rate limiting on Haiku. The engine’s batch handlers (article_batch_fetch, article_enrich) process articles sequentially with 1s delays, but multiple workspaces running simultaneously could still exceed limits.
Flags and watch-outs
- React compiler ESLint warnings (4 total) can’t be suppressed via standard eslint-disable comments — they’re from Next.js 16’s built-in compiler integration. Don’t block on these.
- The
isSuperAdminprop mismatch that broke Vercel was a divergence between local and main. Watch for similar prop mismatches when the workspace settings page is modified.
Next session
- Check if paulos resolved the Sentry auto-create filtering — if not, follow up
- Answer the two needs-clarification issues (#1215, #1292) if Paul has replied
- Run
/scoutfor another round of improvements — the test coverage pass was productive - Consider the secondary handler tests (onboarding/engagement handlers) from the original #1291 scope
- The 429 rate limit issue (AUTHEXIS-13) may warrant adding retry-with-backoff to the engine’s Claude client
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.
AI agents need org charts, not pipelines
Every agent framework organizes around tasks. The agencies that actually work organize around competencies. The AI community is about to rediscover this the hard way.
The delegation problem nobody talks about
When your automated systems start finding real bugs instead of formatting issues, delegation has crossed a line most managers never see coming.
What your systems won't tell you
The most dangerous gap in any organization isn't between what you know and what you don't. It's between what your systems know and what they're willing to say.