feedBack/lib
Byron Gamatos b8382139ca
feat(core): adopt feedpak_version — read on load + stamp on manifest writes (spec §4) (#530)
Core never read or emitted the manifest `feedpak_version` field. Adopt it:

- sloppak.py: `FEEDPAK_VERSION = "1.2.0"` constant (the format version this build
  targets); `LoadedSloppak.feedpak_version` read from the manifest on load
  (string, else None for legacy/absent).
- Stamp the version on the two core manifest-rewrite paths, without downgrading
  an existing (possibly higher) declared version:
  - gp2notation: `setdefault` before its notation-add rewrite.
  - songmeta: opportunistically when a metadata field is supplied (gated on the
    existing `dirty` flag, so never a standalone rewrite).

Core has no create-from-scratch path (RS-free repo) — the editor plugin's
create-mode save stamping FEEDPAK_VERSION is a follow-up in that repo. Internal
"sloppak" naming is intentionally left as-is (a rename is out of scope / risky).

Codex-reviewed: no P1/P2. +6 tests (read present/absent/non-string; metadata-write
stamp-when-absent / preserve-existing / no-op-no-stamp) + updated the gp2notation
key-order test for the appended version. 197 sloppak/songmeta/gp2notation tests pass.

Closes #527. Part of got-feedback/feedback#334.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 21:59:04 +02:00
..
audio.py Improve wording in terminology cleanup 2026-06-16 19:43:45 +01:00
diagnostics_bundle.py Clean release snapshot 2026-06-16 18:47:13 +02:00
diagnostics_hardware.py Clean release snapshot 2026-06-16 18:47:13 +02:00
diagnostics_redact.py Fix two regressions in the terminology purge 2026-06-16 21:19:16 +02:00
drums.py Clean release snapshot 2026-06-16 18:47:13 +02:00
gp2midi.py Clean release snapshot 2026-06-16 18:47:13 +02:00
gp2notation.py feat(core): adopt feedpak_version — read on load + stamp on manifest writes (spec §4) (#530) 2026-06-20 21:59:04 +02:00
gp2rs_gpx.py feat(gp): extract GP chord-diagram fingerings + GP8 chord names (E3) (#522) 2026-06-20 20:44:45 +02:00
gp2rs.py fix(gp): GP5 chord enrichment — gate on diagram-matches-played + decouple name/fingers (#523) 2026-06-20 21:04:12 +02:00
gp8_audio_sync.py Improve wording in terminology cleanup 2026-06-16 19:43:45 +01:00
gp_autosync.py Clean release snapshot 2026-06-16 18:47:13 +02:00
logging_setup.py Clean release snapshot 2026-06-16 18:47:13 +02:00
loosefolder.py Improve wording in terminology cleanup 2026-06-16 19:43:45 +01:00
lyrics_transcribe.py Clean release snapshot 2026-06-16 18:47:13 +02:00
midi_import.py Clean release snapshot 2026-06-16 18:47:13 +02:00
notation_lift.py Clean release snapshot 2026-06-16 18:47:13 +02:00
notation.py Clean release snapshot 2026-06-16 18:47:13 +02:00
progression.py Improve wording in terminology cleanup 2026-06-16 19:43:45 +01:00
safepath.py Clean release snapshot 2026-06-16 18:47:13 +02:00
scan_worker.py Clean release snapshot 2026-06-16 18:47:13 +02:00
sloppak.py feat(core): adopt feedpak_version — read on load + stamp on manifest writes (spec §4) (#530) 2026-06-20 21:59:04 +02:00
song_score.py Clean release snapshot 2026-06-16 18:47:13 +02:00
song.py feat(core): consume song_timeline tempos + time_signatures + per-chart tempos (feedpak 1.2.0) (#529) 2026-06-20 21:35:07 +02:00
songmeta.py feat(core): adopt feedpak_version — read on load + stamp on manifest writes (spec §4) (#530) 2026-06-20 21:59:04 +02:00
tailwind_rebuild.py Clean release snapshot 2026-06-16 18:47:13 +02:00
tones.py Clean release snapshot 2026-06-16 18:47:13 +02:00
tunings.py Clean release snapshot 2026-06-16 18:47:13 +02:00
vocal_pitch.py Repoint dead slopsmith URLs -> got-feedback 2026-06-17 11:02:04 +02:00
wem_decode.py Improve wording in terminology cleanup 2026-06-16 19:43:45 +01:00
xp.py Clean release snapshot 2026-06-16 18:47:13 +02:00