GET-057: bare get CLOBBERS dirty staged files untouched by the incoming commit

Now:
DONE

Incident 2026-07-29 21:31, gritzko in //PATCH-025 (the wt runs its OWN modified get.js — PATCH-025 rewired the weave leaf, so trunk may be innocent): be get absorbed trunk's ULOG-004 commit (da3cf823 → 543269d6, touches only shared/wtlog.js + test/wtlog_con.js + CMakeLists) and OVERWROTE five dirty+staged test files with trunk bytes although theirs==base for every one of them — keep-ours was the only legal outcome. Staged demotion ...V...v also observed (put rows precede the new get tip row; rows NOT deleted). Regold content lost from the tree (put rows carry no blob sha; staging is row-only).

Input

Context

Goals

  1. Reproduce in a scratch clone: stage+edit files upstream-untouched by the incoming commit, bare get, diff. Run once with the wt's get.js and once with trunk's — pin WHICH code clobbers, and what separates the clobbered five from the survivors.
  2. Fix so theirs==base ⇒ keep ours, always — staged or not; add the repro as a permanent get test.
  3. RULED (gritzko 2026-07-29): an FF get keeps the staged list — recorded in GET-053 with the FF-only redesign; this ticket owns only the clobber.

Constraints

WIP

Design decisions

TODOs

Outcome