Skip to content

record(CONTAINER-LIBSSL): the container image was finally BUILT, and the first build found #1517 (#1517, #1521) - #1524

Merged
localai-bot merged 4 commits into
mainfrom
row/FIX-CONTAINER-LIBSSL-1517
Aug 20, 2026
Merged

record(CONTAINER-LIBSSL): the container image was finally BUILT, and the first build found #1517 (#1517, #1521)#1524
localai-bot merged 4 commits into
mainfrom
row/FIX-CONTAINER-LIBSSL-1517

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

.agents/specs/hf-model-download.md carried an ## Owed bullet saying W5 shipped
libssl3 and the hub-reach audit without ever building an image, so the audit had
never executed. That debt is discharged, and the measurement was red: the first
real execution refused the image with hub reach: this image cannot speak HTTPS.
The bullet now records what the build found rather than that a build is owed, and
carries the red-to-green pair measured on 20 August 2026 from one tree with one
variable, both images deleted afterwards.

docs/guides/hugging-face-access.md said the container image "carries both
halves already: libssl3 for the library and ca-certificates for the trust
store". Both of those are runtime parts. The half that was missing was
libssl-dev at build time, which is the only reason the server links OpenSSL at
all, so the sentence named two halves of a pair that had three parts and asserted
a property the images did not have.

#1521 is filed and NOT fixed here. Sharing the lane's BuildKit cache mount between
the red control and the green build made the second configure read the first one's
CMakeCache.txt, report OpenSSL found with an empty version, and die at generate
on a missing OpenSSL::SSL target rather than take the documented downgrade.
docker/reset-stale-build-cache.sh stamps the compiler, CMake and CUDA, none of
which moved. The control was rebuilt with its own mount id. It moves
cache-invalidation semantics, so it needs its own spec and fresh review.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:Opus-5 [Claude Code]

mudler added 4 commits August 20, 2026 22:57
…so the shipped image can actually reach the hub (#1517)

`docker/Dockerfile` added `libssl3` to the runtime stage for the HuggingFace
fetch (#1280) and never added `libssl-dev` to a builder stage. `builder-toolchain`
and `builder-cuda` installed `binutils build-essential ca-certificates cmake curl
file git ninja-build python3` and nothing more, so CMake logged `Could NOT find
OpenSSL (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)` and took the
downgrade `CMakeLists.txt:2440-2482` defines: a warning, `VLLM_CPP_HF_DOWNLOAD`
forced OFF, and a green build. `ldd` on the shipped `vllm-server` named only
`libstdc++ libm libgcc_s libc`. The image carried a runtime `libssl3` that
nothing linked, and the comment claiming otherwise was false for every image the
file produced.

`.github/workflows/release.yml` had the same omission where it matters more.
`cuda_x86` and `cuda_arm64` build inside `nvidia/cuda:13.3.0-devel-ubuntu24.04`
with the identical package list, so the published CUDA archives shipped the
fetch disabled too. `cpu_x86`, `cpu_arm64` and `vulkan_x86` were correct only
because the `ubuntu-latest` runner image happens to preinstall the package. That
is an accident, not a decision, and nothing defended it, so all five lanes now
name the package themselves.

`scripts/check-build-runtime-deps.py` refuses the class rather than this one
instance. A Dockerfile stage that runs a release build script must reach
`libssl-dev` through its own or an ancestor stage's apt install, and some
runtime stage must carry `libssl3`; either half alone is the defect this fixes.
A release job that runs a build script must name the package or appear in
`EXEMPT_LANES` with a recorded reason, so a new lane belongs to neither set and
reddens the gate. The five exemptions are real: the literal-static musl lane
resolves the feature OFF on purpose, and the two macOS and two Windows lanes
have no apt and carry their TLS debt under `## Owed` already.

Run against the two files as `origin/main` carried them, the checker names
exactly the eight defective stages and lanes and exits 1. Against this tree it
exits 0.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:Opus-5 [Claude Code]
Bring the branch up to date before its final gate. The incoming range touches
`.agents/specs/qwen38-27b-bf16-gate.md` only, so nothing this row owns was
merged and `.agents/issue-index.md` is byte-identical to the version this branch
appended to.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:Opus-5 [Claude Code]
…the first build found #1517 (#1517, #1521)

`.agents/specs/hf-model-download.md` carried an `## Owed` bullet saying W5 shipped
`libssl3` and the hub-reach audit without ever building an image, so the audit had
never executed. That debt is discharged, and the measurement was red: the first
real execution refused the image with `hub reach: this image cannot speak HTTPS`.
The bullet now records what the build found rather than that a build is owed, and
carries the red-to-green pair measured on 20 August 2026 from one tree with one
variable, both images deleted afterwards.

`docs/guides/hugging-face-access.md` said the container image "carries both
halves already: `libssl3` for the library and `ca-certificates` for the trust
store". Both of those are runtime parts. The half that was missing was
`libssl-dev` at build time, which is the only reason the server links OpenSSL at
all, so the sentence named two halves of a pair that had three parts and asserted
a property the images did not have.

#1521 is filed and NOT fixed here. Sharing the lane's BuildKit cache mount between
the red control and the green build made the second configure read the first one's
`CMakeCache.txt`, report OpenSSL found with an empty version, and die at generate
on a missing `OpenSSL::SSL` target rather than take the documented downgrade.
`docker/reset-stale-build-cache.sh` stamps the compiler, CMake and CUDA, none of
which moved. The control was rebuilt with its own mount id. It moves
cache-invalidation semantics, so it needs its own spec and fresh review.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:Opus-5 [Claude Code]
…t apply the union driver, so the forward merge is made here (#1517)

GitHub reported this pull request as conflicting while `git merge` here reports
a clean automatic merge. The difference is `.agents/issue-index.md`, which
carries `merge=union` in `.gitattributes`. The forge does not apply that driver,
so two branches that each append a row read as a conflict there and merge
cleanly here.

The keyed records are verified by hand rather than accepted from the clean
automatic merge, which `AGENTS.md` section `## Records` forbids relying on. The
index union holds: 493 rows on this branch, 492 on `origin/main`, 491 at the
merge base, and 494 after the merge, which is 493 plus 492 minus 491.
`scripts/check-issue-index-append-only.py` and `scripts/check-agent-record.py`
both exit 0, the latter reporting `ENGINE=168 MODEL=377 QUANT=84 KERNEL=57
BACKEND=85 ANCHOR-ROT=38`.

No file needed a scoped edit re-applied, because `origin/main` moved only by the
relative-redirect fix, which touches no record this branch also edits.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:Opus-5 [Claude Code]
@localai-bot
localai-bot merged commit 017a3e9 into main Aug 20, 2026
1 check failed
@localai-bot
localai-bot deleted the row/FIX-CONTAINER-LIBSSL-1517 branch August 20, 2026 23:59
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.

2 participants