Skip to content

main is red: lockfile-sync, compile fails on the merged tree #6495

Description

@github-actions

The post-merge canary tested main at 40e3aaaf8 and it is red.

This names the commit that was tested, not the commit that broke the tree.
This run did not check 40e3aaaf8's parent, so the break may be older —
possibly by many merges. Confirm before reverting anything: re-run the failing
check on 40e3aaaf8^ and walk back while it still fails.

Failing: lockfile-sync, compile

lockfile-sync

check-lockfile-sync: FAIL — Cargo.lock is out of sync with the manifests.
check-lockfile-sync: 
check-lockfile-sync: cargo said:
check-lockfile-sync:          Updating crates.io index
check-lockfile-sync:      error: cannot update the lock file /home/runner/work/stella/stella/Cargo.lock because --locked was passed to prevent this
check-lockfile-sync:      help: to generate the lock file without accessing the network, remove the --locked flag and use --offline instead.
check-lockfile-sync: 
check-lockfile-sync: Fix it by regenerating the lock and committing it:
check-lockfile-sync: 
check-lockfile-sync:        cargo metadata --format-version 1 >/dev/null   # or: cargo check --workspace
check-lockfile-sync:        git add Cargo.lock
check-lockfile-sync: 
check-lockfile-sync: Cargo.lock is tracked and install.sh builds --locked, so this reaches
check-lockfile-sync: people installing from source, not only CI. Commit the regenerated lock
check-lockfile-sync: in the same PR as the manifest change that moved it (#3332).

compile

�[1m�[91merror�[0m: cannot update the lock file /home/runner/work/stella/stella/Cargo.lock because --locked was passed to prevent this
help: to generate the lock file without accessing the network, remove the --locked flag and use --offline instead.

Why this was not caught before the merge

These checks are enforced against a shared cell — something every PR of a
given shape must write. Usually that is a file (Cargo.lock,
scripts/file-size-baseline.txt); it can equally be a seam two branches
each redesign in good faith (#3659). Either way, two branches can each be
correct, pass every check, and still compose into a broken tree once both
land. No pre-merge check has both halves in front of it, which is why this
canary exists (#3332).

How to fix

git checkout main && git pull

...then, per failing check:

lockfile-sync

cargo metadata --format-version 1 >/dev/null   # regenerates Cargo.lock
git add Cargo.lock

compile

cargo check --workspace --all-targets --locked

Land it on its own from a fresh main — do not fold it into an unrelated PR,
for the reason AGENTS.md gives about the file-size baseline.

Definition of done

  • lockfile-sync passes on a fresh main with the fix applied
  • compile passes on a fresh main with the fix applied
  • The repair landed on its own from a fresh main, not folded into an
    unrelated PR.

Tick these on the repair PR's own tree — each is a command you can run before
you merge. The canary closes this issue itself on its next green run, so a box
nobody ticks costs the issue nothing; SCR-003's gate is what reads them, and it
runs on the PR.

Blast radius while this is open

A red main reds every open PR, so the next contributor inherits a failure
they did not cause and may spend their session on it.

If compile is among the failures, nothing builds: the whole test suite and
the release binary are down, not one crate. If lockfile-sync is, everything
that passes --locked breaks — the MSRV check, the stella-serve container
build, and install.sh, which reaches people installing from source rather
than only CI.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    main-redmain is broken on the merged tree — filed by the post-merge canary

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions