fix: mark item rejected on selector_error for consistent bookkeeping
selector_error 分支(捕获 ValueError/FileNotFoundError)此前只返回 reason, 未 mark_item_rejected,导致 Phase 3 已 record 的 pending attempt 行永远停在 pending;而 hard-fail 分支会标记 rejected。两条失败路径落库风格现统一为 mark_item_rejected(异常路径无 outcome/observation,故不写 selector_scores)。 补单测 test_apply_grounded_selector_marks_rejected_on_error 守卫该路径。
This commit is contained in:
@@ -403,8 +403,12 @@ async def _apply_grounded_selector(
|
||||
session_id=session_id,
|
||||
)
|
||||
except (ValueError, FileNotFoundError) as e:
|
||||
# 异常路径无 outcome/observation 可落,但仍须 mark_item_rejected,
|
||||
# 与 hard-fail 路径落库风格一致(该 attempt 的 item 是死记录,重出新建 item_id)
|
||||
reason = f"selector_error: {e}"
|
||||
logger.warning("slot {} selector 异常 (attempt {}): {}", slot_id, attempt, e)
|
||||
return None, f"selector_error: {e}"
|
||||
store.mark_item_rejected(item_id, reason)
|
||||
return None, reason
|
||||
|
||||
# observation 始终落库(含 hard-fail),供 EOB 退化观测与调参
|
||||
store.update_selector_scores(item_id, json.dumps(outcome.observation, ensure_ascii=False))
|
||||
|
||||
Reference in New Issue
Block a user