jab delete <sub-interior-path> delegates into the mounted sub (the SUBS-039 put twin)Requested by gritzko 2026-07-16 (chat, mid-STATUS-009): delete must recurse into submodules symmetrically with put and stage missing files. The BARE sweep already recursed (SUBS-044, tested in test/sub/baredel{,-nested}); the NAMED form did not delegate: the parent engine cannot see a sub-interior file, so an ON-DISK path refused with a false DELDIRTY and a MISSING one was silently "skipped" — no row anywhere (sandbox-verified both ways). Fixed in work/STATUS-009: verbs/delete/delete.js grows subMountPrefix/delInSub (put's stageInSub twin) — mount-by-mount descent, the sub's OWN delStage + wtlog rows, banner rows re-prefixed, DELDIRTY re-prefixed, no parent leak, no gitlink bump (POST's job).
Sandbox before the fix: jab delete vendor/sub/helper.c → DELDIRTY (file clean!); after rm, jab delete vendor/sub/lib.c → deleted 0 file(s) (0 row(s), 1 skipped), no row in either wtlog.
test/sub/pagercross had FROZEN the refusal as "safe" (pre-delegation the alternative was a destructive mis-target) — its delete arm + golden amended to the delegating semantics.Named delete of a sub-interior path lands INSIDE the sub, both cases: on-disk (unlink + row) and missing (row-only).
Naming the sub ITSELF is NOT delete-the-submodule — interior paths only delegate; deletions fold into the pin at POST time (no gitlink bump here).
delInSub (descent as in put's stageInSub, SUBS-051); each arg's delStage runs on the sub repo, so the dirty-gate reads the SUB's stamps/baseline.<sub>: deleted N file(s) …; a sub-only run skips the parent delStage (an empty path list would bare-sweep).test/sub/nameddel/run.sh: both cases, no parent leak, no gitlink bumpdelInSub/subMountPrefix in delete.js; DELDIRTY path re-prefixedtest/sub/pagercross (delete arm now delegates; golden regen, date column normalised inside the pager-prefixed lines)