A tracked file whose bytes EQUAL the baseline but whose mtime was changed out-of-band (an external cp, an editor no-op save, a touch) lands in a state where the verbs flatly disagree, and NO documented operation re-stamps it. be status/be diff content-compare → clean (ok, empty diff); be delete mtime-checks → DELDIRTY "unstamped changes" (DIS-004); be put → PUTNONE "no eligible paths" (content == baseline); be get <path> → "overwritten from ? (no staging)" rewrites with a NEW mtime, still unstamped. So the DELDIRTY message's "stage with be put or revert" advice is unachievable. Hit live 2026-06-23 after an out-of-band cp onto bin/lib/store.js. Related DIS-023 (status non-idempotent). Method: Issues.
The ..be.idx worktree stamp set is keyed per-file by exact mtime, but only some write paths record it; the read verbs use different dirtiness tests, so they diverge on a drifted-but-identical file.
be get <path> is a no-staging overwrite that does NOT record the stamp → thefile stays unstamped, so the suggested "revert before deleting" never clears it.
be put <path> returns PUTNONE on a content-clean file (won't re-stamp it), so
the "stage with be put" advice fails too — both escape hatches are dead ends.
be get only clears it when it records the file's CURRENT mtime, and a getthat REWRITES the file (e.g. restoring a missing one) leaves it unstamped again.
be delete <dir> needs the dir present to enumerate; once files are rm'd,
be delete <dir> stages 0 / skips, only bare be delete sweeps the missing set.
None; needs the stamp-set write threaded through the scoped be get <path> (and/or an idempotent re-stamp), plus the DIS-004 content double-check to align delete with status.
Make a content-clean file re-stampable and make the verbs agree.
be get <path> records the overwritten file's mtime into the stamp-set sothe documented "revert" actually clears DELDIRTY. Done via SNIFFAtStampPath.
9718a03a) — delete nowagrees with status/diff. This ticket is the residual scoped-get re-stamp.
sniff/test/restamp.sh (SNIFFrestamp): edit/out-of-band cp →
get <path> re-stamps (mtime == baseline ts) + delete proceeds, no 2nd DELDIRTY.
Mirror PUT.c's content-equal re-stamp: a no-staging be get <path> overwrite stamps the written file to SNIFFAtBaseline's ts (the latest get/post row, already in the wtlog index) — no new row, just mtime ∈ stamp-set so SNIFFAtKnown fast-paths it.
The verbs already AGREED at the surface (status/delete content-rehash since DIS-023/004) so the bug was invisible to verb-level asserts; the repro instead checks the file's mtime equals the baseline stamp ts (a sibling untouched file's mtime).
LANDED (audited 2026-07-07): committed as b7149f85 "DIS-052: file restamping" (beagle, 26Jun).
sniff_get_blob_to_wt (sniff/GET.c:1813) wrote the blob but never
called SNIFFAtStampPath, so the restored file kept a fresh now mtime ∉ stamp-set.
fp to SNIFFAtBaseline's ts(mirrors PUT.c:131 content-equal re-stamp). 4 added lines + 4-line comment.
Failed pre-fix (mtime stayed at edit time), passes post-fix. ctest 375/375 green.
Nothing yet (pending-commit; see Outcome).