Install the agents toolbox - #6
Merged
Merged
Conversation
Adds the three agentic workflows from EvergineTeam/Evergine.Bindings via gh aw, pinned to toolbox commit ace4e8d, plus the two deterministic workflows that go with them. binding-updater is the one that answers the original need: monthly, or on demand, or when an issue is labelled agent:needs-regen. A deterministic step fetches the sources declared in binding.yml first, so when Embree has not published anything the agent reads a one-line report, no-ops and the run costs almost nothing. When it has, the agent regenerates, builds, and fixes the generator if a new construct breaks it. api-gate is not optional for this repository. The agent runs the generator, not the native build, so regenerating against a newer header leaves the old binaries in place -- which reads as a purely additive diff while every new symbol is missing from the libraries it ships. native-coherence makes the merge depend on every P/Invoke actually resolving. The version constants are exempted from the breaking-change verdict: rtcore_config.h reports Embree's own version, so they change on every release and would otherwise make each bump breaking. toolbox-update recompiles these against the current toolbox weekly. Moving the v1 tag updates nothing on its own -- a repository keeps the commit it was compiled against until something recompiles it, and nothing fails in the meantime. Dropped what gh aw adds for local convenience and the fleet does not commit: .vscode/, .github/mcp.json, .github/agents/, .github/skills/ and copilot-setup-steps.yml. Meshoptimizer carries only .gitattributes and .github/aw/actions-lock.json, and the workflows compile without the rest.
API gate: additiveEvery symbol that existed still exists, unchanged. Nothing that compiled before stops compiling.
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. |
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.
Block B of the roadmap: the repository now keeps itself current with Embree instead of waiting
for somebody to notice a release.
Installed with
gh aw add EvergineTeam/Evergine.Bindings@v1, pinned to toolbox commitace4e8d.What runs, and when
binding-updateragent:needs-regenci-doctorcpp-wrapper-porterapi-gatetoolbox-updatebinding-updateris the one that answers the original need. A deterministic step fetchesthe sources declared in
binding.ymlbefore the agent starts, so on a month where Embree haspublished nothing the agent reads a one-line report, no-ops, and the run costs almost nothing.
When something did move it regenerates, builds, and — the interesting case — fixes the
generator if a new construct breaks it, labelling the pull request
needs-human-reviewwhen ittouched generator code.
api-gateis not optional here. The agent runs the generator, not the native build, soregenerating against a newer header leaves the old binaries in place. That reads as a purely
additive diff — new symbols, none removed — while every new symbol is missing from the
libraries the package ships.
native-coherence: truemakes the merge depend on every P/Invokeactually resolving, which is the check that catches it.
The five version constants are exempted from the breaking-change verdict. The gate counts a
changed constant value as a removal on purpose, to catch a silent renumbering, but
rtcore_config.hreports Embree's own version, soVERSION,VERSION_MAJOR/MINOR/PATCHandVERSION_STRINGchange on every release and would make each bump "breaking" and the verdictworthless.
toolbox-updaterecompiles the agents against the current toolbox weekly. Moving thev1tag updates nothing on its own: a repository keeps the commit it was compiled against until
something recompiles it, and nothing fails in the meantime.
Also done
safe-outputsneed:agent:binding-update,agent:needs-regen,agent:needs-human,agent:upstream-break,needs-human-review. Without them the outputsfail at labelling time.
vars.APP_CLIENT_IDandsecrets.APP_PRIVATE_KEYexist at the org with visibilityall.GITHUB_TOKENcannot write under.github/workflows/— that permission is App-only —so
toolbox-updateneeds them. Existing is not the same as the App having access to thisrepository; the first weekly run is what will actually prove it.
gh awadds for local convenience and the fleet does not commit:.vscode/,.github/mcp.json,.github/agents/,.github/skills/andcopilot-setup-steps.yml.Meshoptimizer carries only
.gitattributesand.github/aw/actions-lock.json, and theworkflows compile without the rest.
Verifying it
After merge,
gh workflow run "Binding Updater". The correct outcome atv4.4.1is anoopwith nothing opened. A real cycle can only be exercised when Embree publishes 4.4.2, or by
pointing
release.currentat an older tag on a branch.