be from jab (rename jabc→jab); be runs no JSbe 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.