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 (~4552–4627) forks jabc
(sibling-resolved) on <wt>/bin/<name>.js; ext_name/ext_tail capture (~4913–4945); call site in the no-verb branch (~5123–5152).
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 filedirectly; 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.
-vNew JAB topic board: todo/JAB/README.mkd + this ticket + [JAB] on
todo/README.mkd.
-vRename jabc→jab: js/CMakeLists.txt targets+add_tests, main.cpp
version string + process.argv[0] head.
-vmain.cpp [path] direct-vs-bare entry. -vrequire.cpp upward be/-scan + __main; extend js/test/require.js. -vStrip be_run_extension + ext_* capture + call site; beagle/INDEX.md. -vTests: delete test/all/02-extension-dispatch; parity harnesses
jabc→jab + bin/→../be/; new run-055.sh ctest JABCrequireBe.
-vDocs: 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.