# CLOSED grandfather list — manifest keys core reads or writes that predate the # spec-conformance gate and that the feedpak spec does not define. # # ┌─────────────────────────────────────────────────────────────────────────┐ # │ THIS IS NOT AN ESCAPE HATCH. You cannot add to it. │ # │ CI fails any PR that adds an entry here. The list may only SHRINK. │ # └─────────────────────────────────────────────────────────────────────────┘ # # There is deliberately no in-repo way to merge a manifest key the spec doesn't # define. The feedpak spec's own governance is explicit: # # "This repository defines the format only. Applications that read or write # feedpak ... track this spec as a dependency; they do not drive it. # A change is not part of the format until it lands here." # — got-feedback/feedpak-spec, GOVERNANCE.md # # So a new manifest key goes through the feedpak Enhancement Proposal (FEP) # process — see feedpak-spec/CONTRIBUTING.md: # # 1. Open a FEP issue on got-feedback/feedpak-spec describing the problem, the # on-disk shape, backward compatibility, and the version bump implied. # 2. Land one PR there updating the normative spec, the JSON Schemas, an # example that exercises it, and the changelog — together. # 3. Back here, bump `.feedpak-spec-ref` to that merged SHA in the same PR that # adds your code. The gate then goes green, because the key is now declared. # # That is the only route. If your PR is blocked by this gate, the answer is a # FEP, not an entry in this file. # # Entries below exist ONLY because they predate the gate. Each is debt with a # tracking issue, and each disappears when its issue is fixed. The gate also # fails if an entry goes stale — the spec caught up, or core no longer reads or # writes the key — so this file cannot quietly become a place drift hides. exceptions: - key: original_audio issue: https://github.com/got-feedback/feedback/issues/933 reason: >- Added by #583 (the full mix played while every stem fader sits at unity, since demucs recombination is lossy). Core, lib/enrichment.py, and the stems plugin all depend on it, but it never went through a FEP and the spec does not define it — the drift this gate exists to prevent. The resolution is REMOVAL, not a FEP: the spec already carries the mixdown as a stem ({id: full, file: stems/full.ogg}), so this key added a second, redundant location for audio to a format that already had one. See #933. Grandfathered so the gate can land green and start blocking the *next* instance immediately, rather than blocking on #933. This entry goes away when core no longer reads or writes the key.