API 兼容性治理策略
维护公共 API、兼容边界与迁移约定。
浏览全部手册
本页目录
文档来源与 Markdown 原文
权威正文:ineed-core/docs/core/api-compatibility-policy.md。网站按工作区快照同步,原文中的历史日期和验证范围保留。
开始编码前核对同版本源码;跨仓文件引用可在源码定位目录查找。
下载 Markdown 原文 ↓本策略用于管理 Ineed Java 框架中的公开废弃 API。目标不是“看到 @Deprecated 就删除”,而是让每个兼容入口都有明确替代项、负责人、引用证据和可复查期限。
当前事实清单由 Phase 53.4 的 53.4-deprecated-api-registry.json 维护,并由 53.4-compatibility-gate.mjs 从生产 Java 源码重建和校验。
扫描边界
Gate 扫描以下五个逻辑根:
java/ineed-corejava/ineed-parentjava/ineed-modules-parentjava/ineed-project-parentjava/ineed-modules
扫描排除 .git、.worktrees、target 和 src/test 中的 @Deprecated 声明。接口声明和实现类 override 按包名、声明类型、方法名及参数类型生成稳定 ID;override 只作为声明项的证据,不另计公开 API。
状态机
公开废弃 API 只能处于以下状态之一:
retained_external_compatibility:外部源码或二进制兼容 fixture 仍要求保留。retained_active_usage:生产或测试仍存在活跃引用。qualified_removal:满足全部移除前置条件,可进入最窄删除变更。removed:源码声明已经删除,并保留历史治理记录。
新增 @Deprecated 时必须在同一变更中登记 replacement、迁移步骤、owner、证据命令、review_on 和 removal_not_before。未知声明、重复 ID、wildcard 路径、缺失日期或未绑定 source HEAD 都会使 gate 失败。
保留与复查
review_on 是下一次强制复查日期,不是自动删除日期;到期后必须重新扫描引用和 compatibility fixture,并更新分类或下一次复查安排。removal_not_before 是允许移除的最早日期,必须晚于或等于 review_on。
保留项必须持续满足:
- replacement 在当前生产源码中真实存在;
- 迁移步骤能把调用方带到精确 replacement,而不是只给模糊说明;
- owner 对兼容成本和消费方迁移负责;
- evidence command 使用结构化 executable/argv 和精确路径,不使用 glob 或 shell command string;
- source 路径、行号和所属仓库 HEAD 与当前 inventory 一致。
删除前置条件
只有同时满足以下四项,registry 才能把条目标记为 qualified_removal:
- Replacement exists:replacement 已在生产源码中存在并可被调用。
- Zero live references:生产引用和普通测试引用均为零;不能只运行一次宽泛 grep 就宣称安全。
- Compatibility fixture cleared:外部/legacy consumer compile fixture 已删除、替代或明确证明不再要求旧入口。
- Targeted regression passes:最窄 consumer compile 与目标 Maven regression 全部通过。
满足四项后仍必须遵守 removal_not_before。实际删除应作为单独、可回滚的变更,重新运行 registry/source 双向校验,并检查源码兼容与二进制兼容影响。方法签名、默认方法、继承关系或异常类型的改变,即使仓库内引用为零,也可能破坏已编译的外部消费方。
Nginx 兼容记录的历史示例
以下是现有治理记录的历史条目,用于说明登记字段;不是随 Core 文档发布而更新的业务模块当前状态。执行 Operations 迁移前,重新读取所属仓库与登记表的当前证据。
NginxCommandExecutor.test(NginxDiscoveryRequest) 当前分类为 retained_external_compatibility:
- replacement:
test(NginxConfigValidationRequest); - 迁移方式:调用方提供精确 revision/config artifact,再构造 exact validation request;
- owner:Operations Nginx;
review_on:2026-10-31;removal_not_before:2026-12-31;- 阻塞原因:
NginxConfigLifecycleTest仍编译 legacy-only implementor,证明旧方法继续承担外部源码兼容。
该记录当时未满足移除条件。实际是否允许删除必须重新验证引用、兼容 fixture 和时间约束,不能直接用这段历史摘要作决定。
与 Scalar/OpenAPI 文档治理的边界
本 registry 只管理 Java 生产 @Deprecated API。Scalar/OpenAPI 文档路径、operation summary、schema 或消费者契约由独立的 API documentation contract 管理,不能把文档状态混入本清单,也不能用本清单替代文档契约验证。
仍有疑问?按反馈清单整理复现信息 →