d44a9daabcca7a322db6907add7ccac336394c85
Merge parents b3eaffc2a4e 9f5a3871b95
braney
  Mon Aug 31 12:21:36 2026 -0700
Merge branch 'onePath36940': remove the bigBedOnePath fallback, refs #36940

Brings in the single bigBed load path.  bigBedOnePath has defaulted to on
since v492, so this drops the check and the code it guarded at four sites:
bigBedAddLinkedFeaturesFromExt, commonBigBedMethods, bigBedClick and the
bigBed case in hgc.  complexBedMethods lost its only isBigBed=TRUE caller,
so the parameter is gone.

Conflict in hgConfCatalog.py, resolved in favour of master.  Master has since
changed every citation to name the file without a line number, so the branch's
two hgc.c line-number repairs are obsolete and are dropped.  What survives from
the branch is the part that still applies: the bigBedOnePath row leaves the
catalog and the gate backlog, refs #37925.

Verified after the merge: hgTracks and hgc both build clean under -Wall -Werror,
and hgConfCatalog.py --check reports 0 problems.

diff --cc src/hg/utils/hgConfCatalog/hgConfCatalog.py
index 38230caa018,0b666eb494b..ff94c4659aa
--- src/hg/utils/hgConfCatalog/hgConfCatalog.py
+++ src/hg/utils/hgConfCatalog/hgConfCatalog.py
@@@ -269,190 -267,160 +269,185 @@@
            note="The banner on the classic BLAT results page that offers a "
                 "one-click switch to the new sortable table display.  Guards "
                 "the advertisement, not the feature: turning it on makes the "
                 "browser recommend the new page without releasing new CGIs, "
                 "and users who already opted in or follow a direct link get "
                 "the new page either way.  Goes away with the banner, once the "
                 "new page is the default.  Born TRUE at c683ecb63d7 and put "
                 "back to FALSE at 81d7cff6cb6 while the new page is still "
                 "being tested, so it is gating again rather than shipped.  "
                 "Kept a gate rather than a knob because what it "
                 "turns off is a sentence recommending another page, and no "
                 "mirror needs that switch forever; the deadline the report "
                 "computes for it is really a deadline on deciding whether the "
                 "new page becomes the default, which is the conversation the "
                 "nag is supposed to force."),
 -        h("blatResultsGroup", "flag", "hg/hgTracks/hgTracks.c:7267", default="FALSE",
 +        h("blatResultsGroup", "flag", "hg/hgTracks/hgTracks.c", default="FALSE",
            role="gate", verified=True, ticket="38086",
            note="Put BLAT result custom tracks in their own \"BLAT Results\" track "
                 "group (with a \"Delete all\" button) instead of Custom Tracks, and "
                 "give headerless queries a useful default name (query size + top-hit "
                 "gene) rather than \"blat YourSeq\".  Read in three CGIs that must "
                 "agree: hgBlat.c:1493 (naming), hgc.c:27514 (tags the track "
                 "group=blat), hgTracks.c:7262 (synthesizes the group).  Off during "
                 "QA; flip to TRUE once released."),
 -        h("genarkLiftOver", "flag", "hg/lib/genark.c:413", default="FALSE",
 +        h("genarkLiftOver", "flag", "hg/lib/genark.c", default="FALSE",
            role="gate", verified=True,
            note="Offer liftOver between GenArk assemblies.  Four call sites in "
                 "genark.c and hdb.c."),
 -        h("showIgv", "flag", "hg/hgTracks/hgTracks.c:12197", default="FALSE",
 +        h("showIgv", "flag", "hg/hgTracks/hgTracks.c", default="FALSE",
            role="gate", verified=True,
            note="An IGV link in the track hamburger menus."),
 -        h("showLiftRequest", "flag", "hg/hgConvert/hgConvert.c:183",
 +        h("showLiftRequest", "flag", "hg/hgConvert/hgConvert.c",
            default="FALSE", role="gate", verified=True, ticket="37973",
            note="A link from the Convert page to liftRequest.html, the page "
                 "that requests a new whole-genome alignment.  The assembly "
                 "list only offers targets that already have a chain from the "
                 "source, so the Convert page is where a user finds out theirs "
                 "is missing, but nothing in the tree linked to the request "
                 "page.  Off until the request pipeline is confirmed ready to "
                 "take traffic from the browser UI."),
 -        h("groupDropdown", "flag", "hg/hgTracks/hgTracks.c:10221",
 +        h("groupDropdown", "flag", "hg/hgTracks/hgTracks.c",
            default="FALSE", role="gate", verified=True,
            note="Track group chooser as a dropdown rather than the current "
                 "layout."),
 -        h("gcOnTheFlyCoExist", "flag", "hg/hgTracks/hgTracks.c:7577",
 +        h("gcOnTheFlyCoExist", "flag", "hg/hgTracks/hgTracks.c",
            default="FALSE", role="gate", verified=True,
            note="Let the calculated GC track coexist with the stored one.  A "
                 "sub-flag of gcOnTheFly, so it should be deleted with it "
                 "rather than outliving it."),
 -        h("showAliases", "flag", "hg/hgTracks/hgTracks.c:9892", default="FALSE",
 +        h("showAliases", "flag", "hg/hgTracks/hgTracks.c", default="FALSE",
            role="gate", verified=True,
            note="Show chromosome alias names in the position box."),
 -        h("showColorPicker", "flag", "hg/lib/hui.c:6081", default="FALSE",
 +        h("showColorPicker", "flag", "hg/lib/hui.c", default="FALSE",
            role="gate", verified=True,
            note="The track colour picker in track UI."),
 -        h("doMyVariants", "flag", "hg/hgCustom/hgCustom.c:1246",
 +        h("doMyVariants", "flag", "hg/hgCustom/hgCustom.c",
            default="FALSE", role="gate", verified=True,
            note="The My Variants track and its upload path.  Thirteen call "
                 "sites across seven files, the widest gate in the tree, which "
                 "is a fair measure of what deleting a stale one costs."),
 -        h("hguidIpTracking.enabled", "flag", "hg/lib/botDelay.c:157",
 +        h("hguidIpTracking.enabled", "flag", "hg/lib/botDelay.c",
            default="FALSE", role="gate", verified=True,
            note="Per-hguid IP tracking for abuse detection.  Its three "
                 "companion settings (maxIps, table, windowSeconds) are plain "
                 "values and are listed under abuse control."),
 -        h("canColorItems", "flag", "hg/hgTracks/hgTracks.c:9188",
 +        h("canColorItems", "flag", "hg/hgTracks/hgTracks.c",
            default="FALSE", role="gate", verified=True,
            note="Added in the current release, so it is doing exactly what a "
                 "gate is supposed to do and has not earned a deadline yet."),
 +        h("cspResponseHeader", "flag", "hg/lib/hCommon.c",
 +          default="FALSE", role="gate", verified=True, ticket="38151",
 +          note="Send the Content Security Policy as an http response header, "
 +               "on top of the meta tag the library already writes.  It exists "
 +               "for the pages that build their own header block and so never "
 +               "reach that library code, which is why cspWriteResponseHeader "
 +               "is called from fourteen places: most inherit it from "
 +               "addHttpHeaders in cart.c, and six call it directly (the two "
 +               "\"too many requests\" pages, the captcha and its error page, "
 +               "the hubApi help redirect, the hgSearch redirect).  Added at "
 +               "e6ddf60465d after v502 and on no release branch yet, so the "
 +               "deadline has not started.  On in hgwdev's cgi-bin hg.conf.  "
 +               "The introducing commit carries no refs #38151 on purpose, "
 +               "under the security-incident policy, so the ticket here is "
 +               "hand-written and the sunset report's git-derived ticket "
 +               "column will show it blank.",
 +          debatable="A knob if the policy ends up being set once in the Apache "
 +                    "config instead, which #38151 lists as its open question. "
 +                    "Then this switch survives as the way a mirror avoids "
 +                    "emitting a second, conflicting policy, since two CSP "
 +                    "headers intersect and both are enforced, and a proxy "
 +                    "setup is a property of the machine.  Filed as a gate "
 +                    "because the CGI emits the header today, and because "
 +                    "calling a gate a knob hides it from the sunset report "
 +                    "for good."),
          # Gates whose default has flipped TRUE.  These are the deletable ones:
          # the feature is public and the flag is now only an off switch.
 -        h("showTutorial", "flag", "hg/hgCustom/hgCustom.c:181", default="TRUE",
 +        h("showTutorial", "flag", "hg/hgCustom/hgCustom.c", default="TRUE",
            role="gate", verified=True,
            note="The interactive tutorials.  Public since v466, five call "
                 "sites across four CGIs.  Nothing is gating any more."),
 -        h("canDupTracks", "flag", "hg/lib/dupTrack.c:267", default="TRUE",
 +        h("canDupTracks", "flag", "hg/lib/dupTrack.c", default="TRUE",
            role="gate", verified=True,
            note="Duplicate-track feature.  Public since v443."),
 -        h("canSnake", "flag", "hg/hgc/hgc.c:3947", default="TRUE", role="gate",
 +        h("canSnake", "flag", "hg/hgc/hgc.c", default="TRUE", role="gate",
            verified=True,
            note="Snake display for chain and alignment tracks.  Public since "
                 "v467."),
 -        h("showDownloadUi", "flag", "hg/hgTracks/hgTracks.c:9063",
 +        h("showDownloadUi", "flag", "hg/hgTracks/hgTracks.c",
            default="TRUE", role="gate", verified=True,
            note="The download-current-track UI.  Public since v467."),
 -        h("mergeRecommended", "flag", "hg/hgTracks/recTrackSets.c:194",
 +        h("mergeRecommended", "flag", "hg/hgTracks/recTrackSets.c",
            default="TRUE", role="gate", verified=True,
            note="Merge behaviour for recommended track sets.  Public since "
                 "v467."),
 -        h("svgBarChart", "flag", "hg/hgc/barChartClick.c:588", default="TRUE",
 +        h("svgBarChart", "flag", "hg/hgc/barChartClick.c", default="TRUE",
            role="gate", verified=True,
            note="SVG rather than raster bar charts on the details page.  "
                 "Public since v428, the longest-shipped gate still in place."),
 -        h("canDoHgcInPopUp", "flag", "hg/hgTracks/config.c:837", default="TRUE",
 +        h("canDoHgcInPopUp", "flag", "hg/hgTracks/config.c", default="TRUE",
            role="gate", verified=True,
            note="Details pages in a popup instead of a page load.  Public "
                 "since v492.  Three call sites."),
 -        h("greyBarIcons", "flag", "hg/hgTracks/hgTracks.c:10479",
 +        h("greyBarIcons", "flag", "hg/hgTracks/hgTracks.c",
            default="TRUE", role="gate", verified=True,
            note="The grey side-bar icons on track images.  Public since v492.  "
                 "Four call sites in hgTracks.c and imageV2.c."),
-         h("bigBedOnePath", "flag", "hg/hgTracks/bigBedTrack.c",
-           default="TRUE", role="gate", verified=True,
-           note="Single code path for bigBed fetching, replacing the older "
-                "split.  Public since v492.  Four call sites, and deleting it "
-                "removes a whole alternative path rather than just a branch."),
 -        h("trackHubsCanAddGroups", "flag", "hg/lib/hubConnect.c:41",
 +        h("trackHubsCanAddGroups", "flag", "hg/lib/hubConnect.c",
            default="TRUE", role="gate", verified=True,
            note="Let hubs declare their own track groups.  Public since v492."),
 -        h("newBotDelay", "flag", "hg/lib/botDelay.c:215", default="TRUE",
 +        h("newBotDelay", "flag", "hg/lib/botDelay.c", default="TRUE",
            role="gate", verified=True,
            note="The reworked bot-delay logic.  Public since v492."),
 -        h("gcOnTheFly", "flag", "hg/hgTracks/hgTracks.c:7576", default="TRUE",
 +        h("gcOnTheFly", "flag", "hg/hgTracks/hgTracks.c", default="TRUE",
            role="gate", verified=True,
            note="Calculate the GC percent track at draw time instead of "
                 "reading a stored table.  Public since v496, so it is inside "
                 "its grace period."),
 -        h("useBlatBigPsl", "flag", "hg/hgBlat/hgBlat.c:859", default="TRUE",
 +        h("useBlatBigPsl", "flag", "hg/hgBlat/hgBlat.c", default="TRUE",
            role="gate", verified=True,
            note="bigPsl output from BLAT.  Public since v348."),
 -        h("alwaysItemRgb", "flag", "hg/cgilib/bedCart.c:34", default="TRUE",
 +        h("alwaysItemRgb", "flag", "hg/cgilib/bedCart.c", default="TRUE",
            role="gate", verified=True,
            note="Honour a BED's itemRgb without requiring the track setting.  "
                 "Defaulted TRUE from v466.  Born TRUE, so it never gated a "
                 "release; it is the switch back to how the browser coloured "
                 "BED items before v466, and unlike sleepOn429 the off position "
                 "describes an old version of the browser rather than a "
                 "property of the machine, which is what keeps it a gate.  The "
                 "last test in bedItemRgb is the only thing it controls, so "
                 "deleting it is a two-line change."),
          h("hgHubConnect.validateHub", "flag",
 -          "hg/hgHubConnect/hgHubConnect.c:1739", default="TRUE", role="gate",
 +          "hg/hgHubConnect/hgHubConnect.c", default="TRUE", role="gate",
            verified=True,
            note="The Hub Development tab on hgHubConnect, which is where a hub "
                 "author runs hubCheck from the browser.  Two call sites, the "
                 "tab itself and hgHubConnectDeveloperMode below it.  Public "
                 "since v427.  Described here as \"run hubCheck when a hub is "
                 "attached\" until the call site was read: it gates the tab, "
                 "not attachment, so a hub is validated on attach either way."),
 -        h("blatNewForm", "flag", "hg/hgBlat/hgBlat.c:3121", default="FALSE",
 +        h("blatNewForm", "flag", "hg/hgBlat/hgBlat.c", default="FALSE",
            role="gate", verified=True, ticket="37893",
            note="Replaces hgBlat's classic C-generated search form with the "
                 "JavaScript-built one in hg/js/hgBlat.js, which shares its "
                 "styling and page header with the new BLAT results page.  Off "
                 "while the new form is being tested.  Read through "
                 "cartUsualBoolean, so this is only the default: the form's "
                 "banner offers a per-user opt-out that sets blatNewForm=0 in "
                 "the cart.  It comes out once the new form replaces the old "
                 "one, which is what makes it a gate rather than a knob."),
 -        h("blatNewFormBanner", "flag", "hg/hgBlat/hgBlat.c:826",
 +        h("blatNewFormBanner", "flag", "hg/hgBlat/hgBlat.c",
            default="follows blatNewForm", role="gate", verified=True,
            ticket="37893",
            note="Whether the classic BLAT search form carries a banner offering "
                 "the new one.  Defaults to whatever blatNewForm is set to: "
                 "where the new form is enabled, a user who took its go-back "
                 "link needs a way to return, and where it is disabled there is "
                 "nothing to advertise.  Set explicitly to override either way.  "
                 "The default is that nested read rather than a literal, so the "
                 "sunset report cannot tell from the tree whether this one has "
                 "shipped; it ships and goes away with blatNewForm.  Sibling of "
                 "blatNewPageBanner, which does the same job for the results "
                 "page."),
          h("sessionNewPage", "flag", "hg/hgSession/hgSession.c", default="FALSE",
            role="gate", ticket="37996",
            note="Replaces hgSession's classic C-generated 'My Sessions' page with "