Skip to content

Commit 3c62571

Browse files
authored
the measured graph moves onto the wave, now that its runtime is published (#450)
`tests/openkal/pins.toml` moves to openkal-llvm-runtime 0.13.0, which was registered and published in the preceding change. That version pins openkal-musl 0.18.0, which pins openkal-linux 0.15.0, openkal-windows 0.10.0 and openkal-macos 0.12.0 --- the first graph in which ALL THREE implementations declare which interfaces of the layer they provide. WHY THAT MATTERS TO A MEASUREMENT AND NOT ONLY TO A BUILD. Below this pin a member's `[kernel-abi] requires-interfaces` was answered on two of the three implementations and silently unanswered on the third: openkal-macos carried no array, and mcpp treats a provider that states nothing as stating nothing rather than as providing nothing. A measurement taken there records "builds" for a member whose requirement nothing checked. `mcpp` moves to 2026.9.20.1 because the set difference being measured is what that release added, and openkal-compat.yml's pin moves with it --- that workflow fails the run when the two disagree. validate.yml moves too: an index that lints itself with an engine ten releases behind validates against something no user runs. `latest_mcpp` moves. `min_mcpp` DOES NOT, and the reason is recorded beside it: both new manifest keys are top-level tables an older engine ignores, and all 231 descriptors parse with 2026.9.18.3, so the descriptor grammar this floor governs did not change. Raising it would take the whole index from every client below it for a diagnostic note they merely would not receive. THE BASELINE THIS REPLACES, from the preceding run on the old graph: 60 member-target results, 50 pass (47 of them `runs (posix)`), 10 fail --- four on `windows.h` reached through the borrowed `__CYGWIN__`, two on `__cxa_thread_atexit`, two on `linux/` uapi headers, one `arc4random_buf`, one `curl_off_t`. The first two groups are known and recorded; this move is what lets the next run be compared against them.
1 parent 8538bc6 commit 3c62571

4 files changed

Lines changed: 43 additions & 6 deletions

File tree

‎.github/workflows/openkal-compat.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ env:
3333
# run if this drifts from pins.toml. See the comment beside `mcpp` in
3434
# pins.toml for why this pin, not just validate.yml's, is gated by the
3535
# index floor.
36-
MCPP_VERSION: "2026.9.18.3"
36+
MCPP_VERSION: "2026.9.20.1"
3737
XLINGS_NON_INTERACTIVE: "1"
3838

3939
jobs:

‎.github/workflows/validate.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ env:
301301
# is a cold one (mcpp's build-cache epoch moved from 2 to 3 in this same
302302
# release, because the old cache key did not cover the realised [c-abi]
303303
# environment).
304-
MCPP_VERSION: "2026.9.18.3"
304+
MCPP_VERSION: "2026.9.20.1"
305305

306306
jobs:
307307
lint:

‎index.toml‎

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,26 @@
7979
# raising the floor was gated on the engine, not on those two packages, and
8080
# gating on both at once would have held this raise hostage to something it
8181
# does not need.
82+
# ── 2026-09-20: latest_mcpp -> 2026.9.20.1, min_mcpp DELIBERATELY UNCHANGED ──
83+
#
84+
# That release adds two manifest keys, `[kernel-abi]` and `[c-abi-absent]`, and
85+
# neither asks anything of this floor. mcpp IGNORES a top-level table it does
86+
# not know and REFUSES an unknown MEMBER of a table it does know; both keys are
87+
# top-level, so a client stopped at 2026.9.18.3 loads the manifests carrying
88+
# them and loses only the check.
89+
#
90+
# Measured, not assumed. The absence table was first written as
91+
# `[c-abi].absent`, and the published 2026.9.18.3 archive refused openkal-musl's
92+
# whole manifest on every target with `[c-abi] has no member 'absent'`; moved to
93+
# the top level, that same published binary builds it, and openkal-musl's own CI
94+
# pins 2026.9.18.3 and is green on 0.17.0 and 0.18.0. All 231 descriptors parse
95+
# with 2026.9.18.3 as well, so the DESCRIPTOR grammar --- what this floor
96+
# actually governs --- did not change either.
97+
#
98+
# Raising it would cost every client below the floor the WHOLE index (E0006 at
99+
# the index-open choke point) for a diagnostic note they merely would not have
100+
# received.
82101
[index]
83102
spec = "1"
84103
min_mcpp = "2026.9.18.3"
85-
latest_mcpp = "2026.9.18.3"
104+
latest_mcpp = "2026.9.20.1"

‎tests/openkal/pins.toml‎

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# `runtime` is the C++ runtime for openkal; it pins openkal-musl exactly, and
55
# openkal-musl selects the openkal implementation for each target, so this one
66
# version names the whole graph.
7-
runtime = "0.12.0"
7+
runtime = "0.13.0"
88
toolchain = "llvm@22.1.8"
99
# `mcpp` here moves together with index.toml's `min_mcpp` and
1010
# .github/workflows/openkal-compat.yml's own MCPP_VERSION (that workflow
@@ -18,7 +18,25 @@ toolchain = "llvm@22.1.8"
1818
# index requires mcpp >= 2026.9.18.1 but this is mcpp 2026.9.17.3 [E0006]"
1919
# before a single line of the member's own source is read.
2020
#
21-
# `runtime` MOVES HERE NOW, AND UNTIL IT DID THE WINDOWS LEG MEASURED A GRAPH
21+
# 2026-09-20: `runtime` -> 0.13.0, THE FIRST GRAPH IN WHICH EVERY IMPLEMENTATION
22+
# DECLARES ITS INTERFACES. It pins openkal-musl 0.18.0, which pins
23+
# openkal-linux 0.15.0, openkal-windows 0.10.0 and openkal-macos 0.12.0 --- the
24+
# last of those is the release that closed the gap. Below it a member's
25+
# `[kernel-abi] requires-interfaces` was answered on two of the three
26+
# implementations and silently unanswered on the third, and a measurement taken
27+
# there records "builds" for a member nothing had checked.
28+
#
29+
# 0.13.0 WAS REGISTERED AND PUBLISHED BEFORE THIS LINE MOVED, in a separate
30+
# change. Moving both at once fails EVERY member at once: `compat.py` gives each
31+
# copied member an `[indices] compat = { path = <this checkout> }` so a changed
32+
# DESCRIPTOR is measured, and that serves resolution but not INSTALLATION, which
33+
# is delegated to xlings and reaches only the repositories it has synced. Since
34+
# the runtime pin is in every member's manifest, a version that exists only in
35+
# this checkout fails all of them, and the failure reads as a compatibility
36+
# result rather than as a missing registration.
37+
#
38+
# (the note below is from the previous move, and its reasoning still holds)
39+
# `runtime` MOVED, AND UNTIL IT DID THE WINDOWS LEG MEASURED A GRAPH
2240
# WITH NO `[c-abi]` IN IT. openkal-llvm-runtime 0.12.0 (openkal-musl 0.16.0,
2341
# openkal 0.14.0) is the first pinned graph in which a package declares the
2442
# block, so it is the first in which mcpp realises `presents = "posix"` at all:
@@ -33,7 +51,7 @@ toolchain = "llvm@22.1.8"
3351
# openkal-musl 0.16.0 and openkal-llvm-runtime 0.12.0), because a pin that
3452
# moves onto an unreachable or divergent asset fails every member at once and
3553
# reports it as a compatibility result.
36-
mcpp = "2026.9.18.3"
54+
mcpp = "2026.9.20.1"
3755

3856
targets = ["x86_64-linux-gnu", "x86_64-windows-gnu"]
3957

0 commit comments

Comments
 (0)