ScoreScript Language wiki

Diagnostic reference

Search for the exact code from your checker. Severity below is the registered default; the actual diagnostic includes its location and message.

chord.member-mark

error — a chord member carries accidental-display intent; event-wide marks belong outside the chord brackets

accidental.star-position

error — a courtesy star glues straight after its pitch, before ties and marks (4F5~, 4F5(p), [C5 F5*]); standing alone after a space it sets the rule from its bar instead

accidental.formula-word

warning — a chord formula writes no pitch for a courtesy star to glue to, so a (courtesy)-style word on one is kept as written and applies to every member; write the chord's pitches to use the star

accidental.retired-word

warning — the accidental-display words are retired and read as their stars: (courtesy) is F5, (accidental-paren) and (accidental-bracket) are F5(), (no-courtesy) is F5**; format writes the star

migrate.ambiguous-roles

error — migration cannot infer historical intent in mixed bracket voices and brace staffs; keep staff roles and migrate only unambiguous historical sources

migrate.staff-role-kept

error — main and ossia designate staffs and keep braces; historical voice migration cannot turn them into contained voices

part.unknown-player

error — an explicit player address must name a player declared on that instrument's roster

part.extra-body

error — repeated instrument bodies bind in declaration order; an extra body must name an existing player instead of wrapping to the first part

staff.target

error — a display destination must name an existing staff of the owning instrument

engraving.invalid

error — engraving settings must name supported properties with valid values; one score-level declaration owns the default and movement_overrides names authored movement ids

syntax.expected

error — the parser expected a different token here

transform.shared-staff

error — keep shared staff membership explicit when changing source arrangement

shared-staff.carrier

error — use a score or movement collection whose shared owners remain addressable

shared-staff.owner

error — a shared line addresses one complete musical owner

shared-staff.target

error — a shared-view point needs one shared group at the named bar; put it inside the intended measure collection

shared-staff.ambiguous

error — put clef and transpose directives inside the intended measure collection when several shared groups exist

shared-staff.invalid

error — shared staff owners need compatible, nonoverlapping bars and bounded voices

syntax.part-brackets

error — shared part brackets belong inside a measure collection; other owner containers retain braces

syntax.voice-braces

error — same-staff voices use brackets; unresolved brace voice groups refuse; explicitly run scorescript migrate on an older same-staff score

syntax.measure-colon

error — a measure label introduces a braced collection, never a colon-delimited musical body

syntax.notation

error — this notation is not part of the grammar at this position

syntax.expansion-limit

error — this compact declaration exceeds the parser's configured resource budget

notation.conflict

error — these marks contradict each other (e.g. [p, f] or [., ..])

chord.quality-case-mismatch

error — the root's case sits on one side of the quality axis and the explicit quality on the other (e.g. fmaj7); case carries quality

chord.rare-quality

warning — dM7 is the diminished-major seventh, an unusual chord — did you mean dm7 (half-diminished)?

tempo.unsupported-suffix

error — tempo text takes no attachment; put the period in the string (*"Andante.") or the beat unit in the tempo directive

tempo.placement-needs-text

error — the comma down-mark places tempo words below a sounding part; metronome values remain global above the staff

hairpin.kind-mismatch

error — a crescendo was closed by a diminuendo marker (or vice versa); both endpoints carry the kind

spanner.unterminated

warning — a span opened but never closed; a hairpin with nothing to arrive at stays one note wide, where you typed it (close it with a leading < or > , or a dynamic, to say how far it reaches), and a slur or glissando with no note to reach draws nothing

mapping.invalid

error — a mapped connection needs compatible, unambiguous node endpoints

mapping.unclosed

error — close a named node connection before reusing its name; both endpoint markers are explicit

mapping.missing-start

error — an opening marker trails its start node; the matching closing marker leads its destination

spanner.stop-without-start

error — a closing span marker with no opening in effect

spanner.side-on-close

error — a span has one side, declared on its opening sigil (4C~^ D E ~F); a closing sigil cannot declare or override the side

slur.adjacent-spans

info — notes are nodes and one slur is one span between endpoint nodes; interior notes stay unmarked (D~ E ~F), while D~ E~ F spells two slurs

version.header-required

error — from the container swap onward a source must declare its spec version — the same text can mean different music in different versions (<C4>/h)

syntax.unexpected

error — this token cannot start anything the grammar knows at this position

syntax.incomplete

error — the source ended (or the line ended) before this construct was finished

syntax.pitch

