Fix base red: chief_brains state root asks the build identity (cx-8oudl)
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 onchief_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/reservationonchief_brains.rslapsed at 00:35Z.
Changelog
none
🤖 Generated with Claude Code
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-corenow asksBuildIdentityfor NIGHTLY's shared Chief home path instead of joining a literal.cmux/chief/defaultstring, fixing the "No literal state roots" check while keeping the cleanup guard unchanged. The new dependencycmux-agent-pane-policyintroduces no cycle (it only relies onserde,serde_json, andunicode-normalization); the lockfile entry was added manually in sorted order.IdleOwnerRestart.attempt()adds the reviewed// wakeup-allow:comment the concurrency check requires. Itsrepeatis event-driven, not a poll: it runs again only when anotherattempt()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.