2bd879990be58c3a533783a25f74b3b8e937dda4 braney Sun Sep 6 15:46:38 2026 -0700 docent: make rm37389 assert what 12d4ad442f7 said it already asserted 12d4ad442f7 renamed rm37389 out of .xfail and its message said "the script now also asks for a phrase out of the hub's own description file". It did not: .../regress/{rm37389.xfail.docent.yaml => rm37389.docent.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) The rename was the whole commit. So the script has been asserting `text: "Description"` and nothing else, while its own comment described a second check that was not in the file. This adds it. "Description" was not doing nothing -- measured on the crash1 hgc page, it occurs exactly once in the visible text and it is the heading printTrackHtml writes above the block, which goes away with the block. So this is a tightening rather than a rescue. What the phrase adds is that it can only be on the page if the description file was really fetched from the GenArk hub, which is the thing #38275 broke. The comment is rewritten to match, and is shorter. The bisect scaffolding is gone -- the ruled-out list was worth writing while the cause was unknown and is noise now that it is known. Both causes are kept, since a reader who sees only one of them cannot understand why the script is worded as it is. First commit on this branch since it was merged. The branch was 99 commits behind and fully contained in master, so it was fast-forwarded to 79aa96ab96e first. Note that the nightly runs from a clone of origin/master, so this does not run nightly until the branch is merged. refs #38252 diff --git src/hg/utils/docent/tests/regress/rm37389.docent.yaml src/hg/utils/docent/tests/regress/rm37389.docent.yaml index 29e96cd2f68..dd56c6bf31c 100644 --- src/hg/utils/docent/tests/regress/rm37389.docent.yaml +++ src/hg/utils/docent/tests/regress/rm37389.docent.yaml @@ -1,60 +1,50 @@ # #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. +# It was broken twice and by different causes, which is why the comment is long. +# +# The v498 fix (5aed2d465f1) filled in a TODO branch in getTrackHtml() (hg/lib/hui.c) that +# had done nothing whenever quickLiftDb named a hub assembly. That fix works. +# +# Then 1258d7f65e7 ("trackHub: keep a description a track inherited from its parent", refs +# #38126) broke it again on master, and only on master: measured 2026-09-05, v502 and v503 +# both drew the description and the tip did not. It made trackHubAddOneDescription return +# early rather than assign a failed fetch, so tdb->html keeps a non-NULL value; hgc's +# getHtmlFromSelfOrParent asked `tdb->html == NULL` before falling back to the source hub, +# that test stopped holding, and getTrackHtml was never called. Filed as #38275 and fixed +# in 4be6477ebcb by asking isEmpty() instead. +# +# So this script has now watched the behaviour break and come back, which is more than the +# rest of the suite can say. It was an .xfail between the two. +# +# The session is braney/crash1, the same one rm37388 uses, because it pins a state that is +# awkward to build in steps: hg38 with a quickLift hub active whose source is the GenArk +# GCA_018466835.2, and an xenoRefGene track from that hub. rm38272 uses it too, so preflight +# covers it for all three. +# +# A separate from-scratch reproduction, which needs no session at all and can be pointed at +# any server, is kept at +# /hive/groups/browser/redmineNotes/38252/claude/repro_37388_hgTrackUi.js -- it was written +# for #38272 but walks the same ground. There is also a Docent tour of this bug at +# ~/docentTours/bugs/rm37389.docent.yaml, recorded while it was broken. 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. + # longLabel and is on the page whether or not the description rendered, so neither half of + # this is that: "Description" is the heading printTrackHtml writes above the block, and the + # second is a phrase out of the hub's own description file, which is the only thing that + # can only be there if the file was really fetched from the GenArk hub. - expect: {text: "Description"} + - expect: {text: "translated blat alignments"}