Skip to content

[Re-land] #118 jemm native worker: 9 deduped commits onto main, conflict map and fidelity check #154

Open

Description

@hsliuustc0106

Re-land #118: cherry-pick 9 commits onto a branch from main

Why

#118 ("jemm: add native decision worker and pinned weight export") was merged at 2026-10-21T14:09:41Z with base=codex/qwen-vision-27b, one minute after #117 merged that branch into main. The result: compare/0410e84...codex/qwen-vision-27b = ahead_by 19 / behind_by 42, and the JEMM native worker (plus follow-ups) is not in main. #122, #123 and #143 still have that branch as base and modify files that do not exist in main, so they cannot land until this content does.

Decision (2026-10-21): re-land by deduplicating the commits by patch-id and cherry-picking the remainder, in order, onto a new branch from main. Do not merge the whole branch (#117 is already in main; the branch is 42 commits behind) and do not drop (#118 is real merged work).

Dedupe result (patch-id)

git cherry -v origin/main origin/codex/qwen-vision-27b -> 9 non-merge commits, all +: no patch-equivalent exists in main. git rev-list --no-merges origin/main..origin/codex/qwen-vision-27b = 9, so the 10 merge commits carry no additional commits. However, they carry conflict-resolution content ("evil merges"); see the fidelity check below - that content is not reproduced by a flat cherry-pick alone.

Branch tip at snapshot: 8945af81cbb747033836c90d85ca31907c0ec1c5.

Commit list (cherry-pick order, oldest first)

# commit subject diff
1 ef1fd63 jemm: add native decision worker and pinned weight export 16 files, +4168 -1
2 a3a861c fix(jemm): warm vision before readiness and document parity limits 17 files, +793 -25
3 9d4436e Apply separate FP32 language LoRA before native projection consumers 5 files, +1115 -1
4 96659ef Preserve original Jemm language weights and FP32 LoRA in v2 exports 9 files, +430 -54
5 a3c7a78 Match original base projection shapes for unmerged LoRA models 4 files, +370 -10
6 db400fb Preserve all-image projection shapes in native 27B vision 4 files, +616 -32
7 3a2ff03 Run Jemm vision projections over all request images together 1 file, +1 -3
8 06ea197 jemm: align unmerged multi-image execution with reference numerics 26 files, +2724 -76
9 91cc5c2 docs(jemm): align registration with v2 multi-image validation 2 files, +2 -2

Conflict map (measured in a scratch worktree from 0410e84)

Cherry-picking the sequence above conflicts 6 times (recorded, then resolved mechanically by taking the re-land side to finish the simulation):

commit conflicting files
1 ef1fd63 Cargo.toml (workspace members; union of both lists resolves it, verified)
2 a3a861c README.md, docs/supported-models.md, mkdocs.yml, recipe/README.md
3 9d4436e src/models/qwen3_5/native/src/model.rs
6 db400fb src/models/qwen3_5/native/src/vision/model.rs
8 06ea197 src/backends/cuda/qwen3_5/README.md
9 91cc5c2 docs/supported-models.md

Fidelity check (do not skip)

Reference tree = the conflict-free branch->main merge result at 0410e84:

git merge-tree --write-tree origin/main origin/codex/qwen-vision-27b
# -> 7054a0f02b50b37c12e073ebe4cd7d25f56d7c69  (no CONFLICT, 60 files, +10129 -76)

After the cherry-pick branch is finished, git diff 7054a0f0 <re-land-branch> must be empty (or every difference explained). A simulation that resolved all 6 conflicts by taking the re-land side still differs from the reference tree in 14 files (+62 -331), which is what the merge commits' resolution content buys; the executor must hand-merge these, not just take one side:

Cargo.lock
README.md
docs/supported-models.md
mkdocs.yml
recipe/README.md
src/backends/cuda/qwen3_5/README.md
src/backends/cuda/qwen3_5/qwen3_5.backend.json
src/models/qwen3_5/native/src/model.rs
src/models/qwen3_5/native/src/vision/model.rs
tests/jemm/contract.rs
tests/qwen3_5/lora.rs
tests/qwen3_5/lora_fake.c
tests/qwen3_5/vision_batch.rs
tests/qwen3_5/vision_batch_fake.c

Acceptance

  1. New branch re-land/118 from 0410e84 (or newer main; regenerate the reference tree if main moved) with the 9 commits in the order above; git diff <reference-tree> <branch> empty or explained.
  2. CI rust + benchmarks green on the PR head: record run id + tip SHA in the PR.
  3. Local on the branch tip: cargo fmt --all --check and cargo test --workspace --locked (macOS Apple M4, no GPU) - green; CUDA / accuracy / latency / e2e are not run (no NVIDIA GPU, no model weights locally).
  4. New PR base=main, review approval; repo owner merges (bots do not merge/push). After merge, #127 -> #122 -> #123 -> #143 can retarget per [Triage] 30 open PRs: merge / rebase / author buckets, merge order and acceptance criteria (2026-10-21) #153.

Notes

  • Do not cherry-pick merge commits; they are maintenance merges (content covered by the 9 commits, resolutions covered by the fidelity check above).
  • The full-branch merge is conflict-free, but it was rejected in favour of the flat cherry-pick to keep main's 42 newer commits out of the PR history; the trade-off is exactly the 14-file residual above.
  • Snapshot: main = 0410e84, 2026-10-21 ~23:10 +08. Re-verify before executing.

Executor: OpenCode/Codex (bots only produce the plan). Related: #153 (merge manifest), #118, #122, #123, #143.

Activity

  1. hsliuustc0106 commented on Oct 21, 2026

    @hsliuustc0106
    ContributorAuthor

    Decision update (2026-10-21 ~23:20 +08): re-land by whole-branch merge, not cherry-pick

    Per coordinator review of the evidence above: withdraw the flat cherry-pick plan and re-land codex/qwen-vision-27b as a single merge PR into main.

    Rationale (from this issue's own measurements):

    • git merge-tree --write-tree origin/main origin/codex/qwen-vision-27b = exit 0, no conflicts (60 files, +10129 -76).
    • The cherry-pick route conflicts on the first commit (ef1fd63 -> Cargo.toml) and needs 6 conflict resolutions plus a 14-file fidelity residual, i.e. it invents work that the merge does not need.
    • Dropping jemm: add native decision worker and pinned weight export #118 would roll back genuinely merged work; a whole-branch merge keeps it.

    Revised plan:

    1. New PR codex/qwen-vision-27b -> main (base main; #118 itself cannot be reused because it was merged into the feature branch). Merge-commit PR, do not squash/rebase the source history.
    2. CI must run on the new PR head and pass rust + benchmarks; record run id + tip SHA in the PR. Existing pre-merge CI runs do not transfer.
    3. Review approval required; repo owner (human/Codex) executes the merge. Bots do not merge, retarget or push.
    4. After merge, on the new main tip run cargo test --workspace --locked + cargo fmt --all --check locally (macOS Apple M4, no GPU) and note the CI run for main.
    5. Then #127 -> #122 -> #123 -> #143 can be retargeted per [Triage] 30 open PRs: merge / rebase / author buckets, merge order and acceptance criteria (2026-10-21) #153. #127 still goes first (it conflicts with the re-landed src/models/qwen3_5/native/src/vision/model.rs if the re-land lands first).

    What is kept from the withdrawn plan: the 9-commit patch-id dedupe (no duplicate work in main), the commit list, and the conflict map above remain as a description of the branch content. They are no longer an execution recipe.

    Status: this update supersedes the "cherry-pick" wording in the title/body above; the issue title cannot be edited retroactively in this comment, so read this comment as authoritative.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions