- valuegen::spelling(nth) is now injective over the full u8 (nominal = nth % 7, octave = nth / 7), so distinct selectors always give distinct PitchSpellings. Removes the silent mod-7 collapse footgun the M1 review flagged; no call-site changes needed (existing hex-looking selectors now genuinely differ). - migrate.rs gains a unit-test module covering the reconstruction branches the corpus-driven equivalence gate never reaches: Tie/Beam create round-trip exactly; Spanner create is Irreversible (anchor-based, not event-ref — documented in operation_catalog §CreateCrossCutting); the tuplet-compensation variants migrate (ReplaceWithRest preserves rest id+duration, voice recovered at reduction per finding #3); respell recovers from context else Irreversible (P12-K1). Gates green: build/fmt/clippy -D warnings; cargo test --workspace (ops migrate tests + all criteria). No production logic changed beyond the spelling() token domain. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| crates | ||
| spec | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||