Skip to content

update the repository for ai development#145

Merged
webern merged 34 commits into
masterfrom
ai
May 17, 2026
Merged

update the repository for ai development#145
webern merged 34 commits into
masterfrom
ai

Conversation

@webern
Copy link
Copy Markdown
Owner

@webern webern commented May 16, 2026

Summary

Prepares the mx repository for AI-assisted development and replaces the ad hoc build/CI setup
with a portable, reproducible toolchain. Most of the diff is a one-time clang-format pass over the
whole Sourcecode/ tree; the rest is build/CI infrastructure and a small set of real build fixes.

What this PR does

AI agent onboarding

  • Add AGENTS.md: project overview, repository index, and the quality-gate workflow.
  • Add .claude/ (settings and a CLAUDE.md that points to AGENTS.md).
  • Add Documents/ai/project/: project plan (agenda.md), agent guide (AGENTS.md), and the
    build-and-ci-design.md design document.

Build system

  • Replace build.sh with a portable Makefile wrapping CMake: build modes (lib, dev,
    core), run targets (test, test-all, examples-run, all), and knobs (JOBS,
    BUILD_TYPE, GENERATOR, ARGS, DOCKER).
  • make test and make test-all also run the example programs, so the examples are exercised on
    every platform that runs tests.
  • Update README.md; add .gitattributes for consistent line endings.

Formatting

  • Add .clang-format (Microsoft base: 4-space indent, Allman braces, no spaces inside
    parentheses).
  • Reformat the entire Sourcecode/ tree to that style (the large file count in this PR).
  • make fmt formats in place using the pinned toolchain.

Deterministic quality gate

  • Add a Dockerfile (Ubuntu 24.04 with pinned g++-14 and clang-format-18) and
    .dockerignore.
  • make check runs a format check plus a warning-free build inside that container, so formatting
    and compiler-warning enforcement are reproducible and do not drift with the floating CI runner
    images. It compiles with GCC, so a local pass matches the Linux CI compiler.
  • CMakeLists.txt enables -Wall -Wextra (/W4 on MSVC) on the mx target.

CI

  • Replace the old single workflow (archived as .github/workflows/ccpp.yml.archived) with
    .github/workflows/ci.yaml: five jobs - linux-gate (Docker quality gate + tests),
    linux-core (full GCC suite including the slow mx::core tests), macos, windows, and an
    advisory xcode job.

Build and portability fixes

  • Add missing <cstdint> includes (ColorData.h, Decimals.h).
  • Fix a missing break; in DocumentSpec::toStream that produced incorrect output for several
    enum values (e.g. timewise rendered as timewiseerror).
  • Remove an ignored-qualifier cast in Decimals.cpp; clean up assorted compiler warnings in
    impl/, ezxml/, and test code surfaced by the formatting pass and the warning gate.

Notes

  • The quality gate requires Docker; no other local tooling is needed. See
    Documents/ai/project/build-and-ci-design.md for the full design.
  • CI is green on all five jobs.

webern added 12 commits May 16, 2026 23:47
Break the circular include between XElementIterator.h and
XElementIterImpl.h by forward-declaring XElementIterImpl in the
iterator header and defining the destructor/move ops out-of-line.

Add missing Converter.h include to LineFunctions.h.

Fix run_bin to run the binary from the repo root rather than
cd'ing into the build directory. Fix tests that wrote output
files to cwd instead of Resources/testOutput/.

Gitignore compile_commands.json.
Add GitHub Actions CI (ci.yaml) with four jobs:
- linux and macos as required quality gates
- windows and xcode as advisory

Archive the old ccpp.yml workflow. Add Xcode generate,
build, and test targets to the Makefile.
webern added 17 commits May 16, 2026 23:59
Move fmt/check/lint into a pinned Docker toolchain (Ubuntu
24.04 + clang-18 + libc++). Rework Makefile and ci.yaml per
build-and-ci-design.md. WIP; fixed up into the original
commits later.
Remove clang-tidy from Makefile/Dockerfile/.clang-tidy and the
design doc; make check is now fmt-check + warning-free build.
Add <cstdint> to Decimals.h (GCC 14 / libc++). Reformat the two
clang-format-18 stragglers. WIP; fixed up later.
Switch the Docker gate from clang/libc++ to pinned g++-14 so
make check matches the required Linux CI compiler. Add
<cstdint> to ColorData.h. Fix missing break; in DocumentSpec
toStream (emitted "timewiseerror" etc.). Drop ignored const
cast in Decimals.cpp. test/test-all now run examples; drop
the macOS-only examples CI step. WIP; fixed up later.
The gen/ directory will also hold gen/version-a (DevScripts)
once that rename follows. Update AGENTS.md and .dockerignore.
Update all references in AGENTS.md, Dockerfile, Makefile,
CHANGELOG.md, and DevScripts/parseXsd.rb.
Update all references in AGENTS.md, CHANGELOG.md, and
DevScripts/smuflHeader.rb. Fix smuflHeader.rb path from
stale S-M-U-F-L to actual smufl subdirectory name.
Update all references: CMakeLists.txt, Makefile, Dockerfile,
.dockerignore, .gitignore, ci.yaml, README.md, CHANGELOG.md,
AGENTS.md, docs/ai/project/*.md, DevScripts/*.rb, and
Xcode/Mx.xcodeproj/project.pbxproj.
Update path references in DevScripts/build-for-apple.sh,
mxdeploy.rb, mxdeploy-v01.rb, mxdeploy-v02.rb, and mxdeploy.
webern added 5 commits May 17, 2026 12:50
Update AGENTS.md. Adjust all relative paths in scripts from
one level up (../X) to two levels up (../../X) now that they
live inside gen/version-a/ rather than at the repo root.
- AGENTS.md: fix Xcode/ -> xcode/ in project index
- src/private/mxtest/file/Path.h: update Resources -> data
- gen/version-b/src/generate/paths.rs: update Sourcecode -> src,
  Documents -> docs; add second p.pop() since the crate is now
  two levels deep under gen/version-b/ instead of one level
  under CodeGen/
- gen/version-a/mxdeploy: update hardcoded absolute path
  Sourcecode -> src
- .github/workflows/ccpp.yml.archived: update old paths
- Remove CircleCI badge (project uses GitHub Actions)
- Correct make target: test-core -> test-all
- Correct LICENSE filename (no .txt extension)
- Fix linux-core CI description: both jobs use GCC;
  difference is test scope, not compiler
- Correct element file count: ~590 .cpp (not ~1131)
@webern webern merged commit 662c7ff into master May 17, 2026
5 checks passed
@webern webern deleted the ai branch May 17, 2026 11:52
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