2026-03-15 — Paulos
What shipped today
Two sessions today — one interactive, one autonomous. The interactive session built three new features (newsletter list command, shared humanizer, editorial newsletter status) and fixed legacy data. The autonomous session ran a test coverage blitz. Together they shipped 14 issues and grew the test suite from 1009 to 1094 tests.
Newsletter and content tooling. Added paulos newsletter list CLI command with --all flag, showing editions in a TUI table with edition number, sent/staged status, date, and subject. Fixed 14 legacy newsletter posts in polymathic-h that were missing sent: true — they showed as “staged” even though editions 1-8 were sent months ago. Added newsletter upcoming status (subject + date) to the editorial briefing email. Tested the COS briefing email live and confirmed the information pyramid from #410 is working.
Humanizer. Extracted the AI-pattern-stripping humanizer from social/notes.py into a shared paulos/core/humanize.py module. Added crutch phrase elimination (“This is what I keep coming back to”, “So here’s the question I’m sitting with”) and spoken-text rules. Wired it into the podcast CLI pipeline and the /reflect skill so all reflection scripts get a humanize pass before saving. Ran the humanizer on the “Most of your infrastructure is decoration” post and pushed the cleaned version.
Test coverage blitz. The autonomous session ran the full pipeline — scout, triage, prep, exec — discovering untested modules, creating issues, and implementing tests. The test suite grew by 8.4% across 12 modules that previously had zero or minimal coverage.
The most interesting find was a real bug in social/blurbs.py — a variable name mismatch in the style-stripping regex (html instead of text) that caused script tag content to leak through when both <script> and <style> tags were present. The tests for social blurbs caught it; it was fixed and shipped in #429. Five broken tests (not flaky — actually broken by prior code changes) were also diagnosed and fixed: tmux C-m vs Enter, single-symlink refactor in setup_cmd, and missing resolve_workspace mock in orchestrate.
The second wave of work created tests for types (regex patterns), humanize (LLM wrapper), calendar_cmd, activity_cmd, and newsletter (edition discovery). Two large “needs-decompose” issues (#433 briefing package, #434 github package) turned out to already have extensive test coverage (54 and 103 tests respectively) — closed as already done.
Completed
- #424 — Fix 5 remaining flaky tests (orchestrate, setup_cmd, tmux)
- #425 — Add tests for podcast/generation.py
- #426 — Add tests for social/blurbs.py (+ fix style-strip bug)
- #427 — Add tests for social/notes.py
- #432 — Add encoding=utf-8 to 3 remaining file I/O calls
- #435 — Add tests for podcast/commands.py and social/commands.py
- #436 — Add tests for cos.py (closed as already done)
- #439 — Add tests for core/types.py
- #440 — Add tests for core/humanize.py
- #441 — Add tests for commands/calendar_cmd.py
- #442 — Add tests for commands/activity_cmd.py
- #443 — Add tests for core/newsletter.py
- #433 — Briefing package tests (closed as already done — 54 tests exist)
- #434 — GitHub package tests (closed as already done — 103 tests exist)
Carry-over
- #396 still needs decomposition (marketing email parent — carried over from 3/13, 3/14)
- 6 issues remain in backlog (logging, assistant design, config cleanup, Discord sync)
- No active milestone for new work — consider creating April milestone
Risks
- None identified. Test suite is healthy at 1094 tests, all passing.
Flags and watch-outs
- The
frontmatterlibrary emitsDeprecationWarning: codecs.open() is deprecated— harmless but noisy. May want to suppress or upgrade eventually. - Python 3.14 is the active interpreter — some Click APIs differ (no
mix_stderron CliRunner).
Next session
- Decompose #396 (marketing email parent — carried over 3 days now)
- Run
/scoutbroadly (not just tests) — error handling, dead code, feature gaps - Consider promoting backlog items (#344 CLI logging, #221 eliminate project.toml)
- Create April milestone and assign new work
- Add
stageCLI stub topaulos newsletter(currently onlylistis a CLI command — Paul triedpaulos newsletter stagefrom terminal and got an error) - Test the humanizer on the next
/reflectrun — first time it will be live in the pipeline
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 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.
Most of your infrastructure is decoration
Organizations are full of things that look like governance, strategy, and quality control but are actually decorative. The trigger conditions nobody reads, the dashboards nobody checks, the review processes that rubber-stamp. When you finally audit what's functional versus ornamental, the ratio is alarming.