The pager address bar (:) now RETARGETS on a bareword path (URI-011b: the composer's wt-relative bareword + the isVerb probe, shared/spell.js), so verbs in ls //WHY-001 opens ls //WHY-001/verbs. But a PARTIAL word (ve) is still ambiguous verb-vs-path and the user must type the whole path by hand. Add Tab completion in command mode: complete the word being typed from the CURRENT view's hunk tokens — the hidden U nav URIs (universal, single-sourced via navlib.navLink, wt-relative) and the visible F filenames (listing views) already carry every on-screen path, so NO new token is needed (the "token for paths" is the existing U/F). Many matches CYCLE on repeated Tab; the inserted token is WT-RELATIVE with a trailing / for a directory, so it is URI-shaping (dodges the verb-peel) and compose routes it to arg 0. No hunk match → fall back to the FILESYSTEM under the view's context (//-authority wt root + path dir), stat-guessing dir-vs-file. JS (jab) pager only. Method: Issues.
compose/shapeArg0/mergeUri treat a leading
bareword as a WT-RELATIVE path and an isVerb probe stops a non-verb word
(verbs) from being peeled as a verb. Completion is the missing input aid —
a partial ve can't yet disambiguate to a path.U (hidden nav URI, wt-relative,
single-sourced navlib.navLink) in status/ls/log/tree/cat/diff; F (visible
filename) in ls/tree/bro-dir (views/ls/ls.js:64, views/tree/tree.js:64,
view/bro.js:532). The pager already walks them: _uriAt/_lineUri.this.cmd, driven char-by-char in
_keyCommand (views/bro/pager.js); Tab (0x09) is unhandled today — it
falls through and is ignored.F name
followed by a P slash is a dir; a U scheme of ls:/tree: is a dir,
cat:/blob: a file. For the FS fallback, io.stat().kind.Tab in command mode completes the LAST whitespace-delimited word of
this.cmd against the current view's hunk paths: a unique match replaces the
word, a shared prefix extends it, ambiguity CYCLES on repeated Tab./ for a directory, so it is URI-shaping — compose routes it to arg 0 and
the verb-peel can't grab it.// wt root + path
dir) and complete from the FS, stat-appending / for a dir.U/F walk (_uriAt/_lineUri style) — NO new
tag, NO new hunk field. The "some token for paths" the user asked about IS the
existing U/F.be/core/discover.js + the URI class (URI-011, work Things-NOT-TO-DO)../-led stem
completes context-relative.this.cmd); no other
tests edited without leave (Issues).U decoded path + F
visible name; (2) FS readdir of the context dir. On-screen first (what the
user sees), FS as the miss fallback.{stem, cands, idx, atCmd} — set on the first Tab
of a stem, advanced on repeat, RESET by any non-Tab key in _keyCommand
(editing restarts completion).F+P or a ls:/tree: U scheme = dir, else
file; from the FS, io.stat().kind. A dir gets a trailing / (an
unambiguous path token + a "descend" affordance).this.cmd; a leading
verb word (cat te) stays, only the tail completes.p.key(0x3a); p.cmd=…; p.key(0x09) and
asserts the completed this.cmd — landed in ae6ac86f._completions(stem): hunk-token U/F walk, prefix-filter, sorted, FS
fallback on miss (views/bro/pager.js:542-550) — landed 0d02e0e9._keyCommand Tab branch: b === 0x09 → _tabComplete(); any other key
resets the cycle state this._tab (pager.js:183,492-529) — landed 0d02e0e9._fsCompletions(stem) (pager.js:550+) — landed ae6ac86f.this._tab.atCmd === this.cmd detects a repeat Tab on our
own output and advances (pager.js:522) — landed 0d02e0e9.be/ (jab
upward be/-scan) — completion shows only once it is the RUNNING tree (same
caveat as BRO-012); launch jab from the fixed worktree to see it._tabComplete/_completions/cycle state) rode be 0d02e0e9 ("WHY-001: blame view for the js ver", 2026-07-05); the FS fallback (_fsCompletions) + driver test rode be ae6ac86f ("COMMIT-007 and assorted fixes", 2026-07-05). No BRO-013-tagged commit exists — grep those hashlets, not the code.