Fix base red: chief_brains state root asks the build identity (cx-8oudl)

Merged
TE
22d ago
+6-1

Base red on feat-cmux-next since c52607bba486 (cx-ebm.60.6): the cmux-next checks job fails "No literal state roots" on cmux-tui/crates/cmux-tui-core/src/chief_brains.rs:953, which joins .cmux/chief/default to HOME to keep NIGHTLY's shared Chief home out of the old-acpmux-home cleanup.

The path now comes from the resolver that names it, BuildIdentity::new(Some(NIGHTLY_BUNDLE_ID), None).chief_home(home, "default") (cmux-agent-pane-policy). That is the same path, so the guard doesn't change. cmux-tui-core gains a dependency on cmux-agent-pane-policy, which depends only on serde, serde_json and unicode-normalization, so there's no cycle. The lockfile line is added by hand, in sorted order.

The IdleOwnerRestart concurrency red that was folded in here is now fixed on base by 79ce2f2fa9a06 (cx-zt04u), so this PR is back to the chief_brains change only (#20772 stays closed).

Verification

  • scripts/cmux-next/check-state-roots.sh: ok (was 1 line over baseline).

  • scripts/cmux-next/check-concurrency.sh: ok on the merged head.

  • scripts/cmux-next/crash_ratchet.py: ok.

  • Rust build, tests, clippy and the Windows GNU build: this PR's CI jobs (no local cargo on my machine).

  • Full cmux-tui gate on this head (run 38657371692): Windows, MSRV, Chief tests, valgrind and every release build pass. Two reds are base reds, not this change, and the merge goes past them on the coordinator's call:

    • test (linux): smoke-tui.py:953, workspace order after a drag; fixed by #20806.
    • lint (linux): the god-file cap on chief_brains.rs. Base is already at 1008 lines, over the 1000-line cap; this change adds 3. A split is owned by the lane working on that file (cx-ebm.60.6).
  • cmux/reservation on chief_brains.rs lapsed at 00:35Z.

Changelog

none

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes two base reds on feat-cmux-next that fail the cmux-next checks job.

  • cmux-tui-core now asks BuildIdentity for NIGHTLY's shared Chief home path instead of joining a literal .cmux/chief/default string, fixing the "No literal state roots" check while keeping the cleanup guard unchanged. The new dependency cmux-agent-pane-policy introduces no cycle (it only relies on serde, serde_json, and unicode-normalization); the lockfile entry was added manually in sorted order.
  • IdleOwnerRestart.attempt() adds the reviewed // wakeup-allow: comment the concurrency check requires. Its repeat is event-driven, not a poll: it runs again only when another attempt() arrived during the probe.

Verification

scripts/cmux-next/check-state-roots.sh, check-concurrency.sh, and crash_ratchet.py pass; Rust build/tests/clippy and the Windows GNU build run in this PR's CI.