aeb4691c5f621712c9918e5a6e6a58c8b2de837d
braney
  Wed Sep 23 09:32:26 2026 -0700
hgConfCatalog: hgGateway.showRefBadge and denseClick are release gates, refs #37925

Both came in through --auto-register.  showRefBadge (#38401) gates the
reference badge in the gateway search results; denseClick (#38364) gates
per-item map boxes in a dense row, with a trackDb opt-in under it.

diff --git src/hg/utils/hgConfCatalog/hgConfCatalog.py src/hg/utils/hgConfCatalog/hgConfCatalog.py
index f00e0bbb7ab..2f2d5856c66 100755
--- src/hg/utils/hgConfCatalog/hgConfCatalog.py
+++ src/hg/utils/hgConfCatalog/hgConfCatalog.py
@@ -582,30 +582,47 @@
                "explicitly to override either way.  Does not gate the link the "
                "other way: the new page always offers its way back to the classic "
                "page, since the cart variable that got the user there sticks.  "
                "Sibling of blatNewFormBanner."),
         h("quickLiftClipToChains", "flag", "hg/lib/quickLift.c",
           default="TRUE", role="gate", verified=True, ticket="38042",
           note="Whether an item too big for the chains quickLift loaded is "
                "pulled in to what they cover rather than dropped.  Read once, "
                "in quickLiftIntervalsToBedClip, which is the display path; "
                "the details page calls quickLiftIntervalsToBed and always "
                "sees the item's true extent.  Born TRUE, so it never gated a "
                "release: like alwaysItemRgb, the off position is the way the "
                "browser behaved before the change rather than anything about "
                "the machine, so it is a gate and should go once nobody has "
                "asked for the old behaviour."),
+        h("hgGateway.showRefBadge", "flag", "hg/hgGateway/hgGateway.c",
+          default="FALSE", role="gate", verified=True, ticket="38401",
+          note="A green \"reference\" word before an assembly in the "
+               "gateway search results when NCBI's refSeqCategory for it "
+               "is \"reference\".  Only the GenArk matches from "
+               "assemblyList can carry it; a dbDb assembly and a match "
+               "from the NCBI assembly search never do.  With the gate "
+               "off, isReference is always FALSE in the JSON and "
+               "autocompleteCat.js draws no badge and no mouseover."),
+        h("denseClick", "flag", "hg/hgTracks/simpleTracks.c", default="FALSE",
+          role="gate", verified=True, ticket="38364",
+          note="One clickable map box per item in a dense row, so a click "
+               "reaches the item's details page instead of expanding the "
+               "track.  Read once, in denseClickEnabled().  A gate over the "
+               "whole feature: with it on, a track still has to opt in with "
+               "the denseClick trackDb setting, and with it off no track "
+               "gets it whatever its trackDb says."),
     ],
 }
 
 
 # ---------------------------------------------------------------------------
 # mirror knobs: boolean flags that are meant to live forever
 # ---------------------------------------------------------------------------
 
 MIRROR_KNOBS = {
     "what": "Settings that are legitimate, permanent deployment switches.  "
             "Nearly all are boolean flags, and those are listed explicitly so "
             "the sunset report does not nag about them; a few are strings that "
             "choose between behaviours rather than turning one off, and those "
             "carry no gate/knob role because only booleans have one.",
     "vars": [
@@ -1691,46 +1708,30 @@
     "what": "Settings the tree reads that --auto-register wrote down without "
             "a person's help, so no read goes unrecorded while it waits to be "
             "classified.  Everything in a row here is a fact copied off the "
             "call: name, call site, and the compiled-in default when it is a "
             "literal.  Nothing here is a judgement.  A row leaves this "
             "section by hand, once somebody reads the call site and can say "
             "what the setting is for, whether a boolean is a gate or a knob, "
             "and whether a mirror operator would want it; then it moves to "
             "the section it belongs in with verified=True.  Rows are not "
             "expected to stay here, and --reconcile counts every one of them "
             "as needing attention.",
     "vars": [
         # --auto-register inserts new rows directly below this line.  Leave the
         # marker in place; it is how the writer finds its way in.
         # AUTO-REGISTER INSERTION POINT
-        h("hgGateway.showRefBadge", "flag", "hg/hgGateway/hgGateway.c",
-          default="FALSE", ticket="38401",
-          note="Written down by --auto-register, not yet reviewed by a "
-               "person.  Read with cfgOptionBooleanDefault in "
-               "hg/hgGateway/hgGateway.c.  Came in at 81a04805893, highlight "
-               "NCBI \"reference\" assemblies in the search result and hg.conf "
-               "gated with hgGateway.showRefBadge=on default is off refs "
-               "#38401.  Needs a description and a gate or knob call."),
-        h("denseClick", "flag", "hg/hgTracks/simpleTracks.c", default="FALSE",
-          ticket="38364",
-          note="Written down by --auto-register, not yet reviewed by a "
-               "person.  Read with cfgOptionBooleanDefault in "
-               "hg/hgTracks/simpleTracks.c.  Came in at 4d36c5c0a9c, "
-               "hgTracks: a dense row can have one clickable map box per "
-               "item, refs #38364.  Needs a description and a gate or knob "
-               "call."),
     ],
 }
 
 
 # ---------------------------------------------------------------------------
 # assembly
 # ---------------------------------------------------------------------------
 
 SECTIONS = [
     ("Release gates", RELEASE_GATES),
     ("Mirror knobs", MIRROR_KNOBS),
     ("Database connections", DATABASE),
     ("hgcentral tables", CENTRAL_TABLES),
     ("Paths and caches", PATHS),
     ("Limits and load control", LIMITS),