Part of the CH32V pipeline audit (#1102).
What happens
The CH32V orchestrator never looks at the env's framework value — it unconditionally installs the OpenWCH Arduino core and compiles its cores/arduino sources (Ch32vCores in crates/fbuild-library/src/library/ch32v_core.rs, wired in crates/fbuild-build-mcu/src/ch32v/orchestrator.rs). grep -r noneos crates/ has zero hits.
Four of the nine CH32V CI test envs declare a non-Arduino framework:
| env |
framework in platformio.ini |
what actually builds |
tests/platform/ch32v103 |
noneos-sdk |
Arduino core |
tests/platform/ch32v208 |
noneos-sdk |
Arduino core |
tests/platform/ch32v303 |
noneos-sdk |
Arduino core |
tests/platform/ch32x035 |
noneos-sdk |
Arduino core |
Consistently, genericCH32V208WBU6.json and genericCH32V303VCT6.json don't even list arduino in their frameworks arrays — yet an Arduino-core firmware is what the CH32V208/CH32V303 badges are actually certifying.
Why it matters
- A user porting a bare-metal
noneos-sdk project from PlatformIO gets an Arduino build (different startup, main() owned by the core, setup()/loop() expected) with no warning — or a confusing wall of Arduino-core compile errors.
- The A/B contract with PlatformIO diverges silently: PlatformIO's ch32v platform honors
framework = noneos-sdk with a bare vendor-SDK build.
Suggested fix
Pick one and make it explicit:
- Validate: reject
framework values the CH32V orchestrator doesn't implement with a clear error ("only framework = arduino is supported for ch32v today"), and change the four test envs (+ CI) to framework = arduino so the badges say what they test; or
- Implement a noneos-sdk build mode (compile
system/<series>/SRC + user code only, no Arduino core).
Option 1 is the honest minimum. Also reconcile the frameworks arrays in the V208/V303 board JSONs with whatever is chosen.
Severity: MEDIUM (silent behavioral mismatch with the declared config and with PlatformIO parity; no data loss).
Part of the CH32V pipeline audit (#1102).
What happens
The CH32V orchestrator never looks at the env's
frameworkvalue — it unconditionally installs the OpenWCH Arduino core and compiles itscores/arduinosources (Ch32vCoresincrates/fbuild-library/src/library/ch32v_core.rs, wired incrates/fbuild-build-mcu/src/ch32v/orchestrator.rs).grep -r noneos crates/has zero hits.Four of the nine CH32V CI test envs declare a non-Arduino framework:
tests/platform/ch32v103noneos-sdktests/platform/ch32v208noneos-sdktests/platform/ch32v303noneos-sdktests/platform/ch32x035noneos-sdkConsistently,
genericCH32V208WBU6.jsonandgenericCH32V303VCT6.jsondon't even listarduinoin theirframeworksarrays — yet an Arduino-core firmware is what the CH32V208/CH32V303 badges are actually certifying.Why it matters
noneos-sdkproject from PlatformIO gets an Arduino build (different startup,main()owned by the core,setup()/loop()expected) with no warning — or a confusing wall of Arduino-core compile errors.framework = noneos-sdkwith a bare vendor-SDK build.Suggested fix
Pick one and make it explicit:
frameworkvalues the CH32V orchestrator doesn't implement with a clear error ("onlyframework = arduinois supported for ch32v today"), and change the four test envs (+ CI) toframework = arduinoso the badges say what they test; orsystem/<series>/SRC+ user code only, no Arduino core).Option 1 is the honest minimum. Also reconcile the
frameworksarrays in the V208/V303 board JSONs with whatever is chosen.Severity: MEDIUM (silent behavioral mismatch with the declared config and with PlatformIO parity; no data loss).