Skip to content

STEWARDSHIP

Consent is a field, not a footnote.

This page describes mechanisms, not intentions. Each rule below is enforced somewhere in the codebase, and the counts are read from the live database rather than written by hand.

Instruments in archive
9
With a consent record
0
Published publicly
0
Community-verified
0

01

An instrument cannot be published without consent

The publish gate is a schema refinement in src/lib/schema.ts, not a policy document. A record with status: "published" and no ConsentRecord — or with no named credit — fails validation, which fails the build.

That is why the published count above is 0. No consent documents exist for this material yet, so nothing is published. The gate is doing its job.

02

Withdrawal removes material, within one deploy

Consent is always withdrawable — withdrawable is typed as the literal true, so it cannot be configured off.

Public reads go through one function, visibleInstruments(), which filters withdrawn records at the read boundary and is what the archive exports as its default. A new page physically cannot forget the check, because it never sees withdrawn records. The instrument route additionally returns a 404 rather than a notice — a withdrawn page does not exist. A second function, publicInstruments(), is the stricter test for what may be published at all: status and a consent record that currently permits use.

Withdrawal reaches the files, not just the pages. A build whose data marks a record withdrawn while its audio and posters are still in public/ fails before it can deploy, and nothing here is cached for longer than an hour, so a takedown cannot outlive its own cache.

03

Attribution travels with the file

Every sound-machine export writes its credit manifest into the WAV’s own LIST/INFO metadata as well as a JSON sidecar. Delete the sidecar and the communities, performers and licence are still inside the audio file. The credit list is shown before the download starts, not after.

04

Unverified data is marked as unverified

Every record carries dataProvenance. While it reads prototype_placeholder, the banner at the top of every page says so and unverified fields render as an explicit “to verify” marker rather than as fact. The banner removes itself when the data changes — it is derived, not hard-coded.

05

No synthetic performance is passed off as a recording

Audio assets are typed by what they actually are — field_recording, composition or synthesis_standin — and each renders a visible chip. The sound machine arranges and transforms material; it does not generate performances that could pass as traditional recordings.

06

Tuning is measured, never assumed

There is no equal-tempered scale anywhere in this codebase. Pitch comes only from intervals in cents stored per instrument. Where those measurements do not exist, the instrument is simply not voiced — the machine will not substitute a tempered guess. The measurement script even refuses to write a tuning file when its result comes back suspiciously tempered, because that indicates the source is not a field recording.