views/diff/diff.js — handler is dead, ctx.views never setThe diff: VIEW handler (JAB-014) is wired to read its pinned
from/to/scope spec off ctx.views[row.uri], but NOTHING in the
resident loop ever sets ctx.views, and the cited resolve.js
classifyView seed does not exist. Every diff: URI therefore
returns at the guard and emits zero bytes — the whole view is
dead as wired. See DIFF. Method: Issues.
views/diff/diff.js:271: const spec = (ctx && ctx.views && ctx.views[row.uri]) || null;views/diff/diff.js:272: if (!spec) return; — fires for EVERY row.ctx.views is never assigned: core/loop.js:56-87 builds ctx with
no views key (repo/T0/out/queue/flags/refs/resolved/seedRows/
triple/seededRowCount/args/mode/sink — and nothing else).resolve.js classifyView seed that
pins the spec; grep finds classifyView ONLY in those comments —
core/resolve.js defines classifyArg (:97), never classifyView.spec is always null.test/CMakeLists.txt:24-28 (_BE_WILL_FAIL): be-js-diff-01-3revs,
-02-divergent-children, -03-stock-context, -08-sub-pin-bump-gitlink,
-11-file-scope-full.diff:<uri> emit real HUNK bytes for range + wt-vs-base scopes._BE_WILL_FAIL — that is the land gate.classifyView to core/resolve.js and pin
ctx.views[row.uri] in loop.js ctx build — matches the header's
documented contract; ZERO ref resolution stays in the handler.ctx.views and re-parse the diff: URI
off ctx.args[0] in-handler, the way views/log/log.js:39 parseArg,
views/commit/commit.js:25 and views/tree/tree.js:133 already do
(the loop's one-shot scheme:uri form rides ctx.args[0], not row.uri).spec so :278-302 run._BE_WILL_FAIL (each green).resolve.js classifyView does not exist — the header documents an
unbuilt seam; pick a real one (B) rather than chase the phantom.7b0cd620 (diff.js) + be/test 4a0fa9fc (CMakeLists WILL_FAIL drops + diff/11 range). All 5 be-js-diff cases off xfail.
Root cause CONFIRMED: spec always null (ctx.views never set) → every
diff: URI emitted zero bytes; be 'diff:big.txt?v1..v2' --plain had real
hunks, jab had none (verified before fix).be/views/diff/diff.js ONLY: parseDiffArg(k,
repo, ctx.args[0]) builds the spec in-handler (same shape mode/from/to/
baseline/navver/path) like log/commit/tree; resolveCommit is branch-FIRST
then full-sha/hashlet (store.js resolveRef/getObject/resolveHexAny);
baseline via wtlog.baselineTip(). COEXIST: pinned ctx.views[row.uri] STILL
wins (commit.js COMMIT-006) — pinned ?? reparse.?from..to TWO-DOT range (the user's commit-hunk click target — file +
tree), legacy ?from#to, ?branch branch-vs-base (file+tree), no-path
?<hashlet> commit-show (rev vs parent¹, root falls through), diff: /
diff:<file> wt-vs-base. The user's diff:<path>?<a>..<b> now emits hunks.U body click-target leaked a phantom
trailing line in the HUNK color line-walk (C has no body U-target; navigates
via hunk.uri). diffOut now appends the U-target ONLY in --tlv (the bro
pager's hunksFromTlv per-line nav); plain/color feed the bare record →
byte-parity with graf, click still follows hunk.uri. withUTarget +
be-js-diff-links UNCHANGED (test calls the fn directly)._BE_WILL_FAIL (all 5): be-js-diff-01-3revs,
-02-divergent-children, -03-stock-context, -08-sub-pin-bump-gitlink,
-11-file-scope-full. NONE left xfail. 11 extended with the hash .. range
(the user's form). commit-diff/commit-links + diff-links (BRO-006) GREEN.