2026-03-17 — Scout, triage, and grind
What shipped today
The big theme today was running the full autonomous pipeline end-to-end: scout the codebase for issues, triage them, then grind through the queue. Five issues were discovered by scout, triaged automatically, and four were executed through the full dev/QA/merge cycle in a single session.
The most significant change was extracting the shared Brevo email sender (#457). Five nearly identical requests.post() blocks were scattered across marketing_email, social/commands, outreach_cmd, cos, and briefing/email — each constructing headers and payloads independently. Now there’s a single send_email() function in paulos/core/brevo.py that handles both sender-by-name and sender-by-id patterns, with optional replyTo/tags/bcc support. This eliminates a class of bugs where one call site gets updated but others don’t.
The Sentry triage pipeline got a defense-in-depth improvement (#458): a two-pass dedup strategy that first checks by exact title match (fast path), then falls back to searching for the Sentry short_id in issue bodies. This catches cases where Sentry renames an error between triage runs — previously that could create duplicate GitHub issues.
Test coverage expanded with 42 new tests across steward schema/CLI (#455), roles/labels (#456), the Brevo sender (#457), and a fix to two pre-existing test failures in the cos command JSON output (#463).
Completed
- #454 — Add missing timeout to Brevo API calls (closed as already done — all calls had timeouts)
- #455 — Add tests for steward_cmd and steward_schema (28 tests)
- #456 — Add tests for roles.py (14 tests)
- #457 — Extract shared Brevo email sender to reduce duplication (11 tests)
- #458 — Sentry dedup: add title-drift guard for issues with changing titles (7 tests updated)
- #463 — Fix pre-existing test_cos_command JSON parse failures (2-line fix)
Release progress
- March 2026: 24/24 closed
- April 2026: 2/2 closed
Carry-over
- Deploy latest to server (
ssh paul@speedy-gonzales... && git pull) — multiple changes landed today - All open issues are in backlog (no milestone) — no active sprint work queued
Risks
- None identified.
Flags and watch-outs
- The orchestrate interval was reduced to 5 minutes today — monitor for rate limiting or excessive API usage
- The Brevo refactor touched 5 files across commands and core — watch for any email-sending regressions in production
Next session
- Deploy to server — multiple changes since last deploy
- Run
/scout --autoagain to find the next batch of improvements - Consider milestoning some backlog items for April if starting a new sprint
- Check orchestrate loop health after the 5-minute interval change
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.