Skip to content

Onboard onto the Evergine.Bindings toolbox - #3

Merged
jcant0n merged 1 commit into
mainfrom
feat/toolbox-onboarding
Aug 11, 2026
Merged

Onboard onto the Evergine.Bindings toolbox#3
jcant0n merged 1 commit into
mainfrom
feat/toolbox-onboarding

Conversation

@jcant0n

@jcant0n jcant0n commented Aug 11, 2026

Copy link
Copy Markdown
Member

Moves this repository from the evergine-standards pipeline to the toolbox, so a new MuJoCo release is picked up, regenerated and proposed as a PR instead of being noticed by somebody.

binding.yml git-tree following google-deepmind/mujoco stable releases, currently 3.11.0. Validated against binding.schema.json
CI binding-common-ci@v1 + binding-native-coherence@v1
CD binding-resolve-upstreamnativesbinding-tracked-cd
API Gate on PRs, with native-coherence: true
Toolbox Updater weekly
Agents binding-updater, ci-doctor, cpp-wrapper-porter via gh aw add + compile --strict

Natives cannot use upstream.assets

That path unpacks zip only and extracts flat with no remapping. MuJoCo publishes .tar.gz for both Linux RIDs, a .dmg for macOS, and a .zip for Windows whose members sit under bin/ — none of the four could reach runtimes/<rid>/native/. So CD has a natives job that fetches the release assets for the resolved tag and stages them at their final repository paths. macOS comes from the PyPI wheel, which carries the same universal2 binary in a zip, so one Linux job produces all four RIDs without a macOS runner to mount the .dmg.

This is not optional: binding-tracked-cd hard-fails a source bump when runtimes/ exists and no natives were supplied.

runtimes/osx stays

check-native-arch reports an unrecognised RID as a warning, but rejects a fat binary whose slices disagree as an error — so splitting the universal2 dylib into osx-x64/osx-arm64 would turn a warning into a failure. The RID graph resolves both macOS RIDs to the architecture-less folder anyway, verified earlier by publishing a probe app per RID.

mjVERSION_HEADER exempted

mujoco.h reports its own version, so without the exemption every release reads as breaking.

Moves this repository from the evergine-standards pipeline to the toolbox,
so a new MuJoCo release is picked up, regenerated and proposed as a pull
request instead of being noticed by somebody.

- binding.yml: git-tree adapter following google-deepmind/mujoco stable
  releases, currently 3.11.0. Validated against the toolbox schema.
- CI: binding-common-ci@v1, plus binding-native-coherence so a managed
  layer that drifts ahead of the shipped libraries is caught. Same inputs
  as before; @v1 and @v2 agree on all nine.
- CD: resolve-upstream -> natives -> tracked-cd.
- api-gate on pull requests, with native coherence.
- toolbox-update weekly, so the agents never drift more than a week.
- binding-updater, ci-doctor and cpp-wrapper-porter installed with
  gh aw add and compiled --strict. The porter is inert: it needs a
  wrapper: block, and this binding has none.

Two decisions worth recording, both taken after reading the toolbox code
rather than guessing:

upstream.assets cannot serve this repository, so the natives are fetched
by a job in CD instead. That path unpacks zip only and extracts flat with
no remapping: MuJoCo publishes .tar.gz for both Linux RIDs, a .dmg for
macOS, and a .zip for Windows whose members sit under bin/, so not one of
the four could reach runtimes/<rid>/native/. macOS comes from the PyPI
wheel, which carries the same universal2 binary in a zip, so one Linux
job produces all four RIDs without a macOS runner to mount the .dmg.
This is not optional: binding-tracked-cd hard-fails a source bump when
runtimes/ exists and no natives were supplied, which is the right
behaviour -- committing otherwise would ship a managed layer built from
one revision against libraries built from another.

runtimes/osx stays as it is and must not be split into osx-x64 and
osx-arm64. check-native-arch reports an unrecognised RID as a warning,
but rejects a fat binary whose slices disagree as an error, so splitting
the universal2 dylib would turn a warning into a failure. The RID graph
resolves both macOS RIDs to the architecture-less folder anyway; that was
verified earlier by publishing a probe app against the package.

mjVERSION_HEADER is exempted in the API gate: mujoco.h reports its own
version, so every release would otherwise read as breaking.
@github-actions

Copy link
Copy Markdown
Contributor

API gate: additive

Every symbol that existed still exists, unchanged. Nothing that compiled before stops compiling.

Target framework Added Removed
net10.0 +0 -0

Enum and constant values are part of the measured surface: a renumbering keeps compiling and sends the wrong number to the driver, so it counts as a removal.

@jcant0n
jcant0n merged commit 375f635 into main Aug 11, 2026
5 checks passed
@jcant0n
jcant0n deleted the feat/toolbox-onboarding branch August 11, 2026 14:00
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