70ac948e82b41ef316523635c04e5e2c4a89c417
mspeir
  Fri Sep 4 16:57:54 2026 -0700
trackLists: give the variant frequency projects their own table, move the page
to goldenPath/help/mirrorTracks.html, add the otto cron line, refs #37781

Half the restricted list was national sequencing cohorts sitting under varFreqs
and phasedVars, and in one alphabetical table they buried the tracks people
actually write in about, OMIM, HGMD and DECIPHER. Those cohorts now get a table
of their own below the rest. The split is read off the trackDb parent chain, so
the next cohort added under varFreqs lands in the right table with no edit here.

The page moves off the htdocs root to goldenPath/help/mirrorTracks.html, beside
mirror.html, which now links to it. That link goes in src/product/README.txt,
the pandoc source mirror.html is generated from. The licensing page link follows
the move, and the page title changes with the file name.

Also adds the weekly otto line, placed above the HGDB_CONF that would otherwise
apply to it, and keeps the job from listing itself as a self-updating track.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

diff --git src/hg/utils/otto/trackLists/trackLists.sh src/hg/utils/otto/trackLists/trackLists.sh
index 47aeede56e3..893a5c6c9e4 100755
--- src/hg/utils/otto/trackLists/trackLists.sh
+++ src/hg/utils/otto/trackLists/trackLists.sh
@@ -1,44 +1,45 @@
 #!/bin/bash
 #
 # trackLists.sh - build the mirror-facing page listing tracks we cannot
 # redistribute, tracks that update themselves, and contributed tracks. RM #37781
 #
 # Cron (otto): once a week is plenty; none of these lists move daily.
 #     32 6 * * 4 /hive/data/outside/otto/trackLists/trackLists.sh
 #
 # Writes the public page to htdocs on hgwdev. Getting it to the RR needs a
 # /root/<name>AutoPush entry in /etc/crontab, which only cluster-admin can add
 # (same pattern as the daily tips and the session thumbnails, which are likewise
 # generated into htdocs and are not tracked in git).
 #
 # Output behavior: quiet on success, except that a restricted file found to be
 # reachable on hgdownload always prints, so cron mails it.
 
 set -o errexit -o pipefail
 umask 002
 
 DIR=${RTDIR:-/hive/data/outside/otto/trackLists}
 HTDOCS=${HTDOCS:-/usr/local/apache/htdocs}   # override for testing
-PAGE=trackLists.html
+PAGE=mirrorTracks.html
+DEST=goldenPath/help                         # sits with the other mirror docs
 
 cd "$DIR"
 
 # --refresh-contrib is implicit: the crawl re-runs itself when the cache ages out
 ./collect.py --cache "$DIR/cache" -o "$DIR/collected.json"
 
 # public page: no list of reachable restricted files
 ./mkPage.py -i "$DIR/collected.json" -o "$DIR/$PAGE"
 
 # internal copy, keeps the hgdownload cross-check, stays on hgwdev
 ./mkPage.py -i "$DIR/collected.json" -o "$DIR/internal.html" --internal
 
 # only replace the live page if it actually changed
-if ! cmp -s "$DIR/$PAGE" "$HTDOCS/$PAGE"; then
-    cp "$DIR/$PAGE" "$HTDOCS/$PAGE"
+if ! cmp -s "$DIR/$PAGE" "$HTDOCS/$DEST/$PAGE"; then
+    cp "$DIR/$PAGE" "$HTDOCS/$DEST/$PAGE"
     # The execute bit is what makes apache run the SSI includes on a .html file
     # (XBitHack). Without it the page is served verbatim and the reader gets the
     # bare content with no menu bar and no stylesheets, which is the state
     # allTips.html is in. Do not drop this chmod.
-    chmod 775 "$HTDOCS/$PAGE"
-    echo "trackLists: updated $HTDOCS/$PAGE"
+    chmod 775 "$HTDOCS/$DEST/$PAGE"
+    echo "trackLists: updated $HTDOCS/$DEST/$PAGE"
 fi