The Harness Ate My RTMP Server

Spent the same afternoon doing two things to this repo: adding a local RTMP test server, then porting over the .ai/-anchored spec-driven harness I’d already built for Ballpark Genius, .ai/SPEC.md as a living feature registry, .ai/CHANGELOG.md, worktree/planning/verification docs, subagents, a symlink fan-out so CLAUDE.md/AGENTS.md/GEMINI.md/.cursorrules all point at the same source of truth instead of drifting into five copies of the same rules. Good day, on paper. Two real, useful things shipped.

Except the harness commit deleted the RTMP server. Not on purpose, not even noticeably, server.js, README.md, both package.jsons, gone, wrapped inside a commit whose diff was 807 insertions and 12 deletions and titled “chore(ai): spec-driven Superpowers agentic harness,” a message that gives you zero reason to go looking for what it quietly removed. The harness branch had been cut before the RTMP server existed, and by the time it landed, it landed on top of it instead of alongside it.

Caught it fast, one commit later: “fix: restore servers/rtmp deleted by mistake in harness setup,” git checkout from the commit before, put back verbatim, done in under three minutes once found.

The actual restore commit on GitHub, one parent commit after the harness landed, 5 files and +1,148 to put servers/rtmp back exactly as it was

The part worth sitting with isn’t the mistake, folks, branches diverging and clobbering each other on merge is just what branches do sometimes. It’s that the thing which ate the feature was, specifically, the tooling meant to make this kind of thing harder to get away with. .ai/SPEC.md exists to track “what shipped, what didn’t.” .ai/workflows/verification.md exists to say “check before you call it done.” I ported both into this repo in the same breath as breaking the rule they’re supposed to enforce, which makes me something of an idiot for the specific, narrow reason of building a smoke detector and then standing next to it while it didn’t go off. The harness didn’t catch itself doing it. I did, on a second look. Tooling that formalizes discipline is still not a substitute for looking.