Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions .agents/docs/2026-09-09-dlopen-surface-and-two-unwinders.md
Original file line number Diff line number Diff line change
Expand Up @@ -603,11 +603,28 @@ already filed as mcpp-index#376, reached this time through
| `libnvidia-pkcs11.so.550.144.03` | `libcrypto.so.1.1` | same |

All four are real and all four are the same shape as mcpp#596 -- a farm that
mirrors a driver family and stops one library short. They are NOT repaired
here: a check whose first catch is its author's own package should report it,
not quietly absorb it, and the repair belongs to `compat:vulkan-runtime` with
its own criterion, filed as mcpplibs/mcpp-index#376. On a runner with no NVIDIA driver the farm is nearly empty
and the check is silent, so this does not appear in CI.
mirrors a driver family and stops one library short. They were filed rather
than absorbed, as mcpplibs/mcpp-index#376, and repaired there in
mcpplibs/mcpp-index#380. On a runner with no NVIDIA driver the farm is nearly
empty and the check is silent, so this never appeared in CI.

WHAT THE REPAIR FOUND THAT THE FILING DID NOT. The defect is in three farms,
not one, and the issue names the wrong one: the four findings above were
published by `compat:opencl-runtime`, while `compat:vulkan-runtime` had five
and `compat:glx-runtime` -- which had no closure pass at all -- had thirty.
The cause is one rule: membership is decided by a filename pattern while
completeness was decided against the ICD manifests, so the half of each farm
the pattern exists for is the half nothing verified. The reason recorded
against seeding the closure from the farm turned out to have measured the
set BEFORE `never_farm_patterns` removed the driver's settings GUI; measured
after, it adds five libraries and no GUI stack.

The repair also holds the host surface down rather than widening it. Every
soname a member needs now has a written answer -- an ecosystem package
declared in `deps`, a `*-host-link` sentinel for what cannot be
redistributed (openxlings/xim-pkgindex#801 adds one for the codec
user-space), a named entry in `UNSERVED` with its reason, or a warning at
install time. No branch harvests a new file from `/usr/lib`.

## 8. Order

Expand Down
2 changes: 1 addition & 1 deletion examples/09-heterogeneous/multi-backend/mcpp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ cuda-driver = "2026.09.05"
# is a payload and the hardware ones are the host's.
[target.'cfg(accelerator = "vulkan")'.dependencies.compat]
vulkan = "1.4.357.0"
vulkan-runtime = "2026.09.07"
vulkan-runtime = "2026.09.10"

[build]
# The device sources carry the accel they are for. A CONSTRAINED glob gates
Expand Down
2 changes: 1 addition & 1 deletion examples/09-heterogeneous/vulkan/app/mcpp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true }
# below is a payload and the hardware ones are the host's.
[dependencies.compat]
vulkan = "1.4.357.0"
vulkan-runtime = "2026.09.07"
vulkan-runtime = "2026.09.10"

# ONE payload here, and the shader compiler is not it: `mcpp.rules.spirv`
# declares `xim:glslang` for itself. What stays is a DEVICE, and the boundary is
Expand Down
4 changes: 2 additions & 2 deletions examples/10-graphics/offscreen/mcpp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true }
# seam work: the CPU leg below is selected by the accelerator, and only the
# packages are unconditional.
[dependencies.compat]
vulkan = "1.4.357.0"
vulkan = "1.4.357.1"

# The adapter that makes the host's own ICDs reachable from a binary running
# under mcpp's private loader. An OS predicate, which IS allowed, and a Linux
# concern by construction: macOS resolves through dyld and Windows through the
# PE loader, and neither has a private loader to work around.
[target.'cfg(linux)'.dependencies.compat]
vulkan-runtime = "2026.09.07"
vulkan-runtime = "2026.09.10"

# A Vulkan device that needs no GPU, so this example runs on a machine that has
# none. It is a DEVICE and therefore a payload; the drivers a real GPU needs are
Expand Down
Loading