@@ -15,27 +15,17 @@ default-profile = "release"
1515# nlohmann/json.hpp lives in src/libs/json/; expose it to the global
1616# module fragment `#include <json.hpp>` in src/libs/json.cppm.
1717include_dirs = [" src/libs/json" ]
18- # Split the module edge: importers start when the BMI is published rather than
19- # when the compiler exits. See docs/05-mcpp-toml.md.
18+ # NOT enabled here. `bmi_schedule = "on"` was turned on for mcpp's own build and
19+ # CI rejected it within one cycle: the windows-host cross-build to
20+ # x86_64-linux-musl failed on the BMI edge with
2021#
21- # ON HERE, `auto` (= off) EVERYWHERE ELSE — deliberately, and this is the point
22- # of turning it on at all. The key stays opt-in until it has been through CI on
23- # every platform, and nothing was exercising it, so it could never accumulate
24- # the evidence needed to change that. mcpp's own build is where that evidence
25- # is cheapest to get: whatever this schedule produces then has to pass 83 unit
26- # tests and the full e2e suite, on Linux (detach-codegen, gcc) and on macOS and
27- # Windows (two-phase, clang) — three platforms, every PR.
22+ # failed: gcm.cache/mcpp.libs.json.gcm
23+ # src/libs/json.cppm:3: fatal error: json.hpp: No such file or directory
2824#
29- # ⚠️ WHY THAT SAFETY NET MATTERS HERE. A scheduling bug does not fail loudly; it
30- # stops rebuilding something. The one that already happened (§8b in
31- # bench/README.md) left the object edge with the BMI as its only input, so
32- # restat cleaned the object and ninja exited while the compiler was still
33- # running — a binary that was silently short. Running the produced binary
34- # against its own test suite is what turns that class of defect into a red job
35- # instead of a bad release.
36- #
37- # Revert is this one line if anything here is ever unexplained.
38- bmi_schedule = " on"
25+ # i.e. the split BMI edge loses `include_dirs` on that host. Linux was green and
26+ # the local self-host build was green (35.40s vs ~80s, 83 unit tests passing),
27+ # which is exactly why the rule is "opt-in until it has been through CI on EVERY
28+ # platform" rather than "until it works here". See issue #425.
3929
4030[toolchain ]
4131default = " gcc@16.1.0"
0 commit comments