03bd4721a68ec74cab51164ff2d4b216cd6fe9b0
max
  Tue Sep 15 05:49:00 2026 -0700
trackDb README and comments: $hgsid is for native description pages only, refs #38353

The README still described $hgsid as a hub-page variable that is empty in native trackDb;
both halves of that are now the other way round.  The three call sites of
hVarSubstTrackDbHtml that still said a hub page is the only reason it exists say what the
call does now.

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index b7a61d4971f..1f9cd1bcf67 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -3771,32 +3771,33 @@
 {
 trackDbPrintOrigAssembly(tdb, database);
 }
 
 static char *getHtmlFromSelfOrParent(struct trackDb *tdb, char *liftDb)
 /* Get html from self or from parent if not in self. */
 {
 for (;tdb != NULL; tdb = tdb->parent)
     {
     if (sameString(trackHubSkipHubName(tdb->track), "quickLiftChain"))
         tdb->html = hFileContentsOrWarning(hHelpFile(trackHubSkipHubName(tdb->track)));
     if (liftDb && isEmpty(tdb->html))
         tdb->html = getTrackHtml(liftDb, tdb->table);
     if (tdb->html != NULL && tdb->html[0] != 0)
         {
-        // a hub's description page never went through hgTrackDb, substitute its variables
-        // here.  tdb is the track the html belongs to, so $parentTrack means its container.
+        // resolve $hgsid, which hgTrackDb had no cart to resolve, and for a hub the rest of
+        // its description page variables: a hub page never went through hgTrackDb at all.
+        // tdb is the track the html belongs to, so $parentTrack means its container.
         hVarSubstTrackDbHtml(cart, tdb, database);
         return tdb->html;
         }
     }
 return NULL;
 }
 
 void printTrackHtml(struct trackDb *tdb)
 /* If there's some html associated with track print it out. Also print
  * last update time for data table and make a link
  * to the TB table schema page for this table. */
 {
 // safety net: a few detail pages never print a position, so flush the iframe here
 printPendingIframe();
 if (!isCustomTrack(tdb->track) && !isMyVariantsType(tdb->type))