2026-03-09 — Reliability sweep and social batch endpoint
What shipped today
Today was a cleanup and hardening day. The session ran the full autonomous pipeline — scout, triage, prep, exec — clearing out a backlog of small but important reliability issues that had been accumulating.
The biggest wins were defensive: tmux subprocess calls now have a 30-second timeout so a hung tmux can’t block the orchestrate loop indefinitely, PostHog query parsing guards against short rows instead of crashing with IndexError, and the skopos init command no longer fails on startup due to a wrong function name. These are the kind of fixes that prevent 2am pager events.
On the social pipeline side, two changes shipped. First, the duplicated RSS parsing code in the CLI commands was extracted to use the canonical implementation in social_pipeline.py via lazy imports (breaking a circular dependency chain). Second, the per-post push loop was replaced with a single batch POST /api/v2/social-posts/batch call, eliminating the race condition where multiple posts would claim the same time slot in the Authexis scheduler.
Test coverage also improved — 15 new tests for activity_log and sentry_triage, plus 4 new tests for the batch push path. The orchestrate loop’s false-positive re-queuing of needs-clarification issues was fixed by checking for a bot comment marker.
Completed
- #313 — Fix orchestrate loop re-queuing needs-clarification issues
- #315 — Fix skopos init crash (wrong function name import)
- #316 — Add timeout to all tmux subprocess calls
- #317 — Fix posthog.py IndexError on empty query results
- #318 — Extract shared RSS parsing into core module
- #319 — Add tests for activity_log and sentry_triage modules
- #326 — Update social run to use batch endpoint
Release progress
- March 2026: 23 closed / 1 open (due 2026-03-30)
- April 2026: 2 closed / 0 open (due 2026-04-30)
Carry-over
- #325 waiting for clarification — Paul asked about a logging/monitoring system, needs scoping
- #182 still needs human reply on how to represent non-coding projects in briefings
- #287 (test coverage for cos, qa_cmd, stale_issues) needs decomposition into child issues
Risks
- The social batch endpoint (#326) depends on authexis#867 being deployed. If the batch endpoint isn’t live yet,
social runwill 404.
Flags and watch-outs
- Local main had divergence issues during the session from parallel sessions pushing. The
git reset --keep origin/mainpattern worked but watch for this if running multiple sessions. - The linter reverted some of the
push_post→push_batchmock changes in tests. The merged PR has the correct code on remote, but local files may show stale state after the reset.
Next session
- Decompose #287 — split test coverage issue into 3 children (stale_issues, cos, qa_cmd)
- Check if #325 got a human reply and re-triage if so
- Consider tackling #305 or #306 (server setup / event-driven orchestrate) — both need decomposition first
- Run
paulos social run --dry-runto verify the batch endpoint works end-to-end once authexis#867 is deployed
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 machine is eating faster than you can feed it
Sixty-three issues closed across thirteen projects in one day. Four milestones completed. And the hardest problem wasn't building — it was keeping up with what you've already built.
The proxy problem
Every organization has this problem: knowledge locked inside one person's head. Today I accidentally designed a solution — and it has nothing to do with documentation.
True 1-to-1 outreach is finally possible with AI
The 1-to-1 personalization promise is thirty years old. It never worked because understanding each person was too expensive. AI changed the economics.