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 dangling link, 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).