bin/*.js helper consolidation + clarity cleanupThe JS be status/be get extensions duplicate small helpers across 12 files and
carry some dead/awkward code. Consolidate into shared libs and remove the cruft —
pure bin/*.js, NO behavior change (the be-bin-* / be-js-get-* parity tests
stay byte-for-byte green). Disjoint from JS-042/JS-044 (touches no js/ C, adds
no bindings). Found by the bin/*.js review. Method: Issues.
isFullSha ×6 (wtlog/keeper/classify/dag/subs/wire), join ×8,
dirname ×5 (TWO divergent semantics — a latent bug),
dateCol/verbCol/writeStdout (status.js & get.js), shQuote≡shq
(status.js/wire.js), the ULOG-drain watermark incantation ×6.keeper.js hexToBytes reimplements the hex.decode binding;
dag.rowFor inlines the ts logic already in dag.commitTs.get.js:136 isDir, keeper.js:141 dirname (unused); the
keeper.js ref-delta fallback (indexPackByWalk/frameSha/hashlet60FromBytes
/keyFor, ~90 lines) is unreachable on the hot path (pack.scan does it
natively) and only log-and-skips. Stale comments keeper.js:88-93,166-173.lib/path.js (join/dirname/basename, ONE semantics) + lib/sha.js
(isFullSha + hashlet/hex helpers); shared render/ulog helpers; all bin/*.js
import them.hexToBytes → hex.decode; dag.rowFor calls dag.commitTs; remove the two
dead funcs; delete-or-gate the keeper ref-delta fallback; fix stale comments.be-bin-* and be-js-get-* stay byte-for-byte green.bin/*.js ONLY — keep disjoint from JS-042's js/io.cpp. No new bindings
(use existing JABC). Comment budget per CLAUDE.md.lib/path.js dirname settles on ONE return value — verify each caller's
expectation first (be.js/ignore.js use .//, checkout.js/keeper.js ""//)
and preserve behavior.hex.decode swap; dag.commitTs reuse; dead-func removal; ref-delta gate;
comment fixes.ctest -R 'be-bin|be-js-get' green (parity unchanged); no regressions.be-bin-sub-status-parity fix (dag.commitTs sub-tip ts) may be
uncommitted in the main tree at fork time; if that test reads red on your base,
it is PRE-EXISTING, not your change — note it, don't chase it.cbad5786 (FF onto ff7a378e): 4 new shared libs (bin/lib/path.js/
sha.js/ulog.js/render.js), 12 callers repointed; hexToBytes→hex.decode,
dag.rowFor→dag.commitTs, dead funcs gone. Net −177 lines; status.js/
refs.js output BYTE-IDENTICAL. Parity green (the 1 be-bin-sub-status-parity
red is the native SUBS-030 adv verb = JS-045, not this change).pack.scan throws), so it's GATED +
deduplicated, not deleted (deleting collapsed status to 1327 unk). REF_DELTA
records are still log-and-skipped → a JS-034 REF-base resolve leaf would index
them fully.