89d738beff2c63765e2b6b4bc89412c621246b33
max
  Thu Sep 3 12:25:02 2026 -0700
snapshotSession: rename the snapshot "reaper" to "cleaner"

Renames the snapshotReaper utility to snapshotCleaner and drops the word
"reap" from the API and comments (snapshotReapAnon -> snapshotCleanAnon, and
the doc/usage text now say clean/cleaned/cleaner).  No behavior change.

refs #38197

diff --git src/hg/hgSession/hgSession.c src/hg/hgSession/hgSession.c
index e1090c0afc0..e7babde692a 100644
--- src/hg/hgSession/hgSession.c
+++ src/hg/hgSession/hgSession.c
@@ -1129,33 +1129,33 @@
         snapName = cgiEncodeFull(sessionName);
     else
         snapName = catTwoStrings(snapshotNamePrefix, cgiEncodeFull(sessionName));
     saveSnapshotSession(conn, snapshotType, snapUser, snapName, cart);
     char *snapDecoded = cgiDecodeClone(snapName);
     saveSessionJsonResult(conn, snapUser, snapName, snapDecoded);
     return;
     }
 
 char *encUserName = NULL;
 char *encSessionName = NULL;
 if (anon)
     {
     encUserName = "l";                    /* reserved anonymous user -> short link /s/l/<token> */
     /* Every anonymous share uses the shared snapshot naming: a server-generated, guaranteed-unique
-     * "__"-token, so tokens never collide/overwrite and the reaper can garbage-collect abandoned
+     * "__"-token, so tokens never collide/overwrite and the snapshot cleaner can remove abandoned
      * ones.  The top-right Share dialog passes a name it just reserved (for its live preview); we
-     * force the "__" prefix either way so the link stays reap-eligible. */
+     * force the "__" prefix either way so the link stays eligible for cleaning. */
     if (isEmpty(sessionName))
         encSessionName = snapshotNewName(conn, encUserName);
     else if (startsWith(snapshotNamePrefix, sessionName))
         encSessionName = cgiEncodeFull(sessionName);
     else
         encSessionName = catTwoStrings(snapshotNamePrefix, cgiEncodeFull(sessionName));
     sessionName = cgiDecodeClone(encSessionName);   // keep decoded name in sync for the JSON result
     }
 else
     {
     /* Logged-in callers always supply a name: the caller either typed one or generated a random
      * internal "_XXXXXXXX" name client-side (sessRandomShareName in hgSession.js, shared by the
      * top-right "Share a link" menu in topLinks.js), so we no longer auto-name here. */
     if (isEmpty(sessionName))
         {