Skip to content

docs: add COMPATIBILITY.md - #218

Merged
wisdommen merged 3 commits into
alphafrom
docs/compatibility-policy
Aug 10, 2026
Merged

docs: add COMPATIBILITY.md#218
wisdommen merged 3 commits into
alphafrom
docs/compatibility-policy

Conversation

@wisdommen

Copy link
Copy Markdown
Contributor

What

新增仓库根的 COMPATIBILITY.md

Why

本仓库此前没有任何书面的版本或废弃契约:32 处 @Deprecated 中仅 4 处带
since/forRemoval,且全部写 since="6.2.0"、无一指明移除版本;没有 CHANGELOG;
README 的 Gradle 片段用 implementation 而 Maven 片段用 provided,两者自相矛盾。
17 个下游仓库面对的是一个「全部 public、全部同等稳定、零机器检查」的表面。

本文件记录三件事:实际在用的版本号语义、6.3.0 的移除清单及其实测依据、
AbstractCommandExecutor 的迁移指引与移除预告。

Notes

  • 移除清单中的每一项都附有 2026-08-10 对 Modules/ 下 17 个独立下游 Git 仓库的
    引用量实测(其中 15 个是继承 UltiToolsPlugin 的插件模块)。
  • AbstractCommandExecutor 是唯一有真实下游用户的废弃类型(实测 14 个文件,
    集中在 5 个仓库),它的移除预告同时是给仓库外第三方模块的唯一通知渠道。
  • 迁移指引明确列出新基类两个已知缺口各自的排期(format="" 在 6.2.5、
    参数级 tab 补全在 6.3.0),并提示只等到 6.2.5 就迁移会静默丢失补全。
  • 不改任何产品代码。

🤖 Generated with Claude Code

https://claude.ai/code/session_01J9hmZrywjj8deHYraePCkZ

Records the version-number semantics actually in use (product-stage signal
rather than strict semver), the 6.3.0 removal list with the measured
downstream-reference evidence behind each entry, and a migration guide for
AbstractCommandExecutor — the only deprecated type with real downstream users.

Also corrects the dependency-scope guidance: the published POM carries no
dependencies after flatten-maven-plugin, so consumers must use provided /
compileOnly or they shade the entire framework into their own JAR.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9hmZrywjj8deHYraePCkZ
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 0ecebb52-eb4a-46e1-a923-2889318c034c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@codacy-production

codacy-production Bot commented Aug 10, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Coverage ∅ diff coverage · +0.00% coverage variation

Metric Results
Coverage variation +0.00% coverage variation (-1.00%)
Diff coverage diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (9b0a961) 10908 7221 66.20%
Head commit (9048c21) 10908 (+0) 7221 (+0) 66.20% (+0.00%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#218) 0 0 ∅ (not applicable)

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fdcbe4843d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread COMPATIBILITY.md

1. 改继承:`extends AbstractCommandExecutor` → `extends BaseCommandExecutor`。
2. 实现新增的抽象方法 `protected void handleHelp(CommandSender sender)`。
3. `@CmdMapping` / `@CmdParam` / `@CmdTarget` / `@CmdCD` / `@UsageLimit` 语义不变。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Document the changed cooldown scope before migration

For executors containing multiple @CmdCD methods, the annotation semantics are not unchanged: AbstractCommandExecutor.checkCD blocks every command in that executor while the player has any active cooldown, whereas CooldownValidator keys cooldowns by method.toString() and therefore only blocks the same method. Following this migration guide can silently weaken cross-command throttling, so either preserve the legacy behavior or document this difference here.

Useful? React with 👍 / 👎.

wisdommen and others added 2 commits August 10, 2026 22:53
The MINOR policy contradicted this file's own removal notice. It promised
that minor releases only drop types with zero measured downstream references,
while a later section announces the removal of AbstractCommandExecutor — which
has 14 — in 6.3.0. A third-party author reading only the version-semantics
section would conclude a minor release cannot break them. It now states both
cases explicitly, with the conditions attached to the second.

The migration-timing advice was unexecutable for the readers it named. It told
third parties to wait for both known gaps to ship, but the second lands in the
same release that removes the old base class, leaving them no transition window
at all. It now separates the two audiences and states the tradeoff.

The dependency-scope warning overstated its mechanism: with no shade step,
compile scope does not bundle anything. The conclusion was right, the reason
was not — now qualified to builds that shade or shadow.

Finally, "Modules/" is a maintainer-local directory name that means nothing to
a public reader; replaced with the organization-level description.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9hmZrywjj8deHYraePCkZ
The table's parenthetical said the fix is scheduled 'before the migration',
but the section below tells third parties to migrate in 6.2.5 — earlier than
this fix. The two sentences meant different migrations. Now says explicitly
that it precedes the maintainer-run migration of the 17 in-org repositories.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9hmZrywjj8deHYraePCkZ

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 44d2f73a45

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread COMPATIBILITY.md

1. 改继承:`extends AbstractCommandExecutor` → `extends BaseCommandExecutor`。
2. 实现新增的抽象方法 `protected void handleHelp(CommandSender sender)`。
3. `@CmdMapping` / `@CmdParam` / `@CmdTarget` / `@CmdCD` / `@UsageLimit` 语义不变。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Document the changed CmdTarget precedence

When an executor has both class- and method-level @CmdTarget annotations, migration changes their composition: legacy onCommand requires both checkSender calls to pass, while SenderTypeValidator.determineTargetType returns the method annotation instead of applying the class restriction. For example, a method marked BOTH inside a PLAYER executor becomes console-callable after migration, contrary to the claim that the semantics are unchanged; document this override behavior or preserve the legacy restriction.

Useful? React with 👍 / 👎.

Comment thread COMPATIBILITY.md

1. 改继承:`extends AbstractCommandExecutor` → `extends BaseCommandExecutor`。
2. 实现新增的抽象方法 `protected void handleHelp(CommandSender sender)`。
3. `@CmdMapping` / `@CmdParam` / `@CmdTarget` / `@CmdCD` / `@UsageLimit` 语义不变。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Document the changed UsageLimit scope

For a method using @UsageLimit(ALL) that is invoked concurrently by different players, the legacy checkLock/serverLock implementation indexes the lock by player UUID and therefore only rejects re-entry from the same player, whereas UsageLockValidator indexes server-wide locks by method key and rejects every other player. This observable concurrency change can make migrated commands unavailable while another player runs them, so the guide should not state that @UsageLimit semantics are unchanged.

Useful? React with 👍 / 👎.

@wisdommen
wisdommen merged commit 72cdfa4 into alpha Aug 10, 2026
9 checks passed
@wisdommen
wisdommen deleted the docs/compatibility-policy branch August 10, 2026 22:18
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.

1 participant