You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/docs/2026-09-05-heterogeneous-build-ecosystem-design-v2.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -320,28 +320,28 @@ Status is one of `done`, `open`, `deferred (reason)`.
320
320
| # | task | criterion | depends on | status |
321
321
|---|---|---|---|---|
322
322
| P1 | Repository with `mcpp.toml` (`mcpp:plugins`), `src/plugins.cppm` (`mcpp.plugins`), `rules/cuda.cppm` (`mcpp.rules.cuda`), `rules/spirv.cppm` (`mcpp.rules.spirv`), features `rules-cuda`, `rules-spirv`, README stating the naming rule and the mcpp floors | a consumer with `features = ["rules-spirv"]` builds a shader through it | M1 | done (PR #1 open) |
323
-
| P2 | CI: one consumer fixture per feature, built with the pinned mcpp | green on the PR head | P1, M6 for the spirv fixture |in progress: the first run exposed a host leak (clang's CUDA wrapper found `curand_mtgp32_kernel.h` in the host's /usr/include on the developer machine); `mcpp.rules.cuda` now requires and includes `xim:libcurand` and refuses the clang routewithout it; fixture and example 09 (mcpp#567) declare it; CI rerunning|
324
-
| P3 | Release `v0.1.0`; GitHub archive and a GitCode release asset with identical bytes | both URLs return 200 and one sha256 | P2 |open|
323
+
| P2 | CI: one consumer fixture per feature, built with the pinned mcpp | green on the PR head | P1, M6 for the spirv fixture |done: the first two runs exposed host leaks on the developer machine (clang's CUDA wrapper found `curand_mtgp32_kernel.h`and then `nv/target`in the host's /usr/include); `mcpp.rules.cuda` now requires `xim:libcurand` and `xim:cuda-cccl` on the clang route, adds their include directories, and refuses without them naming both entries; fixture and example 09 (mcpp#567) declare them; run 3 green|
324
+
| P3 | Release `v0.1.0`; GitHub archive and a GitCode release asset with identical bytes | both URLs return 200 and one sha256 | P2 |done: PR #1 merged (be6d7ce), tag v0.1.0, GitHub release; `gitcode.com/mcpp-res/mcpp-plugins` release 0.1.0 carries the byte-identical archive (200, 26,953 bytes, sha256 adf1f9d6...)|
325
325
326
326
#### mcpp-index (PR #349)
327
327
328
328
| # | task | criterion | depends on | status |
329
329
|---|---|---|---|---|
330
-
| I1 |`pkgs/m/mcpp.plugins.lua` (GLOBAL and CN URLs, floor 2026.9.5.3); `mcpplibs:rules-cuda` kept, marked superseded |`mcpp add mcpp:plugins` resolves in a sandbox | P3, M6 |open|
330
+
| I1 |`pkgs/m/mcpp.plugins.lua` (GLOBAL and CN URLs, floor 2026.9.5.3); `mcpplibs:rules-cuda` kept, marked superseded |`mcpp add mcpp:plugins` resolves in a sandbox | P3, M6 |done: `pkgs/m/mcpp.plugins.lua` (GLOBAL and CN, one sha256), `mcpplibs:rules-cuda` marked superseded; with the checkout as the `mcpp` index the released 2026.9.5.3 downloads `mcpp.plugins v0.1.0`, compiles it, and the SPIR-V probe answers `magic=07230203`|
331
331
| I2 | `compat.vulkan-runtime` 2026.09.05: the pattern list is reduced to proprietary vendor userspace; an ICD's needs are computed by closing over the manifests' libraries; a farmed soname an installed payload also provides is re-pointed at the payload when the payload's versioned symbol set covers the host copy's (the `GLIBCXX`/`CXXABI` nodes of libstdc++ included); `HOST-SURFACE.txt` states the class of every entry | measured on this machine: 37 vendor entries, 20 payload substitutions, 8 host sonames no installed payload provides (`libbsd`, `libedit`, `libicudata`, `libicuuc`, `liblzma`, `libmd`, `libzstd`, `libtinfo`), 8 host Mesa ICDs, 3 host copies newer than the payload (`libdrm_amdgpu`, `libLLVM.so.20.1`, `libxml2`); example 10 still answers `12 24 36 48` | — | done: pattern list reduced to vendor userspace; closure from the manifests; payload-first with the symbol-set criterion; measured here 37 vendor, 20 substitutions, 8 host sonames without payload (`libbsd`, `libedit`, `libicudata`, `libicuuc`, `liblzma`, `libmd`, `libzstd`, `libtinfo`), 8 host Mesa ICDs, 3 host copies newer than the payload; example 10 still `12 24 36 48` |
332
332
| I3 |`compat.opencl-headers`, `compat.opencl` verified with a probe (`tests/examples/opencl`, a workspace member); `compat.opencl-runtime` 2026.09.05 farms the libraries the host manifests name, their closure and the vendor family, prefers payloads, records the surface; payload entries of `OCL_ICD_FILENAMES` are left to the payload | the probe enumerates the NVIDIA platform on this machine and zero platforms on a runner; the pocl platform once X2 is installed | X2 for the pocl half | done for the host half: `tests/examples/opencl` lists `NVIDIA CUDA / RTX 4080` here and zero platforms on the Linux runner; with `OCL_ICD_FILENAMES=<pocl>/lib/libpocl.so` the same loader lists `Portable Computing Language` and `NVIDIA CUDA` in one process |
333
-
| I4 | CI green; merge; index artifact published |`Publish Index Artifact` green on the merge commit | I1–I3 |open|
333
+
| I4 | CI green; merge; index artifact published |`Publish Index Artifact` green on the merge commit | I1–I3 |done: PR #349 green (10 pass; the `full sweep` job skips by design), merged as 754d775, `Publish Index Artifact` green on it (run 33968256961)|
334
334
335
335
#### xim-pkgindex (PR #762)
336
336
337
337
| # | task | criterion | depends on | status |
338
338
|---|---|---|---|---|
339
339
| X1 |`zstd`, `xz`, `icu`, `libedit`, `libmd`, `xcb-util`, `xcb-util-image`, `xcb-util-keysyms`, `xcb-util-renderutil`, `xcb-util-wm`, `xcb-util-cursor`: conda-forge repacks for x86_64 and aarch64, published to `xlings-res/<name>` on both mirrors, recipes with `deps`, `exports`, `declare_libs`, headers and `.pc`| each installs; every `DT_NEEDED` of each payload library resolves inside payloads; CI green | — | done, pending CI: all eleven on both mirrors (44/44 GET checks by the agent, two re-verified by sha256 here); finding: an aarch64 install fails today because `xim:glibc`, `xim:gcc-runtime`, `xim:ncurses`, `xim:libxcb` publish no aarch64 asset and `deps` are per OS |
340
-
| X1b |`libbsd` built in the subos harness (not on conda-forge), x86_64 | same | X1 (`libmd`) |open|
341
-
| X2 |`pocl` 7.1 (CPU OpenCL) repacked for both architectures; its ICD reached through `OCL_ICD_FILENAMES` in the subos environment |`clinfo`-equivalent probe reports the pocl platform with no GPU | — | done, pending CI: pocl 7.1 for both architectures on both mirrors (x86_64 re-verified by sha256 here); the recipe declares `OCL_ICD_FILENAMES` and never `OCL_ICD_VENDORS` (the agent had wired the latter; corrected); finding: xlings 2026.9.3.2 does not persist a new package's `subos.env` declaration (openxlings/xlings#584), so the verification sets the variable explicitly |
340
+
| X1b |`libbsd` built in the subos harness (not on conda-forge), x86_64 | same | X1 (`libmd`) |done, pending CI: libbsd 0.12.2 built by the subos harness (exit 0, inputs and payload host-free), `DT_NEEDED` libmd.so.0 and glibc only; two defects found by the agent and fixed: libbsd's `-isystem` self-overlay loses to the harness's `-I` (patched), and upstream's `make install` writes `lib/libbsd.so` as an ld script naming `/usr/lib` (replaced by a symlink); both mirrors verified|
341
+
| X2 |`pocl` 7.1 (CPU OpenCL) repacked for both architectures; its ICD reached through `OCL_ICD_FILENAMES` in the subos environment |`clinfo`-equivalent probe reports the pocl platform with no GPU | — | done: pocl 7.1 for both architectures on both mirrors; after the index published, `xlings install pocl` from `xim:` installs 7.1 and the Khronos loader with `OCL_ICD_FILENAMES=<payload>/lib/libpocl.so` lists `Portable Computing Language` (cpu-haswell) and `NVIDIA CUDA` in one process; the recipe declares that variable and never `OCL_ICD_VENDORS` (the agent had wired the latter; corrected); finding: xlings 2026.9.3.2 does not persist a new package's `subos.env` declaration (openxlings/xlings#584), so the verification sets the variable explicitly |
342
342
| X3 |`mesa-lavapipe` aarch64 payload |`archs` lists both; the aarch64 tarball is on both mirrors | — | done, pending CI: the aarch64 lavapipe payload (99,534,504 bytes) on both mirrors; four-file closure difference, none `DT_NEEDED` by `libvulkan_lvp.so`|
343
343
| X4 |`xim:mesa` gains the Intel Vulkan driver | on an Intel machine `HOST-SURFACE.txt` has no driver entry | libclc and SPIRV-LLVM-Translator payloads | deferred: anv requires `intel_clc`, which needs a libclc and clang chain this index does not publish yet; the chain is a separate packaging round and is recorded here rather than approximated |
344
-
| X5 | CI green; merge; index artifact published |`Publish Index Artifact` green on the merge commit | X1–X3 |open|
344
+
| X5 | CI green; merge; index artifact published |`Publish Index Artifact` green on the merge commit | X1–X3 |done: PR #762 green on its pull_request-event runs (the push-event `linux-install-test` sees only the last push and fails on libbsd by construction, as the workflow header states), merged as 2d2a2ee; `Publish Index Artifact` green on it (run 33967729241)|
0 commit comments