Issue #1154: lower-std in the shared checkout lowers with other agents’ uncommitted emitter work

Open and answer this issue on GitHub.

ready · opened 2026-11-02 · updated 2026-11-02 · 1 comment

R3c-d (b271a190) committed lowered/type_rules.rs as lowered by a target/fast/nikaia built in the shared checkout. That compiler held other agents’ uncommitted emit_* / check_* work. A clean compiler lowers tr_rewrite_item’s Item::Impl arm as methods, but the committed file had ref mut methods. So develop went red in sysroot::the_committed_rust_is_what_this_compiler_lowers and two fixpoint tests (run 41379450467). The fix forward is 7ae5b1f1, regenerated in a clean worktree.

Every builder that runs lower-std in the shared tree can bring back such drift, including a revert of 7ae5b1f1.

To build:

  1. scripts/commit.nika (or the gate) refuses a commit of a lowered/*.rs when git status shows uncommitted changes under crates/nikaia/src or crates/nikaia-std/src/tools that are not in the report’s Files:. It names the files, so the builder lowers in a clean worktree instead.
  2. Or: the driver lowers committed .nika in its own clean worktree (nikaia-ci) before the suite and commits the drift as its own commit.

Found during the night run on 2026-11-02.

Comments

keywan-ghadami, 2026-11-02

Correction: the drift went the other way. The committed ref mut methods was right. The emitter half of #1139 (emit_match_bound writing ref mut for in_place_bindings) had been left uncommitted in the shared tree since 4f716b62. R3c-d lowered with it, and CI’s clean compiler lacked it. 7ae5b1f1 is reverted (9fc0591e), and b2dbb692 commits the missing emitter half. The proposed guard still holds: a lowered file committed from a tree whose emitter differs from HEAD is the risk in both directions.


Generated by Claude Code

Back to Open Issues