2daf01cbbc39c63db64caccf4a87f20a7f2f5f97
braney
  Sat Sep 26 17:43:37 2026 -0700
docent regression scripts for the v503 tickets, refs #38252, #37972, #37987, #37990, #38027, #38033, #38035, #38039, #38071, #38072, #38082, #38087, #38120, #38154, #38155, #38231

One script per ticket. Each one passes on genome-test. Twelve also fail on a v502_branch
build for the reason the script exists, and carry a release-ab proof line. rm38072,
rm38120 and rm38231 can never fail on a released build, and their headers say why.

diff --git src/hg/utils/docent/tests/regress/rm38154.docent.yaml src/hg/utils/docent/tests/regress/rm38154.docent.yaml
new file mode 100644
index 00000000000..87d21ec9274
--- /dev/null
+++ src/hg/utils/docent/tests/regress/rm38154.docent.yaml
@@ -0,0 +1,53 @@
+# #38154 -- the Japan ToMMo 61k WGS subtrack of SNV Frequencies crashed hgTracks on hg38.
+# Any window holding a VCF record with more than about eighty ALT alleles segfaulted and
+# the user got a 500 page instead of an image.  The record Matt found is a tandem repeat
+# at chr11:47,348,908 with 178 ALT alleles.
+#
+# Two fixes, both in origin/v503_branch and neither in origin/v502_branch:
+#
+#   01fbc2b46b7  alleleCountsFromVcfRecord() (hg/lib/pgSnp.c) declared
+#                int alCounts[VCF_MAX_ALLELE_LEN], 80, a string length used as an allele
+#                count, and wrote one entry per allele.  179 ints into 80 destroyed the
+#                return address.  Now sized from the record.  This is the crash.
+#   a5b8db176c6  vcfToPgSnp() (hg/hgTracks/vcfTrack.c) abbreviated every allele longer
+#                than two characters to two plus "..." once a record had five or more
+#                alleles, which wrote past the shorter strings and drew different alleles
+#                as the same label.  Now an allele that fits is shown in full.
+#
+# Step one is the crash.  A segfault gives a 500 and no image at all, so the ToMMo row
+# drawn with the map box of the 11-base repeat record (o=47348907, t=47348918) is the
+# check; a page that did not render cannot draw either.  Pack and not dense, because in
+# dense the VCF row writes no per-item map boxes.  Every display mode crashed, per Matt.
+#
+# Step two is the label, at the record chr11:47,300,206 (REF CTTT, ALT CTTTT, CTT, TTTT,
+# C, CTTTTT, ATTT, CT).  The pgSnp item name is in the map box href, so the check reads it
+# there: "CTTT/CTTTT/CTT/..." now, "CT.../CT.../CT.../..." on the buggy build (Jairo's
+# 2026-09-02 note on the ticket measured the second one on the v502 RR).
+#
+# varFreqs is a superTrack, so hideKids leaves ToMMo as the one member drawn.
+proof:
+  - "assertion-only 2026-09-26 -- written from the ticket and from 01fbc2b46b7 + a5b8db176c6, after the fix shipped"
+  - "release-ab 2026-09-26 -- fails on v502_branch (park 38304): step 1 draws no ToMMo row, hgTracks died on signal 11 in the park error_log; the step-2 record there is named CT.../CT.../CT.../TT.../C/...; passes on genome-test"
+
+target: genome-test
+db: hg38
+position: chr11:47348858-47348958
+reset: true
+fast: true
+steps:
+  - go: chr11:47348858-47348958
+  - hide: all
+  - track: {varFreqs: hideKids, tommo60kjpn: pack}
+  - expect:
+      rows: [ruler, tommo60kjpn]
+      exact: true
+      has: 'area[href*="g=tommo60kjpn"][href*="o=47348907&t=47348918"]'
+      noText: ["Internal Server Error", "Warning/Error"]
+
+  - go: chr11:47300150-47300260
+  - expect:
+      rows: [ruler, tommo60kjpn]
+      exact: true
+      has: 'area[href*="g=tommo60kjpn"][href*="o=47300205"][href*="i=CTTT%2FCTTTT%2FCTT%2FTTTT%2F"]'
+      noHas: 'area[href*="g=tommo60kjpn"][href*="i=CT...%2FCT...%2F"]'
+      noText: ["Internal Server Error", "Warning/Error"]