Skip to content

ci: build-ch32*.yml path filters point at pre-split crates/fbuild-build/src/ch32v/** — CH32V build-code PRs trigger no platform builds #1107

Description

@zackees

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions