Trevor PaughSystems engineer
Trevor PaughProject Chronicles

Chronicles / Bopsmith

The song-version guard, and analytics after all

Decision

An app build older than Advanced mode strips the new fields from a song it saves, and the stripped copy syncs back over the richer one. The fix is a version number on the song format: the server keeps fields an older client does not understand, an outdated app refuses to export, and an edit made from an old build comes back as an undo step rather than a silent overwrite. The owner confirmed those defaults and said not to hold the deploy for it. In the same week they reversed the plan's no-analytics rule.

The reviewer of the effects-rack slice found an exposure the project had seen once before with the seed field: a client built before Advanced mode does not know about the mode, the room, or the effects, so when it saves a song it rebuilds the sounds from what it knows and the stripped copy syncs back to the server. The server checked only the shape of a song, not its generation, so the richer copy was lost.

The decision

The manager accepted the exposure for the moment and scoped the proper fix as its own slice: a version number on the song format. The server already keeps fields an older client would strip, since the engines slice. The remaining half is the client’s behaviour, and the owner confirmed the defaults the manager proposed: an outdated app refuses to export, an edit made from an old build returns as an undo step so nothing is lost without a trace, and the deploy does not wait for any of it. The guard closes the exposure for every field that will ever be added, which is why it was worth a slice rather than a patch.

Analytics, reversed

The plan’s legal assumptions said no analytics or advertising tools, and the privacy page says no third-party tracking. The site’s content security policy had been quietly blocking a no-cookie analytics beacon the whole time. On 14 October the owner said usage analytics would actually be smart, which reverses the assumption. The order of operations is fixed: the privacy text changes first to name whichever tool is chosen, and only then does the beacon get through.