You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discord rejects a global application-command sync above its 100-command cap (error 30032). Native commands are registered first and must remain highest priority. Previously, generated gateway built-ins were considered before explicit user plugin commands, so a full command catalog could silently omit a valid plugin command such as /krieger.
This reorders only the overflow tiers: after native commands, register explicit plugin commands before lower-priority generated built-ins. The existing conflict checks and the reserved final slot for the consolidated /skill command remain intact.
Tests
Added a deterministic cap regression that proves native commands, /krieger, and /skill all survive while the tree remains at or below 100 commands.
The regression fails on upstream main without this change (/krieger is absent) and passes with it.
Thanks for the focused Discord cap-priority fix. The premise is confirmed on current main: plugins/platforms/discord/adapter.py:5490-5507 registers generated COMMAND_REGISTRY commands before the plugin pass at :5528-5542, and both consume the shared slot_cap reserved at :5474-5479. A plugin can therefore be omitted once generated commands fill the budget.
The diff reverses only those two overflow passes, leaving native registrations before both passes and preserving the /skill reservation and registration at plugins/platforms/discord/adapter.py:5552-5555. Built-in-name conflicts remain rejected when plugin commands are registered (hermes_cli/plugins.py:581-590). The added regression directly covers the full-cap scenario and asserts that native commands, the plugin command, and /skill remain present.
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
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.
Summary
Discord rejects a global application-command sync above its 100-command cap (error 30032). Native commands are registered first and must remain highest priority. Previously, generated gateway built-ins were considered before explicit user plugin commands, so a full command catalog could silently omit a valid plugin command such as
/krieger.This reorders only the overflow tiers: after native commands, register explicit plugin commands before lower-priority generated built-ins. The existing conflict checks and the reserved final slot for the consolidated
/skillcommand remain intact.Tests
/krieger, and/skillall survive while the tree remains at or below 100 commands.mainwithout this change (/kriegeris absent) and passes with it.scripts/run_tests.sh tests/gateway/test_discord_slash_commands.py tests/gateway/test_discord_sync_limit.py tests/gateway/test_discord_plugin_setup.pypython3 -m py_compile plugins/platforms/discord/adapter.py tests/gateway/test_discord_slash_commands.pygit diff --checkNo managed-checkout cleanup or unrelated changes are included.