[Bug]: 删除模型未返回"被删除的模型",调用方无法据返回值清理资源
状态:目标仓库 openJiuwen/agent-core-java。
① 场景
- 测试场景:调用方删除一个已登记的模型,期望拿到"被删除的模型"用于清理本地资源
- 模块:
agent-core-java;特性:FEAT-050-CORE
- 目标仓库:
openJiuwen/agent-core-java
- 关联用例:
dmc.registry.remove / DynamicModelCandidateReproTest#cand03RemovedModelIsReturned
- 正式基线:
930@419688f58(core 开发指定的转测基线);制品 agent-core-java:0.1.16
- 需求依据:FEAT-050-CORE §3.1 removeModel 行「返回被删除的模型,供调用方按需清理资源」
② 问题概述
设计明确要求删除接口返回被删除的模型;实测返回的是 java.util.ArrayList(内容 [Ok(null)]),即门面把结果包成列表且载荷为空。调用方拿不到被删除的模型实例,无法按设计清理资源。
③ 问题分析
3.1 判据
- 权威来源:FEAT-050-CORE §3.1(removeModel 行)
- 缺陷判定:返回值类型与语义均不满足"返回被删除的模型"。
3.2 执行与观察证据
设计要求返回被删除的模型;实际返回类型=java.util.ArrayList,值=[Ok(null)]
round2 观测:removedValue=[Ok(null)],accepted=true(同一 id 的两次调用形状一致)
- 执行状态
executed;结论 FAIL;selector DynamicModelCandidateReproTest#cand03RemovedModelIsReturned
3.3 现象、定位与推断
- 已观察事实:返回体形态为 Result 列表、载荷 null
- 已排除项:测试侧类型断言(直接取控制面返回体原文)
- 静态分析:
ModelMgr.removeModel 返回 Supplier<? extends Model>;ResourceMgr.removeModel(...) 返回 Object(走 innerRemoveResources)→ 与设计描述的"模型"不一致
- 待开发确认:契约应以"模型实例"还是"供应器"为准(供应器是调用方清理句柄,可能已足够);若认定为文档表述差异而非缺陷,请更新设计
3.4 Pre-flight 与历史关系
- 交叉通道验证:新增/更新接口返回
Result<String>,形态一致,说明这是门面统一风格;但删除的语义要求不同(要交还资源)
- 历史 ISSUE 关系:与"空值/不存在校验缺失"同批发现但不同源
④ 复现条件
- 命令:
mvn -o -Dtest.env=openjiuwen -Dtest=DynamicModelCandidateReproTest#cand03RemovedModelIsReturned test
- 产物:
target/feature-acceptance-testing/dmc-cand03-evidence.json
⑤ 问题代码分析
ModelMgr.removeModel(String) / ResourceMgr.removeModel(Object, Object, TagMatchStrategy, boolean)
⑥ 问题影响
- 调用方无法按设计通过返回值清理资源;只能依赖自己保存的句柄,契约失真
⑦ 建议修复方案
- 明确并实现:删除成功时返回被删除的模型(或明确返回供应器并同步修改设计 §3.1)
- 回归:
cand03RemovedModelIsReturned(按最终契约调整断言)
[Bug]: 删除模型未返回"被删除的模型",调用方无法据返回值清理资源
① 场景
agent-core-java;特性:FEAT-050-COREopenJiuwen/agent-core-javadmc.registry.remove/DynamicModelCandidateReproTest#cand03RemovedModelIsReturned930@419688f58(core 开发指定的转测基线);制品agent-core-java:0.1.16② 问题概述
设计明确要求删除接口返回被删除的模型;实测返回的是
java.util.ArrayList(内容[Ok(null)]),即门面把结果包成列表且载荷为空。调用方拿不到被删除的模型实例,无法按设计清理资源。③ 问题分析
3.1 判据
3.2 执行与观察证据
executed;结论FAIL;selectorDynamicModelCandidateReproTest#cand03RemovedModelIsReturned3.3 现象、定位与推断
ModelMgr.removeModel返回Supplier<? extends Model>;ResourceMgr.removeModel(...)返回Object(走innerRemoveResources)→ 与设计描述的"模型"不一致3.4 Pre-flight 与历史关系
Result<String>,形态一致,说明这是门面统一风格;但删除的语义要求不同(要交还资源)④ 复现条件
mvn -o -Dtest.env=openjiuwen -Dtest=DynamicModelCandidateReproTest#cand03RemovedModelIsReturned testtarget/feature-acceptance-testing/dmc-cand03-evidence.json⑤ 问题代码分析
ModelMgr.removeModel(String)/ResourceMgr.removeModel(Object, Object, TagMatchStrategy, boolean)⑥ 问题影响
⑦ 建议修复方案
cand03RemovedModelIsReturned(按最终契约调整断言)