-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathindex.toml
More file actions
180 lines (180 loc) · 10.7 KB
/
Copy pathindex.toml
File metadata and controls
180 lines (180 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# Index→client version contract (design: mcpp .agents/docs/2026-07-08-index-
# version-semantics-and-descriptor-grammar-design.md D3). The contract travels
# WITH the index tree: packed into the artifact, present in git checkouts and
# path-indices alike. mcpp >= 0.0.85 checks it at the index-open choke point
# (E0006 on violation). Bump min_mcpp ONLY together with the CI MCPP_VERSION
# pin — lint parses descriptors with the pinned mcpp, which enforces the
# "floor first, new grammar after" rollout rule mechanically.
#
# ── 2026-08-30: raised 2026.8.3.3 -> 2026.8.27.2, with the CI pin ──────────
#
# The rule above says to move this only together with MCPP_VERSION, and that is
# what this is: validate.yml has pinned 2026.8.27.2 for some time while this
# contract still claimed 2026.8.3.3, so the two had drifted apart and the floor
# was advertising support nobody tested.
#
# It was not merely untested, it was FALSE, and measurably so. Two independent
# reasons, both reproduced against this index:
#
# * 2026.8.3.3 silently ignores `runtime.link_library_dirs` (the key does not
# exist in that binary at all) yet still reports `parse OK`, so
# `compat.libgbm` resolves, builds, and then dies at link:
# libdrm.so.2, needed by .../libgbm.so, not found
# undefined reference to `drmGetVersion'
# A silently-ignored key is invisible to the lint, which is why the
# "floor first, new grammar after" guard did not catch this: the guard
# assumes unknown keys are REJECTED, and `runtime.*` subkeys are not.
#
# * 2026.8.10.3 does not get that far. It cannot bootstrap against this index
# at all:
# error: selected RuntimeBinding glibc@2.44 requires payload
# '<store>/xim-x-glibc/2.44', but it is not installed
# which is the compiled-in-runtime-binding defect mcpp's own
# src/xlings/xlings.cppm documents as the reason it floors xlings at
# 2026.8.27.2. Every client below that line is already broken here,
# for reasons that predate any package in this index.
#
# So E0006 is strictly better than what those clients get today: a clear
# refusal at the index-open choke point instead of an undefined reference or a
# missing payload three layers down. 2026.8.27.2 is the version this index is
# actually tested against, and now the contract says so.
#
# ── 2026-09-18: raised 2026.8.27.2 -> 2026.9.18.1, with the CI pin ─────────
#
# 2026.9.18.1 is the mcpp release that understands `[c-abi]` (design:
# openkal/.agents/docs/2026-09-18-openkal-c-environment-and-personalities-
# design.md §3.2; plan: the sibling 2026-09-18-c-environment-execution-plan.md
# §5, step 1) and has entered xim-pkgindex (step 2). Per the rule at the top
# of this file, this moves together with `.github/workflows/validate.yml`'s
# `MCPP_VERSION`, in this same commit.
#
# This raise on its own changes nothing observable: no descriptor in this
# index declares `[c-abi]` yet, and mcpp's own release notes state that a
# package which does not declare the block gets the same command line, byte
# for byte, as before. Verified here, not merely asserted: every descriptor
# in pkgs/*/*.lua still parses with `mcpp xpkg parse` under 2026.9.18.1.
#
# ── 2026-09-18: raised 2026.9.18.2 -> 2026.9.18.3, with both CI pins ────────
#
# 2026.9.18.3 is the release whose c-abi probe on a Windows host × freestanding
# target stops mismatching on _WIN32 (host strip) and __SIZEOF_WCHAR_T__
# (realisation always emits -fno-short-wchar on freestanding). The probe's
# measurement contract is unchanged (design §3.2: a declaration is checked,
# never trusted); the realisation's previous "freestanding skips the wchar
# flag" rule was the actual bug, the wave's measurement is what caught it.
# A floor at 2026.9.18.2 would let a 2026.9.18.2 user be refused builds the
# next release accepts. Per the rule at the top of this file, this moves in
# the same commit as validate.yml's `MCPP_VERSION`; openkal-compat.yml's
# `MCPP_VERSION` moves with tests/openkal/pins.toml's `mcpp`, which that
# workflow checks for agreement.
#
# openkal-musl 0.15.0 and openkal-llvm-runtime 0.11.0 (plan step 3) -- the two
# packages that will actually declare and consume `[c-abi] presents =
# "posix"` -- are NOT registered by this raise. Neither has a version number
# or a sha256 yet; `pkgs/o/openkal-musl.lua` and
# `pkgs/o/openkal-llvm-runtime.lua` carry a note beside their version tables
# marking exactly that, and this index has no data to put in an xpm entry for
# either until the other agent handling their release reports the tag and
# hash. Registering them is plan step 4, a separate change from this one:
# raising the floor was gated on the engine, not on those two packages, and
# gating on both at once would have held this raise hostage to something it
# does not need.
# ── 2026-09-20: latest_mcpp -> 2026.9.20.1, min_mcpp DELIBERATELY UNCHANGED ──
#
# That release adds two manifest keys, `[kernel-abi]` and `[c-abi-absent]`, and
# neither asks anything of this floor. mcpp IGNORES a top-level table it does
# not know and REFUSES an unknown MEMBER of a table it does know; both keys are
# top-level, so a client stopped at 2026.9.18.3 loads the manifests carrying
# them and loses only the check.
#
# Measured, not assumed. The absence table was first written as
# `[c-abi].absent`, and the published 2026.9.18.3 archive refused openkal-musl's
# whole manifest on every target with `[c-abi] has no member 'absent'`; moved to
# the top level, that same published binary builds it, and openkal-musl's own CI
# pins 2026.9.18.3 and is green on 0.17.0 and 0.18.0. All 231 descriptors parse
# with 2026.9.18.3 as well, so the DESCRIPTOR grammar --- what this floor
# actually governs --- did not change either.
#
# Raising it would cost every client below the floor the WHOLE index (E0006 at
# the index-open choke point) for a diagnostic note they merely would not have
# received.
# ── 2026-09-25: latest_mcpp -> 2026.9.25.1, min_mcpp unchanged ─────────────
#
# The pull request that moves validate.yml's pin to 2026.9.25.1 runs every
# member on every platform with that release, which is what "known good"
# means for this hint. The release changes no descriptor grammar.
# ── 2026-09-26: latest_mcpp -> 2026.9.26.1, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin and the openkal
# measurement's pin to 2026.9.26.1, which run every member on every platform
# with it. The release changes no descriptor grammar.
# ── 2026-09-28: latest_mcpp -> 2026.9.28.1, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.28.1,
# which runs every member on every platform with it. The release changes no
# descriptor grammar. An engine from this release on that a later floor
# leaves below min_mcpp reports the floor as a closing tip of the command that
# refreshed the index, not as an error at the start of every command.
# ── 2026-09-28: latest_mcpp -> 2026.9.28.2, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.28.2,
# which runs every member on every platform with it. The release changes no
# descriptor grammar.
# ── 2026-09-28: latest_mcpp -> 2026.9.28.3, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.28.3 and
# registers mcpp.plugins 0.17.0, whose package floor it is. The release changes
# no descriptor grammar; its `[package] mcpp` key is manifest vocabulary, which
# an older engine reports as unsupported and ignores.
# ── 2026-09-29: latest_mcpp -> 2026.9.29.3, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.29.3,
# which runs every member on every platform with it. 2026.9.29.1 is skipped:
# it resolved a member's own relative [indices].path against the workspace
# root; 2026.9.29.2 is the version the full sweep ran with, and 2026.9.29.3
# adds the runtime placement of programs shipped through `artifacts`. None of
# the three changes descriptor grammar.
# ── 2026-09-29: latest_mcpp -> 2026.9.29.4, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.29.4,
# which runs every member on every platform with it. The release changes no
# descriptor grammar.
# ── 2026-09-30: latest_mcpp -> 2026.9.29.5, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.29.5,
# which runs every member on every platform with it. The release changes no
# descriptor grammar; the build's human output changes, and no check here
# reads it.
# ── 2026-09-30: latest_mcpp -> 2026.9.30.1, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.30.1,
# which runs every member on every platform with it. The release changes no
# descriptor grammar; the build's human output changes again, and no check
# here reads it.
# ── 2026-09-30: latest_mcpp -> 2026.9.30.2, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.9.30.2,
# which runs every member on every platform with it. The release changes no
# descriptor grammar. A module name is resolved in the importing package's
# closure, and no member provides a module name another member provides, so
# every member's build directory is laid out as before.
# ── 2026-10-01: latest_mcpp -> 2026.10.1.1, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.10.1.1,
# which runs every member on every platform with it. The release changes no
# descriptor grammar. Narration moves to standard error, and every check here
# that reads mcpp's output captures both streams (`tests/run_members.sh`).
# A host module of an index package is compiled once per key and kept in the
# global cache, which every member with a build program now exercises.
# ── 2026-10-01: latest_mcpp -> 2026.10.1.2, min_mcpp unchanged ─────────────
#
# Moved in the pull request that moves validate.yml's pin to 2026.10.1.2,
# which runs every member on every platform with it. The release changes no
# descriptor grammar. A dependency's BMIs now lie below its package's
# directory, and every unit of an ELF target is compiled with -fPIC, so every
# member is compiled once more and its global cache entries are refilled; no
# check here reads a BMI path.
[index]
spec = "1"
min_mcpp = "2026.9.18.3"
latest_mcpp = "2026.10.1.2"