io.stat mtime + lstat/readlink/symlink/chmod
The bin/*.js extensions hand-roll workarounds for file metadata JABC doesn't expose, though the C leaves already exist (abc/FILE.h): io.stat drops the filestat mtime/atime (FILE.h:311) and follows symlinks (FILEStat, not FILELStat), and there is no readlink/symlink/chmod. Surface them so JS can read mtimes, classify+apply symlinks, and set the exec bit. THIS ticket adds the bindings + a JABC test ONLY — the bin/*.js rewire is JS-044, kept separate so this tree stays js/-only and disjoint from JS-043. Found by the bin/*.js review. Method: Issues.
io.stat (js/io.cpp) returns {size, mode, kind} via FILEStat (follows
links). The filestat struct (abc/FILE.h:310-316) already carries mtime/atime as ron60; FILELStat/FILEReadLink/FILESymLink/FILEChmod are implemented leaves, all unbound.
classify.js batchMtimes spawns
/usr/bin/stat for mtimes; classify.js:119-128 recovers a symlink kind from a thrown stat; checkout.js can't apply symlinks / the exec bit.
io.stat(path) → {size, mode, kind, mtime, atime} (mtime/atime BigInt ron60).io.lstat(path) → same shape, no symlink follow (FILELStat).io.readlink(path) → string; io.symlink(target, linkpath); `io.chmod(path,mode)`.
chmod 0755, lstat a danglinglink, read a known mtime.
abc/FILE.h leaves — no new abc, no dog.
Bindings hold no memory (rule #4). Follow js/io.cpp + js/API.md/INDEX.md.
ron codec convention dateCol uses).JABCioStat to set mtime/atime; add JABCioLStat/ReadLink/SymLink
/Chmod in js/io.cpp, install in main.cpp; register a ctest (JABCstat or extend an existing io test).
test/js/.../stat.js (or extend) asserts the new fields/leaves;
register in js/CMakeLists.txt.
js/io.cpp + install; update js/API.md + js/INDEX.md.ctest -R JABC green; ASAN/LSan clean.ff7a378e (FF onto trunk 69f51bd3): io.stat carries mtime/atime
(BigInt ron60) + io.lstat/readlink/symlink/chmod over abc/FILE.h leaves (js/io.cpp + a shared JABCStatObj helper). Repro JABCstat (js/test/stat.js); 24/24 JABC green, ASAN/LSan clean; API.md/INDEX.md updated.
be bugs in worktree setup: the path-form file: URL misparse in
be get (already filed), and offline submodule get-by-hash reporting ok but writing no files (GET-032).