d11a21c48cdc2cebe0a97779b510df8317b980cd
braney
  Mon Sep 7 06:29:43 2026 -0700
bigNet: gate the track type behind an hg.conf flag, refs #20824

Add the boolean hg.conf setting bigNet, default FALSE, so the type ships
dark and a machine turns it on with bigNet=on.

trackHubBigNetEnabled() in hg/lib/trackHub.c is the one read; the four
places that accept or advertise the type ask it.  validateOneTrack drops
bigNet from the hub track type allowlist, validateOneTdb drops it from the
types quickLift will lift, hubCheck drops it from VALID_TRACK_TYPES and
from the message listing the valid types, and hubApi does not add it to
supportedTypes.  netToBigNet, netTrack.c, chainNetDbLoad.c and the hgc
details code are unchanged, since they cannot be reached once a bigNet
track will not load.

With the flag off hgTracks does not abort the hub.  It draws the track row
as a bigWarn bar reading "Unsupported type 'bigNet ...'" and the rest of
the hub loads normally.

Register the flag in hgConfCatalog.py with role="gate" so the sunset
report tracks it.

diff --git src/hg/utils/hgConfCatalog/hgConfCatalog.py src/hg/utils/hgConfCatalog/hgConfCatalog.py
index 4ba660b29be..8feed6c1c45 100755
--- src/hg/utils/hgConfCatalog/hgConfCatalog.py
+++ src/hg/utils/hgConfCatalog/hgConfCatalog.py
@@ -222,30 +222,38 @@
 }
 
 
 # ---------------------------------------------------------------------------
 # release gates: boolean flags that exist to hold a feature back
 # ---------------------------------------------------------------------------
 # These are the reason this catalog has a sunset mode.  Each was added so a
 # user-visible change could sit on master without shipping.  Ordered by age so
 # the backlog is visible at a glance.
 
 RELEASE_GATES = {
     "what": "Boolean flags introduced to ship a feature dark during a release. "
             "Temporary by intent: each should be deleted once the feature it "
             "guards is public and mirrors have had a cycle to object.",
     "vars": [
+        h("bigNet", "flag", "hg/lib/trackHub.c", default="FALSE",
+          role="gate", verified=True, ticket="20824",
+          note="The bigNet track type, a net of pairwise alignments in a "
+               "bigBed, and quickLift support for it.  Read once in "
+               "trackHubBigNetEnabled(); with it off a hub that declares "
+               "\"type bigNet\" fails to load with an unsupported-type error, "
+               "quickLift refuses the type, and neither hubCheck nor the hubApi "
+               "lists it among the supported types."),
         h("showMouseovers", "flag", "hg/hgTracks/config.c", default="FALSE",
           role="gate", verified=True,
           note="Mouseover text on track items instead of the browser's own "
                "title tooltips.  Added v446 and still defaulting FALSE, which "
                "makes it the oldest gate in the tree that never shipped.  Four "
                "call sites across config.c and imageV2.c.  Either the feature "
                "is wanted, in which case flip it, or it is not, in which case "
                "the flag and the code behind it should go."),
         h("storeUserFiles", "flag", "hg/hgHubConnect/hgHubConnect.c",
           default="FALSE", role="gate", verified=True,
           note="Hub space, the user file store behind hgHubConnect's upload "
                "wizard.  Added v447 and briefly defaulted TRUE around v454 "
                "before going back to FALSE, so the history shows a flip that "
                "was reverted.  Four call sites."),
         h("hgSession.shortLink", "flag", "hg/hgSession/hgSession.c",