be put <path> crossing a mounted submodule delegates the stage into the sub (SUBS-039), but only ONE mount deep: stageInSub resolves the shallowest mount and hands the remainder straight to the stage engine, never re-checking it for a nested mount. Any path ≥2 mounts down (e.g. dog/abc/POL.c: dog=libdog, dog/abc=libabc) classifies as "exists but is not stageable" in the mid sub and the run dies PUTNONE: no eligible paths. Found 2026-07-11 in JS-113b via a status-view put click; CLI reproduces identically. Fix: make the descent recur mount by mount. Related: SUBS-039 (the delegation), SUBS-049 (dir-anchor mounts, full-path probe), SUBS-052 (post's selective-gate twin: staged grandchild changes silently skipped).
cd work/JS-113b && jab put dog/abc/POL.c → be put: no eligible paths + PUTNONE; jab status dog/abc shows mod dog/abc/POL.c (a real dirty file in the nested libabc sub).be @ jsrc tip): putOne finds the SHALLOWEST mount prefix (dog) via subMountPrefix (put.js:465-476) and delegates to stageInSub (put.js:482-507), which be.find's the sub and calls stageArg directly with the remainder abc/POL.c — no nested-mount re-check. In libdog's engine abc is a gitlink, so classifyNamed hits !w && !b + on-disk (stage.js:227-233) → skip "exists but is not stageable" → all-skip PUTNONE.dog, put abc/POL.c descends once and stages — the workaround is ://JS-113b/dog/abc + :put POL.c..be-DIR primary anchor too (recurse.js:36-), so nested green-field jab get clones read as mounts — a jab-only repro fixture is buildable (no native be).be put <a>/<b>/<file> with <a> and <a>/<b> both mounts stages the file in the INNERMOST sub's own wtlog; the parent and mid wtlogs record nothing (the gitlink bump stays POST's job, per SUBS-039).put: banner row shows the full top-relative path, any nesting depth.be/verbs/put/put.js stageInSub/putOne: loop subMountPrefix over the remainder against each descended subRepo, accumulating the display prefix; the move-dst fragment slicing must use the FINAL accumulated prefix.put <sub> dir-arg delegation) and the one-level behaviour byte-for-byte.test/sub/nestedput (jab-only, nested green-field mounts) — in work/SUBS-051, RED on live be / GREEN on the fix.