## 已确认问题 本轮依赖升级更新了根 POM 的 BouncyCastle 和 Tomcat 版本,但独立发布的 argi-bom 未同步。主仓 reactor 与通过 BOM 引入 ARGI 的普通消费者得到不同版本,主仓构建通过不能代表消费者使用了相同的依赖组合。 代码:https://github.com/agentic-ai-java/argi/blob/04c5686fe66b8daaa5d60190effa0cc1f40fdfe9/pom.xml#L109;https://github.com/agentic-ai-java/argi/blob/04c5686fe66b8daaa5d60190effa0cc1f40fdfe9/argi-bom/pom.xml#L74。 | 依赖族 | 根 POM | argi-bom | 无额外覆盖的消费者实际版本 | | --- | --- | --- | --- | | BouncyCastle | 1.86 | 1.85 | 1.85 | | Tomcat embed | 11.0.27 | 11.0.26 | 11.0.26 | ## 独立消费者复现 1. 安装 Core `04c5686fe66b8daaa5d60190effa0cc1f40fdfe9` 的当前 BOM。 2. 在仓库外创建最小 Maven 工程,只在 dependencyManagement import `io.github.agentic-ai-java:argi-bom:2.1.0-RC2-SNAPSHOT`。 3. 不指定版本地依赖 `org.bouncycastle:bcprov-jdk18on` 与 `org.apache.tomcat.embed:tomcat-embed-core`;不额外继承其他父 POM或覆盖版本。 4. 执行 Maven effective-pom,读取直接依赖的已解析版本。 实测为 bcprov-jdk18on 1.85、tomcat-embed-core 11.0.26。这里确认的是版本管理漂移和升级未交付给 BOM 消费者,不据此推断具体 CVE、漏洞利用或生产环境故障。 ## 交付与验收 - [ ] 按实际发布决策同步根 POM 与 BOM 的目标版本;如需有意不同,给出明确兼容依据和消费者说明,不能依靠重复属性自然保持一致。 - [ ] 用仓库外、仅导入已生成/安装 BOM 的消费者验证有效版本,不只检查 reactor 或源码中的属性字符串。 - [ ] 覆盖 BouncyCastle 的 bcprov/bcpkix/bcutil,以及受管理的 Tomcat embed core/el/jasper/websocket,避免同一族局部漂移。 - [ ] 建立适当的发布一致性检查,至少能发现本次 root 已升级、BOM 未升级的情况;不强制新增 Maven 模块或依赖服务。 - [ ] 保持消费者明确覆盖版本的能力,说明实际升级影响;依赖升级必须用有意义的构建/回归证据验证,不能以删去 BOM 管理来回避差异。 ## 基线与范围 Core `04c5686fe66b8daaa5d60190effa0cc1f40fdfe9`;Extensions `3b08e736be4f195c1e72839d2b0cc395fb14f225`。Core 19 模块 clean install 通过,2578 个测试含 173 个跳过;上述最小消费者另外验证了实际 effective-pom。 关联 #185、#180。本单只处理发布依赖管理的一致性,不重复跨仓候选版本选择任务 #229,不要求为形式独立而调整包名或发布坐标。
Activity
konlue commentedon Nov 6, 2026
您好,我想认领 #295。
现状核对:当前 main 上根 pom 与 argi-bom 的版本漂移已被修复(BouncyCastle 1.86 / Tomcat 11.0.27 两侧一致,五组共享家族逐一核对),本 PR 交付验收标准中防止回归的部分:
tools/scripts/check-bom-consistency.py(纯标准库,无新 Maven 模块):默认模式直接比较根 pom 与 argi-bom 源码里的共享属性(revision / jackson-2 / jackson-3 / bouncycastle / jsoup / tomcat),任一不一致 exit 1 并列出漂移行——日常 CI 每次 build 都跑,不依赖 release 包或 flattened-pom;--verify-consumer模式:临时生成只 import argi-bom 的仓外 consumer pom,对 BouncyCastle 三件 + Tomcat embed 四件不写版本做dependency:list,断言 effective 版本 == BOM 声明(保留 consumer 显式覆盖能力,BOM 条目结构不动);build-and-test.yml的 check-style job 加make bom-consistency-check(每次 PR 都跑),build job 在 verify-release-artifacts 之后加make bom-consumer-verify(install BOM + consumer 级验证)。验证:当前 HEAD 全绿(exit 0);人为把 BOM 的 bouncycastle 退回 1.85 → exit 1 且输出
DRIFT bouncycastle.version: root pom has 1.86, argi-bom has 1.85,还原后恢复绿;consumer 验证实跑通过(7 件 effective 版本与 BOM 一致)。跨仓候选版本选择留 #229。build: guard root pom and published BOM version alignment with a cons…
Merge pull request #357 from konlue/feat/issue295-bom-consistency