be delete <file> should gate on mtime first, then a content-hash double-check when the mtime has drifted, and be delete --force <file> should delete a dirty file anyway. The impl is mtime-only with no hash fallback and no force bypass on the file/dir path, so a file with a drifted-but-identical mtime is wrongly refused and a deliberately dirty delete is impossible. The goal is to match the documented gate (see DELETE). User ruling 2026-05-31.
sniff/DEL.c implements only the mtime check; the hash double-check and the force bypass are missing code, not bugs in existing logic.
!SNIFFAtKnown(mtime) → DELDIRTY with no content fallback; the file's own comment flags the hash fallback as TODO pending a baseline-tree path→sha lookup.--force / -r only drive the recursive branch drop in DELBranch; there is no force bypass on the file or dir delete path.
None; needs a baseline-tree path→sha lookup exposed to DEL.c for the content double-check.
Add the hash double-check and thread a force flag.
force flag into DELStage / del_dir so be delete --force <file> skips the dirty gate.--force over dirty (proceed).Nothing yet.