Work log: Authexis — March 17, 2026
What shipped today
Two themes: briefing pyramid/layering and continued hardening from the grind queue.
The biggest structural work was the briefing pyramid — decomposing #1331 into four child issues and shipping all four. The morning briefing email now has a three-tier information hierarchy instead of flat article/idea/content lists. Tier 1 (“Today’s highlights”) shows the single most important article, idea, and content piece as prominent gold-bordered cards. Tier 2 (“Top picks”) shows the next 2-3 items as compact grouped bullets. Tier 3 remains the existing flat sections for everything else. The implementation touched the full stack: ideas now sort by strength score instead of creation date (#1345), BriefingSlots gained six new tiered fields (#1346), the email template renders the three-tier layout (#1347), and the Claude prompt now identifies the highlight article with a “why this matters” note (#1348). Claude’s pick takes priority over raw ai_score ranking, with fallback to score-based selection.
The grind queue also processed a batch of issues from the previous session’s pipeline. Favicon rendering was fixed — the SVG marks were off-center and had transparent backgrounds that disappeared on dark browser chrome. The homepage metadata got a positioning refresh. The essay drafting system gained a “use text guideposts” toggle for bolding, italics, and subheads. Social post character limits were fixed to check assembled length (body + hashtags + URL). Auto-invite for unregistered workspace members shipped. Four new handler test suites landed. Error boundaries were added to 8 major web sections. SQL injection protection was added via column name whitelists. And the social metrics fetch loop got per-item error isolation.
Completed
- #1331 — Briefing pyramid/layering (decomposed into 4 children, all shipped)
- #1345 — Rank ideas by strength in briefing fetch
- #1346 — Add tiered data structure to BriefingSlots for pyramid layout
- #1347 — Restructure briefing email template for pyramid layout
- #1348 — Update Claude briefing prompt for tiered article grouping
- #1343 — Fix intermittent favicon — consolidate icon strategy and fix SVG
- #1339 — Update homepage hero copy — positioning refresh
- #1336 — Add “use text guideposts” toggle for essay drafting
- #1335 — Fix createSocialPost/updateSocialPost char limit to check assembled length
- #1333 — Auto-invite unregistered users when adding workspace members
- #1326 — Add tests for content_parse_transcript handler
- #1325 — Add tests for article_fetch_content handler
- #1324 — Add tests for content_create handler
- #1323 — Add tests for content_stage_start handler
- #1319 — Add tests for content pipeline handlers — batch 2 (parent, decomposed)
- #1318 — Remove 13 stale test files for non-existent handlers
- #1317 — Add error.tsx boundaries to major feature sections
- #1316 — Add column name whitelist to dynamic SQL UPDATE builders
- #1315 — Add per-item error isolation to social_fetch_metrics batch loop
- #1314 — Fix briefing interval check — SQL LIKE pattern doesn’t match JSON spacing
- #1292 — Fix shortenPost to account for hashtags and URL in assembled length
- #1215 — Add conversational filler phrases to humanizer prompt
Release progress
- v1.5: 1 open / 21 closed (dashboard redesign is the remaining issue — backlogged)
- v2: 0 open / 20 closed (all complete, due 2026-04-01)
- v1-outbound: 0 open / 19 closed (all complete, due 2026-04-14)
Carry-over
- The briefing pyramid is fully implemented but hasn’t been verified with a real briefing generation yet. Need to trigger one for Stacy’s workspace and visually inspect the email.
Risks
- Claude’s
highlight_indexis parsed from a JSON response with no validation that the index is within the article list bounds. The code handles this (falls back to score-based ranking), but a malformed response could silently downgrade the highlight selection without any logging.
Flags and watch-outs
- The pyramid tier-splitting happens after Claude returns themed sections — it re-flattens the sections to score-rank articles. If Claude groups articles into themes where the #1 article by score ends up not being the most thematically relevant, the Claude highlight pick will override. This is the intended behavior but worth watching in real output.
- v2 and v1-outbound milestones show 0 open issues — may be ready to close.
Next session
- Trigger a test briefing for Stacy’s workspace and verify the pyramid layout renders correctly in the email
- Close v2 and v1-outbound milestones if confirmed complete
- Run
/triage --autoto classify any new issues - Run
/scoutfor the next round of improvements - Check if the grind queue has new
ready-for-devissues to process
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.