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 "