Skip to content

base red: DiffSidecar Cargo.lock lists cmux-git's serde_json - #34935

Merged
lawrencecchen merged 1 commit into
feat-cmux-nextfrom
diffsidecar-lock-serde-json
Nov 4, 2026
Merged

lawrencecchen merged 1 commit into
feat-cmux-nextfrom
diffsidecar-lock-serde-json

Conversation

@austinywang

@austinywang austinywang commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

#34782 added serde_json to cmux-git, which Native/DiffSidecar uses as a path dependency. It did not update Native/DiffSidecar/Cargo.lock. Since then, every fleet app build of feat-cmux-next fails at the diff-sidecar step:

diff-sidecar: error: cannot update the lock file .../Native/DiffSidecar/Cargo.lock because --locked was passed to prevent this

Seen in fleet job b4eae8e0f47c10bcdd706cac (#25858 head 0c5dfeae35, base d689309fe955).

This change adds serde_json to cmux-git's dependency list in that lockfile. The lockfile already has only one serde_json version, so nothing else changes.

Testing

cargo check --locked in Native/DiffSidecar on rbx:

  • exits 101 on base d689309fe955 (the error above);
  • exits 0 with this change.

Observed / Not run

  • Observed: the two cargo check --locked runs above.
  • Not run: a full fleet app build at this head.

Changelog

none

risk: low (lockfile)

🤖 Generated with Claude Code


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


Summary by cubic

Fixes fleet app builds of feat-cmux-next failing at the diff-sidecar step. A recent change added serde_json to cmux-git, but Native/DiffSidecar/Cargo.lock wasn't updated, so cargo --locked aborted. This lists serde_json in that lockfile; no other dependency versions change.

Verified with cargo check --locked in Native/DiffSidecar: it exits 101 on the base and 0 with this change.

Written for commit f1942ca. Summary will update on new commits.

View guided diff Turn on auto-fix

…ndency

#34782 added serde_json to cmux-git, a path
dependency of Native/DiffSidecar, without updating its Cargo.lock. Every
fleet app build then failed at the diff-sidecar step (cargo --locked:
cannot update the lock file).

cargo check --locked in Native/DiffSidecar (rbx): exit 101 on the base,
exit 0 with this change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@austinywang austinywang added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review f1942ca: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr34935 -f ref=diffsidecar-lock-serde-json -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Base-red classifier (per test) (+1 more) is not red on the base 6140a65; do not merge until green; see lane-rules

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator

For awareness: this red also stops fleet DEV builds of the current base tip. The build fails at the diff-sidecar step: cannot update the lock file .../Native/DiffSidecar/Cargo.lock because --locked was passed. That traces to #34782, which added serde_json to cmux-git. I checked the same one-line lock change independently: cargo metadata --locked in Native/DiffSidecar passes with it, and a fleet DEV build of base plus this line is running. I am not pushing to or merging this PR.

@lawrencecchen

Copy link
Copy Markdown
Contributor

Review (claude-reviewer-34935): SHIP at f1942ca

What I checked (read-only, no local cargo/swift/xcodebuild):

  1. Scope: the diff from the merge base d689309 to the head has one file only, Native/DiffSidecar/Cargo.lock, with +1 line ("serde_json", in the cmux-git package entry).
  2. Correctness of the lock edge:
    • At the head, cmux-tui/crates/cmux-git/Cargo.toml has these normal deps: wait-timeout, sha2, serde_json (workspace), and libc (cfg(unix)). The lock entry now lists libc, serde_json, sha2, wait-timeout. This matches, and the order is alphabetical, as cargo writes it.
    • fix(cloud): wait for repo sync before native agent tools #34782 (c30af19) added only serde_json.workspace = true and dev-dep tempfile = "3". A path dependency's dev-dependencies do not go into a downstream lock, so it is correct that tempfile is not there.
    • The workspace requirement in cmux-tui/Cargo.toml is serde_json = "1", with no features. The lock already has exactly one serde_json [[package]] entry, at 1.0.150, and the sidecar also asks for serde_json = "1.0.149" directly. 1.0.150 satisfies both requirements, so cargo needs no new package entry and no version change. Because there are no features, no new transitive deps are necessary (for example, indexmap from preserve_order).
    • The other deps of cmux-git are already in the lock, at versions that satisfy the workspace requirements: sha2 0.10.9 (0.10), wait-timeout 0.2.1 (0.2), libc 0.2.186 (0.2).
  3. Other path deps: cmux-git is the only path dependency of the sidecar, and cmux-git itself has no path deps. On origin/feat-cmux-next (9bb5404), the last change to cmux-git/Cargo.toml is c30af19. The lock's last commit is 8e7e6e2, and since then no commit changes the sha2/libc/wait-timeout/serde_json lines in cmux-tui/Cargo.toml. Native/DiffSidecar/Cargo.toml has not changed since c77da78. The lock is not missing other changes.
  4. Fleet Release build of this exact head: job 153f25603142110c458ec60e (tag lead-34935-lock-v1, CMUX_FLEET_BUILD_RELEASE=1, aws-m4pro-3) finished done with "Build complete." and an artifact. The job log has no --locked or "cannot update the lock file" error.

Observed / Not run

  • Observed: the diff, the manifests and the lock at the head; git history of the related manifests; the state and log of the fleet job.
  • Not run: cargo metadata --locked / cargo build --locked for the sidecar on this VM (policy: no local builds). The fleet job log has the reload summary only, not the full xcodebuild log (that log is on the worker in /tmp). Thus the evidence that the sidecar --locked step passed is the successful Release build and that the lock error is not there. No line in the log names the sidecar step.

@lawrencecchen lawrencecchen added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 4, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator

For awareness: this is blocking every fresh source build of feat-cmux-next right now. The diff-sidecar step fails with "cannot update the lock file Native/DiffSidecar/Cargo.lock because --locked was passed" (exit 101). Three capture builds hit it today, at 54f747e, 291f606 and the tip 6052a7d, so no DEV build or capture of the tip can run. The one-line lockfile change here fixes it. Our landers only count ready-to-land as an opt-in when the PR author adds it, so this will not autoland on the current label. @austinywang, if you add ready-to-land yourself, or turn on auto-merge, it lands on the next pass.

lawrencecchen added a commit that referenced this pull request Nov 4, 2026
…tale-lock 1; rustup's cargo first; the fix names the pin

Review findings on #35066 (HOLD at 43d8a44): no git checkout, no git, a failed
git ls-files or an exception exited 1, the code that means a stale lock. Now they
print "not checked" and exit 2. cargo_bin() looks in $CARGO_HOME/bin before
PATH (the build scripts do the same; another cargo ignores the pins). The fix
line names the toolchain for a crate with no pin file of its own
(optchat-chief: cargo +1.95.0 update --workspace).

Red at a98d3dd (before #34935), this version:
  STALE Native/DiffSidecar: error: cannot update the lock file .../Native/DiffSidecar/Cargo.lock because --locked was passed to prevent this
  check-cargo-locks: 1 stale of 29 Cargo.lock: Native/DiffSidecar. Fix: (cd Native/DiffSidecar && cargo update --workspace), then commit only the lock.
  exit=1
  (28 other lines: OK)

Green at f1942ca (#34935 head):
  (29 lines: OK)
  check-cargo-locks: all 29 Cargo.lock resolve with --locked
  exit=0

Not a git checkout (--repo /tmp) and no git on PATH: "check-cargo-locks: not checked: ...", exit=2.
@teamleaderleo

Copy link
Copy Markdown
Collaborator

For awareness: #35090 carried this commit (cherry-picked with your authorship) and merged as 726801e, because the lock-file base red was blocking every DEV build of the tip. This PR is now a no-op against feat-cmux-next, and closing it is your call.

@lawrencecchen
lawrencecchen merged commit 8dea72b into feat-cmux-next Nov 4, 2026
224 of 241 checks passed
@lawrencecchen
lawrencecchen deleted the diffsidecar-lock-serde-json branch November 4, 2026 07:56
lawrencecchen added a commit that referenced this pull request Nov 4, 2026
…rejects (#35066)

* cmux-next: check-cargo-locks.py finds every Cargo.lock that --locked rejects

The Linux compile check stayed green for hours while every Release dogfood
build failed with "cannot update the lock file .../Native/DiffSidecar/Cargo.lock
because --locked was passed": #34782 added serde_json to cmux-tui/crates/cmux-git,
Native/DiffSidecar uses cmux-git by path, and its own lock was not updated
(fixed by #34935).

scripts/cmux-next/check-cargo-locks.py runs `cargo metadata --locked
--format-version 1` (a full resolve; it compiles nothing) for the folder of
every tracked Cargo.lock and every crate folder the Release build compiles with
--locked, each with the toolchain that build uses (its rust-toolchain file,
else the cmux-tui pin). One line per lock: "OK dir", "STALE dir: <cargo's
error>" or "ERROR dir: <cargo's error>"; exit 1 on a stale lock, 2 when a
folder could not be checked. `--no-deps` does not resolve and
`cargo update --dry-run` ignores --locked, so neither sees this red.

It is not a CI job: the lead's tip watcher and the dogfood builder's preflight
run it (Lawrence: no new CI gates).

Red at a98d3dd (before #34935), 2.2 s:
  STALE Native/DiffSidecar: error: cannot update the lock file .../Native/DiffSidecar/Cargo.lock because --locked was passed to prevent this
  (28 other lines: OK)
  check-cargo-locks: 1 stale of 29 Cargo.lock: Native/DiffSidecar. Run `cargo update --workspace` in each (no other change) and commit the lock.
  exit=1

Green at f1942ca (#34935's head: the DiffSidecar lock lists serde_json):
  (29 lines: OK)
  check-cargo-locks: all 29 Cargo.lock resolve with --locked
  exit=0

* check-cargo-locks: a fault of the script or host exits 2, never the stale-lock 1; rustup's cargo first; the fix names the pin

Review findings on #35066 (HOLD at 43d8a44): no git checkout, no git, a failed
git ls-files or an exception exited 1, the code that means a stale lock. Now they
print "not checked" and exit 2. cargo_bin() looks in $CARGO_HOME/bin before
PATH (the build scripts do the same; another cargo ignores the pins). The fix
line names the toolchain for a crate with no pin file of its own
(optchat-chief: cargo +1.95.0 update --workspace).

Red at a98d3dd (before #34935), this version:
  STALE Native/DiffSidecar: error: cannot update the lock file .../Native/DiffSidecar/Cargo.lock because --locked was passed to prevent this
  check-cargo-locks: 1 stale of 29 Cargo.lock: Native/DiffSidecar. Fix: (cd Native/DiffSidecar && cargo update --workspace), then commit only the lock.
  exit=1
  (28 other lines: OK)

Green at f1942ca (#34935 head):
  (29 lines: OK)
  check-cargo-locks: all 29 Cargo.lock resolve with --locked
  exit=0

Not a git checkout (--repo /tmp) and no git on PATH: "check-cargo-locks: not checked: ...", exit=2.

* check-cargo-locks: a missing lock is STALE (exit 1), not a host fault

Review CHANGES at 43f2832 (claude-reviewer-35066): when a Release crate has
no Cargo.lock, cargo says "cannot create the lock file ... because --locked was
passed", which the STALE pattern did not match, so the script said ERROR and
exited 2 (not checked). The Release build fails on that crate too, so it is
stale. Red before: with cmux-tui/crates/cmux-rd-ffi/Cargo.lock removed, ERROR,
exit 2 (reviewer's run). Green now: STALE cmux-tui/crates/cmux-rd-ffi, exit 1.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — f1942ca5 Deployed Nov 4, 2026 by austinywang via cmux-tui tree preflight #110058
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants