be from jab (rename jabc→jab); be runs no JS
be currently forks the JS runtime jabc as its LAST dispatch fallback — an unknown bareword be <name> runs <wt>/bin/<name>.js (be_run_extension, JS-025). This couples a native CLI to a JS loader and keeps a doomed script duplicate in beagle/bin/. Divorce them: rename the binary jabc→jab, make jab a standalone runner (jab [path] args) with its own upward be/-scan resolution, and strip ALL JS from be. Canonical scripts already live in the separate be/ submodule (beagle-ext). Method: Issues.
beagle/beagle/BE.cli.c: be_run_extension (jabc (sibling-resolved) on <wt>/bin/<name>.js; ext_name/ext_tail capture (beagle/js/main.cpp: entry runs the first positional via JABCRunFile (global eval). beagle/js/require.cpp: CommonJS require with node-style resolution (.js//index.js), no be/-scan.beagle/bin/*.js (doomed, deleted LATER) vs the journal-root be/ submodule (beagle-ext, complete: 8 verbs + lib/).jabc→jab; be and jab fully divorced.jab [path] args: an explicit path (/abs, ./rel, ../up) runs the file directly; a bare name runs the require machine../be ../be ../../be …, in each try <be>/<name> then <be>/<name>.js; ceiling $HOME/be (under $HOME) else /be.be runs no JS: remove be_run_extension + plumbing + the JS-025 call site.JABC* C++ symbols stay.beagle/bin/ is NOT deleted here; tests repoint to the be/ submodule.js/test/*.js use abs paths).JABC* + bejs ctest suites green.main.cpp branches on the path prefix; the bare case sets a global __mainSpec and runs __main(__mainSpec).require.cpp splits resolve() into explicit-path vs resolveBe() (upward be/-scan via io.cwd/io.getenv/io.stat); __main patches process.argv[1] to the resolved abspath so the be/*.js here idiom works.BE.cli.c: the no-verb branch drops the extension probe and falls through to be_diagnose_unknown (typo diagnostic) then bro.JAB topic board: todo/JAB/README.mkd + this ticket + [JAB] on todo/README.mkd.jabc→jab: js/CMakeLists.txt targets+add_tests, main.cpp version string + process.argv[0] head.main.cpp [path] direct-vs-bare entry.require.cpp upward be/-scan + __main; extend js/test/require.js.be_run_extension + ext_* capture + call site; beagle/INDEX.md.test/all/02-extension-dispatch; parity harnesses jabc→jab + bin/→../be/; new run-055.sh ctest JABCrequireBe.js/INDEX.md, js/README.md, js/API.md.beagle submodule but be/ scripts are a SIBLING submodule ($_ROOT/../be) — cross-submodule path; guard if absent.9c1528d5 (ff onto 707bbbbe): jabc→jab, jab [path] entry + upward be/-scan require, JS stripped from be, tests/docs repointed.be-bin-* parity harnesses (not in the Tests TODO, red otherwise); full suite green 399/399 (JABC* 29, bejs 29, be-bin 6).test/js/post/conflict/run.sh (marker fixtures, not a real conflict) → --forced that one post.