Skip to content

fix(chat): show retained report execution failures - #7658

Merged
loopx-agent merged 1 commit into
mainfrom
codex/report-execution-health-20261029
Oct 29, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/report-execution-health-20261029

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

A report can fail before its editorial response while the outer Chat Turn is completed. Steward settings then show “Not generated” and a future deadline, hiding the retained failed execution.

Reuse the managed Session execution_failed observation in the original steward health, qualify it against the exact actor/window/subscription, and show the failure in the existing report settings. Known invalid generation, cancelled windows, unconfirmed sends and verified delivery keep their existing precedence. No replay, cancellation eligibility or scheduling behavior changes.

日历日报在正文生成前执行失败时,原页面仍显示“尚未生成”。本改动沿既有状态链路显示真实失败和保留窗口,明确下次时间是日历计划;取消与重试门禁保持原样。

Validation: all 8 native quota-failure/recovery cases pass across File/SQLite and original steward/local Session. These also reject foreign actor/work kind/window/revision and retain the original failure bytes. The TypeScript build and packaged Chat bundle pass. All 356 native report/Lark/monitor/calendar regressions pass (including those 8); the standard premerge gate passes all 6 direct and 16 selected checks.

The existing disposable HTTP fixture reproduces an unknown pre-editorial host failure. On the same backend/window, the previous installed bundle says “Not generated”; the new bundle shows the retained execution failure. Desktop and 390px narrow views, existing controls and reload were inspected with Ego Lite. Synthetic model/provider only; this does not certify a live report or automatic recovery from an unknown execution.

Visual evidence (same disposable HTTP backend/window; 1280×900 desktop and 390×844 narrow):

Before: retained failure hidden After: failed execution visible
Before, packaged installed baseline After, packaged repaired source

390px narrow failure state

Tested source ddd385c; prior packaged assets 9dcdc0b. No additional user interaction or new control is introduced; the failure appears in the existing report status.

Default populated settings and lower narrow controls

Default desktop
Default narrow
Narrow lower controls

Validation limit: the fixture outbound sideworker reports an unsupported synthetic im +chat-messages-list request. The identical existing Provider request reproduces the same failure at the unchanged base and reviewed head; all three owner/provider files are unchanged. This sideworker is not counted as passed external delivery. Native failure health and the installed original backend/page are independently verified. The existing report task retains this fixture follow-up.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

使用原管家定期汇报的用户。日报执行在正文生成前失败,旧页面仍显示“尚未生成”和下次时间;新页面在同一窗口显示执行失败,保留原计划及恢复边界。失败原因不再被尚未生成的提示掩盖,用户在原设置位置读到保留窗口与日历时间,无须额外操作。本 PR 不增加重试、取消资格、调度器、账号切换或业务执行。

未知执行仍须原恢复 owner 获得独立证据;本 PR 不承诺下一期已可执行,安装后的实际采用另行验收。

旧页面会让人误以为日报只是尚未开始,实际上旧窗口已留下失败执行,后续日历时间也不等于已经可以运行。这个缺口已由真实原生 worker 的合成失败复现,再用同一 HTTP 后端切换新旧打包页面确认。

改动思路 / Approach

复用原生报告 health 和既有 execution_failed 投影;观察与取消、生成、送达资格分别由原 owner 判断,不写第二份失败状态。当前 PR 只修复失败状态从原执行记录到原管家设置的完整读路径,原窗口、重试和取消边界保持不变。

最小修复是把普通 managed Session 已有的执行观察复用到原管家。只在前端看是否存在正文,仍区分不了未执行和执行失败;改用可取消的生成失败状态则会混淆恢复权限。本改动没有采用这两条路线。原生报告查询定位原请求或其唯一合法额度接续,再校验四项身份,前端仅消费结果,不解析私有错误或新增动作。

具体改动 / Changes

