@topkoa — following up on the write-back contract we settled in the alignment discussion (and that shipped as agreed: gap-fill in got-feedBack/feedBack#724 adds absent keys only, never replaces).
§7 today covers gap-fill — and it's behaving exactly as agreed in production. Users are now asking for the next step: replacing a WRONG author-set value with the confirmed-match value (a typo'd artist, a wrong year), which §7 deliberately excluded pending this conversation.
Proposed amendment, keeping every §7 principle:
- Still user-initiated + single-song — never background, never batch (batch stays parked as before).
- Per-field explicit checkboxes, default OFF, showing
old → new before anything writes — a field is only ever replaced by a deliberate individual tick.
- Eligibility only from a match the user explicitly confirmed (pinned/manual) — an automatic match can display, but cannot authorize destroying author bytes.
- Provenance recorded — locally for now (a write log: old/new/source/score/timestamp per field), migrating into the pack once the provenance/
extra FEP gives an in-file shape. Nothing is written that can't be traced.
- Atomic writer + backup: the FIRST backup is the pristine author original and is never clobbered by later writes; a visible one-click Revert restores it.
- Hard never-overwrite list: all chart/practice data (tuning, arrangements, duration, capo, offsets, stems, timeline), and identity keys (
mbid/isrc) except via an explicit manual re-match.
Effectively: gap-fill fills gaps; overwrite fixes errors — one field at a time, with receipts and an undo.
The host-side implementation is being prepared as a draft PR and stays draft until you're comfortable amending §7. Happy to adjust any of the six points — the eligibility bar (point 3) and the provenance shape (point 4) are the ones where your judgment matters most.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Nm7tHs1Yvjjtnnu4nzJgdN
@topkoa — following up on the write-back contract we settled in the alignment discussion (and that shipped as agreed: gap-fill in got-feedBack/feedBack#724 adds absent keys only, never replaces).
§7 today covers gap-fill — and it's behaving exactly as agreed in production. Users are now asking for the next step: replacing a WRONG author-set value with the confirmed-match value (a typo'd artist, a wrong year), which §7 deliberately excluded pending this conversation.
Proposed amendment, keeping every §7 principle:
old → newbefore anything writes — a field is only ever replaced by a deliberate individual tick.extraFEP gives an in-file shape. Nothing is written that can't be traced.mbid/isrc) except via an explicit manual re-match.Effectively: gap-fill fills gaps; overwrite fixes errors — one field at a time, with receipts and an undo.
The host-side implementation is being prepared as a draft PR and stays draft until you're comfortable amending §7. Happy to adjust any of the six points — the eligibility bar (point 3) and the provenance shape (point 4) are the ones where your judgment matters most.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Nm7tHs1Yvjjtnnu4nzJgdN