Part of the CH32V pipeline audit (#1102). This one is pipeline-wide, but CH32V is the concrete case audited.
What happens
The per-board workflow path filters were never updated for the fbuild-build crate split (#1008). ci/board_families.json still says:
"ch32v": { "crate_paths": ["crates/fbuild-build/src/ch32v/**"] }
and ci/ci_common_paths.txt lists ~25 crates/fbuild-build/src/*.rs entries. But crates/fbuild-build/src/ now contains only lib.rs, compile_many.rs, README.md — the CH32V code lives in crates/fbuild-build-mcu/src/ch32v/, and the shared pipeline in crates/fbuild-build-engine/. Neither crate (nor fbuild-toolchain, fbuild-library) appears in any rendered on: paths: block of build-ch32*.yml (or any other build-*.yml).
Why it matters
A PR that changes crates/fbuild-build-mcu/src/ch32v/orchestrator.rs (or the shared sequential pipeline in fbuild-build-engine) triggers zero platform build workflows. The ci-workflow-drift.yml gate can't catch this: the renderer's inputs are stale, so renderer and rendered files agree. Breakage surfaces only at the next nightly-platforms.yml run — a day late and detached from the offending PR. Note the filters as-written match the "be BROAD" bias comment in ci_common_paths.txt, which makes the silent decay more ironic: most of the listed paths can never match again.
Suggested fix
Update ci/ci_common_paths.txt to the post-split layout (crates/fbuild-build-engine/**, crates/fbuild-build/**, crates/fbuild-toolchain/**, crates/fbuild-library/**, plus crates/fbuild-build-mcu common files) and each family's crate_paths in ci/board_families.json (ch32v -> crates/fbuild-build-mcu/src/ch32v/**; same treatment for avr/esp32/stm32/... which moved to fbuild-build-mcu/fbuild-build-esp), then re-run uv run python ci/render_workflows.py. Consider adding a CI assertion that every path/glob in these two files matches at least one file in the tree, so the next crate move fails loudly.
Severity: MEDIUM (no wrong artifacts shipped, but PR-time platform coverage silently vanished for build-code changes).
Part of the CH32V pipeline audit (#1102). This one is pipeline-wide, but CH32V is the concrete case audited.
What happens
The per-board workflow path filters were never updated for the fbuild-build crate split (#1008).
ci/board_families.jsonstill says:and
ci/ci_common_paths.txtlists ~25crates/fbuild-build/src/*.rsentries. Butcrates/fbuild-build/src/now contains onlylib.rs,compile_many.rs,README.md— the CH32V code lives incrates/fbuild-build-mcu/src/ch32v/, and the shared pipeline incrates/fbuild-build-engine/. Neither crate (norfbuild-toolchain,fbuild-library) appears in any renderedon: paths:block ofbuild-ch32*.yml(or any otherbuild-*.yml).Why it matters
A PR that changes
crates/fbuild-build-mcu/src/ch32v/orchestrator.rs(or the shared sequential pipeline in fbuild-build-engine) triggers zero platform build workflows. Theci-workflow-drift.ymlgate can't catch this: the renderer's inputs are stale, so renderer and rendered files agree. Breakage surfaces only at the nextnightly-platforms.ymlrun — a day late and detached from the offending PR. Note the filters as-written match the "be BROAD" bias comment inci_common_paths.txt, which makes the silent decay more ironic: most of the listed paths can never match again.Suggested fix
Update
ci/ci_common_paths.txtto the post-split layout (crates/fbuild-build-engine/**,crates/fbuild-build/**,crates/fbuild-toolchain/**,crates/fbuild-library/**, pluscrates/fbuild-build-mcucommon files) and each family'scrate_pathsinci/board_families.json(ch32v->crates/fbuild-build-mcu/src/ch32v/**; same treatment for avr/esp32/stm32/... which moved tofbuild-build-mcu/fbuild-build-esp), then re-runuv run python ci/render_workflows.py. Consider adding a CI assertion that every path/glob in these two files matches at least one file in the tree, so the next crate move fails loudly.Severity: MEDIUM (no wrong artifacts shipped, but PR-time platform coverage silently vanished for build-code changes).