The `openmodelica/openmodelica:v1.27.1` image does not exist, and 1.27.1 is too old to parse the libraries (SDF) anyway. Unpack the nightly CLI tarball into the workspace instead; it is relocatable and needs only glibc, libstdc++ and the CA bundle from the image, which is now a plain ubuntu that stays in the docker build cache.
Clean the whole workspace: the cargo target tree kept between runs grows without bound.
`--max-memory` was a `RLIMIT_DATA` ceiling, which counts address space. jemalloc retains freed extents rather than unmapping them, so that figure only grows while resident memory falls back, and the run was killed at 96 GB while holding 55 GB. The container now carries a `--memory` limit, which is charged for resident pages, and `--max-memory` is the live-memory budget the generator works to -- half the cgroup, since retained extents and fragmentation sit on top of it.
Both figures and the job count now come from what the container actually has, `nproc` and `memory.max`, rather than being pinned to what the node label promises. Capped at ten threads: past that the allocator's retained address space grows far faster than the work does, and rendering is bound by memory traffic anyway.