error — a pitch is an uppercase letter A–G, an optional accidental, then an optional octave number (Eb, F#5); r is a rest

syntax.anchor

error — an anchor is a measure label and an offset: m1:0, m2:q, m3:1/2

version.invalid

error — the header is scorescript followed by a version like 0.3

repeat.invalid-target

error — a measure repeat repeats the previous bar (%) or a labeled earlier bar (%m5); there must be one

repeat.mixed-content

error — a repeat bar holds nothing else: && (or %) IS the bar's content, so a note beside it would be a second bar's worth of music in one bar

chord.empty

error — a chord needs at least one pitch between [ and ]

syntax.mark-before-tuplet

error — a mark written before a tuplet — (>)2:3{8C D} — has no note to attach to: write it inside the brace, on the first note, 2:3{(>)8C D}; the tuplet is read as if the mark were absent, so the bar still counts

syntax.bare-letter-bracket

error — a bracket holding nothing but a letter name (A–G, with an optional accidental) is the RETIRED spelling: it collides head-on with the boxed rehearsal letter every packet writes, so it mints no note. Both chord spellings stand — the quality formula ([AM], [Am], [AMm7]) and the explicit pitch list ([A C# E]) — one note needs no brackets at all, and a boxed rehearsal letter is [[A]]

pitch.invalid

error — this is not a pitch: letters A–G (uppercase — case carries quality, never octave), accidentals b bb # ##, then an optional octave number

spanner.detached

error — span positioning is grammar: a trailing opener touches its start (Eb<), a leading closer touches its end (<D); a detached connector has no endpoint and must never be rebound or moved by formatting

spanner.position

error — every node span uses the same endpoint law: C[ped..] opens on C and [..ped]B closes on B; wrong-side or detached endpoints are errors, not alternate spellings

spanner.boundary-empty

error — a temporal barline endpoint needs an event in its owning voice; write a rest rather than inventing an endpoint in an eventless bar

spanner.boundary-kind

error — a written barline can end a temporal hairpin or dotted line; a node-only or mapped connection requires its explicit destination node and never invents one at the barline

duration.invalid

error — use duration prefixes w h q e s ss sss with up to three dots; an exact duration and its combined tuplet ratios must fit the timing representation

duration.dangling

error — a number is a duration when it comes BEFORE a note (4G) and an octave when it is glued AFTER the pitch letter (G4); this one has nothing to attach to, so it adds nothing to the bar

grid.bar-count

error — a system block's range (m1-10) promises a number of bars; this row has a different count — check the | barlines

grid.implicit-range

warning — a historical measure head without an endpoint can introduce several bars; its music is preserved, and format or migrate writes the explicit range

grid.too-many-rows

error — a system block has one row per declared part, in order; this row has no part to belong to

hearing.conflicts-with-pulse

error — muted accents cannot be combined with additive pulse accent emphasis; disable one option before opening the performance reading

hearing.grouping-refused

error — this performance reading needs a supported native meter grouping in every selected bar; choose a grouping from the native menu

hearing.limit

error — this hearing projection exceeds the bounded part, bar, attack or beat-head work limit; open a smaller score

hearing.missing-voice

error — the native reading cannot resolve this attack's governing voice history; no filtered performance has been retained

grid.missing-row

warning — a declared part has no row in this system block, so it is silent here; add a row of rests if that is intended

duration.nothing-to-complete

error — & takes the value that completes the dotted note before it (q.Eb &G); the note before this one is not dotted

instrument.unknown

warning — this instrument is not in the catalog (forty entries: flute, clarinet-bb, horn-f, tuba, voice …); it prints as written with a treble clef and no transposition

grid.unknown-group

error — a group label on its own line names declared parts by instrument (fls, horns); no declared part has this instrument

grid.filled-rests

info — a blank bar, a short row, or a part with no row in a system block is read as whole-bar rests; write r to make that explicit

chord.comma-separator

warning — inside a chord a comma separates members ([C E G] is the spelling); an octave down is written with the octave digit ([C3 E G]) — outside chords , still lowers an octave

syntax.continuation

error — a backslash joins this line to the next, so nothing may follow it on the line; a \ in the middle of a line used to be swallowed in silence, which is the one thing the language forbids

grid.unbounded-continuation

warning — N31 continues a grid row when its line ends with a barline, and the block's range is what says when the row is finished; a block whose header names no range ({ m1: rather than { m1-3:) cannot say, so the next line is read as another row

syntax.continuation-twice

warning — a grid row already continues when its line ends with a barline (N31: a barline at the end of a line means what it means at the end of a system), so a backslash after that barline is the same instruction written twice; the backslash is for a line that breaks INSIDE a bar, which a barline cannot say

syntax.barline-dropped

warning — a barline that DRAWS something is never dropped in silence — a || or ||| with no bar in front of it to close, or pipes written in a repeat's own closing slot (a repeat barline IS a double bar: thin line, thick line, and the two dots — Gould: a double bar is never written beside a repeat, because the repeat already divides the section — so :||, :|||, :| || and m2(end-repeat): … || all say it twice, and the one spelling is :|); the plain | a row is opened with draws nothing of its own and is never reported

line.unterminated

warning — a bracketed line ([ped..], [8va..], [tr..]) is a printed line with two ends; without its closer ([..ped], [..8va], [..tr]) it runs to the last note of the part

span.stop-without-start

warning — [..] or [...] closes open dotted lines in this voice and the score tempo transition; open a line first

span.multiple-closed

warning — a bare dotted ending closes every eligible open line here; use a typed ending to select just one kind

line.stop-without-start

warning — this closes a bracketed line, but none of that kind is open; a line OPENS with the dots trailing ([ped..]) and CLOSES with them leading ([..ped])

volta.unclosed

warning — a volta bracket runs to the repeat barline that closes it (:|); with no repeat after it the bracket runs to the end of the part, which is almost never what an ending means

info — [DC] and [DS] are two capitals in a bracket, which is a boxed REHEARSAL mark (N11) — write the jump with its periods ([D.C.]) or in lower case ([dc]) and it is a jump

multirest.invalid-count

error — a multirest counts the bars one printed H-bar stands for, so it counts at least two; a single bar of rest is written r

repeat.invalid-count

error — &&4 is a RUN of measure repeats — four bars that each repeat the one before — so the count is at least two; one repeated bar is written &&

lyric.bar-misalign

warning — the | in a lyrics row lines up with the music's barlines, which is what lets the row check itself: a row with a different number of bars, or a bar with more syllables than notes, has slipped against the music it sings

grid.inside-braced-part

error — a system block's ROWS are the parts, so it belongs to the score, not inside one player's braces; declare the part with no braces (part hn: Horn in F) and write the block beside it

grid.spine-address

error — a mark on a block head is the SCORE's, stated once outside the rows, so it has to say which bar it stands at — glued to it, like every other adjacency in the language: ||m5, [A]m5, [key G]m9

grid.spine-part-change

warning — the spine carries what the whole SCORE does at a bar; a clef and an instrument change belong to one player, so they stay in that part's row or its at block

layout.duplicate-break

error — one score point needs at most one system/page cut; a page already begins a system

layout.break-without-measure

error — a part cut may point to its following range, but a score-wide layout cut must name its measure (\n29 or \p46)

layout.exact-span-scope

error — only a system has a measure count; write system-map {96:3} for exactly three measures beginning at m96, while page-map and multi-map remain point addresses

layout.invalid-span

error — an exact system span counts the measures on that line, so its count must be at least one

layout.unknown-measure

error — a layout cut must address a measure declared by the score

rehearsal.unknown-mode

error — rehearsal auto mints a mark at every structural seam (a key, meter or tempo change); rehearsal manual is the default, where the marks you write are the marks you get

exercise.no-sections

warning — an exercise labels its music through its sections, so one with none prints no label and claims no bars — the number would be minted for something invisible

exercise.reversed-section

error — a section covers a forward span of bars; a backwards range would give the exercise a negative length and put its closing double bar before its label

shared-line.unknown-reader

error — a reader head names players by the key the roster declares them with, so a key no part carries would hand its music to nobody

shared-line.too-many-readers

error — naming one key several times in a head addresses successive instances of it, so more namings than declared players leaves a reading with no one to play it

span.not-found

error — bars written as a repeat borrow a passage by the name it was given, so an unmatched name would leave those bars with no music at all

span.unknown-interval

error — a repeat moves by a signed interval such as +P4 or -P5, and an unreadable one would silently leave the borrowed bars at pitch

span.length-mismatch

error — a repeat writes exactly the bars it names, so a target longer or shorter than the passage it borrows is an arithmetic slip that would drop or duplicate music

span.statement-count

error — a sequence writes at least one statement, so a count of none would name a range of bars and then put no music in any of them

span.key-conflict

error — a bar prints one key signature, so a hand-written key map and a repeat that carries its key must not both speak for the same bar with different answers — one of them would win in silence

shared-line.empty

warning — a line exists to hold the music every reader plays, so one with no measures leaves every part that reads it silent

shared-line.unknown-interval

error — a reading interval is a quality and a number such as P5 or m3, and an unreadable one would silently leave the reader at unison

shared-line.reading-conflict

warning — an exercise reading and a part's own reads statement both name the interval a player takes, so when they disagree one of them is a stale edit

shared-line.overridden

info — a part that writes its own measures keeps them, so a reads statement beside authored music is inert and probably a leftover

shared-line.transpose-refused

warning — a head reads for several players at once and transpose is one player's written-pitch contract, so applying it to all of them would put the rest of the band on the wrong page; A9 says a fragment names what it cannot carry rather than dropping it in silence

exercise.container-empty

warning — an exercise container that holds no bars still prints its heading and its number, so the page gains a title over silence and the numbering of everything after it shifts

exercise.empty-reading

warning — a reading exists to move named parts off the section's concert pitch, so one naming no parts changes nothing and hides a typo in a part symbol

exercise.unknown-reading-part

warning — a reading names parts by the symbol they are declared with, so a symbol no part carries means that instrument silently keeps the section's pitch in its label

exercise.unknown-interval

error — an interval is written quality-then-number (P5, M2, m3, A4, d5); without one the label cannot say what those parts actually sound

exercise.unknown-concert-pitch

error — a section sounds at a pitch class such as F, Bb or C#; every part's (your X) is derived from it, so an unreadable one would silence the whole label

exercise.broken-alignment

warning — an exercise's parts must break at the same bars so "line 3" is the same music for every player; a part laid out alone may add breaks its neighbours did not, and a rehearsal where the flute and the trumpet count different lines is the cost

exercise.empty-systems

error — systems N says how many bars go on a line, so N must be at least one — a line carrying no bars describes no page and could never be drawn

rudiment.empty

warning — a rudiment is a named pattern of strokes, so one with no strokes has nothing to print beside the exercise that plays it

rudiment.unknown-token

error — a rudiment is written in hands (R, L, and the grace hands lR and rL) and the language's own roll words ((trem), (trem2), (trem3), (z)); anything else would print a pattern no drummer could read

rudiment.duplicate

warning — a rudiment's name is its address — an exercise titled with it plays it — so two declarations of one name leave the heading quoting whichever was read last

exercise.overlapping-sections

error — two sections claiming the same bar would stamp two labels on one system and mint two double bars at one score point

error — a referenced exercise is read from the master file at every compile, so the path is resolved against the directory of the file that wrote it; a path that does not open means the consumer would print a hole where the pulled music goes

error — an exercise is referenced by the id its master authored (exercise =the-scale), never by position or title — so a master that renames or drops an id says so here instead of silently handing back the wrong exercise

error — a file cannot pull from a file that pulls from it: the resolution would never finish, and there is no answer to which of the two is the source of truth

warning — the pull matches the two rosters by part symbol; a master part the consumer does not carry is dropped, and a consumer part the master does not carry is filled with rests, and both are things the arranger should have decided on purpose

warning — a bare letter takes the octave NEAREST the note before it, and the note before the first bar of a pulled exercise is in the master, not here — so an exercise meant to be linked anchors its opening note with an explicit octave (4Bb4), or the same scale arrives in a register nobody asked for

warning — concert X on a reference is parsed and reserved but not yet applied: pitch math has one home, the semantic layer, which runs after this splice — so v0 pulls the master's own pitch rather than performing a second, private transposition

info — the master was read with diagnostics of its own; they are reported against the master's text, where their line numbers mean something, and counted here so a consumer is never silently built on music its source could not read

error — a reference names a file, so resolving it needs a place to look; a host that compiles source text with no directory of its own cannot follow one, and says so rather than pretending the exercise was empty

warning — use "…" reads the definitions another file owns, so a used file that defines none gives this one nothing; the link is either pointing at the wrong file or the definitions it meant to share are still inside a movement, where they are local

error — two used files define the same name, so @name has two answers and neither is the source of truth; rename one definition, or stop using one of the two files here

chapter.unknown-source

error — a chapter written as another names that movement by its authored id; an id no movement of this book carries leaves the instance nothing to be, so it prints no music

chapter.cycle

error — an instance resolves to a movement written out in full at the end of its chain; an instance of itself, or a chain that returns to where it started, never reaches one

chapter.literal-music

error — an instance moves its source's object applications to a new tonic; notes, pattern anchors and key signatures written directly carry their own register and spelling, and moving them would mean guessing an octave

chapter.no-key

error — a chapter's key is the tonic of its first object application, the one {concert-key} reads; a source that applies no object has no key for in to move from

chapter.key-spelling

error — every tonic moves by the spelled interval from the source's key to the instance's; a tonic that would need more than a double accidental names no key a player can be given

chapter.instance-body

error — an instance takes its music from its source, so its block holds head statements only (number, title, subtitle, credits, meter, tempo, range, page before); music written there would be a second copy nobody reads

chapter.slot-inherited

error — subtitle none keeps a movement's slot empty against its BOOK; a chapter written as another chapter reads that slot from its SOURCE, and an instance head has no way to say the source said nothing — writing none in the source would empty the slot for the source and every other chapter written as it, so the chapter that wants its own is written out in full

chapter.page-before-unknown

error — page before names exercises by id — the movement's own, or an instance's source's — and readers by roster key; a name the movement does not carry would turn nobody's page

movement.duplicate-id

error — a movement id is the address books, links, instances, layouts and websites use for one chapter; two movements with one id make that address ambiguous

setup.without-movements

error — title, subtitle, lyricist and translator in a book's head are what its movements adopt; a score with no movements has nothing to adopt them, and titles itself with score "…"

reader-set.duplicate

error — a reader set's name stands for one head; two sets of one name in one scope would make every head that writes it read two ways, so the second is not defined

reader-set.name-taken

error — a reader set is written where a player's key is written, so its name must be a word no music object, rhythm or instrument key already is; otherwise name { … } would read two ways

reader-set.empty

error — a reader set names the players who read a head; a set of nobody would hand its music to no one

reader-set.nested

error — a reader set lists roster keys with their readings; all, another set or the set itself belong in the head beside it, where what each stands for is read once

reader-set.opening-shared

error — a set's with { … } statements open every reader of a head that names it, and a head's opening statements govern every reader in it; a set that carries statements is written in a head of its own, so no other reader is opened with them

reader-set.modified

error — a reader set's registers and intervals are its members' own, stated once in the definition; a digit or interval on the set's name would be a second reading for every member, so it is not applied

exercise.duplicate-id

error — an exercise id addresses one exercise within its movement; two exercises with one id make that address ambiguous for links, contents and hosts

book.exercise-unanchored

warning — a contents line points at a page, and the page is found from the bar the exercise opens at; an exercise that states no section and follows another that states none has no bar of its own, so the book prints its title with no page number rather than a page number that is wrong

book.contents-without-cover

warning — a contents list is printed on the cover, so asking for one without a cover asks for a page that is never made — either add cover or drop contents

book.unknown-text-anchor

error — a text page's before anchor must name a movement in this volume

book.duplicate-text-page

error — every text page has a unique authored identity

book.text-page-overflow

error — a text-page that is taller than its sheet flows onto the next one, so this is never about room: either text follows a contents block, which fills the rest of its page, or a single word is wider than the column it is set in

book.text-style

error — native page typography uses positive point sizes, nonnegative before/after spacing, named alignments and font styles, and two to four prose columns

book.unknown-excerpt

error — an excerpt references an existing visible movement; its notes remain authored there

book.excerpt-boundary

error — an excerpt must cover complete engraved systems at the current layout; use native system collectors to establish the intended boundaries

mark.ink-past-the-page

warning — an attached text mark is centred on its note and nothing moves the music to make room for it, so a long one near either end of a line reaches past the page's content box and prints in the margin — or off the sheet. Ink in the margin still prints, and is reported at info; ink past the sheet's edge is lost, and warns. The words are still drawn where they were placed; shorten them, hang them on a note further inside the line, or give the page more width. This is a fact about the MARK: an excerpt is never refused for it (book.excerpt-boundary measures the system)

book.replacement-coverage

error — replace-music pages need a before anchor and must print every retained bar of that movement once in source order through native excerpts; no automatic music page is omitted until this is proved

book.excerpt-box

error — an excerpt box names unique first and last events in the same voice inside the excerpt; repeated or absent source identities cannot choose a range unambiguously

lyric.no-music

error — a lyrics row sings the row above it, so it needs a line of music before it in the same part

version.unsupported

error — this toolchain implements spec versions 0.1, 0.2 and 0.3; a newer header means the source may use constructs it cannot read

score.no-parts

warning — a score with no parts engraves nothing; add part name: instrument { … } or bare measure lines

metadata.duplicate

error — composer and movement-title name one thing each; a second declaration would silently win

metadata.empty

error — an empty metadata string prints an empty line on the page; delete the statement instead

symbol.duplicate-part

error — part symbols address parts from statements and hosts; two parts with one symbol make that address ambiguous

meter.invalid

error — a meter is beats over a note value (4/4, 6/8) or printed additive groups (3+2+2/8); every group is positive and the beats total at most 64

beams.invalid

error — a beam grouping uses duration counts such as e3+3+2 or s4{2+2}+e2; none flags every note, beat groups by beat, and standard restores the meter default

beams.join-not-answered

error — a beam that crosses a barline is spelled at both bars it ties: ~ at the END of the first bar's grouping and ~ at the START of the next one's. Two marks, so a reader scanning either bar alone can see that the beam leaves it

beams.range-does-not-fill

error — a complete beam pattern fills its addressed range exactly; add the durations across all included meters and subdivisions

beams.measure-hint

error — a |mN hint names a measure boundary in the beam pattern; its exact offset must agree with the meter timeline

beams.range-overlap

error — beam ranges at the same scope may nest but cannot overlap partially or claim the same range twice

beams.join-kind-mismatch

error — both sides of a cross-bar beam must continue the same number of levels: paired ~ at the outer edge continues the primary, and nested subdivisions choose which deeper levels continue

beams.unknown-unit

error — prefix counts with w h q e s ss sss; each additional s halves the duration, and a prefix applies to following siblings until another prefix replaces it

beams.unit-said-twice

error — duration prefixes may change the unit inside a grouping; an older slash unit cannot be combined with those prefixes

beams.sub-groups-do-not-fill

error — braces subdivide a span, so the sub-groups add up to it exactly: 6{2+2+2}, never 6{2+2}. A brace breaks the beams ABOVE the primary and leaves the primary whole, which is how an engraver shows a division inside a beat without cutting the beat in half

beams.unclosed-sub-group

error — a beam subdivision closes with its matching bracket: 6[2+2+2] or 6{2+2+2}

beam.rest-carries-nothing

error — a ~ touching a rest carries a beam over it, and says which side that beam comes from: ~r the run that ENDS at the rest, r~ the run that BEGINS at it, ~r~ both. The side written must have something beamable on it — a note or another carried rest, in this bar — or the mark can never mean anything

beam.rest-too-long

error — only an eighth rest or shorter can sit under a beam; a quarter rest and longer have no beam level for one to be drawn on

beam.rest-tilde-repeated

warning — a rest takes one ~ a side. The doubled ~~ is a tie under a slur and needs two notes, so it says nothing on a silence

beam.continue-word-retired

error — (beam-continue) meant "carry the beam over this rest" and could not say from which side, so where the meter put a group boundary at the rest it had to guess. A ~ touching the rest says it: ~r, r~, ~r~ — and ~r~ is what the word used to mean

beams.does-not-fill-the-bar

warning — group durations must total the measure duration after unit conversion; bare counts inherit the current prefix, or default to eighths unless the meter counts a finer value

key.invalid

error — a key is a major or minor name (G, Eb, Am, F#m) or open — no signature and no implied tonic

tempo.malformed

error — a tempo states words, a rate, or both, words first: tempo Andante (ca. q=120); several words are quoted, parentheses hold only the rate, and a range runs from the slower number to the faster (q=112-120)

tempo.invalid

error — a tempo is a positive number of beats per minute

spell.unknown-mode

error — spelling modes are spell key (a bare letter takes the key signature's accidental, and n is the natural) and spell absolute (a letter is exactly what it says) — absolute is the default, so nothing already written changes meaning

solfege.unknown-mode

error — solfège modes are solfege movable (do is the tonic of the key, read as major) and solfege fixed (do is C) — movable is the default

solfege.no-key

warning — movable do puts do on the key's tonic, so music with no key signature (or key open) has no tonic to move to; the syllables are read in C until a key is stated, or write solfege fixed to mean C on purpose

solfege.si-ambiguous

info — in movable do, si is RAISED SOL (di ri fi si li) and the leading tone is ti; under solfege fixed, si IS the seventh degree, as the fixed-do cultures say it — both cultures keep their word (Brandon's ruling)

clef.invalid

error — a clef is treble, bass, alto, tenor, soprano, mezzo-soprano, baritone, percussion, an octave clef (treble-8vb), or a number 1–7 — the seven clefs ordered by where middle C sits

context.unknown-measure

error — at mN changes the context at a bar the score declares; an unknown bar means the change never happens

context.duplicate

error — one bar takes one meter, one key, one tempo and one clef; a second declaration would silently win

context.score-wide-inline

warning — an inline key or meter change in one part changes the score-wide context; a part-local key uses that part's key statement or at map

context.bar-position

error — this context change requires a bar boundary; write it before the first event or after the last instead of changing earlier music

polymeter.alignment

error — each follower names its alignment, with no default: bars 1 to 2, or beats 4.=4 (the follower's note value, then the primary's)

polymeter.tempo

error — the primary part supplies the governing tempo

polymeter.owner

error — a polymeter member names exactly one declared part

polymeter.primary

error — name exactly one participating part as the primary

polymeter.bounds

error — a polymeter section ends at or after its first bar

polymeter.overlap

error — one part has one polymeter definition at any given placement

context.scope

error — meter and tempo are score-wide; key and spelling may be score-wide or part-local; clef and transposition belong to a part

transpose.invalid

error — a transposition is a diatonic distance and a chromatic one — transpose -1 -2 for a B-flat instrument, transpose -5 -9 -1 when an octave comes with it — and transpose 0 is none, which hands the bar back to concert pitch

transpose.incomplete

error — one number is only half a transposition: the letters move by the diatonic distance and the sound by the chromatic one, so both are needed — only transpose 0 stands alone

partial.invalid

error — partial N/D declares this bar alone: use a positive fraction shorter than its active meter; meter none needs no partial duration

partial.conflict

error — a partial bar has one duration shared by every part; conflicting declarations cannot both be honored

measure.overfull

error — the events in this bar sound longer than its meter allows — the bar line cannot move

measure.incomplete

info — a short bar completes itself with rests in the printed music; the source stays as typed. A pickup bar (m0) stays short on purpose

measure.noncontiguous

error — bars run m1…mN (or m0 for a pickup) with no gaps; a gap means a bar was renamed or lost

measure.duplicate-symbol

error — a measure name belongs to one bar; reusing it makes the name useless as an address

measure.inconsistent-symbol

error — one bar carries one name across every part and voice

measure.invalid-symbol

error — a stable name is a letter or _ then letters, digits, _ and -; names survive edits, so they may not be arbitrary text

symbol.duplicate-measure

error — one voice declares each bar once; a second declaration of the same label would silently replace the first

note.duplicate-symbol

error — a note name addresses one note from lyrics and ties; two notes with one name make that address ambiguous

note.invalid-symbol

error — a stable name is a letter or _ then letters, digits, _ and -

voice.mixed-shorthand

error — direct measure lines ARE voice 1, so a whole-part voice 1 { … } block beside them declares that voice twice; voices 2 through 4 may stand beside direct measures, and a bar-local v1 { … } group says voice 1 in the block that needs it

voice.attribute

error — voice size and optional role are independent: v1 small optional; cue quotations name a separate source

voice.invalid

error — a staff carries voices 1 through 4

voice.duplicate

error — one declaration per voice number within a simultaneous span; separate spans may reuse that voice

voice.mixed-block

error — direct music and a simultaneous voice span occupy separate bars; put a barline between them

voice.missing-first

error — a block that divides into voices writes v1 among them: the voice the others divide from is what says where the beats are

voice.bar-count

error — every voice of a simultaneous span covers the same bars, its bars separated by |; a voice silent in a bar writes a rest there, and a voice absent from a whole block simply has no group in it

cue.unknown-source

error — a cue has two first-class spellings and the source decides which: a REFERENCE (cue { 8-10: bsn }) when the player really is in this roster, and an INLINE quotation (cue "Bsn. 1" { 2r 4C4 D E }) when they are not — the quoted string is the printed label and the notes are written in place. Adding a part to the roster only so a cue can read it is not the third way

cue.partial-connection

warning — a quoted beam or paired tremolo needs both endpoints in the quoted voice; widen the cue range or quote the connected material together

cue.silent-source

info — a cue over bars the source rests through prints nothing; check the address, or move the cue to where the player it quotes is actually playing

cue.transposed-source

info — a part that states its own transpose is already ITS player's written page, so its notes cannot be re-read in another player's; write the source in concert pitch and let each part's transposition do its own work

extract.expression-position

error — extraction must retain exact loudness points and owner or voice scope; a view without an exact carrier refuses rather than moving or lending an instruction

extract.reminder-omitted

info — an optional player-page dynamic reminder is omitted when no exact steady word or independent placement is known; the part and its playback remain available

player-part.split-slur

info — a slur is one line between two notes, so when a chord's notes are dealt to different players neither of them holds both ends and neither page can draw it; write one slur per line where both players are meant to have one

cue.empty-map

warning — a cue map names the passages this part quotes — cue { 8-10: bsn, 40: bsn }; an empty one says nothing and quotes nobody

cue.bar-position

error — a cue occupies its own bar in the sequence: m1-2 { cue: "Hn." { 1D5 } | 1C5 }; separate it from the player's music with a barline

repeat.no-previous-bar

error — && repeats the bar before it, so the first bar of a part or voice has nothing to repeat — write the music once, then && it

repeat.unknown-measure

error — a % repeats a bar this voice declares; naming a bar that does not exist repeats nothing

repeat.forward

error — a % repeats an EARLIER bar — music cannot copy what has not been written yet

repeat.meter-mismatch

error — a repeated bar carries the earlier bar's notes; if the meter changed in between, those notes no longer fill the bar

repeat.named-content

error — named notes and named tuplets have one identity each, and a repeat would need two copies of it

error — a repeat or ending opener at a boundary belongs to the following bar; write that bar or remove the opener

error — navigation words are start-repeat, end-repeat-N, ending-N, segno, to-coda, coda, fine and the jumps (jump-dc, jump-ds-al-coda…)

error — a bar states each navigation word once

error — a bar declares at most one repeat count, one ending set, one marker and one jump

error — a repeat plays between 2 and 16 times

error — ending numbers run from 1 to 32

error — a D.S. jump needs a segno to jump back to, or the player has nowhere to go

error — an al Coda jump needs both a to-coda (where to leave) and a coda (where to land)

error — an al Fine jump needs a Fine marker to stop at

notation.unknown

error — this word is not in the mark vocabulary; quoted text ("con brio") prints any words you like

notation.not-drawn

warning — this accepted notation word has no drawing yet; the warning names the omitted mark, and does not prevent playback or export

notation.duplicate

warning — the same mark is written twice on one node; the second one changes nothing

notation.run-nothing-to-continue

warning — (sim) continues the articulation already in force, so it needs one: mark the first note ((-)4C) and write (sim) on the next — on its own it continues nothing, and the passage stays plain

notation.run-not-open

warning — (non) is “non sim.” — it stops a run that (sim) opened; with no run in force the notes here are already plain, so it changes nothing

chord.duplicate-pitch

error — a chord writes each pitch once; altered unisons (C4 with C#4) are legal, an exact repeat is not

chord-symbol.invalid-root

error — a chord symbol starts with a root: A–G (case carries quality) with an optional accidental

chord-symbol.unknown-option

error — the only chord-symbol option is bass-<pitch>, the slash bass

chord-symbol.conflicting-bass

error — a chord symbol names at most one bass pitch

chord-symbol.empty-display

error — an explicit chord-symbol spelling replaces the generated one, so it cannot be empty

tie.pitch-mismatch

error — a tie joins the SAME written pitch; ~ between different pitches is a slur, which is what you want here

tie.no-common-pitch

error — a tie between chords needs at least one written pitch present in both

tie.partial-pitch-mismatch

error — a tied chord member must exist in the next chord; a tie that lands on nothing is not engravable

tie.missing-endpoint

error — a tie needs a pitched note immediately after it to arrive at

tie.conflicting-scope

error — tie the whole event (tie-next) or single chord members ([Eb~ G]), never both — the two scopes contradict each other

tie.invalid-endpoint

error — a tie statement names two pitched notes that exist in this part

tie.double-connector-no-pitch

warning — a trailing ~~ says BOTH things at once — tie forward and open a slur (4C~~ C D ~E) — so its tie half needs the very next node to repeat the written pitch; with no repeat there is nothing to tie and the second ~ quietly spells a second slur instead. Write one ~ for the slur alone, or repeat the pitch to tie

tie.connector-run-too-long

warning — a node trails one ~ (a tie when the next node repeats the pitch, a slur otherwise) or two (~~ — tie forward AND open a slur); there is deliberately no third form, so every ~ past the second says nothing

tie.not-adjacent

info — a tie says two notes are ONE SOUND, so it only ever joins ADJACENT notes of the same pitch; X~ … ~X with anything in between is a slur across all of them, however the endpoints are spelled (N34) — if two ties were meant, the pitch has to repeat on the very next note

range.above-practical

info — the catalog's practical range is the band a DEVELOPING player can be counted on for, and this note is above it; one strong player will have it and a section will not, which is worth knowing now rather than at the first rehearsal — the instrument's full range is stated separately, and this note is still inside it

range.below-practical

info — the bottom of a range is where tone and intonation go first, and this note is below the band a DEVELOPING player owns; the note is on the instrument — the section playing it will simply be quiet, flat and late

divisi.single-player-chord

warning — the catalog says how many notes one player of an instrument can sound at once, and a trombone, a flute or a singer sounds ONE; a chord written for a single one of them is not a chord anybody can play. On a desk of two — trombone 1,2 — the same chord IS the division and is dealt top-down to the two players (N41), so the roster is usually the thing that is missing. A quoted line from another player is a cue. The chord is still engraved exactly as written

divisi.word-disagrees

info — (1.) (a2) (div) and (unis) say who at the desk is playing, and the page prints them exactly as the divisi engine prints its own; this one says something the bar under it does not show — 2. over a bar every player reads on one line, a2 over a bar written in two voices, a number nobody on the roster carries. The AUTHOR'S word is kept and printed and the engine says nothing of its own for that passage (D8a): a word is a decision about who plays, and an engine that quietly rewrote it would be making that decision instead

object.unknown

error — @name applies a music object, and no object of that name is defined in this score (name = { … }) or built into the compiler (@scale-major, @scale-harmonic-minor, @scale-chromatic, …); the built-in list is scorescript scales and the scorescript://catalog/scales resource

object.chord-shaped

error — @ introduces a harmony label (@F7, @am7) as well as an object reference, so an object may not be named like a chord — a pitch letter followed by a quality; am7 = { … } would make every @am7 ambiguous, and the name is refused where it is defined rather than guessed at where it is used

object.no-fit

error — under a fit head an object is slid by whole octaves to the lowest place on or above the reader's floor and must then end on or below the ceiling; this one does not, so it is OMITTED — never cut short, never swapped for a smaller one — and the range in force (the declared contract, or the catalog's practical band) is named so you can widen it or offer a smaller object in fits { … }

object.no-range

error — @scale-chromatic runs from the bottom to the top of the reader's range, so it needs one: a declared range, bounds on the head (ob C4-C6 { … }), or an instrument the catalog ranges

object.bad-tonic

error — the word after an object reference is the tonic it is moved to — a pitch letter and an optional accidental, @allstate Bb — or a signed interval, @allstate +P4

object.unknown-metric

error — an if asks a metric a relation about a value — if range contains @allstate2O Bb { … } — and the metrics are a closed table this build knows; range is the one so far, and a second (bars, duration) arrives as a row in that table, not as new grammar

object.unknown-relation

error — contains is the relation range answers; another word here is a typo, not a second grammar

object.empty

error — name = { } with no bars defines nothing an application could print; an object IS its bars

object.pattern

error — a collection application needs an anchored pitch, a nonempty bounded rhythm, and defined rhythm references; unsupported or exhausted patterns are refused rather than padded or cycled

object.recursive

error — music and rhythm definitions form an acyclic graph with at most 32 nested calls; remove a self-reference or split the composition

object.relation-repeated

warning — an object stands in ONE declared relation — a second line would be a second answer to what it is a version of, and the relation graph would stop having a source of truth; the first is kept

object.relation-unknown

error — variant-of and range-variant-of name another DEFINITION in scope; a name nothing defines makes the relation unfollowable, and book assembly reads these relations to choose what to print

object.relation-cycle

error — relations point from a version to its source, so a chain that returns to where it started has no source; the family would have no widest member for fit to try first

object.relation-on-rhythm

error — a rhythm has no pitches and therefore no compass, so it can be neither a variant nor a range-variant of anything; relate the music objects that apply it instead

range.outside-declared

error — this score declares the range this part is held to (range written C4-C7 in the score head's map, in the part, or at a bar), and this note is outside it; a declared range is a contract the music must keep, unlike the catalog's bands, which only advise — move the note, or widen the declaration on purpose

range.outside-warn

warning — the declared range has two tiers — range written { warn B3-F5, cap F#3-D6 } — and this note is past the warn band but inside the cap: the instrument has it, the player you are writing for may not; the cap is where it becomes an error

highlight.malformed

error — a highlight is braces of pitches with a colour before them — highlight { color: blue, F#3, G5-G6 } — single pitches (F#3) or ranges (G5-G6), written pitch unless concert precedes the braces; highlight none switches it off

highlight.unknown-color

error — the page prints a closed set of colours — red, orange, yellow, green, blue, purple, gray — so a PDF, an SVG and a screen agree on every one; pick the nearest

prefer.unknown-side

error — prefer sharps or prefer flats decides a six-accidental tie for a DERIVED key — F-sharp or G-flat major, D-sharp or E-flat minor — in the score (every part's default) or in a part; without it a major key keeps the arithmetic's side and a minor key takes the flats; an authored key is never touched

range.malformed

error — a range is stated in a pitch basis (written or concert) followed by its lowest and highest pitch joined by a dash — range written C4-C7; range catalog returns to the instrument's own bands and range none switches the check off

range.unknown-part

error — the score's range map names its parts by roster key, and this key is not in the roster — the contract would bind nobody, which is never what a table meant

range.outside-professional

warning — this note is outside the instrument's range as the orchestration literature states it — not merely hard but very likely not there at all for whoever is handed the part; ranges are stated in WRITTEN pitch, so a transposing part is judged by what its player reads and not by what it sounds

transition.stop-without-start

warning — [...] is the last dash of a tempo transition's dashed line, so it needs an earlier [rit..], [rall..] or [accel..] to end; with none open it prints nothing

transition.overlapping

warning — one tempo transition is in force at a time: a second [rit..]/[accel..] closes the one already running where it stands, exactly as a tempo event would — write [...] where you meant the first to end

expressive.invalid-symbol

error — a stable identifier names the expression so edits elsewhere keep pointing at it

expressive.duplicate-symbol

error — each expression in a part carries its own name

expressive.invalid-placement

error — placement is above, below, or auto

expressive.unknown-measure

error — an anchor names a bar this part declares

expressive.invalid-offset

error — an anchor offset is a position inside the bar: 0, a note value (q), or an exact N/M

expressive.unknown-voice

error — an anchor that names a voice (m89:1/2 v2) names one this bar writes, and one that sounds there — a span whose endpoint prints nothing has no end on the page

expressive.no-target

warning — each voice keeps its own loudness after a voice-local instruction; a shared instruction cannot replace those local histories — name the intended voice, or remove the instruction if no voice should take it

dynamic.invalid-mark

error — dynamics are pppp…ffff plus fp, sfz, sf, sfp, fz, rfz and n

text.invalid-role

error — a text role is tempo, rehearsal, technique, staff, system, or source — the role decides how it is engraved; source is the word that names a PLAYER (a cue label, a2, or a borrowed passage) and is set in the label class

text.empty

error — a text expression prints something; an empty one is invisible

breath.invalid-symbol

error — a breath is breath (comma) or caesura (railroad tracks)

breath.always-above

warning — a breath is drawn above the stave, so below cannot move it

figured-bass.invalid-figures

error — figured bass is a non-empty comma-separated list of figures

lyric.invalid-target

error — a lyric syllable attaches to a pitched note; rests are not sung

lyric.invalid-verse

error — lyric verses are numbered from 1

lyric.invalid-syllabic

error — a syllable is single, begin, middle, or end — this is what draws the hyphens between syllables

lyric.unknown-option

error — lyric options are extender (the melisma line) and elision

lyric.duplicate-verse

error — a note carries one syllable per verse; a second one would print on top of the first

lyric.duplicate-option

error — a lyric states each option once

lyric.empty

error — an empty syllable prints nothing; delete it instead

lyric.entry

error — an entry of a lyrics map starts at a bar and says so: m19: sings from bar 19, m19-21: claims three bars and is checked against the cells written after it

lyric.staff-policy

error — a map bound to a staff must name the line it sings — staff top or staff bottom — because a soprano/alto label or a two-note chord never authorizes inventing a voice

lyric.anchor

error — a lyric exception is a bracket naming a time: [b2+1/2] a beat (exact, never a float), [n4] the fourth eligible attack, [v2 b3] another voice's, [_ b3] the end of a running extension

lyric.no-target

error — an anchored syllable names a time this part does not sound; write the time the music actually attacks at, or name the voice that sounds there ([v2 b3]) — the engine never invents a note to hold a word

lyric.unsung-anchor

warning — this syllable's time falls on a rest, a cue or the middle of a held note; the word and its time are KEPT exactly as written and reported here, because moving it to another singer or growing a note to carry it would be inventing music

lyric.ambiguous-target

warning — more than one voice attacks at this time and the staff policy cannot choose between them; name the voice ([v2 b3]) and the choice is the author's

sticking.grace-spelling

error — a grace stroke is written with the language's grace slash (/R L is a flam), because r is already the rest letter and the slot law refuses a second meaning for it

sticking.pitched-part

error — R and L are hands, and they stand where a note stands only on an unpitched part; on a pitched one the sticking is a mark after the note (4C(R)), which is the side that prints below

sticking.duplicate

error — a note is struck by one hand, so it carries one sticking; a second would print on top of the first

sticking.unknown-rudiment

error — an exercise applies a rudiment by naming a declared one, so a name the score's dictionary does not hold says nothing about which hands the notes take

sticking.pattern-mismatch

info — a rudiment's strokes are laid under the attacks in order and restart when they run out, so a count that is not a whole number of times through leaves the last pass cut short — and a flam or a roll in the pattern wants a grace stroke or the same roll mark in the music

pan.invalid

error — pan is a whole number from -100 through 100; zero is centre, values are never clamped

pan.scope

error — constant pan belongs in a part body, outside measures and at blocks

pan.duplicate

error — a part has one constant pan declaration

staff-lines.invalid

error — a staff has zero to five lines — five is the standard staff, one is the unpitched percussion line and zero is a rhythm line that draws no line at all

span.invalid-kind

error — span kinds are slur, hairpin, pedal, ottava, volta, glissando, trill-line, custom-line and tuplet-bracket

span.invalid-range

error — a span ends at or after where it starts

span.unsupported-position

error — this span cannot preserve an endpoint inside a held event; use an exact event onset, or a supported temporal hairpin endpoint, rather than silently moving the endpoint

span.unknown-option

error — each span kind has its own options; this one is not among them

span.conflicting-options

error — these options contradict each other (a hairpin grows or shrinks, never both)

span.duplicate-option

error — a span states each option once

span.empty-text

error — a labelled span prints its label, so the label cannot be empty

volta.empty-text

error — a volta prints its ending numbers and label; an empty label leaves the bracket blank

tuplet.invalid-ratio

error — a tuplet plays at least 2 notes in the time of 1 or more (3:2, 5:4)

tuplet.too-few-events

error — a tuplet groups at least two events; one note in the time of another is just a different duration

tuplet.unknown-option

error — tuplet options are bracket-auto/show/hide and number-ratio/actual/none

tuplet.conflicting-options

error — a tuplet states its bracket once and its number once

tuplet.duplicate-symbol

error — a tuplet name addresses one group; two groups with one name make that address ambiguous

tuplet.invalid-symbol

error — a stable name is a letter or _ then letters, digits, _ and -

transform.source-has-errors

error — a transform rewrites text it fully understood — the formatter's own contract; fix the errors and the same command will run

transform.book-conflict

error — a native book has distinct movement identities and one volume template; imported movements retain their own musical context

transform.unnamed-rows

error — a grid row belongs to a DECLARED part; rows the parser had to name for itself ("row 2") have no braced form to become, and inventing one would print a name on a staff nobody wrote — declare the parts, or label the rows

transform.score-spine

error — a block head's spine states a fact about a SCORE POINT — a double bar, a rehearsal mark, a key change — not about a player, which is why it stands outside the rows; part-first has no shared head to carry it, so a score with a spine keeps the block road (m1-8 { … }), where the head still exists

transform.part-statements

error — a grid row holds bars; a transpose, a span, a lyric, a part-level clef or an at block that changes more than the clef has no cell to print in, so that part keeps its braced form

transform.bar-head

error — a grid cell prints its bar's music alone — navigation words (a repeat, an ending, a jump) and a stable bar name live on a labelled measure line, which a row has no room for

transform.bar-count

error — a grid is a rectangle and a re-woven part is a replacement: every row spans the same bars, and an edited part hands back exactly the bars it was given — adding or removing one is a change to the SCORE

transform.group-label

error — rows past a group label's parts are those parts' further voices, taken in turn — so a part with more than one voice needs a label that names it ALONE; give it a printed name nothing else answers to

transform.woven-context

error — a direction written inside another player's bar has a beat, and this part's bar has different notes in it; move it to the bar's head, where every part can read it at the same moment

transform.connected-parts

error — this staff has a connection to another staff; extract their complete instrument so both ends remain present

transform.part-not-found

error — a part is addressed by its PRINTED name ("Flute 1") or by an instrument key that names only one part; scorescript parts lists what this score answers to

transform.part-ambiguous

error — an instrument key that names several parts cannot pick one of them; the printed name disambiguates it

transform.not-one-part

error — part put takes the file part get made — one part — because it re-weaves that part into the score it came from, and a whole score has nothing to weave into

transform.voices-changed

error — a part's voice rows are its staff layout, not its notes; part put replaces bars one for one, so adding or dropping a voice is a change to the SCORE and belongs there

transform.meter-changed

error — a bar line cannot move for one player: the meter belongs to the score, so a part whose bars are measured differently is describing different music

transform.context-changed

error — the key and the tempo are the conductor's; a part file CARRIES them so the player can read them, but changing one there would silently rewrite every other part — change it in the score

transform.voices-diverge

error — a chord has exactly one rhythm, so voices become one only where they agree note for note — same onsets, same lengths, rest against rest, and every word of direction on voice 1; the bar named here keeps its voices, which is the spelling that can say what it does

transform.voice-spans

info — a slur joined two nodes that do not divide the same way — a chord and a single note, or two chords of different sizes — so the one span becomes one per voice, each holding the notes that voice now has; nothing is lost and the page gains a line

transform.nothing-to-divide

info — the bars addressed hold nothing for this verb to do — no chord to open, or no second voice to collapse — so the source came back unchanged, which is also what the second run of an idempotent verb looks like

import.malformed

error — the file is not well-formed XML, so nothing in it can be trusted to mean what it looks like; the position given is where the document stopped making sense

import.not-musicxml

error — the importer reads score-partwise MusicXML — the root element every notation program exports by default; score-timewise and other XML dialects are a different grammar

import.archive

error — a .mxl is a bounded zip container whose META-INF/container.xml names one primary MusicXML score; malformed, ambiguous, encrypted, unsafe, or expansion-heavy archives are refused before importing

import.size

error — the imported score expands beyond the host's bounded MusicXML limit; reduce or split the source rather than letting one document exhaust the process

import.encoding

error — MusicXML and every text entry in an .mxl container are UTF-8; replacing invalid bytes would silently change names or notation, so the importer refuses instead

import.empty

warning — the file parsed but holds no music — no parts, or parts with no measures; an importer that returned an empty score would look like it worked

import.unsupported

warning — this element has no home in ScoreScript, so it did not come across; it is named rather than dropped in silence, because a file that is quietly smaller than it was is worse than one that says what it lost

import.span-position

error — a span endpoint must retain its exact time and owner; an unsupported or ambiguous MusicXML position is refused rather than snapped to a nearby note

import.expression-scope

error — expression scope and placement must survive import exactly; malformed native metadata or an unrepresentable expression is refused, never silently shared or moved

import.direction-offset

error — direction offsets must be exact bounded decimals; malformed, duplicate or unrepresentable offsets cannot become zero or move an endpoint

export.position-grid

error — an exact MusicXML clock must fit the divisions bound; export refuses rather than rounding notes or span positions

export.expression-history

error — retained loudness history must not become visible directions or disappear from playback, and print-only reminders must not become played instructions; export the complete musical owner until this extracted history can cross exactly

expressive.recipient-gap

error — a hairpin that regains a recipient after a gap needs resumed display segments; until those are supported, author separate hairpins at the intended active extents

import.lossy

info — this came across, but not exactly as it was written — a spelling the language has no glyph for, a span drawn a different way, a value rounded; the music is there and the notation moved

placement.unknown-id

info — a placement in the layouts sidecar names an object this render has none of, so it was ignored; the id is the engine's own {owner}/{role}/{ordinal} and an edit that changed the owner — a bar renumbered, a part renamed, a note deleted — changed the id with it. Nothing else was moved: a placement matches by exact id and never by nearest. The key is kept in the file, so an undo brings the move back

capability.off

error — this door sits behind a composition capability the host has switched off (SCORESCRIPT_CAPABILITIES_OFF, or the host's own declaration); the door refuses by name rather than answer with something else, and the catalog does not list it while it is off