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

Work log: Phantasmagoria — March 29, 2026

What shipped today

The session focused on two themes: hardening the test suite and implementing batch tech deduplication across the entire generation pipeline.

Test coverage expansion. The test count jumped from 385 to 451 — a net gain of 66 tests across 5 new or expanded test files. The first wave covered shared generator utilities (parse_json_response, check_pure_upside_options, validate_output) and config/rolling functions (_deep_merge_dicts, roll_reward_scope, roll_tone, roll_site_weirdness, roll_int_range). The second wave added tests for create_release.py — the release scaffolding orchestrator — with mocked AI calls for generate_release_yaml. A scout scan found 5 situation events missing the required situation_type field, which was causing the integration test to fail; those were fixed across both dark_discoveries and veiled_directive releases.

Tech deduplication pipeline. The long-standing PRODUCT.md known issue about narrow tech variety in batch generation has been addressed end-to-end. The work decomposed into three pieces: (1) an extract_used_techs() utility that scans event YAML for give_technology, add_research_option, and add_tech_progress effects; (2) tech repetition detection in validate_batch_diversity() that warns when the same specific tech appears in multiple events; and (3) a “technologies already awarded” section injected into all 4 generators’ AI prompts to steer the model toward unused alternatives. This is prompt-level guidance, not hard enforcement — the AI can still repeat techs if it has good reason — but the combination of validation warnings and prompt context should meaningfully improve variety.

Infrastructure cleanup. Dependencies were bumped (anthropic>=0.80.0, openai>=2.20.0), silent error swallowing in generate_site.py and generate_situation.py was fixed (bare except: continue now logs warnings), and .scout.yml was added for the /scout skill.

Completed

  • #250 — Silent error swallowing in generate_site.py and generate_situation.py
  • #251 — Fix failing integration test: dark_discoveries missing situation_type
  • #252 — Add unit tests for generator modules (decomposed into #255-#257)
  • #253 — Implement tech deduplication in batch generation context (decomposed into #258-#260)
  • #254 — Update dependency versions (anthropic, openai)
  • #255 — Test shared generator utilities
  • #256 — Test generator config/rolling functions
  • #257 — Test create_release.py
  • #258 — Extract used techs from event data for batch dedup
  • #259 — Add tech repetition detection to validate_batch_diversity
  • #260 — Add used-techs context to batch generation prompts

Release progress

  • v1.5: 18/18 closed (complete)
  • v2: 5/5 closed (complete)

Carry-over

  • Stage 3/4 split plan exists but hasn’t been executed (stellaris_mod_linter → validator rename, check_c3_to_ship split)
  • Forge World (forgeworld.app) PRODUCT.md spec was drafted earlier today but no code yet

Risks

No new risks identified. The tech dedup is prompt-level only — if AI ignores the guidance, duplicates still pass through. The validator warns but doesn’t block.

Flags and watch-outs

  • The data/releases/celestial_equinox/ directory has backup files from a Stage 1 reset (events_pre_stage1_reset_*, SUMMARY_pre_stage1_reset_*) that are untracked. These are intentional backups but may confuse git status.
  • All 4 generators have copy-pasted build_existing_events_context and _build_tech_context functions. A future refactor to extract these to a shared module would reduce maintenance burden.

Next session

  1. Execute the Stage 3/4 split plan — the plan file at .claude/plans/shimmering-skipping-oasis.md has the full spec. Rename linter → validator, split check_c3_to_ship into check_c3_to_c4 + check_c4_to_ship, update docs.
  2. Run /scout to find new work — the queue is empty after clearing 11 issues today.
  3. Consider the two backlog items — #179 (un-gate situation generation) and #222 (early/mid/late game timing) are the only open issues. Both are feature work that Paul may want to prioritize.

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.