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

Work log: Scholexis — March 12, 2026

What shipped today

This was a massive execution day for the Next.js port. The session covered two major tracks: shipping the energy check-in system end-to-end, and decomposing the remaining parent feature issues into grindable children.

Energy system complete. The energy check-in CRUD (#113) shipped first — server actions for upsert/delete with one-check-in-per-day constraint, a history page with EnergyDots visualization, and an interactive form with dot selector and range slider. Then the dashboard energy widget (#114) landed, adding inline quick check-in directly on the dashboard with optimistic updates. Users can now check in from the dashboard without navigating away, see their current level, and filter assignments/tasks by energy capacity. The energy filter toggle and server-side filtering were already in place from the dashboard build — the widget was the missing piece. #115 (energy badges and preferences) was closed as already implemented — the EnergyBadge component, dashboard integration, and profile preferences all existed from prior work.

Issue pipeline work. Decomposed three parent issues into grindable children. #59 (AI task breakdown) split into 4 children: schema tables (#118), Python engine handler (#119), breakdown UI (#120), and Realtime subscription (#121). #118 has no dependencies and was prepped to ready-for-dev — it’s the next executable issue. The other parent issues (#56, #57, #58) were decomposed in the prior session. The critical blocker remains #103 (academic year/term CRUD, labeled needs-decompose) which gates the entire CRUD chain: #105 → #107 → #108/#109 → #110/#111/#112.

Completed

  • #113 — Build energy check-in CRUD and history page (PR #116)
  • #114 — Add energy check-in widget and filtering to dashboard (PR #117)
  • #115 — Add energy badges and preferences to settings (closed as already done)
  • #59 — Port AI task breakdown to Python engine (decomposed into #118-#121)

Release progress

Next.js port: 36/52 closed (69%). 16 open issues remain — most blocked on the #103 academic structure chain.

Carry-over

  • #103 (needs-decompose) — Academic year and term CRUD with week generation. THE critical blocker. Must be decomposed next to unblock #105 → #107 → everything else.
  • #118 (ready-for-dev) — Commands and domain events schema tables. Independent, can be exec’d anytime.
  • #119, #120, #121 (ready-for-prep) — AI breakdown pipeline children, all blocked on #107 or each other.

Risks

  • The #103 → #105 → #107 dependency chain blocks 8 open issues. Until #103 is decomposed and its children executed, most of the remaining milestone work is stuck.

Flags and watch-outs

  • Profile preferences save via /api/profile PUT route (not a server action) — inconsistent with the server action pattern used everywhere else. Not blocking but worth noting.
  • The energy widget’s upsertCheckIn call catches redirect errors silently — standard pattern but means errors could be swallowed.

Next session

  1. /issue decompose 103 --auto — break academic year/term CRUD into grindable children. This unblocks the entire CRUD pipeline.
  2. Prep and exec the #103 children — these are the highest-leverage items in the milestone.
  3. /issue exec 118 --auto — commands + domain events schema (independent, quick win).
  4. Once #103 children land, prep #105 (course CRUD) which unblocks #107 → #108/#109 → #110/#111/#112.

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.