<verb>: scheme in its hunk/banner URIs (post post:, put put:, head head:…), and the entry/pager round-trips such a scheme back as a verb; root cause is ONE namespace test (_isVerb stats BOTH verbs/ and views/), so a projector scheme and a mutation verb are indistinguishable.
be/ JS jab treats the HTTP-shaped VERBS (GET/HEAD/POST/PUT/DELETE/PATCH — see Verbs) as if they were URI SCHEMES (transports/projectors — see URI). The six mutation verbs each emit a hunk or banner URI whose scheme is literally the verb name (post:, put:, head:, patch:, delete:, get:), which the columnar renderer draws next to the 3-char verb column — hence the doubled post post: / put put: the user sees. But NO such scheme exists: the authoritative scheme table (views/help/help.js SCHEMES + view/bro.js BRO_KEEP_SCHEME) lists only the projector views (commit/diff/log/tree/blob/cat/status/ls/lsr/refs/grep/regex/spot/sha1/size/type) and the transports (ssh/https/http/git/be/file/keeper) — the six mutation verbs are absent. Worse, the mint round-trips: core/loop.js shape-(2) gate dispatches any <scheme>:uri whose scheme _isVerb(...) to that verb, and _isVerb stats BOTH verbs/<w> and views/<w>, so a phantom post: banner URI clicked in the pager re-runs the POST verb — verb and scheme share ONE namespace. The RULING is now Nav: every invocation is module(args), the scheme slot narrows to ADDRESSING-only (transport + sha1:), and views are verbs — so <verb>: is a category error; a mutation banner carries a ref-only/addressing URI and a click-target is a verb args SPELL, never a schemed round-trip. This ticket keeps the A–D catalog and fixes the SIX mutation verbs' mint + the entry/pager round-trip; the wider projector-scheme retirement (diff:→diff x) is JAB-004's program. be/ only, trace-level. See Nav, Verbs, URI, DIS-058.
Every case where the verb and the URI scheme get conflated, grouped A–D (file:line as of this study, 2026-07-03):
<verb>: scheme (renders <verb> <verb>:…):
- verbs/post/post.js:270 post:?<target>#<hashlet>, :322 post:<remote>?<br>#<tip>, :650 post:?<branch>#<subject> — three hunkrows(ctx.sink, "post:"…) banners. - verbs/put/put.js:59 hunkrows(ctx.sink, null, "put:"); out.raw("put:") at :272 :307 :489 :518 :633, and the sub-relay out.raw("put:"+subPrefix) at :441. - verbs/head/head.js:223 hunkrows(sink, "head:"+target). - verbs/patch/patch.js:537 hunkrows(ctx.sink, "patch:"+patchRowUri(…)). - verbs/delete/delete.js:297 out.row("delete:", "delete", …) (URI == "delete:", verb == "delete"), and :372 hunkrows(sink, "delete:"). - verbs/get/get.js:901 hunkrows(ctx.sink, "get:"+g.head.uri) (get's :387/:541 banner uses a REAL ref URI ?<branch>#<sha> — the only mutation verb that does — but this op-summary path still mints get:).
core/loop.js:259 wraps any columnar view's pager hunk as { uri: verb + ":" }; for a mutation verb (get/put) this is a phantom get:/put:, for a view verb (ls/status/refs) it is a REAL scheme — one code path, two meanings.<verb>: scheme AS a verb:
- core/loop.js:184-193 shape-(2) gate: a scheme:uri token with _isVerb(scheme) sets verb = scheme and runs it — so a phantom post: URI is a POST invocation. - core/loop.js:96 _isVerb(w) stats BOTH verbs/<w>/<w>.js AND views/<w>/<w>.js — the SINGLE root cause: no test tells a mutation verb apart from a projector scheme. - verbs/head/head.js:66 strips a leading head: and verbs/patch/patch.js:369 strips patch: off their own arg — dead giveaway that the loop hands them a self-schemed token from the round-trip.
- views/bro/pager.js:195 _resolveSpell: a bare word typed at : becomes word + ":" — for a mutation verb, post → phantom post: (comment only anticipates the view verbs status/ls). - views/bro/pager.js:402 records a verb …/verb(…) CALL's tracked view.uri as call[1] + ":" → post:/get:. - views/bro/pager.js _followRow runs a hunk's banner URI as a spell, so following an A-minted post:/put: row re-executes the mutation verb (the round-trip closes).
u.scheme, correct): shared/submount.js:91, core/recurse.js:54, view/bro.js:508, views/ls/ls.js:146 (ls: IS a projector), views/spot/search.js:49 (spot:/grep:/regex: ARE projectors).shared/hunkrows.js:71 row() and core/emit.js render <date> <verbCol> <text>; when text is the <verb>: URI, the verb prints TWICE (post post:).?<branch>#<sha>, as get's :387 already does), NEVER <verb>:; the click-target is a verb args SPELL, not a schemed URI._isVerb as the runnable-module resolver (verbs/+views/), but gate the entry shape-(2) scheme: dispatch on the projector+transport scheme allowlist (which already EXCLUDES the six mutation verbs) so a <verb>: can never route to a verb; mutation verbs stop MINTING <verb>:.be/ (JS ext / JABC) ONLY — do not touch beagle/; the native be may share the conflation (BRO-008/POST-018 heritage) and its own ticket.jab post/jab put run asserting the hunk banner is NOT <verb> <verb>: before any fix; keep the emit/hunkrows byte-parity harnesses green.put: banner leaks mid-post) — same put: mint, adjacent symptom.post:/put:/… are category errors — confirmed by Nav (every invocation is module(args); the scheme slot addresses, it never carries a verb).sha1:) and moves projectors to verb head (diff x, not diff:x) — that wider retirement is JAB-004's program. DIS-060 fixes ONLY the six mutation verbs' <verb>: mint + the entry/pager round-trip that dispatches it.core/loop.js:259 wrap is where the abstraction leaked: it assumes verb==scheme so ONE line serves ls (correct) and put (phantom). Fix: each verb SUPPLIES its banner URI — a ref-only/addressing URI (?<branch>#<sha>) — not verb + ":"._resolveSpell stops minting word + ":" for a mutation verb and _followRow runs a verb args spell, so following a banner row never re-dispatches via a fake scheme.<verb>: can't route, while real projector schemes still do (until JAB-004 retires them into verb head).?<branch>#<sha>), never <verb>:; a click-target is a verb args SPELL; <verb>: is never typeable/dispatchable.<verb>: mint swaps — done IN-TREE (no sub-tickets needed), landed 921a866b: every mutation verb's hunkrows now carries a ref/addressing URI (post.js:285/366/726 refUri/target/URI.make ?<branch>#<subject>; put.js:62 null banner; head.js:234 target; patch.js:371 patchRowUri; delete.js:386 ?; get.js:1002 g.head.uri). Zero "<verb>:" string mints remain (grep-verified 2026-07-07); head.js:67/patch.js:204 keep benign shed-own-scheme strips.core/loop.js shape-(2) gate on the projector+transport SCHEME_ALLOW allowlist (loop.js:24-36, ~289), _isVerb kept as the runnable-module resolver only — landed 921a866b (with 11e4dddc JAB-004 calling convention).core/loop.js:370 wrap + views/bro/pager.js:275 _resolveSpell: wrapped hunk URI only schemed when SCHEME_ALLOW.has(verb) (bare uri for a mutation verb); a bare word typed at : returns as a module(args) call, never word+":" — landed 921a866b/5ab7f838.views/bro/pager.js _followRow → _runSpell(target): a banner row is followed as a SPELL (word-URI pairs via 2ff62ff6 URI-014), never a schemed round-trip — landed 921a866b+5ab7f838.be/test/dis060/verb-scheme/run.sh asserts no <verb>: scheme in any post/put banner.put:/post:/delete: banners may be asserted verbatim in be/test/ corpora and possibly matched against native be — a fix changes those bytes, so the parity oracle must move WITH the ruling (or the native side gets its own ticket).post.js/get.js are already touched by DIS-054 DIS-055 DIS-058 DIS-059 — land-time reconcile needed; keep this audit change surgical (URI strings only).verb args spell, so a clicked banner opens/re-lenses the resource, never re-runs the mutation._isVerb one-namespace. RULED same day via Nav: scheme slot = addressing-only, views are verbs, <verb>: is a category error; mutation banners → ref-only/addressing URIs, click-targets → verb args spells; projector-scheme retirement stays JAB-004's.921a866b "DIS-060: fine-tuning the navigation semantics" + 5ab7f838 "DIS-060 continued: worktree hopping" (Fri03, be/ repo), on the 11e4dddc JAB-004 calling-convention base."<verb>:" mint left in verbs/). B: loop.js:370 wraps schemed only for SCHEME_ALLOW verbs. C: the entry shape-(2) gate consults SCHEME_ALLOW (loop.js:24-36), not _isVerb — a phantom <verb>: cannot route. D: pager _resolveSpell returns a bare word as a module(args) call; _followRow runs spells (URI-014 word-URI pairs, 2ff62ff6).be/test/dis060/verb-scheme/run.sh (jab post/put banners carry no <verb>:).