Paul Welty, PhD AI, WORK, AND STAYING HUMAN

What shipped today

Closed out four milestones — Content schema and CMS, DISC onboarding and user profiles, Adaptive lesson delivery, and First module: Delegation — representing 51 shipped issues across the project’s first month. The issue queue dropped to a single carry-over item (GH-172, simulation context passing), which belongs to the future Simulation practice milestone.

The main work was a full scout-prep-grind cycle. A /scout pass identified five issues across security, error handling, UX, data integrity, and tech debt. All five were prepped with detailed implementation specs and shipped through parallel grind agents in a single batch:

  • Security hardening: The scoreResponse server action accepted any authenticated user’s request — added a workspace membership check and scoped the DISC profile query to the user’s workspace, closing a privilege escalation vector.
  • Data integrity: assessment_responses had no workspace_id column, breaking the tenant-scoped pattern used everywhere else. Added the column, backfilled existing rows from memberships, set NOT NULL, and created four performance indexes across the hottest query paths.
  • Error handling: Three onboarding server actions silently swallowed Supabase errors — the advanceOnboardingStep, updateProfileAndAdvance, and completeOnboarding functions all redirected without checking if the DB write succeeded. Now they surface errors to the calling components.
  • UX fix: The DISC reminder banner linked to /assessment (404) instead of /assessment/disc.
  • Tech debt: Extracted three duplicate utilities (generateSlug, AssessmentFeedback interface, discLabels constant) into shared modules, cutting 14 lines of duplicated code across 7 consumer files.

All five PRs merged cleanly, the build passes, and the workspace_id migration was applied to the hosted Supabase instance. The grind pipeline ran without cross-contamination issues — each agent worked in its own worktree with explicit file staging.

Completed

  • GH-178 — Fix dead link in DISC reminder banner (PR #183)
  • GH-179 — Add workspace_id to assessment_responses and missing DB indexes (PR #187)
  • GH-180 — Fix silent error swallowing in onboarding server actions (PR #185)
  • GH-181 — Extract duplicate utilities: generateSlug, AssessmentFeedback, discLabels (PR #186)
  • GH-182 — Add workspace-scoped permission check to scoreResponse (PR #184)
  • Closed 4 milestones: Content schema and CMS (19 issues), DISC onboarding (8), Adaptive lesson delivery (16), First module: Delegation (8)
  • Applied workspace_id + indexes migration to hosted Supabase

Carry-over

  • GH-172 — Pass lesson context through to simulation practice (Simulation practice milestone, not urgent)
  • ANTHROPIC_API_KEY not set in web/.env.local — AI scoring gracefully degrades but won’t produce actual feedback until configured
  • Anonymous auth disabled on hosted Supabase — demo flow (/demo) won’t work until enabled in dashboard
  • Paul’s DISC assessment not completed — content shows default style, not DISC-adapted
  • Admin CRUD plan exists (11 issues for full content taxonomy management) but hasn’t been filed to GitHub yet

Risks

  • Six migrations from yesterday + one today were applied directly to production via psql, bypassing Supabase’s migration tracking — supabase db push may try to re-apply (guards are idempotent but should reconcile)
  • assessment_responses workspace_id backfill assumed one membership per user — if a user has multiple workspace memberships, only one was used

Flags and watch-outs

  • Grind worktree isolation worked cleanly this session (5/5 agents, no cross-contamination) — the explicit file staging approach fixed the stage_all=true issue from yesterday
  • The admin CRUD plan (confirm-delete component, module detail page, lesson CRUD, goals, assessments, questions) is designed and ready to file as 11 GitHub issues whenever the next milestone is kicked off

Next session

  • Set ANTHROPIC_API_KEY in web/.env.local to enable AI scoring feedback on assessments
  • Enable anonymous auth in Supabase dashboard if demo flow is needed
  • Complete DISC assessment as Paul to see DISC-adapted content in action
  • Decide next milestone: admin CRUD (11-issue plan ready), simulation practice (GH-172), or learner analytics
  • Consider reconciling manually-applied migrations with Supabase migration tracking (supabase db push or equivalent)
  • Plan the next milestone and file issues for it

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 day all five of my AI projects stopped building and started cleaning

I want to talk about something that happened this week that I almost missed because it looked boring. Five separate software projects — all mine, all running semi-autonomously with AI pipelines — i...

The silence that ships

Three projects independently discovered the same bug pattern today — code that reports success when something important didn't happen. The most dangerous failures don't look like failures at all.

When your work moves faster than your rules can keep up, governance quietly becomes theater

I want to talk about something that happened this week that looks like a technical problem but is actually a management problem. And I think it maps onto something most organizations are going to f...