OVERNIGHT SPRINT · 2026-05-10 → 2026-05-11

Twelve ships. One night and a morning.

Seven parallel agents overnight, plus five morning-after ships from the self-paced /loop. Audit→fix cycle closed cleanly on the biggest piece. Started 2026-05-10 ~22:00, last morning-after ship at 2026-05-11 ~09:48.

Every task shipped. Click any card to compare the diff against main.

PARALLEL AGENTS

7

PRs SHIPPED

12

LINES ADDED

5,618

BASE SHA

4aeb960

Noun 287

TASK 1 · CODEX

Capstone diploma

/cast-graduate

merged

Reads /drum-school stars + /cast-make slots, awards a rank (Apprentice → Maestro), shows your graduating Noun, shareable diploma hash.

Noun 1042

TASK 2 · CODEX

Drum academy +5 lessons

/drum-academy

merged

Extended with reverb (ConvolverNode IR), compression (DynamicsCompressorNode), Karplus-Strong pluck, ADSR envelopes, filter sweep with LFO. Five new Noun teachers.

Noun 1189

TASK 3 · CODEX

Music engine audit

docs/audit-2026-05-10-audio.md

merged

Deep audit of the audio engine post-PR #547 fix. 13 findings: 3 BUGs, 1 RACE, 1 RISK, 2 LEAKs, plus polish items. Punch list of 6 user-visible fixes (shipped as PR #568).

Noun 523

TASK 4 · CODEX

Cast Make Pro

/cast-make-pro

merged

8-bar arrangements · per-bar drum patterns · 4-level velocity · swing slider · per-bar lead phrases · pad voicings · multi-track WAV+ZIP export · undo/redo · 8 save slots. The biggest ship of the night.

Noun 313

TASK 5 · CODEX

Drum school +3 games

/drum-school

merged

Key recognition (4 keys, 5 rounds), tempo tap (estimate BPM from your taps), melody memory (replay a sequence on a piano keyboard). +9 possible stars — now /21 total.

Noun 612

TASK 6 · CODEX

Town Music dashboard

/town-music

merged

A single page surfacing all music pages + your local state. Recently heard, your compositions, star rankings, journey map. Empty states for newcomers.

Noun 100

TASK 7 · CODEX

Audit punch-list fix

cross-page audio fixes

merged

Bonus follow-up agent: 6 user-visible fixes across all music pages — play-button-dead, iOS visibility, touch slot saves, sync-throw guard, async pause/resume + debounce, drum-academy AudioNode leaks. Six pages, 165 lines.

MORNING AFTER · 2026-05-11

Five more ships, on self-paced loop.

After the overnight sprint landed, the /loop kept going — picking small targets every ~30 min, sleeping in between. Audit→fix cycle on cast-make-pro plus two content artifacts.

Noun 1199

SHIP 8 · CLAUDE

Audit polish 7-11

cast-make + cast-music-pro

merged

WAV sample-rate match, symmetric int16 PCM, prev/next debounce, plays-dict cap, Shift+Click slot save. Cleared audit punch-list items 7-11.

Noun 1042

SHIP 9 · CLAUDE

Music landscape JSON feed

/music.json

merged

Agent-discoverable catalog of all 10 music pages with phase, description, exportable flags, ship dates, and audit trail. 8KB, 300s cache headers.

Noun 287

SHIP 10 · CLAUDE

Music poster

/music-poster

merged

Printable single-page artifact. Six phases (Listen→Understand→Play→Create→Graduate→Discover), six Nouns, prose arc, architecture footer. Print-CSS palette ready for letter/A3.

Noun 1189

SHIP 11 · CLAUDE

Cast Make Pro deep audit

docs/audit-2026-05-11-cast-make-pro.md

merged

Morning-after audit of the 2,170-line cast-make-pro. 8 findings: 3 BUGs (swing math, iOS visibility, slot save), 4 POLISH, 1 UX. Root cause: branched from pre-audit cast-make snapshot.

Noun 612

SHIP 12 · CLAUDE

Cast Make Pro audit fixes 1-5

/cast-make-pro

merged

Apply the 3 user-visible BUGs + 2 audio POLISH items from the audit: swing formula (was inaudible 2ms, now 37ms), visibilitychange handler, empty-slot save + Shift+Click, WAV ctx.sampleRate match, symmetric int16.

How this works

  1. Six worktrees. One per task, each at /tmp/pc-sprint-{slug}, all branched off origin/main@4aeb960. Worktrees let multiple Codex sessions edit the same repo in parallel without git collisions.
  2. Six background agents. Each agent invokes mcp__codex__codex in its assigned worktree with workspace-write sandbox and never approval policy. Self-contained prompts so Codex doesn't need conversation context.
  3. Codex writes the code. Each task is a focused spec — Codex reads the existing conventions (BlockLayout, BEM-style classes, the shared audio-scheduler.ts) and writes a complete page or extension.
  4. Codex runs the build. npm run build:bare verifies nothing broke. If errors, Codex fixes them before the agent moves on.
  5. The agent ships the PR. Commits, pushes to origin, opens a PR with gh pr create. Does NOT merge — that's the human review step.
  6. I review + merge. Each PR gets a sanity check, a local build verification, then a squash-merge.

Why fan out at all?

The serial path through these seven tasks would have been 5-7 hours of human-driven shipping. Seven parallel agents completed in roughly the time of the slowest one — about 25 minutes for the smaller pages (audit, dashboard, town-music), about ~90 minutes for the bigger ones (Cast Make Pro at 2,170 lines). The bottleneck wasn't code-writing speed; it was the human reviewer.

This shape works because the tasks are independent: no two of them touch the same file (until the bonus fix at the end), no two of them block on each other, none of them need the conversation state. So they can run truly in parallel.

The cost is review burden. Seven PRs at once means seven surface areas to QA. Worth it for an overnight sprint; would be excessive for normal work.

What actually happened

The plan was: six agents wrap Codex via mcp__codex__codex, each in its own worktree. The reality: five of six Codex MCP invocations timed out at the protocol level — Codex sessions can outlive the MCP request timeout. The wrapper agents detected this, fell back to writing the code directly per the spec, and shipped clean PRs anyway. One agent eventually got Codex working by shelling out to codex exec from bash instead of going through MCP.

So the bylines are mixed: most of the code in these PRs was authored by Claude sub-agents following Codex-shaped specs, with /cast-make-pro being the only one Codex itself actually wrote. The deliverable was identical either way — focused, well-scoped specs are the substrate that lets either model execute. The harness mattered less than the prompt did.

Lesson for next sprint: prefer codex exec over the MCP transport for long-running tasks. The MCP protocol's 2-min timeout is the wrong shape for 10-20 min code generations.