nikaia test --project run with nothing changed sometimes re-lowers one crateOpen and answer this issue on GitHub.
ready · opened 2026-10-30 · updated 2026-10-30 · 0 comments
CI run 2626 (3b845e0b, a docs-only commit on top of 0.0.1310 + std set iter()) failed one test in bootstrap_compiler:
---- examples::every_example_package_passes_its_own_tests stdout ----
panicked at crates/nikaia/tests/it/examples.rs:204:9:
assertion `left == right` failed: examples/trend: a second run with nothing changed lowers nothing
left: 1
right: 0
The runs on the next commits (2627 at 7291da06, 2628 at 618e6740), with the same compiler code, passed. So the failure is intermittent. “Flake” is not a root cause, though.
lowered counts the lines of the wrapper trace (NIKAIA_WRAPPER_TRACE, project.rs wrapper_main) that say lowered. Cargo writes one each time it decides a Nikaia workspace member is dirty and calls the wrapper for it. A count of 1 on the second run means Cargo’s fingerprint for one crate of examples/trend changed between two runs that nothing should have changed.
nikaia.contracts, nikaia.derived, nikaia.proofs or a generated .rs), possibly only when the first run starts from a cold cache.target/nikaia-project-tests cache, used by about ten integration tests running in parallel, is pruned or rewritten by another test between the two runs.nikaia test --both-settings --locked --project examples/trend twice from a cold NIKAIA_CACHE_DIR, with CARGO_LOG=cargo::core::compiler::fingerprint=info, in a loop until the second run lowers. Cargo’s log names the input that made the crate dirty.