Repository navigation
fix(release): restore task history and qualify packaged workspace in 2.1.1 - #7101
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
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 · reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
详细中文评审
动机
工作台用户关闭任务后使用浏览器后退,原先会丢失应恢复的任务抽屉。旧版后退时任务监听器恢复选择,设置监听器又清空它;修复后恢复原任务,前进关闭抽屉,导航不提交业务操作。打包页面已验证后退、前进、重新加载、缺失任务和窄屏路径;含冒号的成果与要求 ID 不再让第四项混入默认三行预览。本 PR 不改变 Bot 业务执行、权限、调度或未知效果恢复规则,也不证明积压已处理。合并后的完整源码资格、发行包、PyPI、更新签名与原服务采用仍待实际完成。
不修改会继续保留正常导航上的真实缺陷;仅修测试 fixture 也修不了已打包页面。此 PR 选择维护版本回移主干既有修复,避免把继续移动的主干全部引入原发布候选。它是实际可验收的源码修复增量,完整发行继续保留为明确后续验收。
改动思路
复用现有路由、成果投影和发行资格归约器,在各自拥有者内修复不变量;不增加新的执行器、恢复队列或第二套配置。本 PR 的可合并边界是两项 UI 回归修复、相应 fixture 和完整页面资格约束;正式发布继续由已有发行流程验收。 任务的 URL 恢复仍归原任务路由,设置监听器只清理实际设置选择;成果预览仍使用原生状态与最多三行规则,组合键只消除合法 ID 的分隔歧义。安装、升级和 Host 成功无法推出页面已验证,因此在现有资格摘要增加独立页面事实;不新增后台状态或可绕过的兼容模式。三个二进制截图逐张查看像素、来源与 PNG 元数据,不能把文本扫描的成功当作图片隐私验证。
| 触发 | 旧结果 | 当前结果 |
|---|---|---|
| 关闭任务后后退 | 抽屉恢复后又被清空 | 同一任务和选中行保留;前进关闭 |
| 两个含冒号的复合身份 | 第四项错误进入默认预览 | 默认三项,完整列表仍含四项 |
| 只有安装成功摘要 | 可遗漏页面结果 | 当前 v1 缺失、失败或旧摘要均拒绝 |
具体改动
规范依据为 docs/product/release-readiness.md,采用修改前的不可变修订 a65c71f789459c12b68d6feeec233fbb99f65c91(原文),并按已有完整打包产品合同判断,而不是用新字段反过来定义目标:named-version-source 已实现,保留旧 tag 并使用 2.1.1;packaged-user-journey 的修复和机器约束已实现;final-release-assets 留给合并后的精确版本资格与真实包验证,不能提前标记通过。
关键代码讲解
restore读取当前设置路由;没有设置目标时,只有原选择确为 settings 才清空,避免覆盖任务监听器刚恢复的值。Back/Forward、原请求完整读回、设置重载和来源缺失均有页面路径验证。requirementKey把两个不透明 ID 编码为 JSON 字符串数组,所有可见性检查复用它。反例使用plan/section:opening与plan:section/opening:旧实际页面出现四行,当前是三行,主动展开仍能看到第四项;没有丢弃要求或修改原生验收事实。_validate_install_upgrade_host要求当前release_install_upgrade_host_summary_v1的四项布尔事实全部为真。独立运行同一旧安装摘要,旧拥有者接受,当前拥有者因 schema 拒绝;当前缺字段与 false 也分别被拒绝,完整正向 CLI 仍可用。
其余修改是版本声明、既有浏览器 fixture 的正确设置页返回/标签/窄屏入口、十一项资格测试及原生 smoke、双语使用指南和三张合成截图。没有提交生成 bundle、原消息、私有路径或生产运行记录。模型、原服务采用和整个社区验收不属于这些页面测试的证明范围。
对主干的风险
最值得反驳的承诺是“加一个字段就能证明完整页面执行”。它做不到:归约器仍只校验摘要和精确源码一致性,不能鉴定调用者是否伪造成功;维护者必须实际执行完整页面脚本,保留结果再归约。此 PR 没有把布尔值描述为运行证明,也没有用九个受影响场景代替发行前的完整脚本。UI 风险集中在任务与设置路由相互清理、以及预览对合法 ID 的处理,已经用旧真实 bundle 的失败和当前成功路径反驳,不只依赖 mock 返回修复后的后置条件。
本地 11 项资格测试、原生 smoke、Ruff、17 个模块 mypy、TypeScript、RFC 配对、19 个风险选择检查和六项直接检查通过。native premerge 的原始退出状态仍是三张图片需要人工审阅;逐张像素及 PNG chunk/CRC 检查在本评审中完成,未把它伪称为自动扫描通过。CI 按现有配置不查询、不等待;2.1.1 全量资格、签名桌面和 PyPI 仍是发布前单独的门。
语义与 CI 对齐
这是对已有安装资格词汇的版本化扩展:缺失/false/旧 schema 阻止当前发行资格;不是工作建议,也不增加运行时权限。旧文件和旧 tag 保留,当前新版本不沿用无页面事实的旧资格。未知效果仍由原拥有者对账,不自动重放;原 optional provider、调度、模型配置和业务执行路径未改。
我的整体评价
APPROVE,针对精确 head 28c126cd8b132e3dfc2a015d3b8977d8a1b22e11。复用现有路由、成果投影和发行资格归约器,在各自拥有者内修复不变量;不增加新的执行器、恢复队列或第二套配置。本 PR 的可合并边界是两项 UI 回归修复、相应 fixture 和完整页面资格约束;正式发布继续由已有发行流程验收。 long_horizon 判断为 preserved:保留上下文且不制造效果,没有宣称测得长程收益;user_experience 为 improved,正常后退不再要求重复寻找任务,默认三行预览也不再混入无关项。已查看合成迁移项目的完整默认概览、恢复后的任务抽屉和窄屏抽屉;负责人、失败提示与完整要求入口可同时识别,详细证据保留在折叠区。未把合成数据证明为生产新鲜度或排序,也未把本地页面证明为新签名桌面包、业务完成或长程收益。
兼容方案保持单一当前摘要,不为旧结果增加会放过未验页面的 decoder;旧产品版本与历史证据继续可追溯。该源码增量比例合适,现有拥有者内的两处局部修复比新的恢复器或 patch-chain 更小。三个图片隐私审阅点已完成;这份批准不替代新版本全量资格、实际发行资产验证、正式发布或原 Bot 业务回传。
英文简短结论
English verdict: APPROVE — exact head 28c126cd8b132e3dfc2a015d3b8977d8a1b22e11 repairs reproduced task-history and opaque-ID preview bugs and requires complete packaged-page evidence in the existing release reducer. Nine affected packaged scenarios, native negative/positive qualification tests and required local source checks passed. The three raw binary privacy holds were inspected explicitly. Full 2.1.1 source qualification, assets, PyPI and installed adoption remain separate release gates; no business recovery completion is inferred.
b5626f5
into
codex/release-2-1-maintenance
Problem and result
Browser Back could restore a task and then immediately lose its drawer through the settings history listener. Outcome/requirement IDs containing colons could also select the wrong supporting-outcome rows. This maintenance backport preserves the restored task, uses an unambiguous pair key, and updates the affected packaged browser fixtures without changing their assertion deadlines.
The source qualification owner now requires the complete packaged frontend journey in the installation/upgrade/Host result (
release_install_upgrade_host_summary_v1). Failed, omitted and older installation-only summaries cannot qualify a release. Version declarations and the bilingual usage guide are prepared for 2.1.1.Source and scope
This PR targets the maintenance branch frozen at
a65c71f789459c12b68d6feeec233fbb99f65c91, the immutable 2.1.0 preview source. The two UI fixes and ten browser fixture files reuse the already merged upstream sourcef562ad3c8f3c6e7d00bb50f697cee267886b4ae9. It imports no other changes from the moving main branch. The 2.1.0 tag and failed checks remain unchanged; 2.1.0 did not complete Python/PyPI publication. Source qualification and release publishing of 2.1.1 remain pending.Validation
Visual evidence
These are real packaged-page captures with synthetic billing-migration fixture data, not production messages. Tested UI/source is the proposal below. The before image is the immutable preview's failing Back state; after images show the restored task and its still-visible full-requirement read failure. The existing populated overview and responsibility groups remain in context. Navigation adds no effect or owner-confirmation round.
中文说明
本维护分支修复后退恢复任务时抽屉被设置监听器清空、含冒号的成果/要求 ID 相互冲突。沿用主干已合并的两项 UI 修复和相关浏览器 fixture;验收时限、原权限与未知效果恢复门均保留。新增的安装摘要门要求完整打包页面验收,旧摘要或缺失页面结果会明确拒绝。
修复已完成;合并后的精确源码仍需重新完成全量资格、实际发行包与更新签名验证,才能发布 2.1.1。原有活动 Bot/Agent Turn 必须先结束,安装后分别核验 CLI、原服务和 App;本 PR 不证明积压业务已执行或已回传。