diff --git a/.agents/skills b/.agents/skills new file mode 120000 index 000000000..454b8427c --- /dev/null +++ b/.agents/skills @@ -0,0 +1 @@ +../.claude/skills \ No newline at end of file diff --git a/.claude/.gitignore b/.claude/.gitignore index d4338d645..478d5d94f 100644 --- a/.claude/.gitignore +++ b/.claude/.gitignore @@ -1,6 +1,9 @@ # ignore memory items that claude might write when you get mad at it projects/ +# i have seen claude put something here when asked to use a worktree +worktrees/ + # ignore this high churn file that is written whenever you allow a tool use settings.local.json diff --git a/AGENTS.md b/AGENTS.md index 81b213542..d7cb72004 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,254 +2,114 @@ @./README.md -`mx` is a MusicXML C++ class library. The product surface is `mx::api`, a simplified structural -representation of MusicXML backed by the strongly-typed `mx::core` model. The repository also -contains the code generator (`gen/`) that emits `mx::core` (and secondary-language test targets) -from the MusicXML XSD specification. - -## Phase state (read this first) - -The integration plan `docs/ai/design/newgen-integration-plan.md` is the binding decision record -for the current state of the tree: - -- **Phase 1 (DONE, this tree):** the old hand-written `mx::core` (and `ezxml`) were replaced by - the generated core; the generator pipeline, its targets, and all of its gates are in place and - green. `mx::api`, `mx::impl`, `mx::utility`, the examples, and their test suites are preserved - in-tree but **excluded from the build** behind the CMake option `MX_API` (default `OFF`). They - are not expected to compile yet. -- **Phase 2 (IN PROGRESS):** reimplement `mx::impl` against the new core, - rewrite the `DocumentManager` seam on pugixml/`mx::core::parse`, bring the preserved - `mxtest/api` + `mxtest/impl` suites back to green, and flip `MX_API` on by default. - Work-order steps 0-2 are DONE (pinned baseline, the DocumentManager/Result seam, the - Converter+Note vertical slice); the step-3 mechanical wave is underway. **Live status: - `docs/ai/design/mx-impl-port-plan.md` §9.1 + the Appendix A checklist** (ported TUs - compile via the `MX_IMPL_SLICE` CMake scratch target; corert stays green throughout). - **The BINDING design doc is `docs/ai/design/mx-impl-port-plan.md`** (port strategy, the - DocumentManager Result contract, version semantics, test fates, the corpus api-roundtrip - gate with its pre-port baseline, work order, CI plan, adjudication log). The kickoff - brief `docs/ai/design/mx-impl-port-brief.md` is superseded by it; scope authority remains - plan §8 as amended by the design doc. -- **Phase 3 (theoretical):** iOS/macOS distribution (Xcode project, xcframework) reinstated with - fresh eyes. - -**CARDINAL RULE: the generator is language agnostic.** Adding a new language target must not -require edits to the generator's Python files; all language knowledge lives in the target's own -directory as `config.toml` data and Mustache templates. Enforced structurally by -`gen/tests/test_agnosticism.py`. See `gen/AGENTS.md` for how to run and work on the generator, -`gen/DESIGN.md` for the full design and rationale. +`mx` is a MusicXML C++ library. The product surface is `mx::api`, a simplified and narrowed +interface of MusicXML backed by the strongly-typed `mx::core` model. ## Repository layout ``` mx/ AGENTS.md <- you are here - Makefile <- top-level build driver (mx-sdk Docker-gated targets) - Dockerfile <- mx-sdk toolchain image (Ubuntu 24.04, GCC 14, Go, libxml2, - Python 3, gcovr, pinned quality-venv analyzers) - CMakeLists.txt <- C++ project: pugixml + mx_core + test binaries + MX_API stub - data/ <- MusicXML test corpus (~1,347 files, see data/README.md) - docs/ai/design/ <- design docs (newgen-integration-plan.md: the phase plan; - plates.md: the Plates; generator-agnosticism.md: the cardinal - rule; mx-core-plan.md: the BINDING plan for the C++ mx::core - target, IMPLEMENTED) - src/include/mx/api/ <- the PUBLIC mx::api headers (Phase 2; excluded from build) + Makefile <- top-level build driver + Dockerfile <- mx-sdk image with toolchains and dev tools + CMakeLists.txt <- C++ project + data/ <- MusicXML test corpus (large, see data/README.md) + docs/ai/design/ <- design docs + src/ <- C++ sourcecode root + src/include/mx/api/ <- the public mx::api headers; mx's public interface src/private/ <- C++ source - pugixml/ <- vendored pugixml 1.15 (the XML layer mx::core consumes directly) - mx/core/ <- mx::core's HAND-WRITTEN runtime: Decimal, Result, Error, Lexical, - Token, NameToken, OneOrMore, Xml (no generated banner) - mx/core/generated/ <- the GENERATED C++ typed model (committed; do not edit; the - directory IS the generated/hand-written boundary) - mx/api/ <- mx::api implementation [Phase 2; excluded from build] - mx/impl/ <- the api<->core translation [Phase 2; excluded from build] - mx/utility/ <- helpers used by impl [Phase 2; excluded from build] - mx/examples/ <- api example programs [Phase 2; excluded from build] - mxtest/core/ <- mx::core unit tests (values, shapes, document/rejection suite) - mxtest/corert/ <- C++ core roundtrip test harness (Catch2, dynamic registration) - mxtest/import/ <- normalization (Normalize.cpp: whitespace/decimals/attr order); - the OLD api-import harness files were deleted in Phase 2, - superseded by corert (mx-impl-port-plan.md §7.3) - mxtest/probe/ <- Gate-4 must-NOT-compile probes (`make probe-cpp`) - mxtest/validate/ <- Gate-2 tool: serialize corpus, xmllint outputs (`make validate-cpp`) - mxtest/api/ <- the preserved api suite = the Phase-2 acceptance gate [excluded] - mxtest/impl/ <- the preserved impl unit specs [Phase 2; excluded from build] - mxtest/file/ <- api-test file repository infra + PathRoot.h (CMake-generated, - gitignored) - mxtest/control/ <- api-test compile-control header [excluded from build] + pugixml/ <- vendored pugixml 1.15 (XML parser and raw DOM) + mx/core/ <- mx::core's hand-written runtime (outside of mx/core/generated) + mx/core/generated/ <- MusicXML XSD C++ typed model (generated, see gen/cpp) + mx/api/ <- mx::api implementation + mx/impl/ <- the api to core translation layer + mx/utility/ <- helpers + mx/examples/ <- api example programs + mxtest/core/ <- mx::core unit tests (small) + mxtest/corert/ <- C++ core roundtrip test (deserializes and serializes the test corpus) + mxtest/import/ <- normalization support (Normalize.cpp/h + DecimalFields.h) shared by corert and api tests + mxtest/probe/ <- compile-time negative probes: constructs that MUST NOT compile (`make probe-cpp`) + mxtest/validate/ <- xmllint validation driver: parses+serializes corpus, outputs for `make validate-cpp` + mxtest/api/ <- tests for the mx::api layer + mxtest/impl/ <- tests for the mx::impl layer + mxtest/file/ <- file-walking test infrastructure for the mx::api tests (MxFile, MxFileTest, etc.) + mxtest/control/ <- compile-control flags (CompileControl.h: enables/disables test suite compilation) cpul/ <- vendored Catch2 test runner gen/ <- code generator system (see gen/README.md) - __main__.py <- CLI: analyze | ir | plates | render | - README.md <- architecture, IR glossary, XSD analysis - quality.py <- design-quality scorer (`make gen-quality`; floor in Makefile) - .pylintrc <- pylint config (`make gen-lint`) - xsd/ <- XSD parser + structural analysis - ir/ <- resolved intermediate representation (IR) - plates/ <- the per-target projection (casings, idents, policy data, - the grammar-preserving content/group projection) - press/ <- the Mustache engine, context builder, manifest renderer, writer - cpp/ <- C++ target: config.toml + templates/ -> src/private/mx/core/generated - schema/ <- JSON Schema target: config.toml + templates/ + out/ (committed) - test/go/ <- Go corert test target - config.toml <- Go target configuration incl. the [render] manifest - templates/ <- the Go templates (all Go knowledge lives here + config.toml) - go.mod, go.sum <- Go module (etree dependency, vendored) - vendor/ <- vendored Go deps - corert/ <- test package (discover, fixer, normalize, roundtrip, test) - mx/ <- the GENERATED Go model (committed; do not edit) - test/c/ <- C corert test target - config.toml <- C target configuration incl. the [render] manifest - templates/ <- the C templates (all C knowledge lives here + config.toml) - CMakeLists.txt <- CMake project using libxml2 - src/ <- C source (main, discover, fixer, normalize, compare, roundtrip) - mx/ <- the GENERATED C model (committed; do not edit) + test/go/ <- A toy Go implementation of MusicXML XSD for gen validation + test/c/ <- A toy C implementation of MusicXML XSD for gen validation ``` ## Build system ### Docker (mx-sdk) -All Docker-gated targets auto-build the `mx-sdk` image on first use. The workspace is bind-mounted -at `/workspace`. A named Docker volume `mx-build` persists CMake/ccache state across runs. +Docker is used for tool reproducibility. The `Makefile` has sections that are invoked on the host +and others that are invoked inside the container. The `MX_RUNNING_IN_DOCKER` env var drives this +distinction. -The `MX_RUNNING_IN_DOCKER` env var switches the Makefile between in-container (direct tool -invocation) and outside-container (docker run wrapper) behavior. Setting it on a dev machine (or -the macOS CI runner, which has no Docker) runs the same recipes natively with the host toolchain. +In general, we should strive to make build processes reproducable on developer machines and in CI by +leveraging the `mx-sdk` image and extending it with new tools as they are needed. ### Makefile targets -Run `make help` for the full, current target list (C++ core gates, generator, Go/C test targets, -quality gates, housekeeping). No Makefile target builds the `MX_API` sources yet -- the old -`lib`/`dev`/`test`/`examples-run` targets return in Phase 2 when they can actually build. +The `Makefile` serves as the entrypoint of build processes. It calls `cmake` which produces deeper, +generated makefiles in the build directory. You should lean heavily on our top-level `Makefile` and +suggest improvements when it doesn't have what you need. + +Run `make help` for the target list. ## The corert (core roundtrip) test -The corert test is the primary correctness gate. It exercises the generated parser by round-tripping -every eligible XML file in `data/` through the typed model and comparing the output to a normalized -form of the input. Both sides of a comparison get their root `version` attribute pinned to one -baseline so the attribute itself never produces a mismatch; the baseline is a constant in each -harness's normalize module (`musicXMLVersion` in `gen/test/go/corert/normalize.go`, -`MUSICXML_VERSION` in `gen/test/c/src/normalize.c`, `kMusicXmlVersionBaseline` in -`src/private/mxtest/corert/Compare.h` -- currently `3.0`), a harness choice, not a -property of the corpus or the architecture. +Runs with `make test-core-dev`. -Vocabulary note: "corert" is the suite that round-trips through `mx::core` only. The OLD -api-level roundtrip ("api import", `mxtest/import/ImportTest*` against `data/expected/`) was -deleted in Phase 2, superseded by corert plus the corpus-wide api roundtrip gate -(mx-impl-port-plan.md §7.3/§8). Always say which one you mean. +This test suite deserializes and reserializes the test corupus with `mx::core`. It can be compiled +without compiling the `mx::impl` and `mx::api` layes. This provides a mechanism for innovating on +the generated code and templates found in `gen/cpp` without fixing the `mx::impl` layer on every +change to `mx::core`. i.e. you can defer integrating `mx::core` changes with `mx::impl` (and by +extension `mx::api`) until you are ready. ### Flow (same in all three languages) -1. **Discover** eligible `.xml`/`.musicxml` files under `data/`, excluding directories `expected`, - `testOutput`, `generalxml`, `smufl`, and files matching `*.fixup.xml` or having a `.invalid` - sibling marker. -2. For each file: - a. Load the XML into a DOM. - b. Set the root `version` attribute to the harness baseline (see above). - c. **Parse** into the typed model via the generated parse entry point. - d. **Serialize** back to XML. - e. **Normalize** the actual output (see Normalization pipeline below). - f. Load a fresh expected document from disk, apply the same normalization. - g. Apply **fixups** from `.fixup.xml` sidecars to the expected document. - h. **Compare** the two DOMs depth-first: element names, text content, attributes (with numeric - equivalence for ints/floats). +1. **Discover** eligible `.xml`/`.musicxml` files under `data/`, (excluding certain directories, and + marker files. See `data/README.md) + - unparseable files have a sibling file ending with `.invalid` and are skipped. +2. For each file: Load the XML into a DOM, make certain expected alterations, parse it with + `mx::core`, serialize it back to XML, normalize the output, and compare the two DOMs. 3. Report pass/fail per file. -### Current state - -All three suites are GREEN. The C++ suite (`make test-core-dev`) passes **829/0/0** -(pass/fail/skip) with a pinned-counts case that makes count drift a failure. Go and C pass -777/0/52 (the 52 declare MusicXML 4.0; those targets generate from the 3.1 schema, and while -MusicXML is backward compatible, a newer document may use types an older model cannot -represent -- the harnesses gate on the root's declared version; the C++ target generates from -4.0, so nothing in the corpus skips for it). - -Beyond corert, the C++ target has four more standing gates (mx-core-plan.md §5): -`make validate-cpp` (every parsed corpus document is serialized and the OUTPUT is -xmllint-validated against the 4.0 XSD -- the permanent mechanical proof that value-clamp -leniency emits only valid XML), `make test-cpp-unit` (construction-safety, shape, and -rejection suites), `make probe-cpp` (must-NOT-compile probes), and the generator hygiene -gates (`make gen-check` = plates --check, `make test-gen` incl. test_agnosticism, -regen-then-`git diff --exit-code`, `make gen-quality` + `make gen-lint` floors). - -### Data directory conventions - -- `data/README.md` - documents marker file conventions. -- `*.xml.invalid` - sibling marker meaning the file is not valid MusicXML; skip it. -- `*.fixup.xml` - sidecar describing value substitutions for the expected document. Used when mx - clamps out-of-bounds values on import (e.g. MIDI channel 0 -> 1). Format: - ```xml - - - element - midi-channel - 0 - 1 - - - ``` -- `data/testOutput/corert/` - debug output directory for failure diffs (gitignored). - -### Normalization pipeline - -Applied to both expected and actual documents before comparison: - -1. Set XML declaration: ``. -2. Set DOCTYPE based on root element name (`score-timewise` vs `score-partwise`). -3. Set the root `version` attribute to the harness baseline version. -4. Strip whitespace-only text nodes from every element (pretty-printing indentation is not - content; MusicXML has no mixed content, and the rule is applied to both sides, so it stays - symmetric). -5. Strip trailing zeros from decimal fields (the list lives in `DecimalFields.h`). -6. Sort attributes alphabetically by QUALIFIED name (`xlink:href`, not `href`; must be last). - -Comparison details that took debugging to get right (the C++ harness applies the same rules): -compare each element's DIRECT text only, never the subtree concatenation -(a numerically-equivalent leaf reformat would otherwise fail at every ancestor); compare -attributes by qualified name with entity-resolved values (a parsed `xlink:href` is (ns, href) -while a serialized one may be the literal name); the Go loader transcodes UTF-16 and ISO-8859-1 -to UTF-8 (libxml2 and pugixml auto-detect these; Go's encoding/xml does not). Documents whose -root declares a version newer than the target's generated `SupportedMusicXMLVersion` / -`MX_SUPPORTED_MUSICXML_VERSION` constant are skipped, not failed. - -### Numeric equivalence - -Text comparisons use numeric equivalence: if both strings parse as integers (or floats), compare -their values instead of their string representations. Float comparison uses epsilon `< 0.00000001`. - ## Generator (`gen/`) -`gen/` is a Python code generator (`python3 -m gen`) that reads the MusicXML XSD and emits -typed serialization/deserialization libraries. It runs as a pipeline: XSD parse -> IR -> -Plates (per-target projection) -> press (Mustache renderer). A target is a directory: -`config.toml` + `templates/`. All language knowledge lives in the target; the generator is -language-blind. +`gen/` is a Python code generator (`python3 -m gen`) that reads the MusicXML XSD and emits typed +serialization/deserialization libraries. See: +- `gen/AGENTS.md`: your entrypoint +- `gen/DESIGN.md`: how it was designed +- `gen/README.md`: human summary -Four targets: C++ (`gen/cpp/`, MusicXML 4.0 with sounds -- the product target, generates -`src/private/mx/core/generated/`), Go (`gen/test/go/`, 3.1, no sounds), C (`gen/test/c/`, -3.1 with sounds), JSON Schema (`gen/schema/`). The Go and C targets are non-validating corert -harnesses, not product surfaces. Generated output is committed; regenerate with `make gen`. - -For commands, quality gates, workflows, and key files: **`gen/AGENTS.md`**. -For full design -- pipeline stages, IR model and glossary, Plates architecture, press/Mustache -spec, agnosticism rationale, alternatives considered: **`gen/DESIGN.md`**. +What you need to know right now is that `gen/cpp` is where our MusicXML types are coming from. Run +`make gen-cpp` to regenerate the C++ types. ## Quality gates -Always run `make fmt` after modifying code under `src/`; `make check` is the fmt gate. - -- C++ core changes: `make test-core-dev` (corert, pinned 829/0/0), `make test-cpp-unit`, - `make validate-cpp`, `make probe-cpp`, `make check-core-dev` (warning-free build). -- Generator changes: see `gen/AGENTS.md` for the full gate list. -- Go/C target changes: `make test-go`, `make test-c` (777/0/52 each). -- Coverage (advisory): `make coverage-core-dev` -> `data/testOutput/coverage/`. +Run `make fmt` for a stable version of clang format. +Run `make check` to see if you will pass in CI +Run `make test-core-dev` to run the `corert` tests, especially if you are working in `mx/core`. +Run `make test` to run all the tests. (Slow and heavy on the local machine) -CI (`.github/workflows/ci.yaml`) runs exactly these through the mx-sdk image, plus a native -macOS (AppleClang) build of the core suites. +Look at what will run in CI `.github/workflows/ci.yaml` and anticipate issues there when coding +locally. ## Key files to understand -- `src/private/mx/core/generated/Document.h` - the generated public entry point (parse/serialize) -- `src/private/mxtest/corert/CoreRoundtripImpl.cpp` - the C++ roundtrip implementation -- `src/private/mxtest/import/Normalize.cpp` + `DecimalFields.h` - the normalization pipeline -- `src/include/mx/api/DocumentManager.h` + `src/private/mx/api/DocumentManager.cpp` - the - api<->core seam Phase 2 rewrites (currently excluded from the build) -- `gen/AGENTS.md` - generator key files by task +| File | What it is | +|------|------------| +| `src/include/mx/api/DocumentManager.h` | The public API entry point: createFromFile, createFromScore, getData, writeToFile | +| `src/include/mx/api/ScoreData.h` | The primary api data model (ScoreData, PartData, MeasureData, ...) | +| `src/private/mx/api/DocumentManager.cpp` | API implementation: error channel, parse/serialize orchestration | +| `src/private/mx/impl/ScoreReader.cpp` | Translates mx::core -> mx::api ScoreData | +| `src/private/mx/impl/ScoreWriter.cpp` | Translates mx::api ScoreData -> mx::core | +| `src/private/mx/impl/NoteReader.cpp` | Core -> api note translation (one of the largest impl files) | +| `src/private/mx/impl/NoteWriter.cpp` | Api -> core note translation | +| `src/private/mx/core/generated/Document.h` | The core document model (parse, serialize, Document class) | +| `src/private/mxtest/corert/CoreRoundtripImpl.cpp` | The corert test runner (discover, parse, serialize, compare) | +| `src/private/mxtest/corert/Compare.cpp` | DOM normalization and comparison engine used by corert and api tests | diff --git a/CMakeLists.txt b/CMakeLists.txt index 99491e97d..66ec6dda5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) option(MX_CORE_DEV "Build the core roundtrip (corert) test binary against the regenerated mx/core." OFF) -option(MX_API "Build the mx::api/mx::impl product library and its tests (Phase 2)." ON) +option(MX_API "Build the mx::api/mx::impl product library and its tests." ON) option(MX_COVERAGE "Instrument the build for gcov coverage (GCC/Clang only)." OFF) @@ -65,9 +65,9 @@ target_include_directories(mx_core PUBLIC ${PRIVATE_DIR}) target_link_libraries(mx_core PUBLIC pugixml) target_compile_features(mx_core PUBLIC cxx_std_20) -# mx_core unit tests (Gate 4 construction-safety: clamping, factories, -# structural value shapes; W2 adds the grammar-shape tests). Only built once -# the generator has emitted (the tests exercise generated types). +# mx_core unit tests (clamping, factories, structural value shapes, +# grammar-shape tests). Only built once the generator has emitted (the +# tests exercise generated types). if(MX_CORE_GENERATED_SOURCES) file(GLOB_RECURSE SRC_MXTEST_CORE ${PRIVATE_DIR}/mxtest/core/*.cpp ${PRIVATE_DIR}/mxtest/core/*.h) file(GLOB_RECURSE SRC_CPUL_CORE ${PRIVATE_DIR}/cpul/*.cpp ${PRIVATE_DIR}/cpul/*.h) @@ -105,7 +105,7 @@ if(MX_CORE_DEV) target_include_directories(mxtest-core-dev PRIVATE ${PRIVATE_DIR}) target_link_libraries(mxtest-core-dev mx_core ${CMAKE_THREAD_LIBS_INIT}) - # mxtest-validate: the permanent Gate-2 tool (mx-core-plan.md §5.2). + # mxtest-validate: parses corpus files and serializes them for xmllint validation. # Parses every eligible corpus file, serializes the OUTPUT to # build/validate-out/, plus the default-constructed Document; `make # validate-cpp` then xmllint-validates every output against the 4.0 XSD. @@ -123,90 +123,10 @@ if(MX_CORE_DEV) endif() -# Phase-2 step-0 baseline tooling (mx-impl-port-plan.md §8): the judge that -# scores old-master api-roundtrip captures with the same normalize/compare -# machinery corert uses. The capture driver next to it compiles only against -# old master (71fc402) and is committed as a record; both are excluded from -# the MX_API globs below. -option(MX_BASELINE_JUDGE "Build the Phase-2 step-0 baseline judge tool." OFF) -if(MX_BASELINE_JUDGE) - add_executable(mxtest-baseline-judge - ${PRIVATE_DIR}/mxtest/api/baseline/JudgeMain.cpp - ${PRIVATE_DIR}/mxtest/corert/Compare.cpp - ${PRIVATE_DIR}/mxtest/corert/Compare.h - ${PRIVATE_DIR}/mxtest/corert/Fixer.cpp - ${PRIVATE_DIR}/mxtest/corert/Fixer.h - ${PRIVATE_DIR}/mxtest/import/Normalize.cpp - ${PRIVATE_DIR}/mxtest/import/Normalize.h - ${PRIVATE_DIR}/mxtest/import/DecimalFields.h) - target_include_directories(mxtest-baseline-judge PRIVATE ${PRIVATE_DIR}) - target_link_libraries(mxtest-baseline-judge pugixml) -endif() - -# Phase-2 step-2/3 scratch target (mx-impl-port-plan.md §9): compiles the -# already-ported api/impl translation units as a static archive (an archive -# needs no symbol resolution, so the port can be validated TU by TU before -# all 77 files exist). Grows during the step-3 wave; retired when MX_API -# builds the real `mx` library. -option(MX_IMPL_SLICE "Compile the ported mx::impl slice (Phase-2 scratch target)." OFF) -if(MX_IMPL_SLICE) - add_library(mx_impl_slice STATIC - ${PRIVATE_DIR}/mx/api/DocumentManager.cpp - ${PRIVATE_DIR}/mx/api/EncodingData.cpp - ${PRIVATE_DIR}/mx/api/MarkData.cpp - ${PRIVATE_DIR}/mx/api/ScoreData.cpp - ${PRIVATE_DIR}/mx/api/SoundID.cpp - ${PRIVATE_DIR}/mx/impl/Converter.cpp - ${PRIVATE_DIR}/mx/impl/Cursor.cpp - ${PRIVATE_DIR}/mx/impl/EncodingFunctions.cpp - ${PRIVATE_DIR}/mx/impl/LyricType.cpp - ${PRIVATE_DIR}/mx/impl/MetronomeReader.cpp - ${PRIVATE_DIR}/mx/impl/NoteReader.cpp - ${PRIVATE_DIR}/mx/impl/NoteWriter.cpp - ${PRIVATE_DIR}/mx/impl/ScoreConversions.cpp - ${PRIVATE_DIR}/mx/impl/AccidentalMarkFunctions.cpp - ${PRIVATE_DIR}/mx/impl/ArticulationsFunctions.cpp - ${PRIVATE_DIR}/mx/impl/OrnamentsFunctions.cpp - ${PRIVATE_DIR}/mx/impl/TechnicalFunctions.cpp - ${PRIVATE_DIR}/mx/impl/ArpeggiateFunctions.cpp - ${PRIVATE_DIR}/mx/impl/FermataFunctions.cpp - ${PRIVATE_DIR}/mx/impl/LayoutFunctions.cpp - ${PRIVATE_DIR}/mx/impl/NonArpeggiateFunctions.cpp - ${PRIVATE_DIR}/mx/impl/PageTextFunctions.cpp - ${PRIVATE_DIR}/mx/impl/SlideFunctions.cpp - ${PRIVATE_DIR}/mx/impl/StaffFunctions.cpp - ${PRIVATE_DIR}/mx/impl/TimeReader.cpp - ${PRIVATE_DIR}/mx/impl/DynamicsReader.cpp - ${PRIVATE_DIR}/mx/impl/DynamicsWriter.cpp - ${PRIVATE_DIR}/mx/impl/TupletReader.cpp - ${PRIVATE_DIR}/mx/impl/NoteFunctions.cpp - ${PRIVATE_DIR}/mx/impl/NotationsWriter.cpp - ${PRIVATE_DIR}/mx/impl/PropertiesWriter.cpp - ${PRIVATE_DIR}/mx/impl/DirectionReader.cpp - ${PRIVATE_DIR}/mx/impl/DirectionWriter.cpp - ${PRIVATE_DIR}/mx/impl/MeasureReader.cpp - ${PRIVATE_DIR}/mx/impl/MeasureWriter.cpp - ${PRIVATE_DIR}/mx/impl/PartReader.cpp - ${PRIVATE_DIR}/mx/impl/PartWriter.cpp - ${PRIVATE_DIR}/mx/impl/ScoreReader.cpp - ${PRIVATE_DIR}/mx/impl/ScoreWriter.cpp) - target_include_directories(mx_impl_slice PRIVATE ${PRIVATE_DIR}) - target_include_directories(mx_impl_slice PUBLIC $) - target_link_libraries(mx_impl_slice PUBLIC mx_core) -endif() if(MX_API) - # ========================================================================= - # Phase 2 (the mx::impl port): the mx::api/mx::impl product library and - # its preserved test suites. These sources are restored from the - # pre-newgen tree and are NOT expected to compile until mx::impl is - # reimplemented against the new mx::core and DocumentManager is rewritten - # on pugixml/mx::core::parse (newgen-integration-plan.md §8). Default OFF; - # this block exists so the port has a build home from day one. - # ========================================================================= - - message(STATUS "${PROJECT_NAME}: MX_API=ON: Phase-2 mx::api/mx::impl build") + message(STATUS "${PROJECT_NAME}: MX_API=ON: building mx::api/mx::impl") # PathRoot.h hands the api-test file walker the repo root at configure time. file(WRITE ${PRIVATE_DIR}/mxtest/file/PathRoot.h @@ -227,12 +147,9 @@ if(MX_API) target_include_directories(mx PUBLIC $) target_link_libraries(mx PUBLIC mx_core) - # The preserved api/impl suites (the Phase-2 acceptance gate) plus the - # harness infrastructure they depend on (file, control, and the old api - # import harness slated for a pugixml rewrite). + # The api/impl suites plus the harness infrastructure they depend on + # (file, control, and the api import harness). file(GLOB_RECURSE SRC_MXTEST_API ${PRIVATE_DIR}/mxtest/api/*.cpp ${PRIVATE_DIR}/mxtest/api/*.h) - # mxtest/api/baseline/ holds the step-0 capture/judge tooling, not suite code. - list(FILTER SRC_MXTEST_API EXCLUDE REGEX "/mxtest/api/baseline/") # CorpusRoundtripMain.cpp has its own main(); it is a separate binary. list(FILTER SRC_MXTEST_API EXCLUDE REGEX "/mxtest/api/CorpusRoundtripMain\\.cpp") file(GLOB_RECURSE SRC_MXTEST_CONTROL ${PRIVATE_DIR}/mxtest/control/*.cpp ${PRIVATE_DIR}/mxtest/control/*.h) @@ -260,7 +177,7 @@ if(MX_API) target_link_libraries(mxwrite mx ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(mxhide mx ${CMAKE_THREAD_LIBS_INIT}) - # Corpus api roundtrip harness (mx-impl-port-plan.md §8). + # Corpus api roundtrip harness. # Regression mode (CI): mxtest-api-roundtrip regression # Discovery mode (manual): mxtest-api-roundtrip discovery add_executable(mxtest-api-roundtrip diff --git a/Makefile b/Makefile index 64fd87b1d..390fc390b 100644 --- a/Makefile +++ b/Makefile @@ -9,9 +9,6 @@ # a dev machine runs natively with the host toolchain instead (used by the # macOS CI job, which has no Docker). Requires CMake >= 3.13. # -# The restored mx::api/mx::impl product stack is parked behind the CMake -# option MX_API=OFF until the Phase-2 port (newgen-integration-plan.md §8); -# no Makefile target builds it yet, so no advertised target is broken. # ============================================================================ CMAKE ?= cmake @@ -79,7 +76,7 @@ help: @echo 'mx targets (see AGENTS.md). All run via the mx-sdk Docker toolchain;' @echo 'set MX_RUNNING_IN_DOCKER=1 to run natively on the host instead.' @echo '' - @echo ' mx::api/mx::impl (Phase 2):' + @echo ' mx::api/mx::impl:' @echo ' make lib Build the mx static library (MX_API=ON).' @echo ' make dev Build mx + mxtest + examples + api-roundtrip binary.' @echo ' make test Run the mxtest suite (api/impl/file/control).' @@ -92,8 +89,8 @@ help: @echo ' make core-dev Build mx_core and the corert/unit/validate binaries.' @echo " make test-core-dev Run the core roundtrip suite. Filter: ARGS='[core-roundtrip] lysuite/*'" @echo ' make test-cpp-unit Run the mx::core unit tests (values, shapes, rejection suite).' - @echo ' make validate-cpp Gate 2: serialize every corpus file and xmllint-validate the OUTPUT.' - @echo ' make probe-cpp Gate 4: must-NOT-compile probes (invalid construction).' + @echo ' make validate-cpp Serialize every corpus file and xmllint-validate the output.' + @echo ' make probe-cpp Compile-time negative probes (invalid construction must not compile).' @echo ' make check-core-dev fmt-check + warning-free core-dev build.' @echo ' make coverage-core-dev Instrumented build, corert + unit suites, gcovr -> $(COV_DIR)/.' @echo '' @@ -215,10 +212,9 @@ test-core-dev: core-dev test-cpp-unit: core-dev $(BUILD_ROOT)/core-dev/mxtest-core $(ARGS) -# Gate 2 (docs/ai/design/mx-core-plan.md §5.2), a permanent gate: every -# parsed corpus document is serialized and the OUTPUT is validated against -# the MusicXML 4.0 XSD -- the mechanical proof that import leniency (value -# clamping) still emits only schema-valid XML. +# Serialize every parsed corpus document and xmllint-validate the output +# against the MusicXML 4.0 XSD -- mechanical proof that import leniency +# (value clamping) still emits only schema-valid XML. validate-cpp: core-dev rm -rf $(BUILD_ROOT)/validate-out $(BUILD_ROOT)/core-dev/mxtest-validate $(BUILD_ROOT)/validate-out @@ -229,9 +225,9 @@ validate-cpp: core-dev --schema $(CURDIR)/docs/musicxml-4.0-ed15c23.xsd *.xml 2>/dev/null \ && echo 'validate-cpp: all outputs are schema-valid.' -# Gate 4's compile-time probes (mx-core-plan.md §5.4): PROBE=0 must -# compile (the control); every numbered probe is an invalid-construction -# attempt that must NOT compile. +# Compile-time negative probes: PROBE=0 must compile (the control); +# every numbered probe is an invalid-construction attempt that must NOT +# compile. PROBE_COUNT := 7 probe-cpp: @$(CXX) -std=c++20 -fsyntax-only -I src/private -DPROBE=0 \ diff --git a/README.md b/README.md index 0d18c9d4a..f42ff0a13 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,10 @@ This project is a C++ library for working with MusicXML. ## Status -The `mx::core` typed model has been replaced by a generated implementation: a language-agnostic -code generator (`gen/`) reads the MusicXML 4.0 XSD and emits `mx::core` (see the -[Code Generation](#code-generation) section). The simplified `mx::api` layer and its `mx::impl` -implementation are fully ported to the new generated core (`docs/ai/design/mx-impl-port-plan.md`, -Phase 2 complete) and build by default. +The `mx::core` typed model is generated: a language-agnostic code generator (`gen/`) reads the +MusicXML 4.0 XSD and emits `mx::core` (see the [Code Generation](#code-generation) section). The +simplified `mx::api` layer and its `mx::impl` implementation are fully ported to the generated core +and build by default. # Build diff --git a/data/README.md b/data/README.md index ebd629057..484452211 100644 --- a/data/README.md +++ b/data/README.md @@ -65,3 +65,28 @@ The sidecars encode one uniform leniency policy, shared by every generated targe false): the lenient parse the deserializer uses keeps the value verbatim, because unlike a numeric bound there is no canonical replacement for a failed pattern, and round-trip fidelity wins. No fixup sidecar therefore ever encodes a string substitution. + +## Normalization pipeline + +Before `corert` compares an expected document against the one `mx` re-serialized, it normalizes +both so the comparison is canonical-against-canonical. The pipeline lives in +`src/private/mxtest/corert/Compare.cpp` and `src/private/mxtest/import/Normalize.cpp`: + +1. Pin the root `version` attribute to the harness baseline (`3.0`). +2. Strip whitespace-only text nodes from every element. Pretty-printing indentation is not content + (MusicXML has no mixed content), and the rule is applied to both sides, so it stays symmetric. +3. Strip trailing zeros from decimal fields: `mx` serializes the shortest round-trip form, so a + trailing-zero decimal like `40.00000` in a source file would otherwise mismatch. The field list + lives in `DecimalFields.h`. +4. Sort each element's attributes alphabetically by qualified name (`xlink:href`, not `href`); it + runs last. + +Comparison rules that took debugging to get right: + +- Compare each element's direct text only, never the subtree concatenation: a + numerically-equivalent leaf reformat would otherwise fail at every ancestor, not only the leaf. +- Compare attributes by qualified name, so a defect that drops a prefix (`xlink:href` -> `href`) + fails instead of sliding by on the local name. +- A document whose root declares a MusicXML version newer than the model's + `SupportedMusicXMLVersion` is skipped, not failed: it may use elements the generated model has no + types for. diff --git a/gen/config.py b/gen/config.py index 4ed362ce4..c2c59244c 100644 --- a/gen/config.py +++ b/gen/config.py @@ -138,7 +138,7 @@ class Config: types: dict[str, str] = field(default_factory=dict) # primitive overrides docs: DocsSection = field(default_factory=DocsSection) renames: Renames = field(default_factory=Renames) - # The import-policy repair table (mx-core-plan.md §2.4): a required + # The import-policy repair table: a required # attribute MISSING from a document gets this default injected by the # parser; a missing required attribute with no entry is a parse error. # Keyed (complex type wire, attribute wire) -> wire literal. diff --git a/gen/cpp/templates/defaults.h.tmpl b/gen/cpp/templates/defaults.h.tmpl index 19ed578d5..0d35a8d0b 100644 --- a/gen/cpp/templates/defaults.h.tmpl +++ b/gen/cpp/templates/defaults.h.tmpl @@ -5,7 +5,7 @@ namespace {{vars.namespace}} { -/// Gate-4 mechanical probe (plan §5.4): default-construct EVERY generated +/// Mechanical probe: default-construct EVERY generated /// complex, group, and choice type, serialize it, and re-parse the result /// with the strict parser. Throws ParseError if any type's natural zero /// serializes something the strict grammar would reject. diff --git a/gen/ir/resolve.py b/gen/ir/resolve.py index 7e7477162..a569b3cc4 100644 --- a/gen/ir/resolve.py +++ b/gen/ir/resolve.py @@ -216,7 +216,7 @@ def all_flat_elements(self, ct: ir.ComplexType) -> list[tuple[ir.Element, str]]: # or a repeated/optional anonymous sequence. Trivial single-element # groups are spliced inline (they add no structure, only an occurrence # wrapper); structural groups stay referenced so targets can emit them - # as shared types (mx-core-plan.md §2.9). All of this is neutral schema + # as shared types. All of this is neutral schema # reasoning -- nothing here knows what any target does with the view. @staticmethod diff --git a/gen/plates/model.py b/gen/plates/model.py index 9dfc43134..dff1c57f6 100644 --- a/gen/plates/model.py +++ b/gen/plates/model.py @@ -174,7 +174,7 @@ class StringPlate: # projected like enum variants (renameable, collision-gated) plus # whether a non-empty suffix is required. Empty for any other pattern # shape; see build.prefix_facets. A structural target stores the suffix - # and emits the prefix from the serializer (mx-core-plan.md §2.2). + # and emits the prefix from the serializer. prefixes: list[Variant] = field(default_factory=list) multi_prefix: bool = False suffix_required: bool = False diff --git a/gen/tests/test_plates.py b/gen/tests/test_plates.py index 4f7935dc7..87ae81ee2 100644 --- a/gen/tests/test_plates.py +++ b/gen/tests/test_plates.py @@ -689,7 +689,7 @@ def test_color_pattern_semantics(self): class ContentProjection(unittest.TestCase): - """The grammar-preserving content projection (mx-core-plan.md §2.9): + """The grammar-preserving content projection: fields, group/choice plates, synthesized hoisting, and its invisibility to targets that consume only the flat member view.""" diff --git a/src/include/mx/api/DocumentManager.h b/src/include/mx/api/DocumentManager.h index cfabba782..38b7d637a 100644 --- a/src/include/mx/api/DocumentManager.h +++ b/src/include/mx/api/DocumentManager.h @@ -20,8 +20,8 @@ using DocumentPtr = std::shared_ptr; namespace api { -// The mx::api error channel (mx-impl-port-plan.md §3): no exceptions escape -// this boundary; failures speak Result/ApiError, and any exception from +// The mx::api error channel: no exceptions escape this boundary; failures +// speak Result/ApiError, and any exception from // below becomes ResultCode::internalError. class DocumentManager { diff --git a/src/include/mx/api/Result.h b/src/include/mx/api/Result.h index 83c40a05f..43d95d9c2 100644 --- a/src/include/mx/api/Result.h +++ b/src/include/mx/api/Result.h @@ -15,8 +15,8 @@ namespace mx namespace api { -// The mx::api error vocabulary (mx-impl-port-plan.md §3). mx::api owns its -// own codes: the core-boundary failures are mirrored (public headers never +// The mx::api error vocabulary. mx::api owns its own codes: the core-boundary +// failures are mirrored (public headers never // include private mx::core headers), and the api adds the codes core has no // business knowing. No exceptions escape the DocumentManager boundary. enum class ResultCode diff --git a/src/include/mx/api/ScoreData.h b/src/include/mx/api/ScoreData.h index 75c696510..422a20026 100644 --- a/src/include/mx/api/ScoreData.h +++ b/src/include/mx/api/ScoreData.h @@ -21,11 +21,10 @@ namespace mx { namespace api { -// Frozen for source compatibility; read-side informational only -// (mx-impl-port-plan.md §4). The reader sets ThreePointZero iff the parsed -// document's declared version string is exactly "3.0". This field no longer -// influences output: mx writes MusicXML 4.0 documents, and the written root -// version attribute is always "4.0". +// Frozen for source compatibility; read-side informational only. The reader +// sets ThreePointZero iff the parsed document's declared version string is +// exactly "3.0". This field no longer influences output: mx writes MusicXML +// 4.0 documents, and the written root version attribute is always "4.0". enum class MusicXmlVersion { unspecified, diff --git a/src/private/mx/api/DocumentManager.cpp b/src/private/mx/api/DocumentManager.cpp index 7711c9a68..9ca502355 100644 --- a/src/private/mx/api/DocumentManager.cpp +++ b/src/private/mx/api/DocumentManager.cpp @@ -28,7 +28,7 @@ namespace { // mx::api owns its error vocabulary; the core parse codes are mirrored -// one-to-one (mx-impl-port-plan.md §3). +// one-to-one. ResultCode mirror(core::ErrorCode code) { switch (code) @@ -74,8 +74,7 @@ std::string fileExtension(const std::string &filePath) return filePath.substr(dotPos + 1); } -// The write side always emits version="4.0", unconditionally -// (mx-impl-port-plan.md §4): mx writes MusicXML 4.0 documents; echoing a +// The write side always emits version="4.0" unconditionally: echoing a // declared "3.0" (or ScoreData::musicXmlVersion) from a 4.0 model was a // fiction. Enforced here at the write boundary on a copy, so the stored // document (and the getDocument escape hatch) keeps what was parsed. @@ -230,7 +229,7 @@ Result DocumentManager::createFromScore(const ScoreData &score) catch (const impl::WriteRefusal &refusal) { // Refuse, don't drop: the ScoreData describes something the core - // model will not represent (mx-impl-port-plan.md §3). + // model will not represent. return refusal.error(); } catch (const std::exception &e) @@ -312,10 +311,9 @@ Result DocumentManager::getData(int documentId) const return ApiError{ResultCode::badDocumentId, "", "getData: bad document id"}; } - // The old mutate-and-restore dance (convert the stored document to - // partwise, read, convert back) dies: convert into a local partwise - // copy and read that; the stored document is untouched - // (mx-impl-port-plan.md §5). + // Convert into a local partwise copy and read that; the stored + // document is untouched. The old mutate-and-restore dance (convert + // the stored document to partwise, read, convert back) is gone. if (it->second->isScoreTimewise()) { const core::ScorePartwise scorePartwise = impl::timewisePartwise(it->second->asScoreTimewise()); diff --git a/src/private/mx/core/Decimal.h b/src/private/mx/core/Decimal.h index 2e925afd0..d3bff324d 100644 --- a/src/private/mx/core/Decimal.h +++ b/src/private/mx/core/Decimal.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/Error.h b/src/private/mx/core/Error.h index 29a35ae2b..6fcb87112 100644 --- a/src/private/mx/core/Error.h +++ b/src/private/mx/core/Error.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/Lexical.h b/src/private/mx/core/Lexical.h index a8dc5f694..d9b98900c 100644 --- a/src/private/mx/core/Lexical.h +++ b/src/private/mx/core/Lexical.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/NameToken.h b/src/private/mx/core/NameToken.h index 01d29aed0..678f91ccc 100644 --- a/src/private/mx/core/NameToken.h +++ b/src/private/mx/core/NameToken.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/OneOrMore.h b/src/private/mx/core/OneOrMore.h index d739aaba6..fc131b804 100644 --- a/src/private/mx/core/OneOrMore.h +++ b/src/private/mx/core/OneOrMore.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/Result.h b/src/private/mx/core/Result.h index 6935e1245..b463b84a3 100644 --- a/src/private/mx/core/Result.h +++ b/src/private/mx/core/Result.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/Token.h b/src/private/mx/core/Token.h index e28087430..3cd78db3c 100644 --- a/src/private/mx/core/Token.h +++ b/src/private/mx/core/Token.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/Xml.h b/src/private/mx/core/Xml.h index a340d2773..0b142e772 100644 --- a/src/private/mx/core/Xml.h +++ b/src/private/mx/core/Xml.h @@ -2,8 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Hand-written runtime for the generated mx::core model. Never contains -// generated content (regen-safe split, see docs/ai/design/mx-core-plan.md §2.6). +// Hand-written runtime for the generated mx::core model; never regenerated. #pragma once diff --git a/src/private/mx/core/generated/DefaultsProbe.h b/src/private/mx/core/generated/DefaultsProbe.h index 86d9eb279..c4c12bd58 100644 --- a/src/private/mx/core/generated/DefaultsProbe.h +++ b/src/private/mx/core/generated/DefaultsProbe.h @@ -5,7 +5,7 @@ namespace mx::core { -/// Gate-4 mechanical probe (plan §5.4): default-construct EVERY generated +/// Mechanical probe: default-construct EVERY generated /// complex, group, and choice type, serialize it, and re-parse the result /// with the strict parser. Throws ParseError if any type's natural zero /// serializes something the strict grammar would reject. diff --git a/src/private/mx/impl/NoteWriter.cpp b/src/private/mx/impl/NoteWriter.cpp index b2f717c52..dd34322ea 100644 --- a/src/private/mx/impl/NoteWriter.cpp +++ b/src/private/mx/impl/NoteWriter.cpp @@ -92,7 +92,7 @@ core::Note NoteWriter::getNote(bool isStartOfChord) const const auto added = myOutNote.addBeam(std::move(mxBeam)); if (!added) { - // Refuse, don't drop (mx-impl-port-plan.md §3): the core caps + // Refuse, don't drop: the core caps // beams at 8; silently discarding the ninth would lose data. throw WriteRefusal{api::ApiError{api::ResultCode::tooManyElements, added.error().path, "NoteWriter: " + added.error().message}}; diff --git a/src/private/mx/impl/ScoreConversions.h b/src/private/mx/impl/ScoreConversions.h index 6cea66d71..dd529f276 100644 --- a/src/private/mx/impl/ScoreConversions.h +++ b/src/private/mx/impl/ScoreConversions.h @@ -12,11 +12,10 @@ namespace mx namespace impl { -// The timewise <-> partwise pivot, ported from the old core's -// ScoreConversions (71fc402) per mx-impl-port-plan.md §5: a regroup of -// parts-of-measures <-> measures-of-parts plus header. Its only consumer is -// DocumentManager. Under value semantics the old shallow copies become real -// copies -- strictly safer, behavior-identical for this use. +// The timewise <-> partwise pivot: a regroup of parts-of-measures +// <-> measures-of-parts plus header. Its only consumer is DocumentManager. +// Under value semantics the old shallow copies become real copies -- +// strictly safer, behavior-identical for this use. // Converts a 'score-partwise' to 'score-timewise'. core::ScoreTimewise partwiseTimewise(const core::ScorePartwise &inScore); diff --git a/src/private/mx/impl/WriteRefusal.h b/src/private/mx/impl/WriteRefusal.h index ac8e99c51..02f787ca3 100644 --- a/src/private/mx/impl/WriteRefusal.h +++ b/src/private/mx/impl/WriteRefusal.h @@ -14,8 +14,8 @@ namespace mx namespace impl { -// Internal to the impl layer (mx-impl-port-plan.md §3, createFromScore): -// when a ScoreData describes something the new core won't represent (e.g. a +// Internal to the impl layer (createFromScore): when a ScoreData describes +// something the new core won't represent (e.g. a // ninth beam against the bounded addBeam), the writer refuses rather than // silently dropping user data. Writers throw this; DocumentManager catches // it at the api boundary and returns the carried ApiError. Never escapes diff --git a/src/private/mx/utility/OptionalMembers.h b/src/private/mx/utility/OptionalMembers.h index 4b27bbd08..e89b18377 100644 --- a/src/private/mx/utility/OptionalMembers.h +++ b/src/private/mx/utility/OptionalMembers.h @@ -5,7 +5,7 @@ #pragma once // Generic access to optional attributes that may or may not exist on a given -// core element class (mx-impl-port-plan.md §6). +// core element class. // // The old core exposed attributes as public data members // (`attr.hasDefaultX` + `attr.defaultX`) and this header SFINAE-detected diff --git a/src/private/mxtest/api/CorpusRoundtripMain.cpp b/src/private/mxtest/api/CorpusRoundtripMain.cpp index e5581f0f3..914c88215 100644 --- a/src/private/mxtest/api/CorpusRoundtripMain.cpp +++ b/src/private/mxtest/api/CorpusRoundtripMain.cpp @@ -2,7 +2,7 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Corpus api roundtrip harness (mx-impl-port-plan.md §8). +// Corpus api roundtrip harness. // // Runs the full api pipeline (createFromFile → getData → createFromScore → // writeToStream) over corpus files and compares each output to its input with diff --git a/src/private/mxtest/api/baseline/CaptureDriver.cpp b/src/private/mxtest/api/baseline/CaptureDriver.cpp deleted file mode 100644 index 0c4a6d233..000000000 --- a/src/private/mxtest/api/baseline/CaptureDriver.cpp +++ /dev/null @@ -1,230 +0,0 @@ -// MusicXML Class Library -// Copyright (c) by Matthew James Briggs -// Distributed under the MIT License - -// Phase-2 Step-0 baseline capture driver (docs/ai/design/mx-impl-port-plan.md §8). -// -// This program compiles against OLD master (71fc402) -- the pre-port mx -// library with its throwing DocumentManager -- NOT against this tree. It is -// committed here as the record of how src/private/mxtest/api/ -// roundtrip-baseline.txt was captured (this directory is excluded from the -// MX_API build in CMakeLists.txt). -// -// Capture procedure (run inside a scratch worktree of 71fc402): -// -// cmake -S . -B build/lib -G Ninja -DCMAKE_BUILD_TYPE=Release -DMX_BUILD_TESTS=OFF -// ninja -C build/lib mx -// g++ -std=c++17 -O2 -I src/include -o build/capture CaptureDriver.cpp \ -// build/lib/libmx.a -// build/capture [startIndex] -// -// For every eligible corpus file (same discovery rules as corert: .xml or -// .musicxml under , excluding the directories expected/testOutput/ -// generalxml/smufl, *.fixup.xml sidecars, and files with a .invalid marker) -// it runs the old library's honest api roundtrip: -// -// createFromFile -> getData -> createFromScore -> writeToFile -// -// writing the output document to / -// and one status line per file to stdout: -// -// OK|LOADFAIL|GETDATAFAIL|CREATEFAIL|WRITEFAIL relpath message -// -// The OK outputs are then judged against their inputs with the NEW tree's -// normalize-and-compare machinery (mxtest-apirt-judge); the files whose old -// output survives that judgment ARE the pinned baseline manifest. - -#include "mx/api/DocumentManager.h" - -#include -#include -#include -#include -#include -#include - -namespace -{ - -namespace fs = std::filesystem; - -bool isExcludedPath(const fs::path &relative) -{ - static const std::vector excludedSegments = {"expected", "testOutput", "generalxml", "smufl"}; - for (const auto &part : relative) - { - const std::string seg = part.string(); - for (const auto &ex : excludedSegments) - { - if (seg == ex) - { - return true; - } - } - } - return false; -} - -bool hasXmlExtension(const fs::path &p) -{ - const std::string ext = p.extension().string(); - return ext == ".xml" || ext == ".musicxml"; -} - -bool isFixupSidecar(const fs::path &p) -{ - const std::string filename = p.filename().string(); - const std::string suffix = ".fixup.xml"; - if (filename.size() < suffix.size()) - { - return false; - } - return filename.compare(filename.size() - suffix.size(), suffix.size(), suffix) == 0; -} - -bool hasInvalidMarker(const fs::path &p) -{ - fs::path marker = p; - marker += ".invalid"; - std::error_code ec; - return fs::exists(marker, ec); -} - -std::vector discoverInputFiles(const std::string &dataRoot) -{ - std::vector result; - const fs::path root(dataRoot); - if (!fs::exists(root)) - { - return result; - } - for (auto it = fs::recursive_directory_iterator(root); it != fs::recursive_directory_iterator(); ++it) - { - const auto &entry = *it; - if (!entry.is_regular_file()) - { - continue; - } - const fs::path &p = entry.path(); - const fs::path relative = fs::relative(p, root); - if (isExcludedPath(relative) || !hasXmlExtension(p) || isFixupSidecar(p) || hasInvalidMarker(p)) - { - continue; - } - result.push_back(p.string()); - } - std::sort(result.begin(), result.end()); - return result; -} - -std::string flatten(const std::string &relPath) -{ - std::string flat = relPath; - std::replace(flat.begin(), flat.end(), '/', '_'); - std::replace(flat.begin(), flat.end(), '\\', '_'); - return flat; -} - -void report(const char *status, const std::string &relPath, const std::string &message = "") -{ - std::cout << status << "\t" << relPath << "\t" << message << std::endl; -} - -} // namespace - -int main(int argc, char *argv[]) -{ - if (argc < 3) - { - std::cerr << "usage: capture [startIndex]" << std::endl; - return 2; - } - const std::string dataRoot = argv[1]; - const fs::path outDir = argv[2]; - const size_t startIndex = argc > 3 ? static_cast(std::atol(argv[3])) : 0; - - fs::create_directories(outDir); - const auto files = discoverInputFiles(dataRoot); - auto &mgr = mx::api::DocumentManager::getInstance(); - - for (size_t i = startIndex; i < files.size(); ++i) - { - const std::string &path = files.at(i); - const std::string rel = fs::relative(fs::path(path), fs::path(dataRoot)).generic_string(); - std::cerr << "[" << i << "/" << files.size() << "] " << rel << std::endl; - - int loadId = -1; - try - { - loadId = mgr.createFromFile(path); - } - catch (const std::exception &e) - { - report("LOADFAIL", rel, e.what()); - continue; - } - catch (...) - { - report("LOADFAIL", rel, "unknown exception"); - continue; - } - - mx::api::ScoreData score; - try - { - score = mgr.getData(loadId); - mgr.destroyDocument(loadId); - } - catch (const std::exception &e) - { - mgr.destroyDocument(loadId); - report("GETDATAFAIL", rel, e.what()); - continue; - } - catch (...) - { - mgr.destroyDocument(loadId); - report("GETDATAFAIL", rel, "unknown exception"); - continue; - } - - int outId = -1; - try - { - outId = mgr.createFromScore(score); - } - catch (const std::exception &e) - { - report("CREATEFAIL", rel, e.what()); - continue; - } - catch (...) - { - report("CREATEFAIL", rel, "unknown exception"); - continue; - } - - try - { - const fs::path outPath = outDir / flatten(rel); - mgr.writeToFile(outId, outPath.string()); - mgr.destroyDocument(outId); - } - catch (const std::exception &e) - { - mgr.destroyDocument(outId); - report("WRITEFAIL", rel, e.what()); - continue; - } - catch (...) - { - mgr.destroyDocument(outId); - report("WRITEFAIL", rel, "unknown exception"); - continue; - } - - report("OK", rel); - } - - return 0; -} diff --git a/src/private/mxtest/api/baseline/JudgeMain.cpp b/src/private/mxtest/api/baseline/JudgeMain.cpp deleted file mode 100644 index 8330cf57c..000000000 --- a/src/private/mxtest/api/baseline/JudgeMain.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// MusicXML Class Library -// Copyright (c) by Matthew James Briggs -// Distributed under the MIT License - -// Phase-2 Step-0 baseline judge (docs/ai/design/mx-impl-port-plan.md §8). -// -// Judges the OLD library's api-roundtrip outputs (written by -// CaptureDriver.cpp in a 71fc402 worktree) against their inputs with the -// NEW normalize-and-compare machinery -- the exact comparator the Phase-2 -// corpus api-roundtrip gate uses (mxtest/corert/Compare + Fixer sidecars). -// The files judged PASS form the pinned baseline manifest -// (src/private/mxtest/api/roundtrip-baseline.txt). -// -// Build: cmake -DMX_BASELINE_JUDGE=on; target mxtest-baseline-judge. -// -// usage: mxtest-baseline-judge -// -// is the capture driver's stdout (statusrelpathmsg). -// For every OK line, loads / as expected and -// / as actual, normalizes both, applies the -// input's .fixup.xml sidecar to the expected side, compares, and prints one -// line per file: PASS|FAIL relpath detail. Non-OK capture rows -// are echoed as SKIP rows. Exit 0 (even with FAILs; the caller selects the -// PASS set). - -#include "mxtest/corert/Compare.h" -#include "mxtest/corert/Fixer.h" - -#include "pugixml/pugixml.hpp" - -#include -#include -#include -#include -#include -#include - -namespace -{ - -std::string flatten(const std::string &relPath) -{ - std::string flat = relPath; - std::replace(flat.begin(), flat.end(), '/', '_'); - std::replace(flat.begin(), flat.end(), '\\', '_'); - return flat; -} - -std::vector splitTabs(const std::string &line) -{ - std::vector out; - std::stringstream ss(line); - std::string field; - while (std::getline(ss, field, '\t')) - { - out.push_back(field); - } - return out; -} - -} // namespace - -int main(int argc, char *argv[]) -{ - if (argc != 4) - { - std::cerr << "usage: mxtest-baseline-judge " << std::endl; - return 2; - } - const std::string dataRoot = argv[1]; - const std::string capturedDir = argv[2]; - std::ifstream status(argv[3]); - if (!status.is_open()) - { - std::cerr << "cannot open status file: " << argv[3] << std::endl; - return 2; - } - - std::string line; - while (std::getline(status, line)) - { - if (line.empty()) - { - continue; - } - const auto fields = splitTabs(line); - if (fields.size() < 2) - { - continue; - } - const std::string &captureStatus = fields.at(0); - const std::string &rel = fields.at(1); - if (captureStatus != "OK") - { - std::cout << "SKIP\t" << rel << "\tcapture status " << captureStatus << std::endl; - continue; - } - - const std::string inputPath = dataRoot + "/" + rel; - const std::string actualPath = capturedDir + "/" + flatten(rel); - - pugi::xml_document expectedDoc; - if (!expectedDoc.load_file(inputPath.c_str(), pugi::parse_default | pugi::parse_doctype)) - { - std::cout << "FAIL\t" << rel << "\tfailed to load expected input" << std::endl; - continue; - } - pugi::xml_document actualDoc; - if (!actualDoc.load_file(actualPath.c_str(), pugi::parse_default | pugi::parse_doctype)) - { - std::cout << "FAIL\t" << rel << "\tfailed to load captured output" << std::endl; - continue; - } - - mxtest::corert::normalizeForComparison(expectedDoc); - mxtest::corert::normalizeForComparison(actualDoc); - mxtest::corert::Fixer fixer(inputPath); - fixer.applyToExpected(expectedDoc); - - const auto fail = mxtest::corert::compareElements(expectedDoc.document_element(), actualDoc.document_element()); - if (fail.isFailure) - { - std::cout << "FAIL\t" << rel << "\t" << fail.detail << std::endl; - } - else - { - std::cout << "PASS\t" << rel << "\t" << std::endl; - } - } - return 0; -} diff --git a/src/private/mxtest/api/baseline/README.md b/src/private/mxtest/api/baseline/README.md deleted file mode 100644 index 1fa83af63..000000000 --- a/src/private/mxtest/api/baseline/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Step-0 baseline capture (mx-impl-port-plan.md §8) - -This directory is the record of the Phase-2 pre-port baseline: the old -library's (master `71fc402`) honest corpus-wide api roundtrip, judged with -the NEW normalize-and-compare machinery. The resulting pinned pass-list is -`../roundtrip-baseline.txt` — the zero-regression bar for the Phase-2 -corpus api-roundtrip gate. - -Contents: - -- `CaptureDriver.cpp` — the one-off driver, compiled against OLD master in - a scratch worktree (it does NOT compile in this tree; this directory is - excluded from the `MX_API` globs). For each eligible corpus file it ran - `createFromFile -> getData -> createFromScore -> writeToFile`, recording - a status row per file. Build/run instructions are in its header comment. -- `JudgeMain.cpp` — the judge (`cmake -DMX_BASELINE_JUDGE=on`, target - `mxtest-baseline-judge`). Scores each captured output against its input - with corert's comparator: `normalizeForComparison` both sides, apply the - input's `.fixup.xml` sidecar to the expected side, strict depth-first - DOM compare with numeric equivalence. -- `capture-status-71fc402.txt` — the driver's status output (2026-06-12, - data root = this tree's `data/`): 829 files discovered, 794 OK, - 19 LOADFAIL, 8 GETDATAFAIL, 8 CREATEFAIL. The failures are the old - 3.0-era api meeting 3.1/4.0 features (unknown `listen`/`brass-bend`/... - elements, numeral harmony without root/function, metronome - note-relation, non-BPM tempo writes). -- `judge-results-71fc402.txt` — the judge's verdict per file: 1 PASS, - 793 FAIL, 35 SKIP (the capture failures). The FAILs are genuine - api-subset fidelity losses, verified by hand on samples: `mx::api` - reorders `` children (encoding-date before software), drops - ``, ``, most of ``, `` (writes - movement-title only), link/bookmark attributes, second `` - elements, position attributes on ``, etc. - -The single passing file is the baseline. This is the honest pre-port truth -of the old library under a strict comparator the old tree never had; the -design doc anticipated exactly this ("files using unsupported features -cannot round-trip with fidelity, by design"). The pass-list grows in -Step 5 via discovery mode as deliberate commits. diff --git a/src/private/mxtest/api/baseline/capture-status-71fc402.txt b/src/private/mxtest/api/baseline/capture-status-71fc402.txt deleted file mode 100644 index dcbed8dc2..000000000 --- a/src/private/mxtest/api/baseline/capture-status-71fc402.txt +++ /dev/null @@ -1,848 +0,0 @@ -OK custom/musescore-slur-start-stop.musicxml -OK custom/systems-and-pages.xml -OK custom/transposition.musicxml -OK foundsuite/12 Horn Duets.xml -OK foundsuite/ARBEAU Belle qui tiens ma vie.xml -OK foundsuite/Adagio and Fugue in C minor, K.546.xml -OK foundsuite/An Chloe.xml -OK foundsuite/Berlioz_Le_Corsaire.xml -OK foundsuite/Black Note Study Op 10 no 5.xml -OK foundsuite/Deutscher Tanz D.820.1.xml -OK foundsuite/Invention 1.xml -OK foundsuite/Invention 2.xml -OK foundsuite/Invention 3.xml -OK foundsuite/Invention_10.xml -OK foundsuite/Invention_11.xml -OK foundsuite/Invention_12.xml -OK foundsuite/Invention_13.xml -OK foundsuite/Invention_14.xml -OK foundsuite/Invention_15.xml -OK foundsuite/Invention_4.xml -OK foundsuite/Invention_5.xml -OK foundsuite/Invention_6.xml -OK foundsuite/Invention_7.xml -OK foundsuite/Invention_8.xml -OK foundsuite/Invention_9.xml -OK foundsuite/Moments Musicaux Op16 No4.xml -OK foundsuite/O_Holy_Night-Adam-1871.xml -OK foundsuite/O_Holy_Night-Adam-1974.xml -OK foundsuite/O_Holy_Night.xml -OK foundsuite/PepAiraSco.xml -OK foundsuite/PezR44Sco.xml -OK foundsuite/Rimsky-Korsakov Op11 No4.xml -OK foundsuite/RonCLunSco.xml -OK foundsuite/SCHUBERT An die Sonne.xml -OK foundsuite/Schubert_der_Mueller.xml -OK foundsuite/Silent_Night-Hartwig.xml -OK foundsuite/Silent_Night_Young_1.xml -OK foundsuite/Yeah.xml -OK foundsuite/Απτάλικο.xml -OK kiritan_singing/kiritan_singing_01.xml -OK kiritan_singing/kiritan_singing_02.xml -OK kiritan_singing/kiritan_singing_03.xml -OK kiritan_singing/kiritan_singing_04.xml -OK kiritan_singing/kiritan_singing_05.xml -OK kiritan_singing/kiritan_singing_06.xml -OK kiritan_singing/kiritan_singing_07.xml -OK kiritan_singing/kiritan_singing_08.xml -OK kiritan_singing/kiritan_singing_09.xml -OK kiritan_singing/kiritan_singing_10.xml -OK kiritan_singing/kiritan_singing_11.xml -OK kiritan_singing/kiritan_singing_12.xml -OK kiritan_singing/kiritan_singing_13.xml -OK kiritan_singing/kiritan_singing_14.xml -OK kiritan_singing/kiritan_singing_15.xml -OK kiritan_singing/kiritan_singing_16.xml -OK kiritan_singing/kiritan_singing_17.xml -OK kiritan_singing/kiritan_singing_18.xml -OK kiritan_singing/kiritan_singing_19.xml -OK kiritan_singing/kiritan_singing_20.xml -OK kiritan_singing/kiritan_singing_21.xml -OK kiritan_singing/kiritan_singing_22.xml -OK kiritan_singing/kiritan_singing_23.xml -OK kiritan_singing/kiritan_singing_24.xml -OK kiritan_singing/kiritan_singing_25.xml -OK kiritan_singing/kiritan_singing_26.xml -OK kiritan_singing/kiritan_singing_27.xml -OK kiritan_singing/kiritan_singing_28.xml -OK kiritan_singing/kiritan_singing_29.xml -OK kiritan_singing/kiritan_singing_30.xml -OK kiritan_singing/kiritan_singing_31.xml -OK kiritan_singing/kiritan_singing_32.xml -OK kiritan_singing/kiritan_singing_33.xml -OK kiritan_singing/kiritan_singing_34.xml -OK kiritan_singing/kiritan_singing_35.xml -OK kiritan_singing/kiritan_singing_36.xml -OK kiritan_singing/kiritan_singing_37.xml -OK kiritan_singing/kiritan_singing_38.xml -OK kiritan_singing/kiritan_singing_39.xml -OK kiritan_singing/kiritan_singing_40.xml -OK kiritan_singing/kiritan_singing_41.xml -OK kiritan_singing/kiritan_singing_42.xml -OK kiritan_singing/kiritan_singing_43.xml -OK kiritan_singing/kiritan_singing_44.xml -OK kiritan_singing/kiritan_singing_45.xml -OK kiritan_singing/kiritan_singing_46.xml -OK kiritan_singing/kiritan_singing_47.xml -OK kiritan_singing/kiritan_singing_48.xml -OK kiritan_singing/kiritan_singing_49.xml -OK kiritan_singing/kiritan_singing_50.xml -OK ksuite/Bombe.xml -OK ksuite/k001a_Articulations.xml -OK ksuite/k001b_Articulations_Above.xml -OK ksuite/k001c_Articulations_Below.xml -OK ksuite/k002a_Fermatas.xml -OK ksuite/k003a_Ornaments.xml -OK ksuite/k004a_Technical.xml -OK ksuite/k005a_Spanners_Slides.xml -OK ksuite/k006a_Clefs_sign_G_ln_2_oct_0_Treble.xml -OK ksuite/k006a_Header_Scaling_Decimals.xml -OK ksuite/k006b_Clefs_sign_F_ln_4_oct_0_Bass.xml -OK ksuite/k006c_Clefs_sign_C_ln_3_oct_0_Viola.xml -OK ksuite/k006d_Clefs_sign_C_ln_4_oct_0_Tenor.xml -OK ksuite/k006e_Clefs_sign_C_ln_5_oct_0_Baritone.xml -OK ksuite/k006f_Clefs_sign_C_ln_1_oct_0_Soprano.xml -OK ksuite/k006g_Clefs_sign_C_ln_2_oct_0_Mezzo_Soprano.xml -OK ksuite/k006h_Clefs_sign_G_ln_1_oct_0_French.xml -OK ksuite/k006i_Clefs_sign_F_ln_3_oct_0_Varbaritone.xml -OK ksuite/k006j_Clefs_sign_F_ln_5_oct_0_Subbass.xml -OK ksuite/k006k_Clefs_sign_G_ln_2_oct_neg2_G_15MB.xml -OK ksuite/k006l_Clefs_sign_G_ln_2_oct_neg1_G_8VB.xml -OK ksuite/k006m_Clefs_sign_G_ln_2_oct_1_G_8VA.xml -OK ksuite/k006n_Clefs_sign_G_ln_2_oct_2_G_15MA.xml -OK ksuite/k006o_Clefs_sign_F_ln_4_oct_neg2_F_15MB.xml -OK ksuite/k006p_Clefs_sign_F_ln_4_oct_neg1_F_8VB.xml -OK ksuite/k006q_Clefs_sign_F_ln_4_oct_1_F_8VA.xml -OK ksuite/k006r_Clefs_sign_F_ln_4_oct_2_F_15MA.xml -OK ksuite/k006s_Clefs_sign_percussion_ln_3_oct_0_Percussion.xml -OK ksuite/k006t_Clefs_sign_TAB_ln_3_oct_0_Tab.xml -OK ksuite/k006u_Clefs_sign_jianpu_ln_3_oct_0_Jianpu.xml -OK ksuite/k006v_Clefs_sign_none_ln_3_oct_0_None.xml -OK ksuite/k007a_Notations_Dynamics.xml -OK ksuite/k007b_Notations_Dynamics_Attributes.xml -OK ksuite/k007c_Directions_Dynamics.xml -OK ksuite/k007d_Directions_Dynamics_Attributes.xml -OK ksuite/k008a_Beaming.xml -OK ksuite/k009a_Slurs.xml -OK ksuite/k009b_Slur_Attributes.xml -OK ksuite/k010a_Ties.xml -OK ksuite/k010b_Bad_Ties.xml -OK ksuite/k011a_Tuplets.xml -OK ksuite/k012a_Tempo_Markings.xml -OK ksuite/k013a_OrchestralScoreFinale.xml -OK ksuite/k013b_OrchestralScoreSibelius.xml -OK ksuite/k014a_Fermatas.xml -OK ksuite/k015a_System_Layout.xml -OK ksuite/k016a_Miscellaneous_Fields.xml -OK ksuite/temp.xml -OK logicpro/logic01a_homoSapiens.xml -OK lysuite/ly01a_Pitches_Pitches.xml -OK lysuite/ly01b_Pitches_Intervals.xml -OK lysuite/ly01c_Pitches_NoVoiceElement.xml -OK lysuite/ly01d_Pitches_Microtones.xml -OK lysuite/ly01e_Pitches_ParenthesizedAccidentals.xml -OK lysuite/ly01f_Pitches_ParenthesizedMicrotoneAccidentals.xml -OK lysuite/ly02a_Rests_Durations.xml -OK lysuite/ly02b_Rests_PitchedRests.xml -OK lysuite/ly02c_Rests_MultiMeasureRests.xml -OK lysuite/ly02d_Rests_Multimeasure_TimeSignatures.xml -OK lysuite/ly02e_Rests_NoType.xml -OK lysuite/ly03a_Rhythm_Durations.xml -OK lysuite/ly03b_Rhythm_Backup.xml -OK lysuite/ly03c_Rhythm_DivisionChange.xml -OK lysuite/ly03d_Rhythm_DottedDurations_Factors.xml -OK lysuite/ly11a_TimeSignatures.xml -OK lysuite/ly11b_TimeSignatures_NoTime.xml -OK lysuite/ly11c_TimeSignatures_CompoundSimple.xml -OK lysuite/ly11d_TimeSignatures_CompoundMultiple.xml -OK lysuite/ly11e_TimeSignatures_CompoundMixed.xml -OK lysuite/ly11f_TimeSignatures_SymbolMeaning.xml -OK lysuite/ly11g_TimeSignatures_SingleNumber.xml -OK lysuite/ly11h_TimeSignatures_SenzaMisura.xml -OK lysuite/ly12a_Clefs.xml -OK lysuite/ly12b_Clefs_NoKeyOrClef.xml -OK lysuite/ly13a_KeySignatures.xml -OK lysuite/ly13b_KeySignatures_ChurchModes.xml -OK lysuite/ly13c_KeySignatures_NonTraditional.xml -OK lysuite/ly13d_KeySignatures_Microtones.xml -OK lysuite/ly14a_StaffDetails_LineChanges.xml -OK lysuite/ly21a_Chord_Basic.xml -OK lysuite/ly21b_Chords_TwoNotes.xml -OK lysuite/ly21c_Chords_ThreeNotesDuration.xml -OK lysuite/ly21d_Chords_SchubertStabatMater.xml -OK lysuite/ly21e_Chords_PickupMeasures.xml -OK lysuite/ly21f_Chord_ElementInBetween.xml -OK lysuite/ly22a_Noteheads.xml -OK lysuite/ly22b_Staff_Notestyles.xml -OK lysuite/ly22c_Noteheads_Chords.xml -OK lysuite/ly22d_Parenthesized_Noteheads.xml -OK lysuite/ly23a_Tuplets.xml -OK lysuite/ly23b_Tuplets_Styles.xml -OK lysuite/ly23c_Tuplet_Display_NonStandard.xml -OK lysuite/ly23d_Tuplets_Nested.xml -OK lysuite/ly23e_Tuplets_Tremolo.xml -OK lysuite/ly23f_Tuplets_DurationButNoBracket.xml -OK lysuite/ly24a_GraceNotes.xml -OK lysuite/ly24b_ChordAsGraceNote.xml -OK lysuite/ly24c_GraceNote_MeasureEnd.xml -OK lysuite/ly24d_AfterGrace.xml -OK lysuite/ly24e_GraceNote_StaffChange.xml -OK lysuite/ly24f_GraceNote_Slur.xml -OK lysuite/ly31a_Directions.xml -CREATEFAIL lysuite/ly31c_MetronomeMarks.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK lysuite/ly32a_Notations.xml -OK lysuite/ly32b_Articulations_Texts.xml -OK lysuite/ly32c_MultipleNotationChildren.xml -OK lysuite/ly32d_Arpeggio.xml -OK lysuite/ly33a_Spanners.xml -OK lysuite/ly33b_Spanners_Tie.xml -OK lysuite/ly33c_Spanners_Slurs.xml -OK lysuite/ly33d_Spanners_OctaveShifts.xml -OK lysuite/ly33e_Spanners_OctaveShifts_InvalidSize.xml -OK lysuite/ly33f_Trill_EndingOnGraceNote.xml -OK lysuite/ly33g_Slur_ChordedNotes.xml -OK lysuite/ly33h_Spanners_Glissando.xml -OK lysuite/ly33i_Ties_NotEnded.xml -OK lysuite/ly41a_MultiParts_Partorder.xml -OK lysuite/ly41b_MultiParts_MoreThan10.xml -OK lysuite/ly41c_StaffGroups.xml -OK lysuite/ly41d_StaffGroups_Nested.xml -OK lysuite/ly41e_StaffGroups_InstrumentNames_Linebroken.xml -OK lysuite/ly41f_StaffGroups_Overlapping.xml -OK lysuite/ly41h_TooManyParts.xml -OK lysuite/ly41i_PartNameDisplay_Override.xml -OK lysuite/ly42a_MultiVoice_TwoVoicesOnStaff_Lyrics.xml -OK lysuite/ly42b_MultiVoice_MidMeasureClefChange.xml -OK lysuite/ly43a_PianoStaff.xml -OK lysuite/ly43b_MultiStaff_DifferentKeys.xml -OK lysuite/ly43c_MultiStaff_DifferentKeysAfterBackup.xml -OK lysuite/ly43d_MultiStaff_StaffChange.xml -OK lysuite/ly43e_Multistaff_ClefDynamics.xml -OK lysuite/ly45a_SimpleRepeat.xml -OK lysuite/ly45b_RepeatWithAlternatives.xml -OK lysuite/ly45c_RepeatMultipleTimes.xml -OK lysuite/ly45d_Repeats_Nested_Alternatives.xml -OK lysuite/ly45e_Repeats_Nested_Alternatives.xml -OK lysuite/ly45f_Repeats_InvalidEndings.xml -OK lysuite/ly45g_Repeats_NotEnded.xml -OK lysuite/ly46a_Barlines.xml -OK lysuite/ly46b_MidmeasureBarline.xml -OK lysuite/ly46c_Midmeasure_Clef.xml -OK lysuite/ly46d_PickupMeasure_ImplicitMeasures.xml -OK lysuite/ly46e_PickupMeasure_SecondVoiceStartsLater.xml -OK lysuite/ly46f_IncompleteMeasures.xml -OK lysuite/ly46g_PickupMeasure_Chordnames_FiguredBass.xml -OK lysuite/ly51b_Header_Quotes.xml -OK lysuite/ly51c_MultipleRights.xml -OK lysuite/ly51d_EmptyTitle.xml -OK lysuite/ly52a_PageLayout.xml -OK lysuite/ly52b_Breaks.xml -OK lysuite/ly61a_Lyrics.xml -OK lysuite/ly61b_MultipleLyrics.xml -OK lysuite/ly61c_Lyrics_Pianostaff.xml -OK lysuite/ly61d_Lyrics_Melisma.xml -OK lysuite/ly61e_Lyrics_Chords.xml -OK lysuite/ly61f_Lyrics_GracedNotes.xml -OK lysuite/ly61g_Lyrics_NameNumber.xml -OK lysuite/ly61h_Lyrics_BeamsMelismata.xml -OK lysuite/ly61i_Lyrics_Chords.xml -OK lysuite/ly61j_Lyrics_Elisions.xml -OK lysuite/ly61k_Lyrics_SpannersExtenders.xml -OK lysuite/ly71a_Chordnames.xml -OK lysuite/ly71c_ChordsFrets.xml -OK lysuite/ly71d_ChordsFrets_Multistaff.xml -OK lysuite/ly71e_TabStaves.xml -OK lysuite/ly71f_AllChordTypes.xml -OK lysuite/ly71g_MultipleChordnames.xml -OK lysuite/ly72a_TransposingInstruments.xml -OK lysuite/ly72b_TransposingInstruments_Full.xml -OK lysuite/ly72c_TransposingInstruments_Change.xml -OK lysuite/ly73a_Percussion.xml -OK lysuite/ly75a_AccordionRegistrations.xml -OK lysuite/ly90a_Compressed_MusicXML.xml -OK lysuite/ly99a_Sibelius5_IgnoreBeaming.xml -OK lysuite/ly99b_Lyrics_BeamsMelismata_IgnoreBeams.xml -OK mjbsuite/ChordDirectionPlacement.xml -OK mjbsuite/FreezingSmall.xml -OK mjbsuite/HasMusicXmlVersionFalse.xml -OK mjbsuite/HasMusicXmlVersionTrue.xml -OK mjbsuite/OctoberXML.xml -OK mjbsuite/PreserveTimeModificationNormalType.xml -OK mjbsuite/chords_simple.xml -OK mjbsuite/ezinar.xml -OK mjbsuite/freezing.old.xml -OK mjbsuite/freezing.xml -OK mjbsuite/hello_timewise.xml -OK mjbsuite/krz_v40.xml -OK mjbsuite/lyre_timewise.xml -OK mjbsuite/processing_instructions.xml -OK musetrainer/Ave_Maria_D839_-_Schubert_-_Solo_Piano_Arrg..xml -OK musetrainer/Bach_Minuet_in_G_Major_BWV_Anh._114.xml -OK musetrainer/Bella_Ciao.xml -OK musetrainer/Canon_in_D.xml -OK musetrainer/Canon_in_D_3.xml -OK musetrainer/Canon_in_D_easy.xml -OK musetrainer/Carol_of_the_Bells_easy_piano.xml -OK musetrainer/Chopin_-_Nocturne_Op._9_No._1.xml -OK musetrainer/Chopin_-_Nocturne_Op_9_No_2_E_Flat_Major.xml -OK musetrainer/Dance_of_the_sugar_plum_fairy.xml -CREATEFAIL musetrainer/Erik_Satie_-_Gymnopedie_No.1.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK musetrainer/Happy_Birthday_To_You_C_Major.xml -OK musetrainer/Hungarian_Dance_No_5_in_G_Minor.xml -OK musetrainer/J._S._Bach_-_Air_on_the_G_String_Piano_arrangement.xml -OK musetrainer/Lacrimosa_-_Requiem.xml -OK musetrainer/Maple_Leaf_Rag_Scott_Joplin.xml -OK musetrainer/Mariage_dAmour.xml -OK musetrainer/Mozart_-_Piano_Sonata_No._16_-_Allegro.xml -OK musetrainer/Nocturne_No._20_in_C_Minor.xml -OK musetrainer/Nocturne_in_E-flat_Major_Op._9_No._2_Easy.xml -OK musetrainer/Prelude_I_in_C_major_BWV_846_-_Well_Tempered_Clavier_First_Book.xml -OK musetrainer/Prlude_No._4_in_E_Minor_Op._28_-_Frdric_Chopin.xml -OK musetrainer/Prlude_Opus_28_No._4_in_E_Minor__Chopin.xml -OK musetrainer/Schubert_Serenade_-_Standchen_-_By_Lizst.xml -OK musetrainer/Sonata_No._16_1st_Movement_K._545.xml -OK musetrainer/Sonate_No._8_Pathetique_2nd_Movement.xml -OK musetrainer/The_Entertainer_-_Scott_Joplin.xml -OK musetrainer/Waltz_Opus_64_No._2_in_C_Minor.xml -OK musetrainer/Waltz_of_the_Flowers.xml -OK musetrainer/moonlight_sonata_3rd_movement.xml -OK musuite/A_Walk_through_the_Park.xml -OK musuite/different_keysigs_1.xml -OK musuite/different_keysigs_2.xml -OK musuite/test98.xml -OK musuite/testAccidentals1.xml -OK musuite/testAccidentals2.xml -OK musuite/testArpGliss1.xml -OK musuite/testArpGliss2.xml -OK musuite/testBarStyles.xml -OK musuite/testChord.xml -OK musuite/testChordDiagrams1.xml -OK musuite/testChordNoVoice.xml -OK musuite/testChordNoVoice_ref.xml -OK musuite/testClefs1.xml -OK musuite/testCompleteMeasureRests.xml -OK musuite/testDCalCoda.xml -OK musuite/testDCalFine.xml -OK musuite/testDalSegno.xml -OK musuite/testDirections1.xml -OK musuite/testDrumset1.xml -OK musuite/testDrumset2.xml -OK musuite/testDurationRoundingError.xml -OK musuite/testDurationRoundingError_ref.xml -OK musuite/testDynamics1.xml -OK musuite/testDynamics2.xml -OK musuite/testDynamics3.xml -OK musuite/testDynamics3_ref.xml -OK musuite/testEmptyMeasure.xml -OK musuite/testEmptyMeasure_ref.xml -OK musuite/testEmptyVoice1.xml -OK musuite/testEmptyVoice1_ref.xml -OK musuite/testFiguredBass1.xml -OK musuite/testFiguredBass2.xml -OK musuite/testGrace1.xml -OK musuite/testGrace2.xml -OK musuite/testHarmony1.xml -OK musuite/testHarmony2.xml -OK musuite/testHarmony3.xml -OK musuite/testHello.xml -OK musuite/testImplicitMeasure1.xml -OK musuite/testInvisibleElements.xml -OK musuite/testKeysig1.xml -OK musuite/testLineBreaks.xml -OK musuite/testLines1.xml -OK musuite/testLines1_ref.xml -OK musuite/testLines2.xml -OK musuite/testLines2_ref.xml -OK musuite/testLyricsVoice2a.xml -OK musuite/testLyricsVoice2b.xml -OK musuite/testLyricsVoice2b_ref.xml -OK musuite/testManualBreaks.xml -OK musuite/testMeasureLength.xml -OK musuite/testMeasureLength_ref.xml -OK musuite/testMetaData.xml -OK musuite/testMultiMeasureRest1.xml -OK musuite/testMultiMeasureRest1_ref.xml -OK musuite/testMultiMeasureRest2.xml -OK musuite/testMultiMeasureRest2_ref.xml -OK musuite/testMultiMeasureRest3.xml -OK musuite/testMultiMeasureRest3_ref.xml -OK musuite/testMultipleNotations.xml -OK musuite/testMultipleNotations_ref.xml -OK musuite/testNonUniqueThings.xml -OK musuite/testNonUniqueThings_ref.xml -OK musuite/testNoteAttributes1.xml -OK musuite/testNoteAttributes2.xml -OK musuite/testNoteAttributes2_ref.xml -OK musuite/testNoteAttributes3.xml -OK musuite/testNoteheads.xml -OK musuite/testNotesRests1.xml -OK musuite/testNotesRests2.xml -OK musuite/testNumberedLyrics.xml -OK musuite/testNumberedLyrics_ref.xml -OK musuite/testPartsSpecialCases.xml -OK musuite/testPartsSpecialCases_ref.xml -OK musuite/testPiano.xml -OK musuite/testRestsNoType.xml -OK musuite/testRestsNoType_ref.xml -OK musuite/testSlurs.xml -OK musuite/testStaffTwoKeySigs.xml -OK musuite/testStringVoiceName.xml -OK musuite/testStringVoiceName_ref.xml -OK musuite/testSystemBrackets1.xml -OK musuite/testSystemBrackets2.xml -OK musuite/testTablature1.xml -OK musuite/testTablature2.xml -OK musuite/testTablature3.xml -CREATEFAIL musuite/testTempo1.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK musuite/testTimesig1.xml -OK musuite/testTimesig3.xml -OK musuite/testTremolo.xml -OK musuite/testTuplets1.xml -OK musuite/testTuplets1_ref.xml -OK musuite/testTuplets2.xml -OK musuite/testTuplets2_ref.xml -OK musuite/testTuplets3.xml -OK musuite/testTuplets3_ref.xml -OK musuite/testTuplets4.xml -OK musuite/testUnusualDurations.xml -OK musuite/testUnusualDurations_ref.xml -OK musuite/testVoiceMapper1.xml -OK musuite/testVoiceMapper1_ref.xml -OK musuite/testVoiceMapper2.xml -OK musuite/testVoiceMapper2_ref.xml -OK musuite/testVoiceMapper3.xml -OK musuite/testVoiceMapper3_ref.xml -OK musuite/testVoicePiano1.xml -OK musuite/testVolta1.xml -OK musuite/testWedge1.xml -OK musuite/testWedge2.xml -OK musuite/testWedge2_ref.xml -OK musuite/testWords1.xml -OK mxl/Dichterliebe01.xml -OK recsuite/ActorPreludeSample.xml -OK recsuite/BeetAnGeSample.xml -OK recsuite/Binchois.xml -OK recsuite/BrahWiMeSample.xml -OK recsuite/BrookeWestSample.xml -OK recsuite/Chant.xml -OK recsuite/DebuMandSample.xml -OK recsuite/Dichterliebe01.xml -OK recsuite/Echigo_Jishi.xml -OK recsuite/FaurReveSample.xml -OK recsuite/MahlFaGe4Sample.xml -OK recsuite/MozaChloSample.xml -OK recsuite/MozaChloSample2.xml -OK recsuite/MozaVeilSample.xml -OK recsuite/MozartPianoSonata.xml -OK recsuite/MozartTrio.xml -OK recsuite/Saltarello.xml -OK recsuite/SchbAvMaSample.xml -OK recsuite/Telemann.xml -OK synthetic/accent.3.0.xml -OK synthetic/accidental-mark.3.0.xml -OK synthetic/accidental-mark.3.1.xml -OK synthetic/accidental-text.3.0.xml -OK synthetic/accidental-text.3.1.xml -OK synthetic/accidental.3.0.xml -OK synthetic/accidental.3.1.xml -OK synthetic/accordion-registration.3.0.xml -OK synthetic/accordion-registration.3.1.xml -OK synthetic/arpeggiate.3.0.xml -OK synthetic/arpeggiate.3.1.xml -OK synthetic/arpeggiate.4.0.xml -OK synthetic/arrow-style.3.0.xml -OK synthetic/arrow.3.0.xml -OK synthetic/arrow.3.1.xml -OK synthetic/arrowhead.3.1.xml -OK synthetic/articulations.3.1.xml -LOADFAIL synthetic/assess.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Note: unexpected element 'listen' - -OK synthetic/bar-style.3.0.xml -OK synthetic/barline.3.0.xml -OK synthetic/barline.3.1.xml -OK synthetic/barre.3.0.xml -OK synthetic/bass-alter.3.0.xml -OK synthetic/bass-separator.4.0.xml -OK synthetic/bass-step.3.0.xml -OK synthetic/bass.4.0.xml -OK synthetic/beam.3.0.xml -OK synthetic/beam.3.1.xml -OK synthetic/beat-repeat.3.0.xml -OK synthetic/beat-type.3.0.xml -CREATEFAIL synthetic/beat-unit-tied.3.1.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK synthetic/beater.3.0.xml -OK synthetic/beats.3.0.xml -OK synthetic/bend.3.0.xml -OK synthetic/bend.4.0.xml -OK synthetic/bookmark.3.0.xml -OK synthetic/bracket.3.0.xml -OK synthetic/bracket.3.1.xml -LOADFAIL synthetic/brass-bend.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'brass-bend' encountered - -OK synthetic/breath-mark.3.0.xml -OK synthetic/caesura.3.0.xml -OK synthetic/cancel.location.3.0.xml -OK synthetic/circular-arrow.3.0.xml -OK synthetic/clef.3.0.xml -OK synthetic/clef.3.1.xml -OK synthetic/coda.3.0.xml -OK synthetic/coda.3.1.xml -OK synthetic/concert-score.4.0.xml -OK synthetic/creator.3.0.xml -OK synthetic/credit-image.3.0.xml -OK synthetic/credit-image.3.1.xml -OK synthetic/credit-symbol.3.1.xml -OK synthetic/credit-type.3.0.xml -OK synthetic/credit-words.3.0.xml -OK synthetic/credit-words.3.1.xml -OK synthetic/credit.3.1.xml -OK synthetic/damp-all.3.0.xml -OK synthetic/damp-all.3.1.xml -OK synthetic/damp.3.0.xml -OK synthetic/damp.3.1.xml -OK synthetic/dashes.3.0.xml -OK synthetic/dashes.3.1.xml -OK synthetic/degree-alter.3.0.xml -OK synthetic/degree-type.3.0.xml -OK synthetic/degree-value.3.0.xml -OK synthetic/delayed-inverted-turn.3.0.xml -OK synthetic/delayed-turn.3.0.xml -OK synthetic/detached-legato.3.0.xml -OK synthetic/direction-type.3.1.xml -OK synthetic/direction.3.1.xml -OK synthetic/direction.4.0.xml -OK synthetic/directive.3.0.xml -OK synthetic/display-text.3.0.xml -OK synthetic/doit.3.0.xml -OK synthetic/doit.3.1.xml -OK synthetic/dot.3.0.xml -OK synthetic/double-tongue.3.0.xml -OK synthetic/double.3.0.xml -OK synthetic/double.4.0.xml -OK synthetic/down-bow.3.0.xml -OK synthetic/dynamics.3.1.xml -OK synthetic/effect.3.0.xml -OK synthetic/effect.4.0.xml -OK synthetic/elevation.3.0.xml -OK synthetic/elision.3.0.xml -OK synthetic/elision.3.1.xml -OK synthetic/encoder.3.0.xml -OK synthetic/encoding-description.3.0.xml -OK synthetic/ending.3.0.xml -OK synthetic/ending.4.0.xml -OK synthetic/except-voice.3.1.xml -OK synthetic/extend.3.0.xml -OK synthetic/eyeglasses.3.0.xml -OK synthetic/eyeglasses.3.1.xml -OK synthetic/falloff.3.0.xml -OK synthetic/falloff.3.1.xml -OK synthetic/feature.3.0.xml -OK synthetic/fermata.3.1.xml -OK synthetic/figure-number.3.0.xml -OK synthetic/figured-bass.3.0.xml -OK synthetic/figured-bass.3.1.xml -OK synthetic/figured-bass.4.0.xml -OK synthetic/fingering.3.0.xml -OK synthetic/fingernails.3.0.xml -OK synthetic/first-fret.3.0.xml -OK synthetic/first.4.0.xml -LOADFAIL synthetic/flip.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'flip' encountered - -OK synthetic/footnote.3.0.xml -OK synthetic/for-part.4.0.xml -OK synthetic/frame.3.0.xml -OK synthetic/frame.3.1.xml -OK synthetic/fret.3.0.xml -OK synthetic/function.3.0.xml -OK synthetic/glass.3.0.xml -OK synthetic/glass.3.1.xml -OK synthetic/glissando.3.0.xml -OK synthetic/glissando.3.1.xml -OK synthetic/glyph.3.1.xml -LOADFAIL synthetic/golpe.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'golpe' encountered - -OK synthetic/grace.3.0.xml -OK synthetic/group-abbreviation-display.3.0.xml -OK synthetic/group-abbreviation.3.0.xml -OK synthetic/group-barline.3.0.xml -OK synthetic/group-link.4.0.xml -OK synthetic/group-name-display.3.0.xml -OK synthetic/group-name.3.0.xml -OK synthetic/group-symbol.3.0.xml -OK synthetic/group-time.3.0.xml -OK synthetic/group.3.0.xml -OK synthetic/grouping.3.0.xml -OK synthetic/grouping.3.1.xml -LOADFAIL synthetic/half-muted.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'half-muted' encountered - -OK synthetic/hammer-on.3.0.xml -OK synthetic/handbell.3.0.xml -LOADFAIL synthetic/harmon-closed.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'harmon-mute' encountered - -LOADFAIL synthetic/harmon-mute.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'harmon-mute' encountered - -OK synthetic/harmonic.3.0.xml -OK synthetic/harmony.3.0.xml -OK synthetic/harmony.3.1.xml -OK synthetic/harmony.4.0.xml -OK synthetic/harp-pedals.3.0.xml -OK synthetic/harp-pedals.3.1.xml -OK synthetic/haydn.3.1.xml -OK synthetic/heel.3.0.xml -OK synthetic/hole-closed.3.0.xml -OK synthetic/hole-shape.3.0.xml -OK synthetic/hole-type.3.0.xml -OK synthetic/hole.3.0.xml -OK synthetic/humming.3.0.xml -OK synthetic/image.3.0.xml -OK synthetic/image.3.1.xml -OK synthetic/instrument-abbreviation.3.0.xml -OK synthetic/instrument-change.4.0.xml -OK synthetic/instrument-link.4.0.xml -OK synthetic/instrument-name.3.0.xml -OK synthetic/instrument-sound-enum.3.0.xml -OK synthetic/instrument-sound.3.0.xml -OK synthetic/interchangeable.3.0.xml -OK synthetic/inversion.3.0.xml -OK synthetic/inversion.4.0.xml -OK synthetic/inverted-mordent.3.0.xml -OK synthetic/inverted-turn.3.0.xml -OK synthetic/inverted-vertical-turn.3.1.xml -OK synthetic/ipa.3.0.xml -OK synthetic/key-accidental.3.0.xml -OK synthetic/key-accidental.smufl.3.1.xml -OK synthetic/key-octave.3.0.xml -OK synthetic/key.3.0.xml -OK synthetic/key.3.1.xml -OK synthetic/kind.3.0.xml -OK synthetic/laughing.3.0.xml -OK synthetic/left-divider.3.0.xml -OK synthetic/level.3.0.xml -OK synthetic/level.4.0.xml -OK synthetic/line-detail.4.0.xml -OK synthetic/link.3.0.xml -LOADFAIL synthetic/listen.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Note: unexpected element 'listen' - -OK synthetic/listening.4.0.xml -OK synthetic/lyric-font.3.0.xml -OK synthetic/lyric-language.3.0.xml -OK synthetic/lyric.3.0.xml -OK synthetic/lyric.3.1.xml -OK synthetic/measure-distance.3.0.xml -OK synthetic/measure-layout.3.0.xml -OK synthetic/measure-numbering.3.0.xml -OK synthetic/measure-numbering.4.0.xml -OK synthetic/measure-repeat.3.0.xml -OK synthetic/measure-style.3.0.xml -OK synthetic/measure-style.3.1.xml -OK synthetic/measure.3.0.xml -OK synthetic/measure.3.1.xml -OK synthetic/membrane.3.0.xml -OK synthetic/membrane.4.0.xml -OK synthetic/metal.3.0.xml -OK synthetic/metal.4.0.xml -GETDATAFAIL synthetic/metronome-arrows.3.1.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-beam.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-dot.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-note.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-relation.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-tied.3.1.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-tuplet.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -GETDATAFAIL synthetic/metronome-type.3.0.xml error in MetronomeReader.cpp (line 80) parseNoteRelationNote: 'wtf is this -CREATEFAIL synthetic/metronome.3.0.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -CREATEFAIL synthetic/metronome.3.1.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -CREATEFAIL synthetic/metronome.4.0.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK synthetic/midi-device.3.0.xml -OK synthetic/midi-name.3.0.xml -OK synthetic/miscellaneous-field.3.0.xml -OK synthetic/mordent.3.0.xml -OK synthetic/movement-number.3.0.xml -OK synthetic/movement-title.3.0.xml -OK synthetic/multiple-rest.3.0.xml -OK synthetic/music-font.3.0.xml -OK synthetic/mute.3.0.xml -OK synthetic/n.3.1.xml -OK synthetic/non-arpeggiate.3.0.xml -OK synthetic/non-arpeggiate.3.1.xml -OK synthetic/notations.3.0.xml -OK synthetic/notations.3.1.xml -OK synthetic/note.3.0.xml -OK synthetic/note.3.1.xml -OK synthetic/notehead-text.3.0.xml -OK synthetic/notehead.3.0.xml -OK synthetic/notehead.3.1.xml -LOADFAIL synthetic/numeral-alter.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -LOADFAIL synthetic/numeral-fifths.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -LOADFAIL synthetic/numeral-key.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -LOADFAIL synthetic/numeral-mode.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -LOADFAIL synthetic/numeral-root.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -LOADFAIL synthetic/numeral.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Harmony: either 'root' or 'function' is required but neither was present - -OK synthetic/octave-shift.3.0.xml -OK synthetic/octave-shift.3.1.xml -OK synthetic/open-string.3.0.xml -LOADFAIL synthetic/open.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'open' encountered - -OK synthetic/opus.3.0.xml -OK synthetic/ornaments.3.1.xml -OK synthetic/other-appearance.3.0.xml -OK synthetic/other-articulation.3.0.xml -OK synthetic/other-articulation.3.1.xml -OK synthetic/other-direction.3.0.xml -OK synthetic/other-direction.3.1.xml -OK synthetic/other-dynamics.3.0.xml -OK synthetic/other-dynamics.3.1.xml -LOADFAIL synthetic/other-listen.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Note: unexpected element 'listen' - -OK synthetic/other-listening.4.0.xml -OK synthetic/other-notation.3.0.xml -OK synthetic/other-notation.3.1.xml -OK synthetic/other-ornament.3.0.xml -OK synthetic/other-ornament.3.1.xml -OK synthetic/other-percussion.3.0.xml -OK synthetic/other-percussion.3.1.xml -OK synthetic/other-play.3.0.xml -OK synthetic/other-technical.3.0.xml -OK synthetic/other-technical.3.1.xml -OK synthetic/part-abbreviation-display.3.0.xml -OK synthetic/part-abbreviation.3.0.xml -OK synthetic/part-clef.4.0.xml -OK synthetic/part-link.4.0.xml -OK synthetic/part-name-display.3.0.xml -OK synthetic/part-name.3.0.xml -OK synthetic/part-symbol.3.0.xml -OK synthetic/part-transpose.4.0.xml -OK synthetic/pedal.3.0.xml -OK synthetic/pedal.3.1.xml -CREATEFAIL synthetic/per-minute.3.0.xml error in DirectionWriter.cpp (line 370) getDirectionLikeThings: 'Only api::TempoType::beatsPerMinute is supported, others are not implemented -OK synthetic/percussion.3.0.xml -OK synthetic/percussion.3.1.xml -OK synthetic/pf.3.1.xml -OK synthetic/pitched.3.0.xml -OK synthetic/pitched.3.1.xml -OK synthetic/play.3.0.xml -OK synthetic/player-name.4.0.xml -OK synthetic/player.4.0.xml -OK synthetic/plop.3.0.xml -OK synthetic/plop.3.1.xml -OK synthetic/pluck.3.0.xml -OK synthetic/prefix.3.0.xml -OK synthetic/principal-voice.3.0.xml -OK synthetic/principal-voice.3.1.xml -OK synthetic/print.3.0.xml -OK synthetic/print.3.1.xml -OK synthetic/pull-off.3.0.xml -OK synthetic/rehearsal.3.0.xml -OK synthetic/rehearsal.3.1.xml -OK synthetic/relation.3.0.xml -OK synthetic/release.4.0.xml -OK synthetic/repeat.4.0.xml -OK synthetic/right-divider.3.0.xml -OK synthetic/rights.3.0.xml -OK synthetic/root-alter.3.0.xml -OK synthetic/root-step.3.0.xml -OK synthetic/schleifer.3.0.xml -OK synthetic/scoop.3.0.xml -OK synthetic/scoop.3.1.xml -OK synthetic/scordatura.3.1.xml -OK synthetic/second.4.0.xml -OK synthetic/segno.3.0.xml -OK synthetic/segno.3.1.xml -OK synthetic/semi-pitched.3.0.xml -OK synthetic/senza-misura.3.0.xml -OK synthetic/sfzp.3.1.xml -OK synthetic/shake.3.0.xml -OK synthetic/slash-dot.3.0.xml -OK synthetic/slash-type.3.0.xml -OK synthetic/slash.3.0.xml -OK synthetic/slide.3.0.xml -OK synthetic/slide.3.1.xml -OK synthetic/slur.3.0.xml -OK synthetic/slur.3.1.xml -LOADFAIL synthetic/smear.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'Technical: unexpected element 'smear' encountered - -OK synthetic/snap-pizzicato.3.0.xml -LOADFAIL synthetic/soft-accent.3.1.xml error in DocumentManager.cpp (line 88) createFromFile: 'ArticulationsChoice: 'soft-accent' is not allowed - -OK synthetic/software.3.0.xml -OK synthetic/sound.3.0.xml -OK synthetic/sound.3.1.xml -OK synthetic/source.3.0.xml -OK synthetic/spiccato.3.0.xml -OK synthetic/staccatissimo.3.0.xml -OK synthetic/staccato.3.0.xml -OK synthetic/staff-divide.3.1.xml -OK synthetic/staff-size.4.0.xml -OK synthetic/staff-type.3.0.xml -OK synthetic/stem.3.0.xml -OK synthetic/stick-location.3.0.xml -OK synthetic/stick-material.3.0.xml -OK synthetic/stick-type.3.0.xml -OK synthetic/stick.3.0.xml -OK synthetic/stick.3.1.xml -OK synthetic/stopped.3.0.xml -OK synthetic/stopped.3.1.xml -OK synthetic/straight.4.0.xml -OK synthetic/stress.3.0.xml -OK synthetic/string-mute.3.0.xml -OK synthetic/string-mute.3.1.xml -OK synthetic/string.3.0.xml -OK synthetic/strong-accent.3.0.xml -OK synthetic/suffix.3.0.xml -OK synthetic/swing-style.4.0.xml -OK synthetic/swing-type.4.0.xml -OK synthetic/swing.4.0.xml -OK synthetic/symbol.3.1.xml -OK synthetic/sync.4.0.xml -OK synthetic/tap.3.0.xml -OK synthetic/tap.3.1.xml -OK synthetic/technical.3.1.xml -OK synthetic/tenuto.3.0.xml -OK synthetic/text.3.0.xml -OK synthetic/thumb-position.3.0.xml -OK synthetic/tie.3.0.xml -OK synthetic/tied.3.0.xml -OK synthetic/tied.3.1.xml -OK synthetic/time-relation.3.0.xml -OK synthetic/time.3.0.xml -OK synthetic/time.3.1.xml -OK synthetic/timpani.3.0.xml -OK synthetic/timpani.4.0.xml -OK synthetic/toe.3.0.xml -OK synthetic/transpose.3.0.xml -OK synthetic/transpose.3.1.xml -OK synthetic/tremolo.3.0.xml -OK synthetic/tremolo.3.1.xml -OK synthetic/trill-mark.3.0.xml -OK synthetic/triple-tongue.3.0.xml -OK synthetic/tuplet-dot.3.0.xml -OK synthetic/tuplet-number.3.0.xml -OK synthetic/tuplet-type.3.0.xml -OK synthetic/tuplet.3.0.xml -OK synthetic/tuplet.3.1.xml -OK synthetic/turn.3.0.xml -OK synthetic/unstress.3.0.xml -OK synthetic/up-bow.3.0.xml -OK synthetic/vertical-turn.3.0.xml -OK synthetic/virtual-library.3.0.xml -OK synthetic/virtual-name.3.0.xml -OK synthetic/voice.3.0.xml -LOADFAIL synthetic/wait.4.0.xml error in DocumentManager.cpp (line 88) createFromFile: 'Note: unexpected element 'listen' - -OK synthetic/wavy-line.3.0.xml -OK synthetic/wavy-line.4.0.xml -OK synthetic/wedge.3.0.xml -OK synthetic/wedge.3.1.xml -OK synthetic/with-bar.3.0.xml -OK synthetic/wood.3.0.xml -OK synthetic/wood.4.0.xml -OK synthetic/word-font.3.0.xml -OK synthetic/words.3.0.xml -OK synthetic/words.3.1.xml -OK synthetic/work-number.3.0.xml -OK synthetic/work-title.3.0.xml diff --git a/src/private/mxtest/api/baseline/judge-results-71fc402.txt b/src/private/mxtest/api/baseline/judge-results-71fc402.txt deleted file mode 100644 index 77c21cf41..000000000 --- a/src/private/mxtest/api/baseline/judge-results-71fc402.txt +++ /dev/null @@ -1,829 +0,0 @@ -FAIL custom/musescore-slur-start-stop.musicxml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL custom/systems-and-pages.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL custom/transposition.musicxml element name mismatch at /score-partwise/part/measure/attributes/transpose/diatonic: expected 'diatonic', actual 'chromatic' -FAIL foundsuite/12 Horn Duets.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/ARBEAU Belle qui tiens ma vie.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Adagio and Fugue in C minor, K.546.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/An Chloe.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Berlioz_Le_Corsaire.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Black Note Study Op 10 no 5.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Deutscher Tanz D.820.1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention 1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention 2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention 3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_10.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_11.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_12.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_13.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_14.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_15.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_4.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_5.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_6.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_7.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_8.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Invention_9.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Moments Musicaux Op16 No4.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/O_Holy_Night-Adam-1871.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL foundsuite/O_Holy_Night-Adam-1974.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL foundsuite/O_Holy_Night.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL foundsuite/PepAiraSco.xml attribute count mismatch at /score-partwise/identification/rights -FAIL foundsuite/PezR44Sco.xml attribute count mismatch at /score-partwise/identification/rights -FAIL foundsuite/Rimsky-Korsakov Op11 No4.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'encoding' -FAIL foundsuite/RonCLunSco.xml attribute count mismatch at /score-partwise/identification/rights -FAIL foundsuite/SCHUBERT An die Sonne.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Schubert_der_Mueller.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-description' -FAIL foundsuite/Silent_Night-Hartwig.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL foundsuite/Silent_Night_Young_1.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL foundsuite/Yeah.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL foundsuite/Απτάλικο.xml attribute count mismatch at /score-partwise/identification/rights -FAIL kiritan_singing/kiritan_singing_01.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_02.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_03.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_04.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_05.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_06.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_07.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_08.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_09.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_10.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_11.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_12.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_13.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_14.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_15.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_16.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_17.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_18.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_19.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_20.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_21.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_22.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_23.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_24.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_25.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_26.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_27.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_28.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_29.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_30.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_31.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_32.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_33.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_34.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_35.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_36.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_37.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_38.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_39.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_40.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_41.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_42.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_43.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_44.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_45.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_46.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_47.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_48.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_49.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL kiritan_singing/kiritan_singing_50.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/Bombe.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k001a_Articulations.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k001b_Articulations_Above.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k001c_Articulations_Below.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k002a_Fermatas.xml attribute mismatch at /score-partwise/part/measure/note/notations/fermata: expected 'default-x=-5', actual 'type=upright' -FAIL ksuite/k003a_Ornaments.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k004a_Technical.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k005a_Spanners_Slides.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006a_Clefs_sign_G_ln_2_oct_0_Treble.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006a_Header_Scaling_Decimals.xml attribute count mismatch at /score-timewise/part-list/score-part/part-name -FAIL ksuite/k006b_Clefs_sign_F_ln_4_oct_0_Bass.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006c_Clefs_sign_C_ln_3_oct_0_Viola.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006d_Clefs_sign_C_ln_4_oct_0_Tenor.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006e_Clefs_sign_C_ln_5_oct_0_Baritone.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006f_Clefs_sign_C_ln_1_oct_0_Soprano.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006g_Clefs_sign_C_ln_2_oct_0_Mezzo_Soprano.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006h_Clefs_sign_G_ln_1_oct_0_French.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006i_Clefs_sign_F_ln_3_oct_0_Varbaritone.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006j_Clefs_sign_F_ln_5_oct_0_Subbass.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006k_Clefs_sign_G_ln_2_oct_neg2_G_15MB.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006l_Clefs_sign_G_ln_2_oct_neg1_G_8VB.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006m_Clefs_sign_G_ln_2_oct_1_G_8VA.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006n_Clefs_sign_G_ln_2_oct_2_G_15MA.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006o_Clefs_sign_F_ln_4_oct_neg2_F_15MB.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006p_Clefs_sign_F_ln_4_oct_neg1_F_8VB.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006q_Clefs_sign_F_ln_4_oct_1_F_8VA.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006r_Clefs_sign_F_ln_4_oct_2_F_15MA.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006s_Clefs_sign_percussion_ln_3_oct_0_Percussion.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006t_Clefs_sign_TAB_ln_3_oct_0_Tab.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006u_Clefs_sign_jianpu_ln_3_oct_0_Jianpu.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k006v_Clefs_sign_none_ln_3_oct_0_None.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k007a_Notations_Dynamics.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k007b_Notations_Dynamics_Attributes.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k007c_Directions_Dynamics.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k007d_Directions_Dynamics_Attributes.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL ksuite/k008a_Beaming.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k009a_Slurs.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k009b_Slur_Attributes.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k010a_Ties.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k010b_Bad_Ties.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k011a_Tuplets.xml child count mismatch at /score-partwise/part/measure/print -FAIL ksuite/k012a_Tempo_Markings.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL ksuite/k013a_OrchestralScoreFinale.xml attribute count mismatch at /score-partwise/identification/rights -FAIL ksuite/k013b_OrchestralScoreSibelius.xml attribute count mismatch at /score-partwise/identification/rights -FAIL ksuite/k014a_Fermatas.xml attribute count mismatch at /score-partwise/part/measure/note/notations/fermata -FAIL ksuite/k015a_System_Layout.xml child count mismatch at /score-partwise/part/measure/print -PASS ksuite/k016a_Miscellaneous_Fields.xml -FAIL ksuite/temp.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL logicpro/logic01a_homoSapiens.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL lysuite/ly01a_Pitches_Pitches.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly01b_Pitches_Intervals.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly01c_Pitches_NoVoiceElement.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly01d_Pitches_Microtones.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly01e_Pitches_ParenthesizedAccidentals.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly01f_Pitches_ParenthesizedMicrotoneAccidentals.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly02a_Rests_Durations.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly02b_Rests_PitchedRests.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly02c_Rests_MultiMeasureRests.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly02d_Rests_Multimeasure_TimeSignatures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly02e_Rests_NoType.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly03a_Rhythm_Durations.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly03b_Rhythm_Backup.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly03c_Rhythm_DivisionChange.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly03d_Rhythm_DottedDurations_Factors.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11a_TimeSignatures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11b_TimeSignatures_NoTime.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11c_TimeSignatures_CompoundSimple.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11d_TimeSignatures_CompoundMultiple.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11e_TimeSignatures_CompoundMixed.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11f_TimeSignatures_SymbolMeaning.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11g_TimeSignatures_SingleNumber.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly11h_TimeSignatures_SenzaMisura.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly12a_Clefs.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly12b_Clefs_NoKeyOrClef.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly13a_KeySignatures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly13b_KeySignatures_ChurchModes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly13c_KeySignatures_NonTraditional.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly13d_KeySignatures_Microtones.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly14a_StaffDetails_LineChanges.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21a_Chord_Basic.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21b_Chords_TwoNotes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21c_Chords_ThreeNotesDuration.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21d_Chords_SchubertStabatMater.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21e_Chords_PickupMeasures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly21f_Chord_ElementInBetween.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly22a_Noteheads.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly22b_Staff_Notestyles.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly22c_Noteheads_Chords.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly22d_Parenthesized_Noteheads.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23a_Tuplets.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23b_Tuplets_Styles.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23c_Tuplet_Display_NonStandard.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23d_Tuplets_Nested.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23e_Tuplets_Tremolo.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly23f_Tuplets_DurationButNoBracket.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL lysuite/ly24a_GraceNotes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly24b_ChordAsGraceNote.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly24c_GraceNote_MeasureEnd.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly24d_AfterGrace.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly24e_GraceNote_StaffChange.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly24f_GraceNote_Slur.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly31a_Directions.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -SKIP lysuite/ly31c_MetronomeMarks.xml capture status CREATEFAIL -FAIL lysuite/ly32a_Notations.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly32b_Articulations_Texts.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly32c_MultipleNotationChildren.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly32d_Arpeggio.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33a_Spanners.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33b_Spanners_Tie.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33c_Spanners_Slurs.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33d_Spanners_OctaveShifts.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33e_Spanners_OctaveShifts_InvalidSize.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33f_Trill_EndingOnGraceNote.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33g_Slur_ChordedNotes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33h_Spanners_Glissando.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly33i_Ties_NotEnded.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41a_MultiParts_Partorder.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41b_MultiParts_MoreThan10.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41c_StaffGroups.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41d_StaffGroups_Nested.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41e_StaffGroups_InstrumentNames_Linebroken.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41f_StaffGroups_Overlapping.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41h_TooManyParts.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly41i_PartNameDisplay_Override.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly42a_MultiVoice_TwoVoicesOnStaff_Lyrics.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly42b_MultiVoice_MidMeasureClefChange.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly43a_PianoStaff.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly43b_MultiStaff_DifferentKeys.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly43c_MultiStaff_DifferentKeysAfterBackup.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly43d_MultiStaff_StaffChange.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly43e_Multistaff_ClefDynamics.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45a_SimpleRepeat.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45b_RepeatWithAlternatives.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45c_RepeatMultipleTimes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45d_Repeats_Nested_Alternatives.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45e_Repeats_Nested_Alternatives.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45f_Repeats_InvalidEndings.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly45g_Repeats_NotEnded.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46a_Barlines.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46b_MidmeasureBarline.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46c_Midmeasure_Clef.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46d_PickupMeasure_ImplicitMeasures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46e_PickupMeasure_SecondVoiceStartsLater.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46f_IncompleteMeasures.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly46g_PickupMeasure_Chordnames_FiguredBass.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly51b_Header_Quotes.xml attribute count mismatch at /score-partwise/identification/rights -FAIL lysuite/ly51c_MultipleRights.xml text mismatch at /score-partwise/identification/rights: expected 'Copyright © XXXX by Y. ZZZZ.', actual 'Released To The Public Domain.' -FAIL lysuite/ly51d_EmptyTitle.xml element name mismatch at /score-partwise/work: expected 'work', actual 'movement-title' -FAIL lysuite/ly52a_PageLayout.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly52b_Breaks.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61a_Lyrics.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61b_MultipleLyrics.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61c_Lyrics_Pianostaff.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61d_Lyrics_Melisma.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61e_Lyrics_Chords.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61f_Lyrics_GracedNotes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61g_Lyrics_NameNumber.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61h_Lyrics_BeamsMelismata.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61i_Lyrics_Chords.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61j_Lyrics_Elisions.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly61k_Lyrics_SpannersExtenders.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71a_Chordnames.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71c_ChordsFrets.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71d_ChordsFrets_Multistaff.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71e_TabStaves.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71f_AllChordTypes.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly71g_MultipleChordnames.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly72a_TransposingInstruments.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly72b_TransposingInstruments_Full.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly72c_TransposingInstruments_Change.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly73a_Percussion.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly75a_AccordionRegistrations.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL lysuite/ly90a_Compressed_MusicXML.xml attribute count mismatch at /score-partwise/identification/rights -FAIL lysuite/ly99a_Sibelius5_IgnoreBeaming.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL lysuite/ly99b_Lyrics_BeamsMelismata_IgnoreBeams.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/ChordDirectionPlacement.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/FreezingSmall.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/HasMusicXmlVersionFalse.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/HasMusicXmlVersionTrue.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/OctoberXML.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/PreserveTimeModificationNormalType.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/chords_simple.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL mjbsuite/ezinar.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/freezing.old.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/freezing.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/hello_timewise.xml attribute count mismatch at /score-timewise/part-list/score-part/part-name -FAIL mjbsuite/krz_v40.xml attribute count mismatch at /score-partwise/identification/rights -FAIL mjbsuite/lyre_timewise.xml element name mismatch at /score-timewise/part-list/part-group/group-name-display: expected 'group-name-display', actual 'group-symbol' -FAIL mjbsuite/processing_instructions.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL musetrainer/Ave_Maria_D839_-_Schubert_-_Solo_Piano_Arrg..xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Bach_Minuet_in_G_Major_BWV_Anh._114.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musetrainer/Bella_Ciao.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Canon_in_D.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Canon_in_D_3.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musetrainer/Canon_in_D_easy.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Carol_of_the_Bells_easy_piano.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Chopin_-_Nocturne_Op._9_No._1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Chopin_-_Nocturne_Op_9_No_2_E_Flat_Major.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Dance_of_the_sugar_plum_fairy.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -SKIP musetrainer/Erik_Satie_-_Gymnopedie_No.1.xml capture status CREATEFAIL -FAIL musetrainer/Happy_Birthday_To_You_C_Major.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Hungarian_Dance_No_5_in_G_Minor.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/J._S._Bach_-_Air_on_the_G_String_Piano_arrangement.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Lacrimosa_-_Requiem.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Maple_Leaf_Rag_Scott_Joplin.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Mariage_dAmour.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Mozart_-_Piano_Sonata_No._16_-_Allegro.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Nocturne_No._20_in_C_Minor.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Nocturne_in_E-flat_Major_Op._9_No._2_Easy.xml text mismatch at /score-partwise/identification/creator: expected 'Murilo Pedroza', actual 'Frédéric Chopin' -FAIL musetrainer/Prelude_I_in_C_major_BWV_846_-_Well_Tempered_Clavier_First_Book.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Prlude_No._4_in_E_Minor_Op._28_-_Frdric_Chopin.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musetrainer/Prlude_Opus_28_No._4_in_E_Minor__Chopin.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Schubert_Serenade_-_Standchen_-_By_Lizst.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Sonata_No._16_1st_Movement_K._545.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Sonate_No._8_Pathetique_2nd_Movement.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/The_Entertainer_-_Scott_Joplin.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Waltz_Opus_64_No._2_in_C_Minor.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/Waltz_of_the_Flowers.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musetrainer/moonlight_sonata_3rd_movement.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/A_Walk_through_the_Park.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/different_keysigs_1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/different_keysigs_2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/test98.xml element name mismatch at /score-partwise/work: expected 'work', actual 'movement-title' -FAIL musuite/testAccidentals1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testAccidentals2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testArpGliss1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testArpGliss2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testBarStyles.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testChord.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testChordDiagrams1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testChordNoVoice.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testChordNoVoice_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testClefs1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testCompleteMeasureRests.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDCalCoda.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDCalFine.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDalSegno.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDirections1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDrumset1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDrumset2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDurationRoundingError.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDurationRoundingError_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDynamics1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDynamics2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDynamics3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testDynamics3_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testEmptyMeasure.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testEmptyMeasure_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testEmptyVoice1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testEmptyVoice1_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testFiguredBass1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testFiguredBass2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testGrace1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testGrace2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testHarmony1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testHarmony2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testHarmony3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testHello.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testImplicitMeasure1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testInvisibleElements.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testKeysig1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testLineBreaks.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testLines1.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testLines1_ref.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testLines2.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testLines2_ref.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testLyricsVoice2a.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testLyricsVoice2b.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testLyricsVoice2b_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testManualBreaks.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMeasureLength.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMeasureLength_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMetaData.xml text mismatch at /score-partwise/identification/creator: expected 'MetaArranger', actual 'MetaComposer' -FAIL musuite/testMultiMeasureRest1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultiMeasureRest1_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultiMeasureRest2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultiMeasureRest2_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultiMeasureRest3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultiMeasureRest3_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultipleNotations.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testMultipleNotations_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNonUniqueThings.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNonUniqueThings_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNoteAttributes1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNoteAttributes2.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testNoteAttributes2_ref.xml attribute count mismatch at /score-partwise/identification/rights -FAIL musuite/testNoteAttributes3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNoteheads.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNotesRests1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNotesRests2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNumberedLyrics.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testNumberedLyrics_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testPartsSpecialCases.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testPartsSpecialCases_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testPiano.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testRestsNoType.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testRestsNoType_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testSlurs.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testStaffTwoKeySigs.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testStringVoiceName.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testStringVoiceName_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testSystemBrackets1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testSystemBrackets2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTablature1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTablature2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTablature3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -SKIP musuite/testTempo1.xml capture status CREATEFAIL -FAIL musuite/testTimesig1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTimesig3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTremolo.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL musuite/testTuplets1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets1_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets2_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets3_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testTuplets4.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testUnusualDurations.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testUnusualDurations_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper1_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper2_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper3.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoiceMapper3_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVoicePiano1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testVolta1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testWedge1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testWedge2.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testWedge2_ref.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL musuite/testWords1.xml element name mismatch at /score-partwise/identification/encoding/software: expected 'software', actual 'encoding-date' -FAIL mxl/Dichterliebe01.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/ActorPreludeSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/BeetAnGeSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/Binchois.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/BrahWiMeSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/BrookeWestSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/Chant.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/DebuMandSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/Dichterliebe01.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/Echigo_Jishi.xml text mismatch at /score-partwise/identification/creator: expected 'Y. Nagai', actual 'K. Kobatake' -FAIL recsuite/FaurReveSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MahlFaGe4Sample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MozaChloSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MozaChloSample2.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MozaVeilSample.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MozartPianoSonata.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/MozartTrio.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/Saltarello.xml attribute count mismatch at /score-partwise/identification/rights -FAIL recsuite/SchbAvMaSample.xml element name mismatch at /score-partwise/identification/creator: expected 'creator', actual 'rights' -FAIL recsuite/Telemann.xml attribute count mismatch at /score-partwise/identification/rights -FAIL synthetic/accent.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental-mark.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental-mark.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental-text.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental-text.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accidental.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accordion-registration.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/accordion-registration.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arpeggiate.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arpeggiate.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arpeggiate.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arrow-style.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arrow.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arrow.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/arrowhead.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/articulations.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/assess.4.0.xml capture status LOADFAIL -FAIL synthetic/bar-style.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/barline.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/barline.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/barre.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bass-alter.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bass-separator.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bass-step.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bass.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/beam.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/beam.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/beat-repeat.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/beat-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/beat-unit-tied.3.1.xml capture status CREATEFAIL -FAIL synthetic/beater.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/beats.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bend.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bend.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bookmark.3.0.xml element name mismatch at /score-partwise/credit: expected 'credit', actual 'part-list' -FAIL synthetic/bracket.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/bracket.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/brass-bend.3.1.xml capture status LOADFAIL -FAIL synthetic/breath-mark.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/caesura.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/cancel.location.3.0.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL synthetic/circular-arrow.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/clef.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/clef.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/coda.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/coda.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/concert-score.4.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/creator.3.0.xml element name mismatch at /score-partwise/identification: expected 'identification', actual 'part-list' -FAIL synthetic/credit-image.3.0.xml element name mismatch at /score-partwise/credit: expected 'credit', actual 'part-list' -FAIL synthetic/credit-image.3.1.xml element name mismatch at /score-partwise/credit: expected 'credit', actual 'part-list' -FAIL synthetic/credit-symbol.3.1.xml element name mismatch at /score-partwise/credit/credit-symbol: expected 'credit-symbol', actual 'credit-words' -FAIL synthetic/credit-type.3.0.xml element name mismatch at /score-partwise/credit: expected 'credit', actual 'part-list' -FAIL synthetic/credit-words.3.0.xml attribute mismatch at /score-partwise/credit/credit-words: expected 'color=#FF000000', actual 'default-x=1' -FAIL synthetic/credit-words.3.1.xml attribute mismatch at /score-partwise/credit/credit-words: expected 'color=#FF000000', actual 'default-x=1' -FAIL synthetic/credit.3.1.xml element name mismatch at /score-partwise/credit: expected 'credit', actual 'part-list' -FAIL synthetic/damp-all.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/damp-all.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/damp.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/damp.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/dashes.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/dashes.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/degree-alter.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/degree-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/degree-value.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/delayed-inverted-turn.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/delayed-turn.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/detached-legato.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/direction-type.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/direction.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/direction.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/directive.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/display-text.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/doit.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/doit.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/dot.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/double-tongue.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/double.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/double.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/down-bow.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/dynamics.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/effect.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/effect.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/elevation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/elision.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/elision.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/encoder.3.0.xml attribute count mismatch at /score-partwise/identification/encoding/encoder -FAIL synthetic/encoding-description.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/ending.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/ending.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/except-voice.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/extend.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/eyeglasses.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/eyeglasses.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/falloff.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/falloff.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/feature.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/fermata.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/figure-number.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/figured-bass.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/figured-bass.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/figured-bass.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/fingering.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/fingernails.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/first-fret.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/first.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/flip.3.1.xml capture status LOADFAIL -FAIL synthetic/footnote.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/for-part.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/frame.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/frame.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/fret.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/function.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/glass.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/glass.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/glissando.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/glissando.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/glyph.3.1.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -SKIP synthetic/golpe.3.1.xml capture status LOADFAIL -FAIL synthetic/grace.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-abbreviation-display.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-abbreviation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-barline.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-link.4.0.xml attribute count mismatch at /score-partwise -FAIL synthetic/group-name-display.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-name.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-symbol.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group-time.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/group.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/grouping.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/grouping.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/half-muted.3.1.xml capture status LOADFAIL -FAIL synthetic/hammer-on.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/handbell.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/harmon-closed.3.1.xml capture status LOADFAIL -SKIP synthetic/harmon-mute.3.1.xml capture status LOADFAIL -FAIL synthetic/harmonic.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/harmony.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/harmony.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/harmony.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/harp-pedals.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/harp-pedals.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/haydn.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/heel.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/hole-closed.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/hole-shape.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/hole-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/hole.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/humming.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/image.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/image.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/instrument-abbreviation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/instrument-change.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/instrument-link.4.0.xml attribute count mismatch at /score-partwise -FAIL synthetic/instrument-name.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/instrument-sound-enum.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/instrument-sound.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/interchangeable.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/inversion.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/inversion.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/inverted-mordent.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/inverted-turn.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/inverted-vertical-turn.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/ipa.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/key-accidental.3.0.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL synthetic/key-accidental.smufl.3.1.xml attribute count mismatch at /score-partwise/part-list/score-part/part-name -FAIL synthetic/key-octave.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/key.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/key.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/kind.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/laughing.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/left-divider.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/level.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/level.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/line-detail.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/link.3.0.xml attribute count mismatch at /score-partwise -SKIP synthetic/listen.4.0.xml capture status LOADFAIL -FAIL synthetic/listening.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/lyric-font.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/lyric-language.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/lyric.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/lyric.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-distance.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-layout.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-numbering.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-numbering.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-repeat.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-style.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure-style.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/measure.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/membrane.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/membrane.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/metal.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/metal.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/metronome-arrows.3.1.xml capture status GETDATAFAIL -SKIP synthetic/metronome-beam.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome-dot.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome-note.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome-relation.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome-tied.3.1.xml capture status GETDATAFAIL -SKIP synthetic/metronome-tuplet.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome-type.3.0.xml capture status GETDATAFAIL -SKIP synthetic/metronome.3.0.xml capture status CREATEFAIL -SKIP synthetic/metronome.3.1.xml capture status CREATEFAIL -SKIP synthetic/metronome.4.0.xml capture status CREATEFAIL -FAIL synthetic/midi-device.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/midi-name.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/miscellaneous-field.3.0.xml element name mismatch at /score-partwise/identification/miscellaneous: expected 'miscellaneous', actual 'encoding' -FAIL synthetic/mordent.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/movement-number.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/movement-title.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/multiple-rest.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/music-font.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/mute.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/n.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/non-arpeggiate.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/non-arpeggiate.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/notations.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/notations.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/note.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/note.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/notehead-text.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/notehead.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/notehead.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/numeral-alter.4.0.xml capture status LOADFAIL -SKIP synthetic/numeral-fifths.4.0.xml capture status LOADFAIL -SKIP synthetic/numeral-key.4.0.xml capture status LOADFAIL -SKIP synthetic/numeral-mode.4.0.xml capture status LOADFAIL -SKIP synthetic/numeral-root.4.0.xml capture status LOADFAIL -SKIP synthetic/numeral.4.0.xml capture status LOADFAIL -FAIL synthetic/octave-shift.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/octave-shift.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/open-string.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/open.3.1.xml capture status LOADFAIL -FAIL synthetic/opus.3.0.xml attribute count mismatch at /score-partwise -FAIL synthetic/ornaments.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-appearance.3.0.xml element name mismatch at /score-partwise/defaults/appearance/other-appearance: expected 'other-appearance', actual 'distance' -FAIL synthetic/other-articulation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-articulation.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-direction.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-direction.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-dynamics.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-dynamics.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/other-listen.4.0.xml capture status LOADFAIL -FAIL synthetic/other-listening.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-notation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-notation.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-ornament.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-ornament.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-percussion.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-percussion.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-play.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-technical.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/other-technical.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-abbreviation-display.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-abbreviation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-clef.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-link.4.0.xml attribute count mismatch at /score-partwise -FAIL synthetic/part-name-display.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-name.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-symbol.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/part-transpose.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pedal.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pedal.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/per-minute.3.0.xml capture status CREATEFAIL -FAIL synthetic/percussion.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/percussion.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pf.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pitched.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pitched.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/play.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/player-name.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/player.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/plop.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/plop.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pluck.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/prefix.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/principal-voice.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/principal-voice.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/print.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/print.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/pull-off.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/rehearsal.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/rehearsal.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/relation.3.0.xml element name mismatch at /score-partwise/identification: expected 'identification', actual 'part-list' -FAIL synthetic/release.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/repeat.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/right-divider.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/rights.3.0.xml element name mismatch at /score-partwise/identification: expected 'identification', actual 'part-list' -FAIL synthetic/root-alter.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/root-step.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/schleifer.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/scoop.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/scoop.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/scordatura.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/second.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/segno.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/segno.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/semi-pitched.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/senza-misura.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/sfzp.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/shake.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slash-dot.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slash-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slash.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slide.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slide.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slur.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/slur.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/smear.3.1.xml capture status LOADFAIL -FAIL synthetic/snap-pizzicato.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/soft-accent.3.1.xml capture status LOADFAIL -FAIL synthetic/software.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/sound.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/sound.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/source.3.0.xml element name mismatch at /score-partwise/identification: expected 'identification', actual 'part-list' -FAIL synthetic/spiccato.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/staccatissimo.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/staccato.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/staff-divide.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/staff-size.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/staff-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stem.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stick-location.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stick-material.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stick-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stick.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stick.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stopped.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stopped.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/straight.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/stress.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/string-mute.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/string-mute.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/string.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/strong-accent.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/suffix.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/swing-style.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/swing-type.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/swing.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/symbol.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/sync.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tap.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tap.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/technical.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tenuto.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/text.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/thumb-position.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tie.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tied.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tied.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/time-relation.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/time.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/time.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/timpani.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/timpani.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/toe.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/transpose.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/transpose.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tremolo.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tremolo.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/trill-mark.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/triple-tongue.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tuplet-dot.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tuplet-number.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tuplet-type.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tuplet.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/tuplet.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/turn.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/unstress.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/up-bow.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/vertical-turn.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/virtual-library.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/virtual-name.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/voice.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -SKIP synthetic/wait.4.0.xml capture status LOADFAIL -FAIL synthetic/wavy-line.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/wavy-line.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/wedge.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/wedge.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/with-bar.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/wood.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/wood.4.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/word-font.3.0.xml element name mismatch at /score-partwise/defaults: expected 'defaults', actual 'part-list' -FAIL synthetic/words.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/words.3.1.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/work-number.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' -FAIL synthetic/work-title.3.0.xml element name mismatch at /score-partwise/part-list/part-group: expected 'part-group', actual 'score-part' diff --git a/src/private/mxtest/api/roundtrip-baseline.txt b/src/private/mxtest/api/roundtrip-baseline.txt index f96dd31c4..328e54f1a 100644 --- a/src/private/mxtest/api/roundtrip-baseline.txt +++ b/src/private/mxtest/api/roundtrip-baseline.txt @@ -1,20 +1,19 @@ -# The pinned corpus api-roundtrip pass-list (mx-impl-port-plan.md §8). +# The pinned corpus api-roundtrip pass-list. # -# Step-0 baseline, captured 2026-06-12 from old master 71fc402: the old -# library's honest api roundtrip (createFromFile -> getData -> -# createFromScore -> writeToFile) was run over every eligible corpus file -# (829 discovered; same discovery rules as corert) and each output judged -# against its input with the NEW normalize-and-compare machinery -# (mxtest/corert/Compare + Fixer). See src/private/mxtest/api/baseline/. +# Captured 2026-06-12 from old master 71fc402: the old library's honest api +# roundtrip (createFromFile -> getData -> createFromScore -> writeToFile) was +# run over every eligible corpus file (829 discovered; same discovery rules as +# corert) and each output judged against its input with the normalize-and-compare +# machinery (mxtest/corert/Compare + Fixer). # # Results: 794 produced output, 19 LOADFAIL, 8 GETDATAFAIL, 8 CREATEFAIL; # of the 794, exactly 1 survived the strict DOM comparison -- mx::api is a # deliberate subset of MusicXML, and the old api reorders # children, drops , , most of , etc., so -# nearly every real-world file loses fidelity by design. The pre-port -# baseline is therefore this list. Growth comes from discovery mode as -# deliberate commits (never automatic); regression mode requires every -# file below to pass -- zero tolerance. +# nearly every real-world file loses fidelity by design. This is therefore +# the starting list. Growth comes from discovery mode as deliberate commits +# (never automatic); regression mode requires every file below to pass -- +# zero tolerance. # # Format: one data/-relative path per line; # starts a comment. ksuite/k016a_Miscellaneous_Fields.xml diff --git a/src/private/mxtest/control/CompileControl.h b/src/private/mxtest/control/CompileControl.h index a6ce3b23f..d60006ef8 100644 --- a/src/private/mxtest/control/CompileControl.h +++ b/src/private/mxtest/control/CompileControl.h @@ -6,12 +6,7 @@ #define MX_COMPILE_API_TESTS #define MX_COMPILE_API_ROUNDTRIP -// #define MX_COMPILE_CORE_TESTS #define MX_COMPILE_IMPL_TESTS -#define MX_COMPILE_IMPORT_TESTS -#define MX_COMPILE_NEW_DECIMAL_TESTS -#define MX_COMPILE_UTILTIY_TESTS -#define MX_COMPILE_XML_TESTS // use this to restrict the size of the files that will be processed during the test run. // 0 indicates no limit diff --git a/src/private/mxtest/core/DocumentTest.cpp b/src/private/mxtest/core/DocumentTest.cpp index fa00edf06..cc8484ec0 100644 --- a/src/private/mxtest/core/DocumentTest.cpp +++ b/src/private/mxtest/core/DocumentTest.cpp @@ -2,11 +2,10 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Gate-3 rejection suite (mx-core-plan.md §5.3): hand-authored invalid -// documents must refuse to parse, each asserting the right ErrorCode and a -// meaningful path. Plus the Document round-trip surface: version gating, -// root dispatch, root-namespace preservation, and the Gate-4 mechanical -// default probes. +// Rejection tests: hand-authored invalid documents must refuse to parse, +// each asserting the right ErrorCode and a meaningful path. Plus the +// Document round-trip surface: version gating, root dispatch, +// root-namespace preservation, and mechanical default-construction probes. #include "cpul/cpulTestHarness.h" @@ -165,7 +164,7 @@ TEST(RootNamespacePreserved, Document) TEST(DefaultsRoundTripEveryType, Document) { - // Gate 4's mechanical probe: every generated type's natural zero must + // Mechanical probe: every generated type's natural zero must // survive its own strict parser. Throws (and fails the case) if not. roundTripDefaults(); CHECK(true); diff --git a/src/private/mxtest/core/ShapeTest.cpp b/src/private/mxtest/core/ShapeTest.cpp index 922853087..09af384af 100644 --- a/src/private/mxtest/core/ShapeTest.cpp +++ b/src/private/mxtest/core/ShapeTest.cpp @@ -2,11 +2,11 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Gate-4 shape tests for the generated complex types (mx-core-plan.md §4 -// W2): sequence order unrepresentable, variant exclusivity, maxOccurs -// rejection, default-construction validity, and the strict-structure parse -// boundary (wrong order / unknown names / missing required content reject -// with the right ErrorCode). +// Shape tests for the generated complex types: sequence order +// unrepresentable, variant exclusivity, maxOccurs rejection, +// default-construction validity, and the strict-structure parse boundary +// (wrong order / unknown names / missing required content reject with the +// right ErrorCode). #include "cpul/cpulTestHarness.h" diff --git a/src/private/mxtest/core/ValueTest.cpp b/src/private/mxtest/core/ValueTest.cpp index a5d476d5a..620bd5c45 100644 --- a/src/private/mxtest/core/ValueTest.cpp +++ b/src/private/mxtest/core/ValueTest.cpp @@ -2,10 +2,10 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Gate-4 construction-safety tests for representative generated value types -// (mx-core-plan.md §5.4): clamping on construct and set, named-factory -// enums, structural bespoke shapes, and union dispatch. The compile-time -// must-NOT-compile probes live in mxtest/probe (script-driven). +// Construction-safety tests for representative generated value types: +// clamping on construct and set, named-factory enums, structural bespoke +// shapes, and union dispatch. The compile-time must-NOT-compile probes live +// in mxtest/probe (script-driven). #include "cpul/cpulTestHarness.h" diff --git a/src/private/mxtest/corert/CoreRoundtripTest.cpp b/src/private/mxtest/corert/CoreRoundtripTest.cpp index 2ea91c637..ce3040a6f 100644 --- a/src/private/mxtest/corert/CoreRoundtripTest.cpp +++ b/src/private/mxtest/corert/CoreRoundtripTest.cpp @@ -14,8 +14,8 @@ namespace { -// Skip accounting for the pinned-counts gate (mx-core-plan.md §5.1): the -// 4.0 corpus has nothing newer than 4.0, so any skip is count drift. +// Skip accounting: the 4.0 corpus has nothing newer than 4.0, so any skip +// is count drift. int g_skippedCount = 0; // Run the core roundtrip flow for one input and report through Catch2. @@ -127,11 +127,10 @@ const CoreRoundtripRegistrar g_coreRoundtripRegistrar; } // namespace -// Gate 1's pinned counts (mx-core-plan.md §5.1): 829 eligible files, none -// skipped. Count drift is a failure even with zero individual fails, so a -// corpus or version-gate change is a conscious decision, not silent decay. -// Registered last (registration is discovery order; "zz" keeps it last -// alphabetically for shuffled runs too). +// Pinned counts: 829 eligible files, none skipped. Count drift is a failure +// even with zero individual fails, so a corpus or version-gate change is a +// conscious decision, not silent decay. Registered last (registration is +// discovery order; "zz" keeps it last alphabetically for shuffled runs too). TEST_CASE("zz-corert-pinned-counts", "[core-roundtrip]") { CHECK(mxtest::corert::discoverInputFiles().size() == 829); diff --git a/src/private/mxtest/probe/Probes.cpp b/src/private/mxtest/probe/Probes.cpp index ef41db55c..fc155605c 100644 --- a/src/private/mxtest/probe/Probes.cpp +++ b/src/private/mxtest/probe/Probes.cpp @@ -2,8 +2,8 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Gate-4 compile-time probes (mx-core-plan.md §5.4): each PROBE number -// selects one construct that MUST NOT compile -- the unrepresentability +// Compile-time negative probes: each PROBE number selects one construct +// that MUST NOT compile -- the unrepresentability // half of valid-by-construction, verified by `make probe-cpp`, which // asserts that compilation fails for every PROBE > 0 and succeeds for the // PROBE=0 control (proving the probe failures are not include/setup rot). diff --git a/src/private/mxtest/validate/main.cpp b/src/private/mxtest/validate/main.cpp index a8d93a679..fe4a82c24 100644 --- a/src/private/mxtest/validate/main.cpp +++ b/src/private/mxtest/validate/main.cpp @@ -2,12 +2,12 @@ // Copyright (c) by Matthew James Briggs // Distributed under the MIT License -// Gate 2 (mx-core-plan.md §5.2): every parsed corpus document is serialized -// and the OUTPUT is xmllint-validated against the 4.0 XSD -- the mechanical -// proof that the clamp policy emits only valid XML, end to end. This tool -// does the parse+serialize half: it writes each round-tripped document -// (plus the default-constructed Document, Gate 4) to the given output -// directory; `make validate-cpp` runs xmllint over the results. +// Every parsed corpus document is serialized and the output is xmllint- +// validated against the 4.0 XSD -- the mechanical proof that the clamp +// policy emits only valid XML, end to end. This tool does the +// parse+serialize half: it writes each round-tripped document (plus the +// default-constructed Document) to the given output directory; `make +// validate-cpp` runs xmllint over the results. #include "mx/core/generated/DefaultsProbe.h" #include "mx/core/generated/Document.h" @@ -29,7 +29,7 @@ int main(int argc, char **argv) const std::filesystem::path outDir{argv[1]}; std::filesystem::create_directories(outDir); - // Gate 4's mechanical default-construction probes first: every type's + // Mechanical default-construction probes first: every type's // natural zero must survive its own strict parser... mx::core::roundTripDefaults(); // ...and the default Document must be schema-valid (xmllint checks it