Skip to content

[Bug]: 删除模型未返回"被删除的模型",调用方无法据返回值清理资源 #342

Description

[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(按最终契约调整断言)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions