Skip to content

Commit 656bba8

Browse files
committed
docs(huxerui): record what CI found — the pin is the floor, wix is not a dep
The plan still described the first attempt: pin at 2026.9.10.2 and `xim:wix` kept as emitted. CI rejected both, and the reasons are worth keeping rather than quietly overwriting. - The pin is 2026.9.7.1, the FLOOR, because a scanner regression lands in 2026.9.9.1 (still present in 2026.9.11.1) and breaks mysql-connector-cpp. Four-line repro and the bisect are recorded; mcpp-community/mcpp#606. - windows carries no `xim:wix`: emitted is not needed, and its install hook fails on a clean runner. xim-pkgindex#808. - A section on what CI caught that local verification structurally could not, including the one failure still open (mysql-connector-cpp on the llvm leg) and where huxerui itself stands per leg. This also re-triggers CI, which now resolves `xim:wix` from an index snapshot that carries the #808 fix.
1 parent ea28c7c commit 656bba8

1 file changed

Lines changed: 59 additions & 7 deletions

File tree

‎.agents/docs/2026-09-11-add-huxerui-plan.md‎

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,14 @@ dependencies from the target axis. A missing entry surfaces as
9292
`Package <x> was not found in the pkg-config search path`, which names it.
9393

9494
macOS needs no payloads (`[runtime] frameworks`, supplied by the system SDK).
95-
windows keeps `xim:wix@5.0.2` exactly as emitted — upstream declares it on the
96-
host axis, because wix.exe runs on the build machine, and the host axis *is*
97-
emitted.
95+
windows carries **no** `xim:wix`, though emit produces one. Upstream declares
96+
wix on the host axis and the host axis is what a descriptor can carry, but
97+
emitted is not needed: wix builds an MSI, upstream's rule tolerates its absence
98+
by construction (`if (root.empty()) return {};`), and upstream's manifest says
99+
an application wanting an installer "declares this line too". CI settled it —
100+
`xim:wix`'s own install hook fails on a clean windows-latest runner, so
101+
declaring it took every Windows consumer down for a tool almost none would run.
102+
Fixed separately in xim-pkgindex#808.
98103

99104
## 5. The CI pin moves with this PR
100105

@@ -110,12 +115,29 @@ rules.cppm:274:61: error: 'package_name' is not a member of 'mcpp'
110115

111116
This is the situation #361 established the pattern for — *"A package whose build
112117
program uses a current engine API is not a defect; a CI that cannot run current
113-
engines is."* — so `MCPP_VERSION` moves to **2026.9.10.2** (current) in the same
114-
PR, and the comment records why.
118+
engines is."* — so `MCPP_VERSION` moves in the same PR.
119+
120+
It moves to **2026.9.7.1**, the floor, and not to the current release. That was
121+
the second attempt. 2026.9.10.2 was tried first and CI rejected it:
122+
`mysql-connector-cpp` failed on linux default, linux llvm and macOS while every
123+
other member passed. Not that package's fault — mcpp's scanner errors on an
124+
ordinary block comment. Reduced to four lines:
125+
126+
```cpp
127+
/*
128+
module (exe)
129+
*/
130+
int main() { return 0; }
131+
```
132+
133+
and bisected: OK through 2026.9.8.1, broken from 2026.9.9.1 onward (2026.9.11.1
134+
included). The regression lands one release after 2026.9.7.1 — which is exactly
135+
the release that first carries `package_name()`. The floor and the last good
136+
version coincide, so the pin sits there. Reported as mcpp-community/mcpp#606.
115137
116138
`index.toml` `min_mcpp` does **not** move, for the reason that entry gives: the
117139
floor is about descriptor **grammar**. Verified — `mcpp xpkg parse` accepts this
118-
descriptor under 2026.8.27.2 (the floor), 2026.9.6.3 and 2026.9.10.2 alike. A
140+
descriptor under 2026.8.27.2 (the floor), 2026.9.6.3 and 2026.9.7.1 alike. A
119141
client on the floor keeps resolving the whole index; only building *this*
120142
package from source needs the newer engine.
121143
@@ -128,7 +150,7 @@ newer engine should ride along.
128150
Member `tests/examples/huxerui-module`, one `[indices] huxerui = { path = "../../.." }`.
129151
130152
```
131-
$ mcpp test -p huxerui-module # 2026.9.10.2
153+
$ mcpp test -p huxerui-module # 2026.9.7.1
132154
Compiling huxerui.huxerui v0.3.0
133155
Compiling runtime (test)
134156
Running bin/runtime
@@ -200,3 +222,33 @@ BYTE-IDENTICAL
200222
`check_platform_version_parity`, `check_cross_package_refs` — all pass on the
201223
new descriptor, and the first three pass across `pkgs/*/*.lua` to confirm the
202224
addition does not disturb anything else.
225+
226+
## 10. What CI added that local verification could not
227+
228+
Three defects surfaced only in CI, and all three lived outside this descriptor.
229+
230+
**`xim:wix` had never been installed.** `tests/w/test_wix.py` is static-only and
231+
nothing in either index pulled wix in, so its install hook had never run
232+
anywhere. huxerui is its first consumer; on Windows it fails at
233+
`Provisioning [xlings.workspace] entries declared by dependencies` — before
234+
huxerui compiles at all. Removing wix from this descriptor was necessary but not
235+
sufficient: mcpp also provisions what the BUILDING package declares, and
236+
upstream's `mcpp.toml` declares it. Fixed in xim-pkgindex#808.
237+
238+
**The scanner regression**, above — which is why the pin is the floor.
239+
240+
**`mysql-connector-cpp` on the llvm leg** still fails at 2026.9.7.1, with
241+
`install() result=nil` and no scanner error. The default (gcc) leg passes, and
242+
the two legs are not equivalent: gcc reaches its compiler through `--sysroot`
243+
into a clean subos, while llvm has no sysroot and the host's headers are on the
244+
search path. Unexplained, tracked separately, and not attributable to this
245+
package — `huxerui-module` itself is `ok` in that same shard.
246+
247+
Where huxerui stands per leg, at the pin this PR sets:
248+
249+
| leg | huxerui-module |
250+
|---|---|
251+
| linux default | ok |
252+
| linux llvm | ok |
253+
| macOS | ok |
254+
| windows | blocked on xim-pkgindex#808, then expected to pass |

0 commit comments

Comments
 (0)