Conversation
|
Warning Review limit reachedNext included review available in 10 minutes. View limit detailsLimit 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. Review configuration: ⚙️ Run configurationConfiguration used: Repository: jmrplens/gitlab-mcp-server/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (16)
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. Comment |
jmrplens
added this pull request to stack #863
September 20, 2026 10:16
jmrplens
force-pushed
the
plan-l13
branch
2 times, most recently
from
September 20, 2026 14:43
07e1c20 to
fbe40ce
Compare
jmrplens
removed this pull request from stack #863
September 20, 2026 19:40
jmrplens
added this pull request to stack #866
September 20, 2026 19:40
The `RelatedActions` of an `ActionSpec` are written against the whole catalog, and every session is served a narrower one. Nothing reconciled the two, so a Free instance was handed cross-links to Premium actions it does not serve, and an `--exclude-tools` deployment links to actions it had removed. Following one answers "unknown action" plus near-miss suggestions, which reads as a spelling correction and teaches a model the capability is absent, the same misdiagnosis `withheldActionMessage` already exists to prevent. The number in the plan, 114 ids in 28 packages, is a count of every licensed-only id named from anywhere at Ultimate, and most of those vanish with the licensed action that names them. Measured on the Free catalog the harm is four links in three packages, all of them Free actions naming Premium siblings: `group.group_milestone_merge_requests` to `group.group_milestone_burndown`, `merge_request.approval_config` and `merge_request.approval_reset` to `merge_request.approval_rules` and `approval_state`, and `project.mirror_list` to `project.pull_mirror_get`. The two examples the plan cites, `merge_request.dependencies_list` and `project.approval_rule_create`, are named only by licensed siblings and are not among them. `Registry.publishedRelatedActions` decides by what following the link would answer, which is the only thing that costs a model anything. A link that resolves is published under its canonical id, whatever spelling it was written in. A link a filter withheld is kept, because asking for that one produces the narrowing and its remedy rather than a typo correction, and dropping it would leave a model concluding the server cannot do it at all. A link that is neither is dropped: the tier filter runs before the catalog is built and so never reaches the withheld lists, and naming an excluded tool would contradict the exclusion as well as mislead. Find, describe and the catalog search all publish the same list. The second half is the spelling. 60 related entries in `runners` and `runnercontrollers` named individual tool names, which resolve for `gitlab_execute_action` because the decoration makes the tool name an alias, and which `gitlab_find_action` lists under no name at all. They are canonical action ids now, declared beside the ids the Markdown hints already use and covered by the same test, and the two packages' own cross-link tests check the ids rather than the tool names. `cmd/audit_action_ids` settles the question its doc.go deferred to "the layer that fixes the cross-links". An alias is judged by where it is written: in a `RelatedActions` entry or a `HintAction` argument it is a finding with the canonical id named beside it as the fix, and in a `Usage` line or a description it stays reported apart, because naming an alias can be the substance of the sentence. `issue.update`'s usage says that dynamic execute also accepts `issue.close` and `issue.reopen`, which is true and useful and would be a defect under one rule for both. The tree reports zero findings under the new rule and the two prose aliases apart. The work list is schema version 2, since the field set is unchanged and the counts are not. Two shapes had to keep the audit's eyes. Its walker cannot fold a list a projection narrows, so its pass-through rule now accepts a call handed the value an ID list hangs off as well as one handed the list, with the negative half pinned by a fixture. And `resetScopedRegTokenEntry` takes each sibling as two plain strings whose id halves keep the "related" prefix, because the walker folds a helper's arguments back to the constants its callers pass and follows a parameter out to its callers only when the parameter's name says it carries action ids; tidied into a struct, those two cross-links leave the audit's sight. The semantic half of the same finding is recorded rather than gated. Whether `snippet.get` is the right snippet is a claim about the object an action reaches, which no set of names carries, so it is a review and doc.go now says so instead of leaving it open. `docs/development/testing/testing.md` would move: the dynamic package gains three test functions, 269 to 272, and the total 9758 to 9761. No golden snapshot, llms file or manifest moves, since no served description changed and no committed artifact carries related actions. (cherry picked from commit c72a1a029b0f64256f8bcb07cb4b260b6c50aab1)
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



The
RelatedActionsof anActionSpecare written against the whole catalog, and every session is served a narrower one. Nothing reconciled the two, so a Free instance was handed cross-links to Premium actions it does not serve, and an--exclude-toolsdeployment links to actions it had removed. Following one answers "unknown action" plus near-miss suggestions, which reads as a spelling correction and teaches a model the capability is absent, the same misdiagnosiswithheldActionMessagealready exists to prevent.The number in the plan, 114 ids in 28 packages, is a count of every licensed-only id named from anywhere at Ultimate, and most of those vanish with the licensed action that names them. Measured on the Free catalog the harm is four links in three packages, all of them Free actions naming Premium siblings:
group.group_milestone_merge_requeststogroup.group_milestone_burndown,merge_request.approval_configandmerge_request.approval_resettomerge_request.approval_rulesandapproval_state, andproject.mirror_listtoproject.pull_mirror_get. The two examples the plan cites,merge_request.dependencies_listandproject.approval_rule_create, are named only by licensed siblings and are not among them.Registry.publishedRelatedActionsdecides by what following the link would answer, which is the only thing that costs a model anything. A link that resolves is published under its canonical id, whatever spelling it was written in. A link a filter withheld is kept, because asking for that one produces the narrowing and its remedy rather than a typo correction, and dropping it would leave a model concluding the server cannot do it at all. A link that is neither is dropped: the tier filter runs before the catalog is built and so never reaches the withheld lists, and naming an excluded tool would contradict the exclusion as well as mislead. Find, describe and the catalog search all publish the same list.The second half is the spelling. 60 related entries in
runnersandrunnercontrollersnamed individual tool names, which resolve forgitlab_execute_actionbecause the decoration makes the tool name an alias, and whichgitlab_find_actionlists under no name at all. They are canonical action ids now, declared beside the ids the Markdown hints already use and covered by the same test, and the two packages' own cross-link tests check the ids rather than the tool names.cmd/audit_action_idssettles the question its doc.go deferred to "the layer that fixes the cross-links". An alias is judged by where it is written: in aRelatedActionsentry or aHintActionargument it is a finding with the canonical id named beside it as the fix, and in aUsageline or a description it stays reported apart, because naming an alias can be the substance of the sentence.issue.update's usage says that dynamic execute also acceptsissue.closeandissue.reopen, which is true and useful and would be a defect under one rule for both. The tree reports zero findings under the new rule and the two prose aliases apart. The work list is schema version 2, since the field set is unchanged and the counts are not.Two shapes had to keep the audit's eyes. Its walker cannot fold a list a projection narrows, so its pass-through rule now accepts a call handed the value an ID list hangs off as well as one handed the list, with the negative half pinned by a fixture. And
resetScopedRegTokenEntrytakes each sibling as two plain strings whose id halves keep the "related" prefix, because the walker folds a helper's arguments back to the constants its callers pass and follows a parameter out to its callers only when the parameter's name says it carries action ids; tidied into a struct, those two cross-links leave the audit's sight.The semantic half of the same finding is recorded rather than gated. Whether
snippet.getis the right snippet is a claim about the object an action reaches, which no set of names carries, so it is a review and doc.go now says so instead of leaving it open.docs/development/testing/testing.mdwould move: the dynamic package gains three test functions, 269 to 272, and the total 9758 to 9761. No golden snapshot, llms file or manifest moves, since no served description changed and no committed artifact carries related actions.(cherry picked from commit c72a1a029b0f64256f8bcb07cb4b260b6c50aab1)