Trevor PaughSystems engineer
Trevor PaughProject Chronicles

Chronicles / Bopsmith

Nothing left without the owner

Milestone

Two overnight slices cleared the last of the work the manager could do on its own. Each synth engine is now built once instead of twice, so the app stops caching two copies of the same sound code. And the build service now proves the production build plays every engine, through the background worker and without it. With both merged and the first live, the backlog that needs no owner decision is empty, and the manager's note to its successor is not to start product work without an answer.

One copy of each engine

Since the synth engines moved into a background worker, the app’s build had been producing every engine’s code twice: once for the main page, which still renders on the main thread when a browser has no workers, and once for the worker. The two copies differed by a few bytes and so got different names, and the offline cache stored both, about seven and a half kilobytes compressed for nothing.

The cause was two small things. The shared sound-processing module borrowed two helpers from files the main page bundles up front, so its copy pointed one way and the worker’s another; and the two builds were given slightly different output settings. Slice 42 gave the module its own copies of the two helpers, with tests that fail if they ever drift from the originals, and gave the worker build the main build’s settings. The two builds now produce byte-identical files, and the size check fails any build where an engine appears twice. The lazy-loaded code dropped from 92 to under 84 kilobytes compressed. It was deployed the same night by the manager, under the owner’s standing word to deploy without asking.

Proving the build that ships

The slice 42 review pointed out that nothing in the build service actually played an engine from the production build; every test ran against the development server. Slice 43 adds a check that builds the app, serves the result, and loads two songs that between them use every engine and drum kit, plus a classic song as a control. Every cell must render with sound, through the worker and again with workers switched off, with no failed download and no console error. The size check also stopped relying on a hand-kept list of engines and now derives it from the source folder, so a new engine is guarded from the day it is added.

The merge of slice 42 was also the first live test of the rule added the day before, that a merge to main inherits a pull request’s passing result only when nothing else has moved. Main had moved, the gate declined to skip, and the full suite ran green.