osb.sh

NotebookEntry 002MorseMan

Letting MorseMan build itself overnight

A 10-hour loop on local models. A builder makes one change, tests and a judge decide whether it stays, and a playtester writes the next to-do list.

Before bed I set MorseMan up to keep improving while I slept, running entirely on local models in a tmux session.

Each iteration goes like this:

  1. Builder (a 9B model, up to 30 minutes) makes one small change. It works from the latest playtest report first, then the judge’s suggested fix, then the style backlog.
  2. Verify (about a minute): syntax, unit tests (Morse table, Farnsworth timing, Koch order, no untaught characters), and a headless browser run that plays stage 1 and measures the actual CW audio. If it fails, the change is thrown away.
  3. Capture: a perfect-copy bot plays through and saves 12 screenshots.
  4. Judge scores seven things from 1 to 5, including classic look, sprites, HUD and CW clarity. If the total drops by more than 4, the change is thrown away.
  5. Commit whatever survived.

Every third kept change, a playtest runs: a bot plays like a new ham, with human reaction times, typos, and sometimes waiting for a second call. Then a model playing “Elmer”, an Extra-class CW operator who teaches Koch classes, writes a ranked list of issues backed by the telemetry.

The judge prompt starts with: “You did not build this game, so don’t be generous.”

What I learned

  • Small changes plus a hard gate beat big ambitious ones. Anything that broke the audio timing never reached a commit.
  • The measured telemetry (gaps between calls, how many times each station was heard) is what made the playtester’s feedback useful instead of vague.
  • In the morning I review git log and the screenshots, then merge what I like.