da449b4fe2039f200a2f93d5209c48fe98c0a534
braney
  Tue Sep 29 10:58:30 2026 -0700
cartPcrVarTester: which hgPcrResult_ cart variables survive a cart load, refs #38442

Feeds hgPcrResult_ variables through cartParseOverHash() and says which are
kept.  With the cart.c fix backed out it shows hgPcrResult_imgOrd dropped and
nothing else changes.  Registry row and catalog note added.

diff --git src/hg/utils/cartFileVarCatalog/cartFileVarCatalog.py src/hg/utils/cartFileVarCatalog/cartFileVarCatalog.py
index a318ccf2f00..940e23fd60e 100755
--- src/hg/utils/cartFileVarCatalog/cartFileVarCatalog.py
+++ src/hg/utils/cartFileVarCatalog/cartFileVarCatalog.py
@@ -194,31 +194,33 @@
     # words rather than the whole value.
 
     e("hgPcrResult_<db>", "screened", "hg/cgilib/pcrResult.c",
       "fileExists, lineFileOpen", ident="{cartVar}", screen="pair:hgPcrResult_",
       note="In-silico PCR results.  The value is two trash file names and an "
            "optional targetDb name, not one file name, which is why it needs an "
            "array of its own.  Found by the daily code review of the commit that "
            "wrote this catalog, not by the scan: pcrResultParseCart() chopLine()s "
            "the value into different locals before opening them, so no flow is "
            "harvested, and a name built at run time reads as {cartVar}, which the "
            "--suspects name test cannot recognize either.  hgPcr appends to both "
            "files when the user checks 'Append to existing PCR result', so an "
            "unscreened value was an arbitrary file write as well as a read.  Both "
            "names are checked at the point of use too, in pcrResultParseCart() "
            "and in hgPcr's pcrResultCartFiles().  hgPcrResult_targetStyle shares "
-           "the prefix and is a display setting, so cart.c excludes it by name."),
+           "the prefix and is a display setting, so cart.c excludes it by name.  So "
+           "is hgPcrResult_imgOrd, the track's place in the image after a drag, "
+           "because hgPcrResult is also the track name (#38442)."),
 
     # ---- either a URL or a file we made --------------------------------------
     # Screened against urlOrFileNameCartVars[] with isServerUserFileOrUrl(),
     # because isServerUserFilePath() alone would reject every legitimate URL.
 
     e("multiRegionsBedUrl", "screened", "hg/hgTracks/config.c",
       "fileExists, lineFileMayOpen", screen="urlOrFile:multiRegionsBedUrl",
       note="Multi-region custom BED: either a URL the user gave, or the trash "
            "file hgTracks wrote the pasted BED to (hgTracks.c:4357).  The code "
            "picks the branch by looking for '://', so a value with no protocol "
            "falls through to opening a local file.  config.c prints what it "
            "reads back into the multi-region textarea, so an unscreened value "
            "was a file read the user could see.  Both local-file branches now "
            "check the path as well."),