diff --git a/CHANGELOG.md b/CHANGELOG.md index a221a34b..288ee376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ ### Fixed +- 修复单代理、多代理、角色工作流和批量任务将下层调用超时误判为整任务超时的问题:仅任务上下文自身期限到期才标记任务超时,下层失败保留原始诊断;总时限与现有重试策略保持不变。 + - C2 Profile 和 WebShell 删除不存在对象统一返回 404,删除数据库故障返回通用 500 文案,不再暴露 SQL 错误;漏洞和批量任务列表无匹配记录时统一返回 `[]`,补充 HTTP 合同回归验证。 - 修复多人编辑调用拦截规则时旧草稿覆盖他人修改的问题:同一版本仅一次保存成功,冲突保留草稿并提示刷新;API 保存必须携带读取时的 ETag/If-Match。 diff --git a/docs/feature/task-timeout-classification.md b/docs/feature/task-timeout-classification.md index 4a6701f8..111b8524 100644 --- a/docs/feature/task-timeout-classification.md +++ b/docs/feature/task-timeout-classification.md @@ -47,3 +47,11 @@ Regression proof: before the fix, `TestBatchTaskDeadlineClassification` failed f - `git diff --check`: passed. - Batch regression verifies finish status, queue failure and preservation of the original diagnostic in SQLite messages; context tests verify child timeout isolation, deadline expiry and cancellation semantics. - No customer environment reproduction or deployment performed. The customer-specific original timeout source is still unknown; the deterministic classification defect is fixed. + +## F6 — Review and merge readiness + +- Reviewed all four call sites: each receives the task context created for its own execution budget; checks occur before timeout cleanup. Local errors now follow existing failed/error paths. +- Actual deadline expiry remains recognized even with a custom cause; a cancellation carrying a child timeout is no longer treated as exhausted task budget. +- Scope is four predicate substitutions plus a small shared helper and regression tests. No dependency, schema, public API, replay policy or task budget change. +- Added Unreleased/Fixed changelog entry. Implementation commit: `5ff781bd`; verification commit: `54213f82`. +- Merge is explicitly authorized by the user. Plan: re-fetch origin, fast-forward main if unchanged, push without force and verify remote equality. No deployment or release tag.