依据 docs/product/periodic-reports.md 在 a651a824996cce29cc69a5e7e4437b241eef963d 的既有契约:report-observation 已实现,生成、执行及实际投递分别观察;unknown-recovery 已实现,未知结果不能从新的观察字段取得取消或重试资格;same-window-continuation 已实现,成功的当前接续清除失败投影,但原失败与费用证据继续保留。此次六个既有文件共增加56行、删除5行,包含回归、原隔离 fixture 和必要说明,没有新增服务或存储。

关键代码讲解

  1. StewardReports._execution_failed 从原生请求和当前结果派生观察,要求 actor、work kind、window 和 subscription revision 全部相同;外层已完成而 native 失败的情况仍能识别。该方法不改变 _known_generation_failure 的严格编辑结果要求。
  2. StewardReports.health 将观察放入原有内容无关的状态响应,managed Session 也复用同一规则,避免两处失败定义漂移。原窗口、发布游标和投递状态仍由原 owner 提供。
  3. StewardReport 保留已核验送达、已知生成失败、已取消和发送未确认的显示优先级,随后显示执行失败。原按钮和回调没有变化;下次时间明确叫日历计划,避免暗示旧窗口已经解除阻塞。

对主干的风险 / Risks

没有阻断性发现。主要反例是旧失败与新成功同时存在,或者别的请求被错误关联;8个 File/SQLite 原生变体覆盖成功和失败接续、四类身份替换及原记录字节保留,失败并不自动获得取消资格。相同新 oracle 在未改生产代码的 base 上于缺失字段处失败,随后修复 head 全部通过。最初 base 夹具缺少 examples 依赖的启动错误已单独保留,完整 base 复现取代该无效尝试,未把它计为缺陷证据。

PASS:TypeScript、dashboard/Chat 打包,6项直接检查和16项标准 premerge 检查。当前 Goal 明确不等待远端 CI,未据 CI 作结论。原管家和普通 Session 的报告、Lark、监控及日历完整回归共356项通过(包含前述8项);这份小修不证明自然模型效果或未知故障可安全重放。

补充验证限制:隔离 fixture 的 outbound 侧线程因旧合成 provider 未实现 im +chat-messages-list 而退出。同一 Provider 请求在未改 base 与 head 得到相同 Failed,provider 与两个生产调用方三个文件逐字相同;该线程不计通过。本 PR 的状态观察已由真实安装的原执行记录、后端及页面独立确认;该隔离 fixture 不认证完整外部投递链路。

语义与 CI 对齐

复用 execution_failed 既有词汇和 Zod 可选字段;原 Turn 与 cadence 持久化格式保持不变。旧独立前端仍可读新后端,但继续显示旧提示,实际修复需要采用新打包页面。状态推导没有文本子串匹配、第二份手填状态或新权限含义。原服务通过正常安装采用;失败窗口由原恢复 owner 保管。

我的整体评价 / Verdict

APPROVE,限于 ddd385cc4dfb7166d8660b0a498abd010f692667 的这个诚实状态读回切口。long_horizon preserved,user_experience improved;既有意图与授权已经足够,不增加用户确认、复制或导航步骤。同一合成后端的桌面前后视图与窄屏都能读到失败和窗口;表单、原操作与下方内容保持可访问,没有新增解释区或操作步骤。合成 provider 不证明真实日报质量、未知执行的恢复资格或已安装 App WebView;安装采用另行验收。未知执行仍须原恢复 owner 获得独立证据;本 PR 不承诺下一期已可执行,安装后的实际采用另行验收。

公开截图包含同一合成后端的1280×900前后对照和390×844窄屏,页面主次、下方控制和失败可读性已检查。这是可独立审查、可回滚的修复;当前 PR 只修复失败状态从原执行记录到原管家设置的完整读路径,原窗口、重试和取消边界保持不变。没有把原日报或整个周期任务化目标宣布完成。

English verdict: APPROVE — ddd385c; truthful retained report failure observation, exact-identity and recovery regressions passed; execution authority unchanged.

@loopx-agent
loopx-agent merged commit b201da8 into main Oct 29, 2026
7 of 8 checks passed
@loopx-agent
loopx-agent deleted the codex/report-execution-health-20261029 branch October 29, 2026 10:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant