io.setMtime over a new abc/FILE utimensat leafThe one native primitive the write verbs need: restamp a worktree file's mtime so
a later be reads it clean (native SNIFFAtStampPath, sniff/AT.c:761, calls
utimensat raw, no abc wrapper). Add a FILE wrapper in libabc, bind
io.setMtime(path, ron60). Pure libabc — no keeper/dog. Blocks the write verbs.
Part of JS-046. Method: Issues.
js/io.cpp, JS-042) but NO
mtime setter; abc/FILE.h has no utimens wrapper either (grep confirms none).be
re-stages the whole tree (the failure put_visit_tracked guards, PUT.c:64).abc/FILE.h/.c: a FILESetMtime(path8b, ron60) wrapper over
utimensat(AT_FDCWD, …, AT_SYMLINK_NOFOLLOW), error-propagating (ok64).js/io.cpp: io.setMtime(path, ron60BigInt) leaf over it; update API.md +
INDEX.md (the io.cpp module section).sniff/AT.c:688. ASAN + ctest
green. NOFOLLOW so a symlink stamps the link, not its target (matches native).JABCstat or add JABCmtime): setMtime(path, r)
then io.lstat(path).mtime round-trips r exactly. (test/stat.js:71-78.)ea9de45b leaf + 4fd1d639 binding/docs.)