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

What shipped today Today’s session had two clean themes: fixing the generator so it actually works, and clearing the entire archive restoration backlog.

The generator fix was the urgent work. Yesterday’s hardening (#158, outcome template enforcement) had an unintended consequence: templates and roller were designed to different philosophies, producing a 100% generation failure rate. The templates assumed flat per-category ranges (e.g., normal resource_cost max 350), but the roller uses value-equivalency where research costs are deliberately high (up to 1600 energy to match research’s late-game value). We recalculated all template ranges from the roller’s actual output across all four scopes, downgraded archetype-avoid checks to advisory since the roller assigns effects without considering archetypes, and shipped the alignment. Generation went from 0/9 to 9/9 immediately. Two follow-up issues discovered during the playtest pipeline run were also fixed: sprite hint validation now catches and replaces invalid AI-generated picture_hint values before YAML is saved (#163), and follow-up events now record the adjusted reward_scope the roller actually used instead of the parent’s scope (#162).

The second theme was a systematic sweep of every archive restoration issue in the backlog. Eleven issues (#110, #111, #112, #114, #115, #116, #118, #119, #120, #123, #128) were reviewed and closed — every single one. The pattern was consistent: legacy Airtable exports and early AI-generated content all share the same systemic problems (wrong research resource types, broken trigger chains, pure-upside options, missing required v1 fields) and the themes are already saturated in the live dark_discoveries release. None were worth restoring; generating fresh v1-compliant content is faster and more reliable than rewriting legacy YAML. The one notable file was the_silent_calculus (#118), which had genuinely excellent narrative quality — flagged as the best candidate if hand-restoration is ever on the table, but still not automatable as a grind task.

Completed

  • #163 Constrain AI sprite hints to known vanilla sprite list
  • #162 Follow-up events should inherit adjusted reward_scope from roller
  • Aligned outcome templates with option roller ranges (untracked — template/validator calibration)
  • #110 Review archived dark_discoveries whisper anomalies — closed (not worth restoring)
  • #111 Prep archived whispers_beneath_the_veil — closed (not worth restoring)
  • #112 Review archived whisper situations — closed (premature, blocked on v2 contract)
  • #114 Prep archived the_nights_veil — closed (not worth restoring)
  • #115 Prep archived the_veil_between — closed (not worth restoring)
  • #116 Review remaining complex veil site chains — closed (not worth restoring)
  • #118 Prep archived the_silent_calculus — closed (not worth restoring, best narrative quality)
  • #119 Prep archived the_watching_vestige — closed (situation, blocked on v2)
  • #120 Review remaining hollow anomalies — closed (not worth restoring)
  • #123 Review overlapping archive-debt standalones — closed (near-duplicates)
  • #128 Prep archived the_archive_beneath — closed (too costly, thematically redundant)

Release progress

  • v1.5: 2/3 closed — only #136 (auto-generate mod submission description) remains
  • v2: 1/2 closed — only #135 (situation contract) remains

Carry-over

  • Run the end-to-end playtest loop now that all three generator fixes are on main: create release, generate, validate, render (normal pacing), lint, load in Stellaris
  • The earlier playtest_march run was cleaned up — need a fresh one with all fixes applied

Risks

  • The template alignment is calibrated to the roller’s current EFFECT_BLOCKS and scope_multipliers. If either changes, the templates need recalculation. There’s no automated check for this drift.
  • Archive restoration debt is now fully resolved for dark_discoveries, but the decision was “generate fresh” not “hand-curate” — the quality of generated content in actual play hasn’t been validated yet

Flags and watch-outs

  • data/allocator.json was reset after cleaning up the throwaway playtest_march release — IDs allocated during that test run were reclaimed
  • The archive restoration sweep established a clear precedent: legacy content with systemic v1 contract violations is not worth restoring. This applies to any future archived content found in other releases too.
  • Windows is still the real smoke-test target even though development is on macOS

Next session

  1. Create a fresh release with scripts/create_release.py
  2. Generate with scripts/generate_release.py --release-code ... --execute — all three fixes are now live
  3. Validate source and outcomes — expect 0 warnings this time (no more template misalignment or follow-up scope issues)
  4. Render with normal pacing (stellaris_mod_renderer.py --platform windows — no --play-test)
  5. Lint with stellaris_mod_linter.py
  6. Load in Stellaris and judge content quality — this is the real test
  7. If content is good enough, prep and exec #136 (mod submission description) to close out v1.5

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 delegation problem nobody talks about

When your automated systems start finding real bugs instead of formatting issues, delegation has crossed a line most managers never see coming.

What your systems won't tell you

The most dangerous gap in any organization isn't between what you know and what you don't. It's between what your systems know and what they're willing to say.

Most of your infrastructure is decoration

Organizations are full of things that look like governance, strategy, and quality control but are actually decorative. The trigger conditions nobody reads, the dashboards nobody checks, the review processes that rubber-stamp. When you finally audit what's functional versus ornamental, the ratio is alarming.