Skip to main content
Paul Welty, PhD AI, WORK, AND STAYING HUMAN

Work log — 2026-03-31

What shipped today

The orchestrate loop underwent a complete architectural overhaul, moving from persistent tmux sessions to immutable jobs. The old model kept long-running Claude Code sessions alive for every project — 15+ tmux sessions accumulating context rot, each one slowly degrading until it confused itself or hit limits. The new model treats every piece of work as a subprocess: claude -p runs in the project directory, loads context from the repo’s CLAUDE.md and skills, executes, and exits. No session state survives between jobs. Knowledge lives in the repos, not in memory.

This required two passes. The first built run_job() around ephemeral tmux sessions — create, execute, kill. Paul correctly pointed out this was still tmux, not the immutable execution atom he’d described. The second pass replaced the tmux lifecycle entirely with subprocess.run(["claude", "-p", prompt]). Only Charlie (the paulos session) retains a persistent tmux session for interactive work. Everything else is a subprocess that starts, works, and dies.

Along the way, the Airtable backend was ripped out entirely (dead code since the newsletter project was shut down), and run_eod() and run_rollover() were converted to use run_job() for their per-project steps. The test suite grew from 31 to 40 tests covering the new subprocess-based runner, gate functions, timeout handling, and the persistent/ephemeral split.

Completed

  • Immutable job runner (run_job + _run_cli) using claude -p subprocess
  • Rewired run_cycle(), run_eod(), run_rollover() to use run_job()
  • Removed Airtable backend (airtable_client.py, activity_log integration, tests)
  • Removed newsletter workspace from workspaces.toml
  • Added Charlie/Synaxis identity to CLAUDE.md (COO framing, org chart)
  • Killed all 15 stale tmux sessions

Release progress

  • March 2026: 24/24 closed (complete)
  • April 2026: 2/2 closed

Carry-over

  • Cron for nightly EOD: run_eod needs to run at 11pm on speedy-gonzales. Paul said “not yet” — revisit next session.
  • Blog post “Kill your sessions”: draft in polymathic-h, needs Paul’s voice pass before publishing.
  • Deploy to server: the new orchestrate code needs git pull on speedy-gonzales to go live.
  • First real test: run paulos orchestrate run -p authexis to watch the claude -p lifecycle in action.

Risks

  • The claude -p path is untested in production. First real run will validate that skills load correctly when invoked via -p flag in a project directory. If skills don’t load, we’d need to pass the skill content explicitly in the prompt.
  • No automated EOD means work logs won’t be written unless someone runs /close manually or sets up the cron.

Flags and watch-outs

  • PERSISTENT_SESSIONS = {"paulos"} is the kill switch. If another project needs persistence temporarily, add it to the set.
  • The _inject_and_wait path still exists for Charlie’s tmux session — it’s not dead code, it’s the persistent-session path used by sum-up, reflect, and any direct paulos orchestrate work.

Next session

  • Deploy updated orchestrate to speedy-gonzales (ssh paul@speedy-gonzales... && git pull)
  • Test paulos orchestrate run -p authexis end-to-end with the claude -p runner
  • Set up nightly cron for EOD when Paul gives the green light
  • Review and publish the “Kill your sessions” blog post draft

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 case for corporate amnesia

Most organizations worship institutional memory. But what if the thing they're preserving is mostly decay?

Your design philosophy is already written

Builders who work across multiple projects leave fingerprints everywhere. The same mind solves the same problem differently in every domain — and usually doesn't notice. You need someone to read it back to you.

The day nothing satisfying happened

The most productive day in an organization's life usually looks like nothing happened. No launches, no features, no announcements. Just people quietly making the existing work more honest.