SUBS-037: JS (jab) submodule recursion for get + post

The JS reference impl (be/, run by jab) recursed submodules for the READ views only (status/diff/log/spot, JAB-004); the WRITE verbs did not. jab get recorded a gitlink then skipped it ("mount recursion is a follow-up", get.js), and jab post had no sub recursion at all. So a nested-submodule clone/edit/ commit cycle diverged from native be. This ticket ports the get mount-recursion and the post recurse+gitlink-bump so jab matches be byte-for-byte across the full cycle, in plain AND --color. Driven by the new cycle gate.

Input

Context

A full get→put/delete→post→get cycle over a 3-level nested submodule repo (aa→bb→cc, path==project) was run with both executors and compared.

Goals

jab matches native be byte-for-byte on the get/put/delete/post/get cycle.

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome

LOST — NEVER COMMITTED (confirmed 2026-06-29). The work sat in an uncommitted scratch tree at the commit gate (be/verbs/get/get.js, be/verbs/post/post.js, be/verbs/post/fold-commit.js, be/core/emit.js, be/verbs/delete/delete.js, new be/test/sub/{lib/subcase.sh,cycle/run.sh}, registered be-js-sub-cycle; suite 80/81) but was never landed and that tree was deleted: mountSub now exists in NO tree on disk, no $HOME/todo/SUBS-037 worktree remains, and nothing is in the beagle-ext store. The get+post sub-recursion must be REDONE — owned as net-new work by DIS-058 (D1-D9). REOPEN.

CLOSED — SUPERSEDED (audit 2026-07-07): the redo LANDED under DIS-058 D1-D9 (da0c12c3 + da7fa5a7, be trunk 29Jun): get mounts+recurses subs (shared/submount.js + get.js recurseSubMounts), post recurses post-order + auto gitlink-bump (post.js postTree/postSubs/postOne). The full-cycle gate lives at be/test/sub/cycle (be-js-sub-cycle), green jab-only per d80bdb5c (TEST-003 "js tests pass, no native use"). Remaining sub gaps have their own tickets (SUBS-039/041/045 etc.); nothing left under this code.