Skip to content

docs: correct enum-rename slugs in 2026-03-28 changelog#3391

Open
venkat82 wants to merge 3 commits into
nextfrom
docs/fix-pr17949-enum-renames
Open

docs: correct enum-rename slugs in 2026-03-28 changelog#3391
venkat82 wants to merge 3 commits into
nextfrom
docs/fix-pr17949-enum-renames

Conversation

@venkat82
Copy link
Copy Markdown
Contributor

@venkat82 venkat82 commented May 9, 2026

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 (commit 12d585aa7e, "fix: rename low-usage action class names to cleaner slugs"). This PR replaces that section with the verified table.

How slugs are formed

enum = inflection.underscore(cls.__name__).upper()
slug = enum if enum.startswith(TOOLKIT) else f"{TOOLKIT}_{enum}"

Slug is derived from the class name of the action, not the file name and not the name attribute. (Source: mercury/tools/_base/action.py set_metadata / set_tool.)

Audit results vs. existing docs section

Category Count
Original docs pairs that match PR #17949 exactly 291
Pairs with wrong New Enum (PR's actual new differs) 1
Pairs whose old class never existed in any commit 5
Pairs that refer to renames done in other PRs (or tool removals) 20
Pairs claiming a rename that never happened (old class still present at HEAD with original slug) 30
Real PR #17949 renames missing from docs 1,217
Total entries originally listed 347
Total entries in this rewrite 1,509

Notable corrections

  • SUPABASE_UPDATES_PROJECT_S_SUPAVISOR_CONFIG → docs said SUPABASE_UPDATE_SUPAVISOR_CONFIG; actual is SUPABASE_UPDATE_PROJECT_SUPAVISOR_CONFIG (class UpdateProjectSupavisorConfig at apps/supabase/actions/generated/updates_project_s_supavisor_config.py).
  • SLACK_DELETE_MESSAGE is not a real slug. The chat-deletion action is class DeletesAMessageFromAChat, slug SLACK_DELETES_A_MESSAGE_FROM_A_CHAT. Removed from the table.
  • All eight 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.
  • 14 Slack entries that claimed renames (e.g. SLACK_FETCH_TEAM_INFOSLACK_GET_TEAM_INFO) were never executed; class names still match the original slug. Removed.
  • Whole toolkits previously omitted that PR #17949 actually renamed: PostHog (179), Trello (63), Salesforce (48), Vercel (39), Twitter (35), Google Analytics (25), Dropbox (18), Icypeas (5), Reddit (2), YouTube (2), Apollo, Facebook, Hyperbrowser, Telegram (1 each).

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

  • Spot-check 10–20 random entries from the rewritten table against the actual class definition in mercury (apps/<toolkit>/actions/) to confirm inflection.underscore(cls.__name__).upper() matches the listed New Enum.
  • Confirm <Accordions>...</Accordions> block renders correctly on docs.composio.dev preview.
  • Confirm none of the 30 "rename never happened" entries listed in the audit show up in the new table.

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.
@venkat82 venkat82 requested a review from Sushmithamallesh as a code owner May 9, 2026 14:06
@vercel
Copy link
Copy Markdown

vercel Bot commented May 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment May 9, 2026 2:23pm

Request Review

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 9, 2026

Claude finished @venkat82's task in 4m 34s —— View job


Review

I checked the PR against docs/.claude/agents/docs-reviewer.md (the docs-reviewer prompt focuses on whether a developer copying from the docs would get stuck or be misled).

  • Read docs/.claude/agents/docs-reviewer.md review criteria
  • Run git diff origin/next...HEAD
  • Apply the review checklist
  • Post feedback

Verdict: Looks good. The rewrite addresses the only kind of issue this changelog can mislead developers about: an Old → New enum mapping that doesn't match what the SDK actually accepts. A few observations below — none blocking.

What I verified

  • Counts agree across the doc. Frontmatter description (1,509 enum slugs across 37 toolkits), the section-intro paragraph (1,509 ... across 37 toolkits), and the actual table all match: 37 Accordion blocks under ## Renamed enum slugs, summed (N renamed) titles = 1,509, and grep -c "^| \" = 1,509` inside that section.
  • MDX structure is sound. <Accordions> open/close = 3/3 and <Accordion> open/close = 72/72 across the file. No new components introduced — pure content change, so Twoslash/MDX build risk is minimal.
  • Frontmatter valid. title, description, date present; date is YYYY-MM-DD.
  • No duplicate Old enums and no duplicate New enums in the renames section. No row where the toolkit prefix on the Old side disagrees with the New side.
  • Spot-checked the explicit corrections from the PR description:
    • SUPABASE_UPDATES_PROJECT_S_SUPAVISOR_CONFIG → SUPABASE_UPDATE_PROJECT_SUPAVISOR_CONFIG — present (line 1380), prior wrong target removed.
    • SLACK_DELETE_MESSAGE and SLACK_DELETES_A_MESSAGE_FROM_A_CHAT — neither appears in the renames table.
    • SLACK_FETCH_TEAM_INFO, SLACK_GET_TEAM_INFO (and the other "rename never happened" Slack pairs) — not in the renames section.
    • The 8 PIPEDRIVE_*_A_* entries (ADD_A_DEAL, UPDATE_A_LEAD, etc.) called out as "still exist at HEAD" — none appear in the renames section.
    • New per-toolkit blocks called out in the description (PostHog 179, Trello 63, Salesforce 48, Vercel 39, Twitter 36, Google Analytics 25, Dropbox 18, Icypeas 5, Reddit 2, YouTube 2, Apollo/Facebook/Hyperbrowser/Telegram 1) — all present.
  • Intro examples still resolve. DELETE_A_GIST → DELETE_GIST, GET_A_CODESPACE_FOR_THE_AUTHENTICATED_USER → GET_CODESPACE, ADD_MEMBERS_FOR_PROJECT → ADD_MEMBERS_TO_PROJECT — all three still appear (with toolkit prefix) in the new tables.

Non-blocking observations

  1. Section intro slightly oversells "concise." The paragraph at line 358 says new slugs are "more concise and agent-friendly," but ~245 of the 1,509 entries (16%) actually lengthen the slug — concentrated in Stripe (59), Trello (32), Vercel (22), Shopify (19), Salesforce (19). The most extreme is TRELLO_UPDATE_CHECKLIST_ITEM_NAME_IN_CARD → TRELLO_UPDATE_CARDS_CHECKLISTS_CHECK_ITEMS_NAME_BY_ID_CARD_BY_ID_CHECKLIST_BY_ID_CHECK_ITEM (+50 chars). This is what mercury PR #17949 actually shipped (slug = inflection.underscore(cls.__name__).upper()), and the PR's job is to faithfully reflect that, so the data is correct. But softening "more concise" → "more consistent" / "follow class-name conventions" would make the framing match the data and not surprise developers who skim. Optional.

  2. Twitter count discrepancy in PR description vs. file. The PR body says "Twitter (35)"; the file says Twitter (36 renamed) and the count line up with the actual entries. The file is internally consistent — only the PR description is off by one. No fix needed in the doc.

  3. Out-of-scope, but flagging since I noticed it: the Deprecated tools section at line 197 still has PIPEDRIVE_ADD_A_NOTE → PIPEDRIVE_PIPEDRIVE_ADD_NOTE and PIPEDRIVE_GET_DETAILS_OF_A_PERSON → PIPEDRIVE_PIPEDRIVE_GET_PERSON (double-prefix on the right side). The PR explicitly excludes that section, so this is a pre-existing issue worth a follow-up PR — not a blocker here.
    · branch: docs/fix-pr17949-enum-renames

…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
Copy link
Copy Markdown
Contributor

claude Bot commented May 9, 2026

Claude finished @venkat82's task in 4m 4s —— View job


Review (re-run after 8dea37c)

I checked the PR against docs/.claude/agents/docs-reviewer.md (the docs-reviewer prompt focuses on whether a developer copying from the docs would get stuck or be misled). The new commit 8dea37c drops 64 rename rows whose target actions were later removed by mercury PR #18496, and re-aligns 11 stale slugs to match HEAD. Re-verifying the file at HEAD:

  • Read docs/.claude/agents/docs-reviewer.md review criteria
  • Run git diff origin/next...HEAD
  • Apply the review checklist
  • Post feedback

Verdict: Looks good. The latest commit cleanly addresses the only category of issue this changelog can mislead developers about — Old → New mappings whose New side doesn't match what the SDK accepts today. A few small notes; nothing blocking.

What I verified at HEAD

  • All counts agree across the doc. Frontmatter description (1,445 enum slugs across 37 toolkits), intro paragraph at line 358 (1,445 ... across 37 toolkits), 37 <Accordion> blocks under ## Renamed enum slugs, sum of (N renamed) titles = 1,445, and grep -c "^| \"` inside the section = 1,445.
  • MDX structure intact. <Accordions> open/close = 3/3, <Accordion> open/close = 72/72. Pure content change — no new components.
  • No duplicate Old enums and no duplicate New enums in the renames section.
  • The 64 dropped rows reconcile exactly with the commit message. Truly-dropped (i.e. removed and not re-added under reordering) per toolkit: Stripe 37, Shopify 18, Salesforce 7, Pipedrive 1, Attio 1 → total 64 = 1,509 − 1,445. ✓
  • All 11 HEAD-aligned slugs from the commit message are present at HEAD with the new target: GITHUB_CHECK_PERSON_FOLLOWED_BY_AUTH_USER, GITHUB_EXPORT_SBOM_FOR_REPO, GITHUB_GET_ALL_DEPLOYMENT_PROTECTION_RULES_FOR_ENV, OUTLOOK_DELETE_USER_MAIL_CHILD_FOLDER_MSG_EXT, HUBSPOT_RESTORE_EMAIL_REVISION, BOX_LIST_HOLD_FILE_VERSIONS, BOX_UPDATE_BARRIER_SEGMENT, GOOGLEDRIVE_GET_FILE_PROPERTY, GOOGLEDRIVE_LIST_FILE_PROPERTIES, GOOGLEDRIVE_UPDATE_FILE_PROPERTY, POSTHOG_PROJECT_FUNNEL_ADVANCED_ANALYTICS.
  • Intro examples still resolve. DELETE_A_GIST → DELETE_GIST, GET_A_CODESPACE_FOR_THE_AUTHENTICATED_USER → GET_CODESPACE, ADD_MEMBERS_FOR_PROJECT → ADD_MEMBERS_TO_PROJECT all appear (with toolkit prefix) in the rewritten tables.
  • Frontmatter valid. title, description, date (YYYY-MM-DD) all present.

Non-blocking observations (optional, won't mislead a developer)

  1. Section intro at line 358 says "more concise." Of the 1,445 entries, ~234 (16%) actually lengthen the slug — concentrated in Trello (32), Vercel (22), Salesforce (19), Shopify (~16), and a long tail. The data is still faithful to mercury PR #17949 (slug = inflection.underscore(cls.__name__).upper()), but more consistent / follow class-name conventions would match the data better than more concise. Same observation as my prior review; tighter now (since the heaviest verbose-to-verbose Stripe/Shopify rows were dropped) but still applies. Optional.

  2. PR description has Twitter (35); file has Twitter (36 renamed) with 36 actual entries. The file is internally consistent — only the PR description is off by one. No fix needed in the doc.

  3. Out of scope but flagging again for a follow-up PR: the Deprecated tools section at line ~197 still has PIPEDRIVE_ADD_A_NOTE → PIPEDRIVE_PIPEDRIVE_ADD_NOTE and PIPEDRIVE_GET_DETAILS_OF_A_PERSON → PIPEDRIVE_PIPEDRIVE_GET_PERSON (double PIPEDRIVE_ prefix on the right side). The PR explicitly excludes that section. Pre-existing — not a blocker here.

· branch: docs/fix-pr17949-enum-renames ·

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
Copy link
Copy Markdown
Contributor

claude Bot commented May 9, 2026

Claude finished @venkat82's task in 3m 43s —— View job


Review (re-run after 70be86c)

I checked the PR against docs/.claude/agents/docs-reviewer.md. The new commit truncates 27 New-Enum slugs to 60 characters to match mercury's enum= overrides from PR #16700. Re-verifying the file at HEAD:

  • Read docs/.claude/agents/docs-reviewer.md review criteria
  • Run git diff origin/next...HEAD
  • Apply the review checklist
  • Post feedback

Verdict: Looks good. The commit cleanly addresses the only category of issue this changelog can mislead developers about — Old → New mappings whose New side doesn't match what the SDK accepts today. None of the previously-noted blocking criteria fire.

What I verified at HEAD

  • All counts agree across the doc. Frontmatter description (1,445 enum slugs across 37 toolkits), intro paragraph at line 23, section-intro at line 358 (1,445 ... across 37 toolkits), 37 <Accordion> blocks under ## Renamed enum slugs, and per-toolkit count check passes — for every accordion, title="X (N renamed)" matches the actual row count exactly. Total rows in the section = 1,445. ✓
  • MDX structure intact. <Accordions> open/close = 3/3, <Accordion> open/close = 72/72. Pure content change.
  • No duplicate Old enums and no duplicate New enums in the renames section.
  • All 27 modifications in 70be86c produce New slugs of exactly 60 characters. Removed values ranged 45–91 chars; new values are uniformly 60. After this commit, no New Enum in the section exceeds 60 chars (29 entries are at 60; 2 of those were already at 60 by coincidence pre-commit).
  • Spot-checks all pass:
    • The 1 outlier removal in this commit (OUTLOOK_DELETE_USER_MAIL_CHILD_FOLDER_MSG_EXT, 45 chars — a manually-fabricated short slug rather than a >60-char overrun) is replaced with OUTLOOK_DELETE_ME_MAIL_FOLDERS_CHILD_FOLDERS_MESSAGES_EXTENS, which matches the USER→ME pattern on neighboring Outlook entries (e.g. OUTLOOK_DELETE_USER_EVENT_EXTENSION → OUTLOOK_DELETE_ME_EVENT_EXTENSION). Internally consistent. ✓
    • SUPABASE_UPDATES_PROJECT_S_SUPAVISOR_CONFIG → SUPABASE_UPDATE_PROJECT_SUPAVISOR_CONFIG still present at line 1324.
    • SLACK_DELETE_MESSAGE, SLACK_FETCH_TEAM_INFO, the 8 PIPEDRIVE_*_A_* entries — none appear in the renames section.
    • Intro examples DELETE_GIST, GET_CODESPACE, ADD_MEMBERS_TO_PROJECT all resolve to actual table rows (with toolkit prefix).
  • Frontmatter valid. title, description, date (YYYY-MM-DD) all present.

Non-blocking observations (carried over from prior reviews)

  1. Section intro at line 358 still says "more concise." ~234 of the 1,445 entries (16%) actually lengthen the slug — that's still true after this commit, and in fact 27 of the longer ones got even longer (60 chars). The data is faithful to mercury's runtime, but more consistent / follow class-name conventions would describe it more accurately. Optional. Fix this →

  2. PR description still says Twitter (35); file has Twitter (36 renamed) with 36 actual entries. File is internally consistent — only the PR body is off by one.

  3. Out of scope but flagging again: the Deprecated tools section at line ~197 still has the double-prefixed PIPEDRIVE_PIPEDRIVE_ADD_NOTE / PIPEDRIVE_PIPEDRIVE_GET_PERSON targets. Pre-existing, follow-up PR territory.

  4. Minor commit-message nit (not a doc issue): 70be86c's message says "27 entries truncated to 60 chars," but 26 of those are >60→60 truncations and one (the OUTLOOK row above) is a 45-char manually-fabricated slug being replaced with the real 60-char override. The change itself is correct; the framing in the commit message is just slightly broader than "truncated."

· branch: docs/fix-pr17949-enum-renames ·

Copy link
Copy Markdown
Contributor

@palash-c palash-c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants