Skip to content

Resolve a legacy action spelling from the group that owns it - #848

Merged
jmrplens merged 1 commit into
plan-l10from
plan-l12
Sep 20, 2026
Merged

jmrplens merged 1 commit into
plan-l10from
plan-l12

Conversation

@jmrplens

@jmrplens jmrplens commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

toolutil kept a second alias table beside the meta dispatcher, keyed by legacy spelling and valued by canonical ID. A catalog group's route map is keyed by bare action names, so every dotted value in that table could never be found: about ninety of its ninety-three entries were unreachable, and milestone.get was listed there while resolving on no surface at all.

The live table is internal/tools/actioncompat, already projected into every ActionSpec's compatibility policy, already refused per group when two actions claim one spelling, and already what the dynamic surface resolves against. The catalog now carries each action's historical spellings on its route, the way it already carries the embedded resource template and the content kind, and NormalizeActionAlias answers out of the group's own routes. A spelling the tool already routes still runs its own handler, which is the guard that stopped group_board_list reaching the epic boards.

The eleven spellings the dead table held and actioncompat did not are added there with their canonical IDs: badge.add, hook.add, the five milestone reads and writes, group.custom_emoji_list, me, and the two unqualified epic discussion note spellings. me is unsearchable, since an ordinary English pronoun would rank half the catalog.

A new test drives all 174 aliases through the dispatcher's resolver against the group that owns each canonical action, because a table nothing can reach reads as coverage. The unit test it replaces fabricated routes keyed by dotted IDs, which no group produces, so it asserted a rewrite the server could never perform.

(cherry picked from commit 48d4815a1d9ed0f1c928d946ff5c99a7169c92df)

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry @jmrplens, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 10 hours and 47 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 10 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: jmrplens/gitlab-mcp-server/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 91703b59-b6b1-4031-8c56-2fee1465b612

📥 Commits

Reviewing files that changed from the base of the PR and between d6a1b9f and ae0897b.

📒 Files selected for processing (6)
  • internal/tools/actioncatalog/action_spec.go
  • internal/tools/actioncompat/action_aliases.go
  • internal/tools/meta_tool_test.go
  • internal/toolutil/meta_schema.go
  • internal/toolutil/meta_tool.go
  • internal/toolutil/meta_tool_test.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jmrplens
jmrplens added this pull request to stack #863 September 20, 2026 10:16
@jmrplens jmrplens added this to the 3.1.0 milestone Sep 20, 2026
@github-actions github-actions Bot added the v3.1.0 Targeted at the 3.1.0 release label Sep 20, 2026
@jmrplens
jmrplens force-pushed the plan-l12 branch 2 times, most recently from cf816b4 to dc7e43b Compare September 20, 2026 14:43
@jmrplens
jmrplens removed this pull request from stack #863 September 20, 2026 19:40
@jmrplens
jmrplens added this pull request to stack #866 September 20, 2026 19:40
toolutil kept a second alias table beside the meta dispatcher, keyed by
legacy spelling and valued by canonical ID. A catalog group's route map
is keyed by bare action names, so every dotted value in that table could
never be found: about ninety of its ninety-three entries were
unreachable, and `milestone.get` was listed there while resolving on no
surface at all.

The live table is `internal/tools/actioncompat`, already projected into
every ActionSpec's compatibility policy, already refused per group when
two actions claim one spelling, and already what the dynamic surface
resolves against. The catalog now carries each action's historical
spellings on its route, the way it already carries the embedded resource
template and the content kind, and NormalizeActionAlias answers out of
the group's own routes. A spelling the tool already routes still runs its
own handler, which is the guard that stopped group_board_list reaching
the epic boards.

The eleven spellings the dead table held and actioncompat did not are
added there with their canonical IDs: badge.add, hook.add, the five
milestone reads and writes, group.custom_emoji_list, me, and the two
unqualified epic discussion note spellings. `me` is unsearchable, since
an ordinary English pronoun would rank half the catalog.

A new test drives all 174 aliases through the dispatcher's resolver
against the group that owns each canonical action, because a table
nothing can reach reads as coverage. The unit test it replaces
fabricated routes keyed by dotted IDs, which no group produces, so it
asserted a rewrite the server could never perform.

(cherry picked from commit 48d4815a1d9ed0f1c928d946ff5c99a7169c92df)
@sonarqubecloud

Copy link
Copy Markdown

@jmrplens
jmrplens merged commit 1337f43 into main Sep 20, 2026
60 of 68 checks passed
@jmrplens
jmrplens deleted the plan-l12 branch September 20, 2026 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v3.1.0 Targeted at the 3.1.0 release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant