From c0a9dfbf62ab385a956fd0b9c083b673f49194b7 Mon Sep 17 00:00:00 2001 From: meh Date: Tue, 1 Sep 2026 13:30:41 +0700 Subject: [PATCH] fix(ci): build the QA tools against the deps they were published with Resolving these fresh picks the newest `ps-blitz-*` satisfying each requirement, and those crates are not compatible across minor versions. `qa-inspect-host` was being compiled against `ps-blitz-script` 0.4.1 while its `tauri-runtime-blitz` expected 0.3.x, so the same type existed twice and every call between them failed to typecheck. That alone would be ordinary breakage. What made it costly is that everything downstream *skips* rather than fails: Lint, Contract Check, Type Check, Build, the rendered-component outcomes, API Contract, Consumer Smoke and Package Check were all skipped, on master as well as on pull requests. The run reports one failed step and nothing else, so the suite had verified nothing at all for some time. `--locked` uses each crate's own published lockfile, the set its author tested. It costs nothing in currency: both tools still install at their newest version, 0.5.11 and 0.1.8. One command per tool is deliberate. `cargo install a b --locked` resolves the pair together and downgrades to satisfy both, landing on `qa-inspect-host` 0.1.4; installed separately each keeps its own resolution and stays current. Verified locally: both build clean and install at the newest published version. --- .github/workflows/ci.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee59f369..2e69bcee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,14 +38,34 @@ jobs: cache-on-failure: true # Track the current ps-qa release so UI coverage cannot silently remain - # on an obsolete harness. Do not inherit a tool crate's packaged lockfile. + # on an obsolete harness — but build each tool against the dependency set + # it was published with. + # + # Resolving these fresh picks the newest `ps-blitz-*` that satisfies the + # requirements, and those crates are not compatible across minor versions: + # `qa-inspect-host` ended up compiled against `ps-blitz-script` 0.4.1 + # while its `tauri-runtime-blitz` expected 0.3.x, so the same type + # existed twice and every call between them failed to typecheck. That + # broke this step, and because everything below depends on it, Lint, Type + # Check, Build and the whole test suite were skipped rather than failed — + # a green-looking pipeline that had verified nothing. + # + # `--locked` uses each crate's own published lockfile, which is the set + # its author tested. It costs nothing in currency: both tools still + # install at their newest version. + # + # One command per tool, deliberately. `cargo install a b --locked` + # resolves the two together and downgrades to satisfy both — it picks + # `qa-inspect-host` 0.1.4 instead of 0.1.8. Installed separately they + # each get their own resolution and stay current. - name: Install native QA tools env: # cargo install otherwise builds in disposable temporary directories, # which leaves rust-cache nothing useful to restore on the next run. CARGO_TARGET_DIR: target/qa-tools run: | - cargo install ps-qa qa-inspect-host + cargo install ps-qa --locked + cargo install qa-inspect-host --locked - name: Install Dependencies run: bun install