Keep the representation simple

The service provides a browser piano, punch-card editor, and song playback. Hosted music bodies use ASCII P1 PBM, a plain-text bitmap format. That makes the score a visible data structure that can be inspected and moved between tools.

The hosted version uses locally bundled browser dependencies and a Deno service. Production music is read through the controller's scoped storage bridge instead of writing into the immutable application release.

Separate playing from saving

Authenticated users can play songs, while saving is limited to the configured owner or administrator. Writes require same-origin requests and the current revision. A stale edit returns a conflict rather than overwriting a newer song.

Individual music files and the aggregate storage document have explicit size limits. Storage failures surface as errors, so the interface does not imply a save succeeded when it did not.

The documented two-megabyte song limit and four-megabyte document limit are explicit operating constraints, useful for understanding how the simple representation fits the storage boundary.

Preserve a path out

The import workflow stages checksum-listed local music and retains originals until hosted playback is verified. The original local mode remains available separately. Moving from local files to shared hosting changes the persistence boundary while preserving the punch-card representation, authoring model, and a way to recover the original material.