Skip to content

core-dev mode for mx core roundtrips#153

Merged
webern merged 1 commit into
masterfrom
core-dev
May 22, 2026
Merged

core-dev mode for mx core roundtrips#153
webern merged 1 commit into
masterfrom
core-dev

Conversation

@webern
Copy link
Copy Markdown
Owner

@webern webern commented May 22, 2026

Related to #58.

Introduces a permanent in-repo "core development" mode that lets a codegen agent churn symbols under src/private/mx/core/ without keeping mx/api, mx/impl, or the higher-level test suites compiling. Existing build and test targets are unchanged when MX_CORE_DEV=OFF.

Why

We are reverse-engineering a new codegen system to regenerate mx/core for MusicXML 4.0 (tracked in docs/ai/projects/gen/). During that work mx/api and mx/impl will frequently fail to compile against an in-progress mx/core, which makes the normal build-and-test loop unusable as a feedback signal. core-dev gives the codegen rewrite a narrow harness: build only mx/core + mx/ezxml + mx/utility, then exercise every MusicXML file under data/ through mx::core::Document::fromXDoctoXDoc and compare against a normalized in-memory copy of the input.

What

  • CMake: MX_CORE_DEV option gates a trimmed configuration that builds only mx/core + mx/ezxml + mx/utility plus the core roundtrip test binary. No per-file #ifdef guards.
  • Makefile: core-dev / check-core-dev / test-core-dev targets, plus a help entry. fmt and check-core-dev run in Docker; test-core-dev runs natively.
  • Test harness: src/private/mxtest/corert/ dynamically registers one Catch2 test case per *.xml / *.musicxml file under data/ (excluding data/expected/, data/testOutput/, data/generalxml/, data/smufl/). The same suite also runs inside the normal mxtest binary during make test-all, gated on MX_BUILD_CORE_TESTS=ON. Distinct from the api import suite under src/private/mxtest/import/.
  • Agent surface: AGENTS.md section, README pointer, make help block.
  • Project docs: docs/ai/projects/core-dev/ records goals, design, plan, session log, and the final gate results.

Notes

CI is not wired up for core-dev; it is a local iteration harness for the codegen rewrite, not a release gate. The 35 core roundtrip failures observed at the final gate are the intended consumer signal for the codegen rewrite and are out of scope for this PR.

Introduces a permanent in-repo "core development" mode that lets a
codegen agent churn symbols under src/private/mx/core/ without keeping
mx/api, mx/impl, or the higher-level test suites compiling. The
existing build and test targets are unchanged when MX_CORE_DEV=OFF.

Why
---
We are reverse-engineering a new codegen system to regenerate mx/core
for MusicXML 4.0 (tracked in docs/ai/projects/gen/). During that work
mx/api and mx/impl will frequently fail to compile against an
in-progress mx/core, which makes the normal build-and-test loop
unusable as a feedback signal. core-dev gives the codegen rewrite a
narrow harness: build only mx/core + mx/ezxml + mx/utility, then
exercise every MusicXML file under data/ through
mx::core::Document::fromXDoc -> toXDoc and compare against a
normalized in-memory copy of the input.

What
----
- CMake: MX_CORE_DEV option gates a trimmed configuration that builds
  only mx/core + mx/ezxml + mx/utility plus the core roundtrip test
  binary. No per-file #ifdef guards.
- Makefile: core-dev / check-core-dev / test-core-dev targets, plus a
  help entry. fmt and check-core-dev run in Docker; test-core-dev runs
  natively.
- Test harness: src/private/mxtest/corert/ dynamically registers one
  Catch2 test case per *.xml / *.musicxml file under data/ (excluding
  data/expected/, data/testOutput/, data/generalxml/, data/smufl/).
  The same suite also runs inside the normal mxtest binary during
  make test-all, gated on MX_BUILD_CORE_TESTS=ON. Distinct from the
  api import suite under src/private/mxtest/import/.
- Agent surface: AGENTS.md section, README pointer, make help block.
- Project docs: docs/ai/projects/core-dev/ records goals, design,
  plan, session log, and the final gate results.

CI is not wired up for core-dev; it is a local iteration harness for
the codegen rewrite, not a release gate. The 35 core roundtrip
failures observed at the final gate are the intended consumer signal
for the codegen rewrite and are out of scope for this commit.
@webern webern merged commit 882f09e into master May 22, 2026
4 of 5 checks passed
@webern webern deleted the core-dev branch May 22, 2026 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant