Skip to content

fix(research): restore digest ownership and deterministic scope closeout - #7208

Merged
loopx-agent merged 3 commits into
mainfrom
codex/research-analysis-scope-close-smoke-20261024
Oct 24, 2026
Merged

loopx-agent merged 3 commits into
mainfrom
codex/research-analysis-scope-close-smoke-20261024

Conversation

@huangruiteng

@huangruiteng huangruiteng commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Two independent main-branch regressions blocked one another's CI:

  • research-history used one Escape press to close analysis, but an open help popover could consume that Escape and leave stale analysis selected during the next scope change.
  • trajectory input usage introduced a second private SHA-256 matcher, so the repository's canonical digest-owner guard failed on unrelated branches.

This head closes analysis through its explicit control and waits for it to leave the DOM before switching scope. It also reuses BARE_SHA256_PATTERN and registers the reviewed trajectory consumer. Together these changes remove the dashboard failure seen on #7201 and the TypeScript failure seen on the prior #7208 head. #7201 remains as provenance until this combined head lands.

Validation:

Signed-off-by: huangruiteng <huangrt01@163.com>
@huangruiteng
huangruiteng force-pushed the codex/research-analysis-scope-close-smoke-20261024 branch from 75b0ba1 to 9a9f065 Compare October 24, 2026 03:36
loopx-agent
loopx-agent previously approved these changes Oct 24, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=max

Approval conclusion — APPROVE at 9a9f0659cd2fff64edc2385d3176d97fa0d52b54.

动机

维护者运行研究历史浏览器回归时,测试可能把合法的帮助关闭行为误报为范围切换回归。
帮助浮层已打开时,旧步骤的一次 Escape 只关闭帮助;随后切换到未分析范围,分析面板仍然存在。新步骤先明确关闭面板并等待隐藏,再检验范围切换保持关闭。
同一已打包生产界面的 1200px 与 390px 对照中,旧步骤的两项关闭前提均不成立,新步骤两项成立;两项普通 Escape 关闭及返回入口焦点的对照也成立。
只修复既有回归场景的关闭前提,不修改产品的键盘、帮助、数据或权限逻辑,也不宣称全场景、安装态或长期稳定性已验证。

改动思路

直接使用面板已有的“关闭分析”按钮,并等待面板隐藏,给下一段测试建立明确前提。帮助是否打开仍由原组件处理,测试不再用一次 Escape 同时承担两个不同意图。
再按一次 Escape 会依赖帮助的当前状态,也可能把额外关闭动作带入父级;复用命名控件和现有等待即可避免这种假设。没有增加生产状态、条件分支、重试或新测试框架,原键盘与范围隔离检查继续各自负责。

具体改动

完整差异为 1 file +2/-1,仅修改既有 research-history 场景。规范依据为 docs/development/good-smokes.md,固定在改动前 6f8b181400dc650234891b32b2bd99f3f3836164:Prefer Semantic Pressure — implemented,用帮助可见的反例区分旧、新关闭步骤;Consolidate Without Losing Coverage — implemented,保留原场景和不同语义断言,不另建重复 smoke。

关键代码讲解

  • researchHistoryScenario.run:仍由原浏览器 smoke 入口选择并运行,复用原合成数据与场景准备,没有新增场景或临时产物进入仓库。
  • 关闭与范围切换:删除一次 analysis.press('Escape'),增加命名按钮点击及隐藏等待;后面的未分析范围、不能借用旧判读和零面板断言完整保留。
  • 既有 Escape 检查:帮助关闭后父面板仍可见的断言,以及 普通 Escape 与焦点返回 均保留,避免用显式关闭替代所有键盘覆盖。

已扫描原场景及相关研究读取、语言、测量场景,并查看同作者最近十二份 PR 的文件范围。没有新建重复 smoke 或一次性脚手架。现有场景虽较长,仍承担真实读取、来源切换、延迟引用与键盘边界;本次两行修复不需要为缩短行数拆散这些断言。

对主干的风险

最强风险是修测试时掩盖真正的 Escape 回归。独立检查使用精确提交打包的生产界面及隔离 SQLite/历史/分析读取后端;数据和已保存分析输出为合成内容,不调用模型。基础与当前的生产组件、依赖和后端 blob 相同,实际比较同一界面上的旧、新操作。1200px 与 390px 下,帮助可见时旧步骤均留下一个面板,新步骤切换到未分析范围后均为零;普通 Escape 仍关闭并按既有下一动画帧机制返回入口焦点。

早期辅助检查的导航等待、浮层等待、即时焦点取样,以及全 App 零写请求断言失败均保留。最后一项定位为研究读取前发生的一次会话创建请求,后端返回 405;全局尝试数仍是 1,分析写入为 0,原源数据保持不变。这些记录没有改写为完整场景通过。

MJS 语法、前端类型检查与打包、公共边界、维护性及语义检查通过;四项直接和三项选定 premerge 检查通过,精确范围质量回执 cqr_0c8dc96c804fe917efc6 冷读一致。打包保留大于 500kB 块的提示,没有调整阈值。没有查询或等待远端 CI。完整原浏览器场景仍未重跑。

我的整体评价

此有限维护目标为 goal_achieved:关闭前提有旧步骤失败、新步骤成立的实际对照,原有键盘与来源隔离义务没有被删去。long_horizon 和产品 user_experience 保持,改善的是维护者定位回归的准确性;没有据此宣称产品体验、模型效果或长期净成本提高。
完整差异只涉及既有浏览器场景;生产组件、样式和依赖未改。实际观察用于验证交互状态,没有渲染展示变更需要新的视觉批准。 完整原 Playwright 场景未重跑,安装态、真实模型、长期浏览器稳定性和完整成本未验证;不据六项交互对照声称这些范围通过。
没有需要在本 PR 继续扩大的重构或发现的阻断项;批准不授予合并、安装或扩大执行范围的权限。

English verdict: APPROVE at 9a9f0659cd2fff64edc2385d3176d97fa0d52b54. The existing explicit close control establishes the scope-switch precondition while earlier Escape coverage remains. Independent packaged-UI comparisons at 1200px and 390px reproduce both old failures and pass both new transitions plus keyboard controls. Local scoped checks pass; auxiliary failures are retained and the original full Playwright scenario was not rerun. No runtime change, installed qualification or merge authority is claimed.

Signed-off-by: huangruiteng <huangrt01@163.com>
@huangruiteng huangruiteng changed the title test(research): close analysis before scope switch fix(research): restore digest ownership and deterministic scope closeout Oct 24, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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 | reasoning_effort=max

动机

维护研究历史浏览器验证的开发者,需要从已分析范围切到尚未分析的范围,并确认页面没有借用前一个范围的结果。 帮助浮层可能先消费 Escape,旧场景随后带着仍打开的分析面板切换范围,导致关闭断言失败;现在先点击已有关闭按钮并等待面板隐藏,再执行范围切换。 原有独立范围断言得到确定的进入条件,同时输入摘要校验复用既有所有者,保留原来的合法输入、错误详情和未知成本语义。 本 PR 不修改产品键盘交互、分析结果、成本计算或持久状态,也不证明完整浏览器场景、已安装宿主或模型长期效果。

这是对完整新 head 404765faea53376262af294a176c209fabfe2150 的重新评审。旧版只有场景动作改动,现在还包含运行时摘要所有者修复,旧提交的批准不作为本结论。两处回归共同阻断原有验证路径;本次没有借测试通过宣告父级产品目标完成。

改动思路

复用现有关闭控件和摘要所有者即可恢复原验证路径;浏览器负责场景动作,TypeScript 保留摘要语义,没有增加产品状态或第二套规则。 本次三个文件只修复场景进入条件与阻断同一路径的摘要所有者回归;主干整合、完整浏览器稳定性和真实模型成本仍需各自验收。 帮助浮层先响应 Escape 属于既有产品行为,范围隔离测试应明确建立关闭状态。保留普通键盘测试与后续“未分析范围不能借用旧结果”的断言,避免把两个不同不变量合并。摘要字段的类型、谱系和错误处理留在原估算器,字符语言直接复用共享常量。

下表是有限实测与源码对照,不是完整浏览器或线上验证:

相同条件 修复前 当前提案
帮助可能先消费 Escape,再选择未分析范围 桌面和窄屏各留下一个分析面板 明确关闭并等待隐藏,两种宽度均无面板
原生输入的 72 组完整观测 合法、非法、缺失与未重放结果 所有完整 JSON 字段逐字节一致
摘要单一所有者检查 16 通过、1 失败 17 通过;没有放宽规则

具体改动

规范依据为 docs/development/good-smokes.md,不可变 revision 6f8b181400dc650234891b32b2bd99f3f3836164,见原规范。Start With The Contract 对应原有范围隔离与摘要语义;Prefer Semantic Pressure 对应旧动作反例、重复所有者失败和非法输入对照;Public-Safe Fixtures 要求保留合成数据、实际后端与真实 provider 之间的边界。本次没有修改规范来匹配实现。

  1. research-history.mjs:930 使用已有“关闭分析”按钮并等待隐藏,再选 D 范围。随后未分析、未知成本和不能借用 C 判断的原断言均保留,没有加长超时、删除断言或改产品 Escape 优先级。
  2. trajectory_input_usage.digest 将本地正则替换为已有 BARE_SHA256_PATTERN。类型检查与原错误仍在同一处,source/text、artifact、trace、request 和 response 的摘要都继续走原验证。原生请求及会话总量不会因输入归因失败而被抹掉。
  3. content_digest.ts:3 定义未变化,仍匹配 64 位小写十六进制裸摘要,没有全局或 sticky 状态。既有单一所有者测试的 consumer 列表补入该估算器,继续通过原扫描器约束;没有新模块、状态或配置。

对主干的风险

最强风险是“改成共享常量却悄悄改变输入语言”,或“只证明按钮能点而没覆盖帮助先关闭的实际条件”。本次在不可变基线与当前 head 执行同一 72 组导出汇总器探针,比较全部结果和诊断,不只比较状态码;合法小写、大小写错误、前缀、长度、空值、非字符串、缺失 capture 与未重放响应均覆盖。完整输出 194398 字节且摘要一致,没有归一化掉语义差异。当前 23 项摘要/usage 加 10 项 input 测试、类型检查通过。

浏览器证据来自原 9a9f0659cd2fff64edc2385d3176d97fa0d52b54 打包 UI 的六个控制:旧动作两个预期失败、明确关闭两个通过、普通 Escape/焦点两个通过,实际视口为 1200×888 与 390×844。重新核对整个旧新树,只有摘要消费者与其登记测试不同;UI、场景、后端和锁文件 blob 均相同,因此只复用这些有限观测。实际隔离后端为 SQLite/history/analysis 读路径,输出是合成保存结果;分析写入次数为零,但保留一次较早被拒绝的会话创建 POST,不能声称全应用零写入。

必要 source-checkout premerge 的 4 个直接检查、3 个选择检查和本次精确范围质量凭据均通过。初始聚合因旧质量凭据失效而红,已记录新范围凭据并重新读回通过。未查询、轮询或等待 GitHub CI。完整原 Playwright 场景和线上/已安装宿主未执行;早期辅助等待失败保留,不作为已修复的产品缺陷或全路径通过。

我的整体评价

复用现有关闭控件和摘要所有者即可恢复原验证路径;浏览器负责场景动作,TypeScript 保留摘要语义,没有增加产品状态或第二套规则。 本次三个文件只修复场景进入条件与阻断同一路径的摘要所有者回归;主干整合、完整浏览器稳定性和真实模型成本仍需各自验收。 已检查 research-history.mjs 及未变化的 context-help.tsx、goal-research-analysis.tsx;没有产品布局、正文展示、控件或样式变化,因此 visual_review 为 not_applicable。 先前打包 UI 的六项有限控制有修订校验,未重跑完整 Playwright 场景;此前 hover、导航、提前取焦与全应用零 POST 断言失败仍保留,不作为本次全路径通过证据。

没有发现当前差异引入的可复现阻塞问题。这个三文件修复复用既有所有者,成本与问题相称;不需要额外框架、版本兼容层或产品页面。生产 UI 和普通键盘行为保持,完整输入对照保护现有归因语义。长程收益、模型遵从、主干其他已知检查及安装验收各保留原有边界,本结论不替它们结案,也不授予合入权限。

English verdict: APPROVE — 404765faea53376262af294a176c209fabfe2150 restores the deterministic scope-test precondition and reuses the existing bare-digest owner. All 72 complete baseline/head input observations match; 33 typed tests, typecheck and exact-scope native premerge/quality checks pass. Prior scoped browser evidence is reused only after explicit source/fixture assumption checks. Full browser, installed/live-host and long-horizon qualification remain separate.

@loopx-agent
loopx-agent merged commit 905d0ae into main Oct 24, 2026
6 of 7 checks passed
@loopx-agent
loopx-agent deleted the codex/research-analysis-scope-close-smoke-20261024 branch October 24, 2026 06:24
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.

2 participants