BEE-072: fork.js — the blob scan striped by path hash over N workers, runs folded at the end

Now
OPEN
Sev
MED
Ask
gritzko
Rep
///bee
See
BEE-063
See
BEE-071
See
SPOT-003
On1
BEE-071
On2
QJAB-014

The blob-derived rounds of index/lindex.js scan (LINK, SYM and BEE-071's TRI) run in one process: git's 4807 files take 31 s, linux about 9 minutes, all of it CPU in the per-blob loop. Ruled 2026-09-17 (gritzko): ONE utility file in bee stripes the changed blobs over N fork() CHILDREN by PATH HASH, each child mints its stripe into a lane of its own, and the parent merges every child's runs into the main lanes at the end — the spot --fork N / CAPOMergeWorkers shape of the C tool (beagle/spot/CAPO.exe.c:745, CAPO.c:396), which libdog does not carry. A forked child INHERITS the parent's memory (gritzko, 2026-09-17): the ODB handle, the open lanes, the tree cache and the changed list are already there, so there is no re-exec, no second tree diff and no worker verb — the child filters the list it holds and mints. The runtime leaf, io.fork() + io.exit(), is QJAB-014. The unit is step 3 of scan WHOLE: all three rounds ride one blob read, so one striping serves them all; the commit walk stays sequential. Main-tree work permitted for this ticket as for BEE-071; no commits, no push.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome