2f60825bdf72a8d0c99b81552266c9537e9ee2dc braney Sat Sep 5 08:03:52 2026 -0700 cartTrackVarCatalog: tell an hg.conf name from a cart name. An hg.conf setting and a track-scoped cart variable are built the same way. jksql.c:1325 does safef(cfgName, sizeof cfgName, "%s.excludeDbs", failoverProf->name) and reads the result with cfgOption on the next line, which the scan cannot distinguish from safef(buf, size, "%s.heightPer", track). So excludeDbs sat in cartVarsNotCataloged.txt: correctly, in that it is not a cart variable, but that left the setting described in no registry at all and suppressed in the wrong one. The accessor that reads the buffer back is what tells them apart, so hgConfRead() looks for a cfg* call taking the same identifier within six lines of the safef. Six because the read is normally the next line and a buffer reused later in the function for something else must not excuse an unrelated name; the destination has to be a plain identifier, or we do not know what was filled in. It claims exactly one name in the tree today, and harvestCartVars.py --hgconf prints it with its call site. --reconcile no longer asks about such a name and --update-baseline no longer writes it back, so the baseline is 55 names to 54. The reverse case is now an error rather than a silence: if this catalog ever describes a name the tree reads with a cfg* accessor, --reconcile says so and exits 1, because that is one of the two registries being wrong about what the name is rather than a matter of taste. Verified by planting excludeDbs in the catalog and confirming the report. hgConfCatalog gained the row in the companion commit. refs #37838 #37925 diff --git src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt index 77bbafa7415..8e96aee1400 100644 --- src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt +++ src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt @@ -40,31 +40,30 @@ chainSelf # hg/hgc/hgc.c chromEnd # hg/hgc/myVariantsClick.c chromStart # hg/hgc/myVariantsClick.c chromStarts # hg/hgTracks/myVariantsTrack.c clr # hg/lib/hui.c cnvType # hg/hgc/myVariantsClick.c coloring # hg/hgTrackUi/hgTrackUi.c confSet # hg/hgTracks/searchTracks.c defaults # hg/hgTrackUi/hgTrackUi.c delAll # hg/hgTracks/hgTracks.c delete # hg/hgTracks/myVariantsTrack.c description # hg/hgc/myVariantsClick.c dispFndTrk # hg/hgTracks/searchTracks.c dnovo # hg/hgTracks/gvfTrack.c drag # hg/lib/vcfUi.c -excludeDbs # hg/lib/jksql.c fileSortOrder # hg/cgilib/fileUi.c first # hg/lib/tablesTables.c germ # hg/hgTracks/gvfTrack.c gold # hg/lib/hdb.c id # hg/hgTracks/myVariantsTrack.c itemRgb # hg/hgc/myVariantsClick.c kgAlias # hg/lib/findKGAlias.c kgProtAlias # hg/lib/findKGProtAlias.c knownGene # hg/lib/hgFind.c last # hg/lib/tablesTables.c mat # hg/hgTracks/gvfTrack.c minAc # hg/lib/vcfUi.c mouseover # hg/hgc/myVariantsClick.c name # hg/hgc/myVariantsClick.c next # hg/lib/tablesTables.c