Skip to content

spec: optional per-stem name/description display fields (1.16.0) — FEP #59 - #60

Merged
topkoa merged 1 commit into
mainfrom
fep/stem-name-description
Jul 19, 2026
Merged

spec: optional per-stem name/description display fields (1.16.0) — FEP #59#60
topkoa merged 1 commit into
mainfrom
fep/stem-name-description

Conversation

@topkoa

@topkoa topkoa commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Lands the FEP #59 proposal and cuts release 1.16.0.

Closes #59

What

Two new OPTIONAL, purely presentational fields on a stems[] entry (§5.3):

  • name — short display label for mixers / stem lists; absent ⇒ Readers fall back to the
    id (same rule as arrangements[].name).
  • description — free-form text saying what the stem is (a click track's count-in,
    which take an alternate backing carries); a Reader MAY surface it and MAY ignore it.

Neither carries semantics: id stays the stable reference key, and a name on full
changes none of §5.3's mixdown rules.

Why

The format already allows any number of stems with any ids (only full is reserved), so
rhythm-guitar / click / alternate-backing stems are legal today — but a Reader had nothing to
show for them except the raw id. Stems were the only user-facing manifest list without a
display label (arrangements[] and lyric_tracks[] both have name).

Release note

Per precedent (1.14.0 / 1.15.0), this PR cuts the release: [Unreleased] becomes
## [1.16.0] - 2026-07-19, folding in the pending FEP #57 change (full-retention
SHOULD → MUST), which the spec text already scoped to packs declaring ≥ 1.16.0. Version
strings bumped across all check_versions.py-guarded locations; §4.1 ledger narrates 1.16.0.
release.yml tags on merge.

Files

  • spec/feedpak-v1.md — header/date, §4.1 version strings + ledger, §5.3 table rows +
    example + presentational-only note
  • schemas/manifest.schema.jsonstemEntry.name / stemEntry.description (type-only,
    matching arrangementEntry.name)
  • examples/extended.feedpak — labelled guitar stem + authored click stem (placeholder
    ogg) exercising both fields; feedpak_version: "1.16.0"
  • README.md, CHANGELOG.md — version bump / release cut

Verification

  • python tools/validate.py examples/minimal.feedpak examples/extended.feedpak — 2/2 valid
  • python tools/check_versions.py — consistent at 1.16.0
  • python -m pytest -q — 57 passed
  • python -m ruff check tools/ tests/ — clean
  • gen_docs.py + mkdocs build --strict — builds

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added optional per-stem display names and descriptions.
    • Clarified compatibility with older Readers, which ignore these display fields.
  • Specification Updates
    • Released feedpak specification version 1.16.0.
    • Packs declaring version 1.16.0 or newer must retain the full mixdown after separation.
    • Updated examples and documentation to reflect the new version and stem metadata.

…#59

Additive MINOR: two new OPTIONAL, purely presentational fields on a
stems[] entry:

- name        - short display label for mixers / stem lists; absent =>
                Readers fall back to the id (same rule as
                arrangements[].name)
- description - free-form text saying what the stem is (a click track's
                count-in, which take an alternate backing carries); a
                Reader MAY surface it and MAY ignore it

The format already allows any number of stems with any ids (only `full`
is reserved), so rhythm-guitar / click / alternate-backing stems are
legal today — but a Reader had nothing to show for them except the raw
id. Stems were the only user-facing manifest list without a display
label (arrangements[] and lyric_tracks[] both have `name`). Neither
field carries semantics: id stays the stable reference key, and a name
on `full` changes none of §5.3's mixdown rules.

This PR also cuts release 1.16.0, folding in the pending [Unreleased]
FEP #57 change (full-retention SHOULD -> MUST, already version-scoped in
spec text to packs declaring >= 1.16.0).

manifest.schema.json documents both fields on stemEntry (type-only,
matching arrangementEntry.name); the extended example carries a labelled
guitar stem and an authored click stem exercising both; version bumped
across the guarded locations (spec header + §4.1, README table +
citation, CHANGELOG, extended example) and the §4.1 ledger narrates
1.16.0. check_versions passes, both examples validate, 57/57 tests pass,
ruff clean, mkdocs --strict builds.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: topkoa <topkoa@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 036257b2-20cc-4b14-83c7-db23a739345e

📥 Commits

Reviewing files that changed from the base of the PR and between f945d98 and aff8a91.

⛔ Files ignored due to path filters (1)
  • examples/extended.feedpak/stems/click.ogg is excluded by !**/*.ogg
📒 Files selected for processing (5)
  • CHANGELOG.md
  • README.md
  • examples/extended.feedpak/manifest.yaml
  • schemas/manifest.schema.json
  • spec/feedpak-v1.md

📝 Walkthrough

Walkthrough

Feedpak 1.16.0 adds optional per-stem name and description metadata, updates the manifest schema and example pack, and requires retaining the full stem for packs declaring version 1.16.0 or newer.

Changes

Feedpak 1.16.0 specification update

Layer / File(s) Summary
Stem metadata contract and example
spec/feedpak-v1.md, schemas/manifest.schema.json, examples/extended.feedpak/manifest.yaml
Stem entries now support optional string name and description fields. The example adds display metadata and a non-default click stem.
Versioned rules and release alignment
spec/feedpak-v1.md, CHANGELOG.md, README.md
Documentation is updated to version 1.16.0, records the presentational metadata, and makes full retention a MUST for packs declaring version 1.16.0 or newer.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: byrongamatos

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR also changes full-stem retention to MUST for 1.16.0+, which is a separate semantic change not covered by linked issue #59. Move the full-retention/version-rule change to a separate PR or link the governing issue before merging.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly names the new optional stem name/description fields and the 1.16.0 FEP #59 change.
Linked Issues check ✅ Passed The PR adds optional stem name and description fields, keeps them presentational-only, and preserves id and backward compatibility.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fep/stem-name-description

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR lands FEP #59 by adding optional per-stem presentational metadata (name, description) to stems[] entries, and cuts the 1.16.0 spec release while also version-gating the tightened full-retention requirement (FEP #57) to packs declaring feedpak_version >= 1.16.0.

Changes:

  • Bump spec/docs/examples to 1.16.0 with release date 2026-07-19.
  • Add optional stems[].name and stems[].description as display-only fields (no semantics).
  • Promote full retention after separation from SHOULD → MUST for packs declaring 1.16.0+, with corresponding spec and schema text.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
spec/feedpak-v1.md Updates version/date, documents new stem display fields, and version-scopes the full retention MUST.
schemas/manifest.schema.json Extends $defs.stemEntry with optional name and description string properties.
README.md Updates the displayed specification version and citation string to 1.16.0.
examples/extended.feedpak/manifest.yaml Updates example pack to feedpak_version: "1.16.0" and exercises new stem display fields.
CHANGELOG.md Cuts the 1.16.0 release section and documents the additive changes and compatibility notes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@topkoa
topkoa merged commit 2516f51 into main Jul 19, 2026
9 checks passed
@topkoa
topkoa deleted the fep/stem-name-description branch July 19, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEP] Optional name and description for stems[] entries

2 participants