c6b4a4bd0e3024efed0f59f21dc01b5aa3c351f1
braney
  Sat Sep 5 09:22:30 2026 -0700
docent: pin two Closed tickets whose symptom is still live, as xfail

Both were measured on genome-test (v503) on 2026-09-05, both are Closed and out
on the RR, and both are pinned rather than deleted so the suite reports it when
they start passing. Same treatment as rm36540.

rm38272 is NOT a second copy of rm37388. That script covers hgc, where the fix
landed and works. This one follows the same lifted track's own settings link, and
hgTrackUi still does what #37388 described:

Couldn't set connection database to GCA_018466835.2
mySQL error 1049: Unknown database 'GCA_018466835.2'

#37388's fix was per-CGI. 921a40c472e guarded the one call in hgc (hgc.c:4984,
!trackHubDatabase(liftDb) && !isGenArk(liftDb) before hAllocConnTrack) and the
branch in getTrackHtml. hgTrackUi has a path of its own that was never guarded:
specificUi() (hgTrackUi.c:3432) reassigns db to the quickLiftDb setting and hands
it to cfgByCfgType(), labelCfgUi() and extraUiLinks(), which connect to it. Where
the page stops fits -- specificUi() is called at :4202, after the "Remove from
QuickLift" link at :4118, and that link is the last thing the 451-character page
contains.

It reproduces from scratch with no saved session and no hub of ours, and it is
live on genome.ucsc.edu, hgwbeta and genome-test alike: open GenArk
GCA_018466835.2 at CM089257.1:80,200,000-80,360,000, leave the default tracks
alone, QuickLift to hg38, click the gear on RefSeq mRNAs. Filed as #38272. The
script uses braney/crash1 instead because that is the cheap way to the same state
and rm37388 already depends on that session.

rm37389 asserts the track description block that is still absent from a
quickLifted hgc page whose source is a GenArk. Four things were checked rather
than assumed and none of them explains it away: GCA_018466835.2 is in the genark
table, the hub declares its xenoRefGene html file, that file is served 200 from
hgdownload, and the fix (5aed2d465f1) is still in hg/lib/hui.c. hgc prints no
warning of its own, which points at getHtmlFromSelfOrParent (hgc.c:3715) never
calling getTrackHtml, since it only does so `if (liftDb && ...)`. Not chased
further. This is a different path from the hgTrackUi one above, not the same bug
seen twice. The verification session on the ticket does not settle it either:
the only lifted track with clickable items at its position is a bigWig, whose
hgc page has no description section in any build.

refs #38252

diff --git src/hg/utils/docent/tests/regress/rm37389.xfail.docent.yaml src/hg/utils/docent/tests/regress/rm37389.xfail.docent.yaml
new file mode 100644
index 00000000000..29e96cd2f68
--- /dev/null
+++ src/hg/utils/docent/tests/regress/rm37389.xfail.docent.yaml
@@ -0,0 +1,60 @@
+# #37389 -- the track description was missing from a quickLifted hgc page when the source
+# assembly is a GenArk hub.
+#
+# THIS IS AN XFAIL, and it is a REGRESSION ON MASTER, not a fix that never worked. That
+# distinction was got wrong twice before it was measured properly, so here is what was
+# measured, on 2026-09-05, from scratch and with no session at all:
+#
+#     genome.ucsc.edu   (v502)   lifted page HAS the description
+#     hgwbeta           (v503)   lifted page HAS the description
+#     genome-test       (master) lifted page does NOT
+#
+# So #37389's fix (5aed2d465f1, v498) works, and something that landed on master after
+# v503_branch was cut broke it again. It has not reached users.
+#
+# It is specific to the GenArk branch of getTrackHtml. A plain db-to-db quickLift keeps its
+# description on genome-test: hg19 refGene lifted to hg38 still prints one.
+#
+# What has been ruled out, each by measurement rather than by reading:
+#
+#   * hui.c is byte identical between v503_base and origin/master, so getTrackHtml itself
+#     did not change. Something it calls did.
+#   * htmlSanitize(), which #38126 added to trackHubAddOneDescription in this window, is
+#     not eating it. Run over this hub's own xenoRefGene.html it returns 3674 bytes from
+#     3354 with the text intact.
+#   * the fixture is fine: GCA_018466835.2 is in the genark table, the hub declares
+#     `html html/GCA_018466835.2_HG02257_mat_hprc_f2.xenoRefGene`, and that file is served
+#     200 from hgdownload.
+#   * getTrackHtml IS reached. printTrackHtml() (hgc.c:3745) takes liftDb straight from the
+#     quickLiftDb setting, which is certainly present here since it is the string in
+#     #38272's error.
+#
+# BISECTED, and fixed. The breaking commit is 1258d7f65e7 ("trackHub: keep a description a
+# track inherited from its parent", refs #38126): it made trackHubAddOneDescription return
+# early rather than assign a failed fetch, so tdb->html keeps a non-NULL value and hgc's
+# `if (liftDb && (tdb->html == NULL))` at hgc.c:3722 never fires. Filed as #38275 and fixed
+# on master in 4be6477ebcb by asking isEmpty() instead. This script should start passing
+# once that build reaches genome-test, and `make test` will report the xfail as a failure --
+# which is the signal to delete the .xfail and this comment.
+#
+# The script asserts the FIXED behavior, the same as every other script here, and is marked
+# .xfail so the suite stays green. If it starts passing, `make test` reports that as a
+# failure, which is the signal to delete the .xfail and this comment.
+target: genome-test
+db: hg38
+reset: true
+fast: true
+steps:
+  - loadSession: {user: braney, name: crash1}
+  - expect: {noText: "Could not find session"}
+
+  - click: {track: xenoRefGene, item: "NM_126741.2"}
+
+  # The page itself is fine -- that is #37388, which is fixed and has its own script. What
+  # is missing is only the description block.
+  - expect: {noText: "Couldn't set connection database", text: "Item: NM_126741.2"}
+
+  # The assertion this script exists for. "RefSeq mRNAs mapped to this assembly" is the
+  # longLabel and is on the page already, so the check is on the section heading that
+  # printTrackHtml writes and on a phrase from the hub's own description file.
+  - expect: {text: "Description"}