a47e3c796d32feca4b3747b6eeb37afb25d31ae1 braney Thu Aug 13 08:07:47 2026 -0700 hgConfCatalog: classify the two new hgBlat form flags and quickLiftClipToChains as gates, refs #37925 diff --git src/hg/utils/hgConfCatalog/hgConfCatalog.py src/hg/utils/hgConfCatalog/hgConfCatalog.py index c223a10710a..915ca8299f6 100755 --- src/hg/utils/hgConfCatalog/hgConfCatalog.py +++ src/hg/utils/hgConfCatalog/hgConfCatalog.py @@ -382,30 +382,64 @@ "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:1728", 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:3020", 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:825", + 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("quickLiftClipToChains", "flag", "hg/lib/quickLift.c:231", + 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."), ], } # --------------------------------------------------------------------------- # 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": [ @@ -573,49 +607,30 @@ note="What happens to the custom tracks left behind by a user's " "earlier BLAT searches when a new search makes another one. " "Three values: keep (the default) leaves every one of them " "alone, hide leaves them in the session but sets them to hide, " "delete drops them from the session and lets their trash files " "age out. Only tracks tagged blatResult=on are touched, and " "the track the current search just made is always left alone. " "A string rather than a flag, so it carries no gate/knob role, " "but it is a knob in spirit: which of the three a site wants " "depends on whether its users run many searches in a session " "and get confused about which results are current, and that " "does not stop being a question after a release. When set to " "delete, the BLAT search form shows a Keep results checkbox so " "a user can opt out for one search (cart variable " "blatKeepResults, read back in hg/hgc/hgc.c)."), - h("blatNewForm", "gate", "hg/hgBlat/hgBlat.c:3020", default="off", - verified=True, - 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. A gate - it comes out once the new form replaces " - "the old one."), - h("blatNewFormBanner", "gate", "hg/hgBlat/hgBlat.c:825", - default="follows blatNewForm", verified=True, - 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. " - "Sibling of blatNewPageBanner, which does the same job for the " - "results page."), ], } # --------------------------------------------------------------------------- # database connections and profiles # --------------------------------------------------------------------------- DATABASE = { "what": "Where the CGIs find MySQL. A profile is a prefix; see the " "profile suffix family for the settings legal under any of them.", "vars": [ h("db.host", "profile", "hg/qaPushQ/qaPushQ.c:2435", public=True, verified=True, env="HGDB_HOST", family="db", note="The main assembly database server."), @@ -1364,38 +1379,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("quickLiftClipToChains", "flag", "hg/lib/quickLift.c:231", - default="TRUE", ticket="38042", - note="Written down by --auto-register, not yet reviewed by a " - "person. Read with cfgOptionBooleanDefault at " - "hg/lib/quickLift.c:231. Came in at 7f65d3da8f2, quickLift: " - "clip an oversized item to the chains we loaded instead of " - "dropping it, refs #38042. 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),