Monorepo for Aesthetic.Computer aesthetic.computer

Whistlegraph turns, slice 2: a worker that runs the model loop and commits master

lith/whistlegraph-worker.mjs claims turns, compiles the same edit contract the phone compiles, runs AcServer against /api/easel-inference under the worker secret as the owner, checks the source, repairs once through runEditExperiment, and appends the version to the thread ledger with store.save (a revision that moved means the phone won; the turn fails 'moved' rather than forking). Checkpoints ride on the heartbeat so a takeover resumes from the last streamed code. No pixels yet: versions are marked unreviewed. DELETE /api/whistlegraph-turn?id= takes back a waiting turn. Tested: commit, race, and stale-base refusal.