The board render does ~4.4k syscalls for one screen of one-liners: every key is re-probed through pageFile's 6-candidate stat ladder though listTopic just got the exact name from io.readdir, and work.js re-discovers the board + re-probes the same pages once per wt row. NARROWED (gritzko 2026-08-03): this ticket is path reuse ONLY — derive the page file from the name already in hand, memoize per run; read-size work (bounded head / single read) is out of scope.
Profiled jab todo 2026-07-24 (786 tickets on disk, warm cache): 4403 syscalls — 888 opens, 854 stat + 757 lstat, 1535 reads.
views/todo/todo.js listTopic: readdir yields KEY.mkd / KEY/, then pageFile(dir, key) re-probes up to 6 paths (3 exts thin + 3 fat) — ~800 avoidable stats per board.readBytes reads min(st.size, 1 MiB) — the WHOLE file — but pageTitle uses bytes up to the first \n only.views/work/work.js is a second payer: ticketTitle/ticketLink per wt row call todo.boardDir() (a stat) + pageFile probes + a full pageTitle read, 93 rows, zero memoization.No path is probed twice: a name readdir returned, or a file already found this run, is never re-discovered.
KEY.<ext> file, or KEY/ dir → README probe only then); pageFile stays for direct todo KEY addressing.jab todo; jab work's todo-side stats drop todo KEY direct addressing keeps working for closed tickets and fat layouts.///be/#acc80350: todo.js listTopic readdir-derived pages, work.js per-run memos, test/todo/pathreuse repro; board stats 876→13.