docs: correct enum-rename slugs in 2026-03-28 changelog#3391
Conversation
PR #2941 published a "Tool consolidation and improved enum naming" entry on 2026-03-28, but the listed enum-rename pairs do not match the actual class-name-derived slugs from the Mercury PR that delivered the renames (composio-mercury #17949, commit 12d585aa7e). Slug formation: enum = TOOLKIT + "_" + inflection.underscore(cls.__name__).upper() (driven by class name, not file name and not the `name` attribute). Audit of the 347 pairs originally listed found: - 291 correct - 1 wrong New Enum (Supabase) - 5 fabricated entries (old class never existed) - 30 entries claiming a rename that never happened (old class still present at HEAD with original slug — e.g. SLACK_DELETE_MESSAGE, the eight PIPEDRIVE_*A_* entries, 14 other Slack entries) - 20 entries belong to other PRs or were tool removals, not renames It also omitted 1,217 real renames from PR #17949, including all of PostHog (179), Trello (63), Salesforce (48), Vercel (39), Twitter (35), Google Analytics (25), Dropbox (18), and 7 smaller toolkits. This change replaces the "Renamed enum slugs" section with the full, verified rename table derived from the actual class renames in mercury PR #17949: 1,509 entries across 37 toolkits.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @venkat82's task in 4m 34s —— View job ReviewI checked the PR against
Verdict: Looks good. The rewrite addresses the only kind of issue this changelog can mislead developers about: an What I verified
Non-blocking observations
|
…lugs to HEAD
Spot-check audit on the v1 of this PR found two systemic issues with
the verbatim PR #17949 rename list:
1. **64 entries (Stripe ×37, Shopify ×18, Salesforce ×7, Pipedrive
×1, Attio ×1) point to actions that were *removed* by mercury PR
#18496 ("remove 420 and deprecate 23 verified duplicate actions").**
Listing them as renames is misleading — neither the Old Enum nor the
New Enum exists today. Their replacement actions are documented in
the existing "Deprecated tools" / "Consolidated (removed) tools"
sections, so removing the rename rows is the correct fix.
2. **11 entries had New Enum slugs that no longer match HEAD** because
mercury PR #16700 ("shorten action class names to comply with
60-char enum limit") and a few subsequent scope/migration PRs
further renamed those classes. Slugs are derived from the action
class name, so the slug listed here was correct as of #17949 but
stale today.
Aligned to HEAD:
- GITHUB_CHECK_IF_PERSON_IS_FOLLOWED_BY_AUTHENTICATED_USER →
GITHUB_CHECK_PERSON_FOLLOWED_BY_AUTH_USER
- GITHUB_EXPORT_REPOSITORY_SBOM → GITHUB_EXPORT_SBOM_FOR_REPO
- GITHUB_LIST_DEPLOYMENT_PROTECTION_RULES_FOR_AN_ENVIRONMENT →
GITHUB_GET_ALL_DEPLOYMENT_PROTECTION_RULES_FOR_ENV
- OUTLOOK_DELETE_ME_MAIL_FOLDERS_CHILD_FOLDERS_MESSAGES_EXTENSIONS →
OUTLOOK_DELETE_USER_MAIL_CHILD_FOLDER_MSG_EXT
- HUBSPOT_RESTORE_MARKETING_EMAIL_REVISION_TO_DRAFT →
HUBSPOT_RESTORE_EMAIL_REVISION
- BOX_LIST_LEGAL_HOLD_POLICY_ASSIGNMENT_PREVIOUS_FILE_VERSIONS →
BOX_LIST_HOLD_FILE_VERSIONS
- BOX_UPDATE_SHIELD_INFORMATION_BARRIER_SEGMENT →
BOX_UPDATE_BARRIER_SEGMENT
- GOOGLEDRIVE_GET_PROPERTY → GOOGLEDRIVE_GET_FILE_PROPERTY
- GOOGLEDRIVE_LIST_PROPERTIES → GOOGLEDRIVE_LIST_FILE_PROPERTIES
- GOOGLEDRIVE_UPDATE_PROPERTY → GOOGLEDRIVE_UPDATE_FILE_PROPERTY
- POSTHOG_CREATE_PROJECT_FUNNEL_INSIGHT →
POSTHOG_PROJECT_FUNNEL_ADVANCED_ANALYTICS
Verification: an exhaustive sweep over the resulting 1,445 entries
finds 100% of New Enum slugs match `inflection.underscore(cls.__name__).upper()`
of the action class at the file's HEAD. The descriptive count "1,509
enum slugs across 37 toolkits" was updated to "1,445" accordingly.
|
Claude finished @venkat82's task in 4m 4s —— View job Review (re-run after
|
A second-pass spot-check found 27 entries where the action class has
an explicit `enum = "..."` override that truncates the slug to 60
characters (added by mercury PR #16700, "shorten action class names
to comply with 60-char enum limit"). The previous revisions of this
PR computed slugs purely from class names, producing strings longer
than 60 chars that don't exist in the registry.
Slug formation rule (from `mercury/tools/_base/action.py`):
enum = obj.__dict__.get("enum", inflection.underscore(cls).upper())
The override wins when present. So for these 27 entries the New Enum
listed here was wrong by 2-26 characters compared to runtime — e.g.
GITHUB_LIST_ORGANIZATION_MEMBERSHIPS_FOR_THE_AUTHENTICATED_USER (62
chars) doesn't exist; the registered slug is the 60-char truncation
GITHUB_LIST_ORGANIZATION_MEMBERSHIPS_FOR_THE_AUTHENTICATED_U.
Fixed entries (toolkit ×count):
- Trello ×22 (most affected — every long board/member/org slug was capped)
- Shopify ×2, GitHub ×1, HubSpot ×0 (none kept; one removed already),
Outlook ×1, PostHog ×1
Verification: re-ran the exhaustive sweep using a slug resolver that
checks for `enum=` overrides first, then falls back to class name. All
1,445 entries now match runtime slugs at HEAD.
|
Claude finished @venkat82's task in 3m 43s —— View job Review (re-run after
|
palash-c
left a comment
There was a problem hiding this comment.
I am unsure of the detailed context here on what's the true tool slugs, but this is an improvement on something broken, hence approving
Summary
Follow-up to #2941. The "Renamed enum slugs" section of the 2026-03-28 changelog (
docs/content/changelog/03-28-26-tool-consolidation-enum-renames.mdx) lists 347 Old Enum → New Enum pairs that don't line up with the actual class-name-derived slugs delivered by mercury PR #17949 (commit12d585aa7e, "fix: rename low-usage action class names to cleaner slugs"). This PR replaces that section with the verified table.How slugs are formed
Slug is derived from the class name of the action, not the file name and not the
nameattribute. (Source:mercury/tools/_base/action.pyset_metadata/set_tool.)Audit results vs. existing docs section
Notable corrections
SUPABASE_UPDATES_PROJECT_S_SUPAVISOR_CONFIG→ docs saidSUPABASE_UPDATE_SUPAVISOR_CONFIG; actual isSUPABASE_UPDATE_PROJECT_SUPAVISOR_CONFIG(classUpdateProjectSupavisorConfigatapps/supabase/actions/generated/updates_project_s_supavisor_config.py).SLACK_DELETE_MESSAGEis not a real slug. The chat-deletion action is classDeletesAMessageFromAChat, slugSLACK_DELETES_A_MESSAGE_FROM_A_CHAT. Removed from the table.PIPEDRIVE_*A_*entries (ADD_A_DEAL,ADD_A_NOTE,DELETE_A_PERSON,GET_DETAILS_OF_A_PERSON,LIST_PARTICIPANTS_OF_A_DEAL,UPDATE_A_DEAL,UPDATE_A_LEAD,UPDATE_A_PERSON) still exist at HEAD with their original slugs — removed from the renames table.SLACK_FETCH_TEAM_INFO→SLACK_GET_TEAM_INFO) were never executed; class names still match the original slug. Removed.Front-matter description / intro paragraphs
Updated count from "1,545 enum slugs across 24 toolkits" → "1,509 enum slugs across 37 toolkits" to match the rewritten table.
Out of scope
This PR does not change the "Deprecated tools" or "Consolidated (removed) tools" sections — those describe a different consolidation effort and are unrelated to the class-rename audit.
Test plan
mercury(apps/<toolkit>/actions/) to confirminflection.underscore(cls.__name__).upper()matches the listed New Enum.<Accordions>...</Accordions>block renders correctly ondocs.composio.devpreview.