Skip to content

shadow --check: call a merge whose commit carried new work 'unclear', not 'fail' #4134

Open

Description

@QuinnsCode

From the full #1141 shadow check (run for #3946). Six of its seven fails weren't merge bugs. The merge commit that landed also carried new work, and shadow --check's tree can't hold together around that.

How. writeMerge builds the tree under check from git's clean merge of the two parents, codeSplitter's text for the files it resolved, and what landed for the other conflicted files. When the person merging also wrote code in the merge commit, the landed files depend on it, but the tree doesn't have it:

merge new in the merge commit (in neither parent) what broke
#3732 c754e01 keepIn in codesplitter thread-do.ts landed agent-routes.ts imports it; six Worker build tests fail
#2726 b3f88ed, b5d6e9a yearOf moved to two-fronts objectives.ts Export named 'yearOf' not found
#2726 04a938c calm?: true and a Gale check in landingError (rules.ts), edits to gale.ts, icons.ts, gale.test.ts 13 two-fronts rule tests
#2959 5e7de7b a retuned mythic-masters/src/balance.json (git merged it cleanly; the merge rewrote 128 lines) the Jackalope 30-70% balance test

Each one is quick to spot by hand: diff git merge-tree --write-tree <main> <branch> against the landed commit on the files git did not conflict on, or look for lines in the landed conflict files that neither parent has.

Ask. In check(), when a test fails on ours and passes as landed, and the landed commit has edits outside its conflicts (or lines in neither parent), report unclear (merge commit carried new work), not fail. The next full run then needs no hand triage for these. A unit case in test/shadow.test.ts beside the writeMerge one: a landed commit that edits a file git merged cleanly.

Part of #1141.

Activity

  1. QuinnsCode commented on Nov 9, 2026

    @QuinnsCode
    OwnerAuthor

    One more of the same from the rerun of the older PRs: #2159 d46594c (skate-tech-park). The merge commit wrote a step-aside loop (for (const side of [0, 6, -6, 12, -12])) into earthworks.ts's spawn search, which neither parent has, and the landed earthworks.test.ts relies on it ("every park has a hillside cut within 60 m of a spawn").

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions