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

Synthesis: April 2, 2026

April 2, 2026 — The day the breadsticks ran out

Five projects shipped today. The headline numbers are impressive — diktura alone closed 22 issues and went from “feedback inbox” to “full product surface” in one session. But the real story is what happened underneath: the fleet discovered the limits of its own automation, built a knowledge base, gave its engineer a face, and had to reckon with the fact that the all-you-can-eat plan has a manager watching the door.

Paulos: the architecture pivots twice

This was supposed to be the day we ran the orchestrate loop in production — deterministic dispatch, parallel close, Skopos voice, the whole thing. Instead, we spent the morning confirming yesterday’s work was solid (it was — three clean dev-loop runs in a row, Skopos voice landing on both Sonnet and Opus) and the afternoon tearing it down.

Anthropic’s updated Terms of Service broadly restrict programmatic use of subscription OAuth tokens outside Claude Code’s interactive interface. The claude -p dispatch pattern — Python spawning ephemeral subprocesses — falls into a gray area that could trigger an algorithmic sweep. The risk isn’t that Anthropic cares about one user running 30 issues a day on a $200/month plan. The risk is an automated detector that sees “this account spawns 30 claude -p subprocesses daily” and flags it as the pattern OpenClaw established: third-party harnesses riding consumer subscriptions.

The fleet reverted to tmux sessions driven by Paul directly via /loop. The deterministic code (context injection, priority cascade, PID-based locks) stays dormant in orchestrate_loop.py as the blueprint for an eventual API dispatch path. Two new issues (#669, #670) track the migration options. The immediate risk is low — we’re not dispatching programmatically anymore. The long-term risk is that subscription-backed automation has an expiration date, not because of policy enforcement, but because the limits will keep shrinking until the economics force the switch.

Practically, this means Paul runs sessions and Charlie monitors. Charlie’s ops tick reads tmux panes every 7 minutes, surfaces problems to Discord, and answers stuck sessions via send_keys. It’s a COO reading dashboards, not a harness dispatching jobs. The distinction matters architecturally and legally.

Other paulos wins: the humanizer switched back to Anthropic API (call_llm()) so all paulos CLI LLM calls are now API-keyed, never subscription. The ghost lock bug (#666) that blocked the fleet for hours yesterday was exorcised with PID-based locks. The dev-loop skill got anti-pattern narration guidance that actually works — Skopos stopped writing “Now reading file.ts” and started writing “Three of these five tables aren’t referenced anywhere. Impressive.” And Paul’s 707-file writing corpus got vector-embedded into a searchable knowledge base using sqlite-vec. Ask it about “organizational resilience” and it finds essays about the topic even when they never use those exact words.

Diktura: from inbox to full product in one session

Twenty-two issues closed. The session started with housekeeping (12 stale Dependabot PRs, 17 orphan branches) and ended with diktura having a changelog system (list, detail, editor, publish flow), broadcasts (read-only with analytics), app users (searchable with traits and feedback links), and a widget feedback system (public API endpoint plus embeddable JS snippet).

Every new feature follows the same vertical-slice pattern: server component pages, server actions with auth and workspace ownership checks, loading skeletons, empty states. This consistency came from the dev-loop executing against well-prepped issues — each issue had a clear acceptance criteria list, and Skopos followed the same architectural patterns established by earlier features.

CI was rebuilt from scratch — the old Rails-only pipeline (brakeman, rubocop) was replaced with Next.js build, vitest, pytest, and npm audit. Test coverage went from near-zero to 44 tests across 6 files. The test coverage risk from RISKS.md was marked mitigated.

The critical carry-over: diktura.io is not deployed. The new stack has no Vercel linking. The public site is down. All this work is committed and tested but invisible to the world.

Authexis: prospect features shipped same day

A prospect conversation at mid-morning produced four feature requests. By afternoon, all four were implemented: redo/revise/reject buttons on the interview stage (#1914), voice import during onboarding from existing writing samples (#1915), editable steering guidance in the content detail view (#1911), and the security upgrades that were already in the queue. The SDK vulnerability fix and lodash upgrade shipped alongside the prospect features without slowing them down.

The doc audit from yesterday’s session paid immediate dividends — with DECISIONS.md trimmed from 43K to 10K, the dev-loop context window had room for actual reasoning. Seven issues closed. The project went from “lots of cleanup to do” to “queues empty, running idle” by end of day.

Two prospect features (curated briefings, white-label briefings) were initially filed on authexis but belong on eclectis — briefings are an Eclectis feature, not an Authexis one. The misplaced issues were re-filed correctly.

Eclectis: security hardening and empty queues

Five issues closed, all from the scout run. The highest-leverage fix was two lines: the podcast RSS feed endpoint used a LIKE query that let any hash prefix authenticate (#655). Tightened to exact 12-char hex match. The onboarding dead-end was fixed with a welcome banner showing when the first briefing will arrive (#658). Claude chat retry logic got 8 tests (#657). A dead code investigation (#656) turned out to already be resolved — closed with explanation.

The three prospect-driven briefing features (#659-661) arrived but are too vague to spec. All routed to needs-clarification with specific questions for Paul. The queues are empty. The project is in maintenance mode until Paul provides product direction on the briefing features.

Synaxis-AI: methodology complete, client routing live

The methodology is now genuinely complete: 14 deliverable types with guides and templates, 3 playbooks, full skill/persona/reviewer infrastructure, and the first T3 atom (website deploy). Synaxis can now produce execution-layer deliverables, not just strategy documents.

The inbound email webhook now auto-routes emails to the correct client by matching sender domains against the Notion Clients database. The Notion workspace was restructured — Decision Log and Activity Log both got Client, Deliverable, and Engagement relation columns for full cross-client traceability.

The Authexis test engagement produced two deliverables (onboarding questionnaire, competitive analysis) before Paul realized mid-session that client work belongs in Notion, not GitHub. The deliverables were committed, pushed, then removed. The methodology execution was validated but the client work pipeline wasn’t — those deliverables should have flowed through agency-loop and Notion from the start. Seven misplaced issues were closed with a clear rule documented in DECISIONS.md: GitHub for methodology, Notion for client engagements, product repos for product features. Three different systems, three different concerns.

Authexis was created as a client in the Notion workspace with an engagement record and both deliverables migrated to the Deliverables table.

Cross-cutting themes

Identity is infrastructure. Skopos got its own Discord bot, its own avatar, its own voice guidance. Charlie kept its identity separate. The dev-loop skill now posts as Skopos to project channels, not as Charlie to #paulos. When you have multiple AI agents in one system, they need distinct identities or nobody — human or machine — can tell who said what.

The ToS wall. Every team building automation on top of AI subscriptions is going to hit this. The subscription model assumes human-speed interaction. Programmatic dispatch breaks that assumption. The response is either: comply (switch to API), evade (tmux injection), or wait (hope the policy clarifies). We’re doing all three simultaneously — tmux now, API later, watching the news always.

Doc audits are performance engineering. Three more projects trimmed today (scholexis, polymathic-h, phantasmagoria) on top of yesterday’s two. The pattern is consistent: DECISIONS.md files accumulate tombstones for completed work that nobody prunes. A 35K file becomes a 12K file with zero information loss because two-thirds of the content documented things that already shipped. On the API path, every kilobyte has a dollar value.

Queues empty faster than they fill. Authexis, eclectis, and diktura all hit empty queues today. The dev-loop is efficient enough that scout runs can’t keep up with the consumption rate. This is a good problem — it means the fleet needs more scouts, not more executors.

Carry-over

  • diktura deployment — the new stack is not live. No Vercel linking, no production environment. All the work from today is invisible.
  • API dispatch path (#669) — the long-term solution to the ToS question. Requires rebuilding the tool-use runtime (Read, Write, Edit, Bash, etc.).
  • Railway/Vercel webhook automation (#665) — deploy failures should auto-create issues. Paul researching webhook capabilities.
  • Eclectis briefing features (#659-661) — waiting on Paul’s product direction.
  • diktura-engine healthcheck (#56) — Railway build succeeds but /health endpoint doesn’t respond. Commands queue silently broken in production.
  • Blog post draft — “Every organization is full of unmarked graves” ready for review in polymathic-h.

Risks

  • Anthropic ToS on subscription automationclaude -p dispatch dormant but the policy could tighten further. API fallback is filed but not built.
  • diktura-engine down in production — healthcheck failing, commands queue accumulating silently.
  • No automated alert pipeline — Railway, Vercel, Sentry failures arrive as emails nobody sees.
  • Weekly subscription quota at 70% — dev-loops consumed most of it. Sonnet was 10%. Model selection matters for budget.

By the numbers

ProjectIssues closedKey work
diktura22Full product surface: changelog, broadcasts, users, widget. 44 tests. CI rebuilt.
authexis83 prospect features, 2 security upgrades, doc audit, test coverage
eclectis5RSS hash fix, onboarding UX, retry tests, dead code cleanup
synaxis-ai12Methodology complete, T3 atom, client routing, Authexis engagement, issue cleanup
paulos4Humanizer API, auto-tease, ghost lock fix, knowledge base

Total: 51 issues closed across 5 projects. 20 paulos commits. Skopos identity live. Vector knowledge base operational. Architecture pivoted twice.

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.

Delegation without comprehension is just prayer

The organizations that survive won't be the ones that automated the most. They'll be the ones that figured out what to stop delegating.

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.