put after jab get when only 1 changed
After jab get updates a stale worktree from trunk, jab status reports every get-touched file as put (16 put, 49 ok) even though only verbs/post/post.js was actually modified locally — the other 15 were brought to trunk BY the get and match it, so they should read ok. Symptom is a false-positive staged (put) classification: the get updates the working files but the baseline/cur is not advanced to the checked-out trunk (or the update is left staged in the .be/wtlog), so clean files diff as staged. The trigger here was a non-standard cp -a checkout (stale + mis-anchored) followed by jab get, so this MUST be reproduced on a clean be get worktree first — it is likely the same baseline-anchor family as GET-038 / JGET-003, and the root cause may be get-side despite the put-state symptom. Method: Issues.
jab status in a be/ worktree): 16 rows 07:32 put <file> — CMakeLists.txt, be, core/loop.js, core/resolve.js, shared/hunkrows.js, verbs/{delete,get,patch,post,put}/*.js, views/{bro,bro/pager,refs,sha1,size,type}/*.js — footer ? 49 ok, 16 put.verbs/post/post.js was a real local change (GIT-015 fix, still present after the get); the other 15 files were updated to trunk by jab get and are byte-equal to trunk, yet still shown put.cp -a of ~/journal/be (an orchestration shortcut), NOT be get, so it was pinned to a stale commit and improperly anchored; the user then ran jab get to catch up to trunk, which is when the 15 files moved.unk), JGET-003 (get ? trunk-switch records the WRONG branch). PUT-005 may be a sibling / duplicate of these once root-caused.jab get brings a worktree to trunk, files equal to trunk read ok; only genuinely locally-modified files (here post.js) show as put/mod.be/ JS get/status path (baseline/cur recording + the ok/put classifier), not native C.PUT-005 comments, greppable, ticket-coded ≤64-char commit; touch no unrelated verb.jab get rewrites the working files to trunk but does not advance cur/baseline to the trunk tip (or writes the update into .be/wtlog as puts), so jab status diffs the new files against a stale baseline and classifies them put.jab get A→B → edit 1 → status): NO REPRO. status = 1 mod, 3 ok; a bare jab put on trunk-matching files staged NOTHING (4 ok); an edited file staged as exactly 1 put.verbs/get/get.js:188 appendWtlog, seedRemote:219), so the baseline advances. The 16 put are GENUINE staged put rows (one atomic bare-be put batch) against a mis-anchored baseline; classify.js fired correctly on real rows.cp -a artifact: the copied .be is a worktree-redirect FILE pointing at file:/home/gritzko/.be//?/beagle-ext (the ORIGINAL store), so the copy is not self-contained; its baseline tip diverges from the copied bytes and a bare be put correctly stages the 16 divergent files.cp -a worktree is non-standard (not a be get store-backed worktree); it must not be mistaken for the defect — hence the clean-repro gate at T1.cp -a of a be worktree copies the .be redirect FILE verbatim, so the copy reads its baseline from the ORIGINAL store (~/.be/beagle-ext) whose tip diverges from the copied bytes; a bare be put then correctly stages the divergent files. Verified independently: verbs/get/get.js:187-188 + seedRemote:216-220 advance the wtlog tip on update, and shared/classify.js fires put only on genuine wtlog put rows. No code changed, no test added (would gold-plate already-correct behavior).be get (store-backed, self-contained .be), never cp -a — recorded in GIT-015.