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

Work log — 2026-03-29

What shipped today

Big day for Dinly — 13 issues closed across three major themes: cooking history visibility, test coverage, and reducing planning friction.

The most impactful work was making the app’s memory visible. A new /history page now shows what the family has cooked over time, grouped by week with cooked/skipped indicators and a “Most cooked” frequency stats card (top 10 all-time). The weeks list page got richer too — finalized weeks now show the actual recipe names that were cooked (not just “N candidates”), plus a compact feedback summary line showing cooked/total count and average rating when feedback exists. These changes directly address the product promise of “learning from what the family actually eats.”

On the reliability front, the test suite grew from 246 to 286 tests across 30 files. Three batch issues (#333, #334, #335) covered all previously untested server action files: weeks lifecycle (create, open/close voting), candidates (save, suggest), family member CRUD, recipe CRUD and bookmarks, shopping list generation, curate plan, resolve type candidates, household settings, and pantry management. Every action file now has auth checks and status guard coverage.

The “Repeat last week” feature on the candidates page removes the biggest friction point in weekly planning. When starting a new week with no candidates selected, a card appears offering to pre-populate from the last finalized cycle’s selections — one click to carry forward a stable rotation. The curate page also got better: vote requests from family members are now surfaced with star badges on requested candidates, so the cook can see what the family asked for while curating.

Completed

  • #322 — Past weeks list shows feedback summary (cooked count + avg rating)
  • #324 — Highlight requested recipes in curate candidate list
  • #325 — Add /history page showing meals cooked by week
  • #326 — Add recipe frequency stats to history page
  • #327 — Show cooked recipe names on weeks list for finalized weeks
  • #328 — Add loading.tsx and error.tsx to /history route
  • #329 — Add tests for untested core server actions (parent)
  • #330 — Add missing error.tsx boundaries to curate, resolve, preferences
  • #331 — “Repeat last week” shortcut on candidates page
  • #332 — Verify ICS calendar export API route has authentication
  • #333 — Tests for weeks server actions
  • #334 — Tests for family and recipe server actions
  • #335 — Tests for shopping, curate, resolve, settings, pantry actions

Release progress

All milestones fully closed:

  • March 2026: 8/8 closed
  • Phase 1–4: all closed

Carry-over

  • #318 (ready-for-prep) — AI suggestions in candidate selector have no error state or loading indicator. Only open issue remaining.

Risks

None identified. Test coverage is solid across all server action files. No new dependencies or migrations introduced today.

Flags and watch-outs

  • The recipe_bookmarks query on the weeks list page doesn’t filter by household directly — it relies on RLS + filtering against finalizedIds. This is correct but worth noting if RLS policies change.
  • The “Repeat last week” feature only queries the most recent finalized cycle. If a household skips weeks, it still grabs the last one, which is the intended behavior.

Next session

  • Prep and implement #318 — add error state and loading indicator to AI suggestions in candidate selector
  • Run /scout to find new work — the issue queue is nearly empty
  • Consider a visual QA pass on the new history page and weeks list feedback summaries

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 headcount lie

The assumption that work scales with people is so embedded in how organizations think that questioning it feels like questioning gravity. But one operator just ran ten parallel operations in a single day. The unit of capacity isn't the person. It's the decision-maker.

AI and the Götterdämmerung of Work

Work is dead. And we have killed it. AI didn't defeat the myth that human value comes from reliable output — we built the systems that exposed it. What comes next isn't replacement. It's revaluation.

Everything pointed at ghosts

Most organizations are measuring work they stopped doing years ago. The dashboard is green. The reports are filed. Nobody realizes the entire apparatus is pointed at ghosts.