Repository navigation
test: qualify report source-history and delivery owners together - #7666
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
维护周期报告的开发者在运行公开浏览器验收时,会同时依赖报告执行、消息回传和后台历史核对。原先报告可以生成,但后台首次读取消息历史就因合成 Provider 缺少接口而退出;现在同一消息源支持真实存储行的分页读取,并继续运行原有回传线程。已验证完整报告返回、后台反复读取历史、55 条未捕获来源全部保留,且观察过程没有派发或回复业务。本改动不改变生产执行、权限或恢复策略。自然语言创建任意周期任务、真实订阅额度耗尽后的切换,以及未知效果失败窗口的恢复仍需由既有责任方继续验收。
改动思路 / Approach
复用已有 Provider(合成消息源),按原 profile、私聊、时间窗口和游标读取已存消息,保留原生历史观察器与发送器。关闭观察线程或返回空历史都会掩盖原故障。消息行增加时间戳,读取时复制当前行集合;没有另建执行器、生产状态、授权缓存或重试策略。原生报告生成、送达和历史观察仍分别记证。
具体改动 / Changes
规范依据为 docs/product/periodic-reports.md,读取版本 3344f540f6f4992d95de1c04d50ba586d64deddd。packaged-original-return 对应原 Session 的完整返回及独立阅读器;synthetic-mechanics-boundary 保留合成机制验收与真实内容/送达的边界。两项在本切口内成立;新增文档段落只是说明修复后的夹具。
关键代码在 Provider.call:源窗口游标不可挪用到另一窗口,私聊不可借用另一 profile。原 报告测试 在生成前和完整回传后读取真实观察器,并另测 55 条漏捕获来源。既有 浏览器夹具 增加线程存活、历史页数和覆盖状态,4 个既有文件合计 +101/-2,无生产代码或生成产物。
对主干的风险 / Risks
最终精确 head 的 7 项测试 PASS;恢复 3344f540f6f4992d95de1c04d50ba586d64deddd 的原 Provider 调用方法后,3 个新增用例都在原缺失接口处失败。跨私聊和挪用窗口游标拒绝,55 条缺口完整保留且无业务执行/回复。Ruff、双语 diff 和预合并检查 PASS(4 个直接检查、Python 编译、3 个目录/公开边界检查)。受影响四组回归:457 passed in 1117.30s;该进程在最终单行 tuple 快照细化前加载,精确提交另由上述 7 项和预合并验证,未把其来源时间边界抹去。
打包界面完成原会话完整报告阅读及后续自然合成到期;私聊原发送器完成分段回传,并跨过多轮 60 秒历史检查。模型和消息平台仍为合成边界;重复固定正文不证明真实报告内容质量。远端 CI 按当前契约不查询。
我的整体评价 / Verdict
这是有实际价值的验收修复:长期路径能够暴露后台丢失,用户路径与生产策略保持。呈现层未改,已有完整阅读器在 1280×900 与 390×844 读回,截图只作附加机制证据;未验范围为真实内容质量和任意自然语言任务准备。本项保留后续产品与自然额度切换验收,不宣告整个报告目标完成。兼容边界未改,继续使用一个共享 Provider 已是较小且可回退的修复。
English verdict: APPROVE — the shared fixture history gap is fixed and its default owners are qualified within the declared synthetic boundary.
The packaged report fixture's existing private outbound thread stopped at its first source-history read because the shared synthetic Provider did not implement
im +chat-messages-list. A successful report generation could therefore hide an incomplete background journey.The same Provider now returns its stored timestamped messages with bounded pages, window-bound cursors and private audience checks. The fixture exposes outbound liveness and ingress coverage. File/SQLite regressions exercise history before and after native report settlement, retain 55 uncaptured sources and prove that observation neither admits nor replies to them. Production execution, permissions and recovery policy are unchanged.
Validation: the final seven targeted cases pass; restoring the original Provider call method makes all three new regression cases fail. Ruff and the bilingual diff gate pass. The packaged UI exercised ordinary managed-Session configuration, native report return and the full answer reader at 1280×900 and 390×844, including a subsequent natural synthetic deadline. The original synthetic private outbound owner delivered the multipart body and remained alive across repeated 60-second ingress checks. The broader affected regression passed 457 cases in 1117.30s; it loaded before the final one-line tuple snapshot refinement, which the final seven targeted cases separately cover. Exact-head quick premerge passed 4 direct checks, Python compilation and 3 selected catalog/public checks.
This qualifies synthetic mechanics, not live editorial quality, a production message return or the next real account-exhaustion switch. Existing unknown-effect failed windows retain their recovery owner.