fd380f3ae9c678f8e92b4728d5f614a71764fecd
braney
  Tue Sep 1 12:56:18 2026 -0700
trackDbConditions: four fixes found by walking the results against the code, refs #37908

Walking the worklist row by row is what found these; none of them was visible
from the summary counts.

A read wrapped in another call was invisible to the value map, because it
stopped at the first call name.  cloneString(trackDbSetting(...)) and
atoi(cartOrTdbString(...)) are both common.  This is why
hideEmptySubtracksSourcesUrl came back as merely composite-only when it in fact
also needs hideEmptySubtracks and hideEmptySubtracksMultiBedUrl.

A macro in a condition was read as an unknown word, so
cartVarExistsAnyLevel(cart, tdb, FALSE, MAF_CHAIN_VAR) did not resolve.  That
hid the fact that irows is consulted only when mafChain is absent from the cart.
Same indirection trap as the chained defines, in a different place.

The variable-to-setting map kept only the last assignment.
wigFetchMinMaxYWithCart assigns defaultViewLimits from defaultViewLimits and
then, if that came back NULL, from viewLimits, so the test in between looked
like viewLimits testing itself.  It is now resolved at the position of the test,
which turns an artifact into the real finding: viewLimits is read only when
defaultViewLimits is absent.

Two classes of noise removed.  "Read the trackDb value when the cart has none"
is how every setting with a default resolves, and it was a third of the
worklist.  A guard on the trackDb type line having words is a sanity check that
is true of every track, and it was the whole of what the scan had to say about
chainNormScoreAvailable, lollyMaxSize and lollyNoStems.

diff --git src/hg/utils/trackDbConditions/conditionBaseline.txt src/hg/utils/trackDbConditions/conditionBaseline.txt
index 750d400c0f5..b6ec112ec29 100644
--- src/hg/utils/trackDbConditions/conditionBaseline.txt
+++ src/hg/utils/trackDbConditions/conditionBaseline.txt
@@ -1,57 +1,54 @@
 # Documented settings whose reads all sit behind a condition.
 # Accepted state for trackDbConditions.py --check.  One scope:name per line.
 render:bamColorTag
 render:barChartColors
+render:barChartFacets
 render:barChartMerge
 render:baseColorTickColor
 render:baseColorUseCds
 render:bigDataIndex
 render:centerLabelsDense
-render:chainNormScoreAvailable
 render:colorFields
 render:compositeTrack
 render:configurable
 render:configureByPopup
 render:dataVersion
 render:detailsBoxesEnabled
-render:drawMode
 render:exonNumbers
 render:filterBy
 render:frames
 render:genome
 render:hapClusterHeight
 render:hapClusterTreeAngle
 render:hicArcLimit
 render:hideEmptySubtracks
 render:hideEmptySubtracksMultiBedUrl
 render:hideEmptySubtracksSourcesUrl
 render:highlightColor
+render:intronGap
 render:irows
 render:itemRgb
 render:labelOnFeature
+render:labelSeparator
 render:linkDataUrl
 render:logoMaf
 render:lollyMaxSize
 render:lollyNoStems
 render:maxLimit
 render:metadata
 render:minGrayLevel
 render:minQual
 render:negateValues
 render:noInherit
-render:normalization
 render:otherTwoBitUrl
 render:pairSearchRange
 render:pennantIcon
-render:resolution
 render:saturationScore
 render:searchIndex
 render:showCdsMaxZoom
-render:smoothingWindow
 render:sortOrder
 render:speciesCodonDefault
 render:subGroups
 render:superTrack
 render:thickDrawItem
 render:viewLimits
-render:windowingFunction