Skip to content

Always-On run marked failed when report tool is not invoked despite successful execution #148

@DemonswhisperYe

Description

@DemonswhisperYe

标注

AI 提交(由用户授权的 AI 助手根据本机日志与 run 记录整理)。

问题描述

Always-On 某次 run 的 discovery、execute 和测试验证都成功,但最终 run 被标记为 failed,原因是 report 阶段没有调用 always_on_report 工具。

这会把“执行成功但报告收尾失败”的情况误报为整个 Always-On 任务失败,容易污染 run history,也会让用户误以为代码修改或测试失败。

观察到的 run 情况

runId:

09a71061-0aa2-474c-94d7-bee1d837f5f9

实际执行情况:

  • discovery 成功生成计划;
  • execute 成功修改了 snapshot-copy 隔离工作区中的目标项目;
  • 验证通过;
  • 测试结果为:
tests 21
pass 21
fail 0

但最终报告文件显示:

outcome: failed
reason: report_tool_not_invoked

报告内容中也出现类似信息:

Plan Reference
(unavailable: report tool was not invoked)

Verification Results
- [ ] (unverified) - report tool was not invoked

Follow-ups
- Investigate why AlwaysOnReportTool was not called.

关键现象

report session 本身看起来是 completed/success 状态,但:

  • finalMessage.content 为空;
  • 没有调用 always_on_report
  • Always-On 收尾逻辑将该 run 判为 failed;
  • fallback report 被写入,但 outcome 仍是 failed。

影响

  • 实际执行成功的 Always-On run 被标记为失败;
  • run history / 日志中的失败率被污染;
  • 用户需要进一步追 jsonl 才能发现执行和测试其实成功;
  • 容易误导排障方向,把 report/tool 协议问题误判为 execute 阶段失败;
  • 如果上层调度依赖 outcome,可能导致不必要的重试或错误处理。

期望行为

如果 execute 阶段成功且验证通过,但 report 阶段未调用 always_on_report,希望状态能区分:

execution succeeded, report failed

而不是直接将整个 run 标记为 failed。

例如至少应在 outcome/reason 上区分执行失败和报告收尾失败,避免把成功执行的任务误报为失败。

环境信息

  • OS: Linux 6.17.0-35-generic x64
  • Node.js: v24.15.0
  • PilotDeck 启动方式:systemd user service
  • 相关功能:Always-On / report phase / always_on_report tool

备注

本 issue 只报告问题和证据,不提交修复代码。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions