Skip to content

infra: pin the container CBC to 2.10.10 on both architectures - #128

Merged
andig merged 3 commits into
mainfrom
chore/docker-cbc-upgrade
Jul 31, 2026
Merged

infra: pin the container CBC to 2.10.10 on both architectures#128
andig merged 3 commits into
mainfrom
chore/docker-cbc-upgrade

Conversation

@andig

@andig andig commented Jul 31, 2026

Copy link
Copy Markdown
Member

relates to #76

The container solves with the CBC that pulp bundles, which is 2.10.10 on arm64 but 2.10.3 built in December 2019 on amd64. This puts both architectures on 2.10.10, so the deployed solver no longer depends on which image was pulled.

  • fetches the official 2.10.10 static release build for amd64, checksum pinned, and links pulp's bundled binary to it. pulp resolves the solver by a fixed path and offers no override, so linking is the way in without touching application code
  • leaves arm64 alone, the bundled binary there is already 2.10.10
  • asserts at build time that the solver pulp resolves reports 2.10.10, so a silent fall back to the bundled binary fails the build
  • image grows 5 MB on amd64, 118 to 123 MB, and stays flat on arm64
  • Debian packages 2.10.12 and that was the first attempt, but it solves one of the twelve slowest captured requests to a far worse incumbent, 7.851361 against 16.364198, reproducible across runs and unchanged at a 25 s limit

The amd64 tarball is fetched on every build, including arm64 ones where it goes unused. That costs a download, not image weight.

TODO

On amd64, 013-grid-export-limit-hit returns 17.531375 where the stored expectation is 17.537263. Both solves report a proved optimum and the same case matches exactly on arm64 at the same solver version, so this looks like a different optimum of equal real value reported through a different clean objective rather than a wrong answer. The expectations were produced against 2.10.3, and the suite keeps running against the bundled binary rather than the container, so nothing fails in CI. Worth confirming before merging.

andig and others added 2 commits July 31, 2026 14:18
pulp ships CBC 2.10.3 from 2019 for amd64, which is what the container runs
today. Debian trixie packages 2.10.12. pulp resolves the solver by path and
has no override, so the bundled binaries are linked to the packaged one and a
build time solve asserts the swap took effect.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Debian package is 2.10.12, which solves one captured slow request to a
much worse incumbent than 2.10.10 does. arm64 already runs the 2.10.10 that
pulp bundles, so amd64 takes the official 2.10.10 release build instead of
the package and both architectures end up on the same version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@andig andig changed the title infra: run the Debian CBC build instead of the one bundled with pulp infra: pin the container CBC to 2.10.10 on both architectures Jul 31, 2026
The tarball is fetched by the builder rather than by a stage of its own and
mounted from there, and the build time check is the version the solver
reports rather than that plus a solve.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@andig
andig marked this pull request as ready for review July 31, 2026 14:46
@andig
andig merged commit 8dd9ff6 into main Jul 31, 2026
1 check passed
@andig
andig deleted the chore/docker-cbc-upgrade branch July 31, 2026 14:46
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