add_note_to_selection no longer refuses when a note carries an authored spelling override. It ranks the chord's notes by their *resolved* staff position — the spelling the layout draws, from derive_annotations (the same prepass to_logical uses), so an authored override or an inferred respelling is honored — and steps one staff step above the rendered-highest note. The new note's raw position lands at rendered_top + 1: stepping the top's pitch by rendered_top + 1 - raw_top carries its alteration and places it there (for an un-respelled note this is the old +1 behavior); the acoustic realization still resets to Implicit. A note with no resolved CMN spelling falls back to its raw pitch position. rendered_top_of_event replaces highest_pitch_in_event; the event-level override refusal, the has_authored_spelling_override helper, and the now-unraised EditorError::PitchSpellingOverridden variant are removed; note_above becomes note_stepped(_, 1). The refusal test is replaced by one that pins a note three staff steps above its raw position and asserts the add stacks at rendered + 1 (raw + 4), not raw + 1 — verified to fail under raw-position ranking. This closes the last override-refusal in the editing track. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NAtEiJtt9yKVV1zjKYmZhS |
||
|---|---|---|
| .. | ||
| epiphany-bundle | ||
| epiphany-core | ||
| epiphany-determinism | ||
| epiphany-editor-core | ||
| epiphany-editor-gui | ||
| epiphany-engrave | ||
| epiphany-layout-ir | ||
| epiphany-ops | ||
| epiphany-render-svg | ||
| epiphany-testkit | ||