6c9c79a4bb5af45d213d8ba5fc373ed0a6181dca braney Sat Aug 1 12:05:30 2026 -0700 cartTrackVarCatalog: add a --reconcile that reads the tree refs #37838 --check only read the catalog itself, verifying that every family a type names exists, so a track-scoped cart variable added tomorrow was invisible to it. It never called the harvester at all. Adds --reconcile, which does: it compares what harvestCartVars finds against the catalog and reports a name in neither the catalog nor cartVarsNotCataloged.txt, silent and exit 0 otherwise, so it can run nightly. --update-baseline accepts new names as a reviewable diff. Matching is on the name with its leading separator stripped, because the harvester cannot always tell which separator a name is used with: the fourth argument of cart*ClosestToHome is a bare suffix while a safef("%s.%s") site carries the dot. A wildcard entry also registers its trailing component, since the harvester sees decorator..blockMode only as blockMode. Without that nine already-cataloged names read as new. Sixty-seven names are left in the baseline, and about fifteen of them look like real cart variables that were never cataloged, among them FilterLabel, FilterValuesDefault, HighlightType, minAc, fileSortOrder and the tablesTables paging vars. Cataloging those needs a read of the UI code and is not done here. harvestCartVars grows a harvest() entry point so the scan has one definition rather than one in main and a second written out by hand; --by-var output is unchanged. diff --git src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt new file mode 100644 index 00000000000..01c58439e55 --- /dev/null +++ src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt @@ -0,0 +1,89 @@ +# cartVarsNotCataloged.txt - names that harvestCartVars.py finds at a +# cart*ClosestToHome() or safef("%s.%s") call site but that cartTrackVarCatalog.py +# does not describe as a track-scoped cart variable. Refs #37838. +# +# Most are not cart variables at all: the scan cannot tell one from a table +# name, a filename suffix or an SQL fragment, so .bai, _gold and .tbi come out +# of it too. Some are cart variables that simply have not been cataloged yet. +# +# cartTrackVarCatalog.py --reconcile complains about any harvested name in +# neither the catalog nor this file, so this is what keeps a nightly run quiet +# until something actually changes. Regenerate with --update-baseline, then read +# the diff before committing: a name appearing here is a decision that it is not +# a cart variable worth cataloging, and a name disappearing means its call site +# went away. +# +# The first version of this file was accepted wholesale, as a snapshot of the +# gap on the day reconcile learned to fail. So a name being in here is not +# evidence that anybody has looked at it; only the ones added since, which +# arrive a few at a time in a reviewable diff, carry that weight. +# +# Names are stored with the leading separator stripped, which is how reconcile +# compares them. +FilterLabel # hg/lib/hui.c +FilterValuesDefault # hg/lib/hui.c +HighlightType # hg/hgTracks/bigBedTrack.c +\n # hg/hgc/hgc.c +add # hg/lib/hui.c +alt # hg/hgc/myVariantsClick.c +bai # hg/cgilib/fileUi.c +bin # hg/cgilib/annoStreamDb.c +bip # hg/hgTracks/gvfTrack.c +blockCount # hg/hgTracks/myVariantsTrack.c +blockSizes # hg/hgTracks/myVariantsTrack.c +cancel # hg/hgTracks/myVariantsTrack.c +cgm # hg/lib/chromGraph.c +chainSelf # hg/hgc/hgc.c +chromEnd # hg/hgc/myVariantsClick.c +chromStart # hg/hgc/myVariantsClick.c +chromStarts # hg/hgTracks/myVariantsTrack.c +circle.txt # hg/hgc/hgdpClick.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 +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 +eps # hg/hgc/hgdpClick.c +err # hg/hgTables/genomeSpace.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 +html # hg/lib/trackHub.c +id # hg/hgTracks/myVariantsTrack.c +ids # hg/hgc/virusClick.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 +link.bb # hg/hgTracks/chainTrack.c +log # hg/hgc/virusClick.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 +pdf # hg/hgc/hgdpClick.c +pfamDesc # hg/hgc/hgc.c +pie.txt # hg/hgc/hgdpClick.c +png # hg/hgc/hgdpClick.c +prev # hg/lib/tablesTables.c +project # hg/hgc/myVariantsClick.c +projectSelect # hg/hgc/myVariantsClick.c +prot # hg/hgc/hgc.c +ref # hg/hgc/myVariantsClick.c +sel_id # hg/hgTracks/searchTracks.c +som # hg/hgTracks/gvfTrack.c +thickEnd # hg/hgc/myVariantsClick.c +thickStart # hg/hgc/myVariantsClick.c +unip # hg/hgTracks/gvfTrack.c +unk # hg/hgTracks/gvfTrack.c +wig # hg/lib/wigDataStream.c +wikiTrack # hg/hgTables/hgTables.c