JAB-031: no jab binding for abc/FSW — JS cannot watch a directory

Now
DONE
Ask
gritzko
Env
Linux (inotify), macOS/BSD (kqueue)

dog/abc/FSW.h already ships the cross-platform watcher — inotify on Linux, kqueue on macOS/BSD, #error elsewhere — and FSWInit hands back exactly the pollable fd that pol.watch(fd, pol.IN, fn) wants. No jab leaf calls it: dog/abc/INDEX.md lists FSW but the whole tree has zero consumers, so JS has no way to make a watcher and the kqueue half is unexercised. This ticket adds the fsw binding in jab/, shaped like pol.cpp (stateless C leaves, all per-watch state in a JS bundle).

Input

Context

The pager is the first plausible consumer (live re-render when a watched file changes), but the binding is missing, not the pager wiring.

Goals

A fsw object in JS that opens a watcher, arms directories, and delivers changed names through the existing pol loop.

Constraints

JABC rule #4 — the native layer is leaf-only, holds no memory and no long-lived JS refs; only fds and buffers cross the boundary.

WIP

Design decisions

The binding is a thin leaf over the existing C API; framing and bookkeeping live in JS.

TODOs

Blockers and bummers

Outcome