Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related to #58.
Introduces a permanent in-repo "core development" mode that lets a codegen agent churn symbols under
src/private/mx/core/without keepingmx/api,mx/impl, or the higher-level test suites compiling. Existing build and test targets are unchanged whenMX_CORE_DEV=OFF.Why
We are reverse-engineering a new codegen system to regenerate
mx/corefor MusicXML 4.0 (tracked indocs/ai/projects/gen/). During that workmx/apiandmx/implwill frequently fail to compile against an in-progressmx/core, which makes the normal build-and-test loop unusable as a feedback signal. core-dev gives the codegen rewrite a narrow harness: build onlymx/core+mx/ezxml+mx/utility, then exercise every MusicXML file underdata/throughmx::core::Document::fromXDoc→toXDocand compare against a normalized in-memory copy of the input.What
MX_CORE_DEVoption gates a trimmed configuration that builds onlymx/core+mx/ezxml+mx/utilityplus the core roundtrip test binary. No per-file#ifdefguards.core-dev/check-core-dev/test-core-devtargets, plus a help entry.fmtandcheck-core-devrun in Docker;test-core-devruns natively.src/private/mxtest/corert/dynamically registers one Catch2 test case per*.xml/*.musicxmlfile underdata/(excludingdata/expected/,data/testOutput/,data/generalxml/,data/smufl/). The same suite also runs inside the normalmxtestbinary duringmake test-all, gated onMX_BUILD_CORE_TESTS=ON. Distinct from the api import suite undersrc/private/mxtest/import/.AGENTS.mdsection, README pointer,make helpblock.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.