Repository navigation
fix(research): show successive decisions under their question - #7366
Conversation
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.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
动机
在研究页回顾同一问题多轮尝试、并打开某条历史结论的读者。
旧界面面对同一问题的20条记录,先看到三个重复标题;新界面把问题标题放在历次决策之上,点选第19轮仍打开第19轮原文。
同一问题及其变化更容易连读,原始负面记录、状态和完整证据仍可逐条打开。
本次不推断修订或因果,不改变研究事实、任务、评分、执行权限或安装状态。
原先三个最新卡片都重复结论标题,问题与历次决定的关系需要读者自行拼接,同名的独立问题也难以辨别。这个切片修的是原始证据的阅读关系;研究是否有效仍由实际结果判断,记录条数和页面更整齐不能代替它。
改动思路
Question containment is a read projection over declared identities. CSS alone cannot safely establish identity, and a new backend store is unnecessary. 当前边界:同一问题及其变化更容易连读,原始负面记录、状态和完整证据仍可逐条打开。
入口仍是研究页。事件经过既有历史投影和时间分段选择,再按明确的问题身份收纳;React 只管理局部分页和读者选择。点一条记录直接把它的 finding 身份传给既有阅读器,继续使用原来的来源、失败恢复和 URL 返回逻辑。没有新增证据数据库、服务或手工同步字段。
| 同一原始输入 | 基线 | 本 head |
|---|---|---|
| 一题20条决策 | 三个重复标题卡片 | 一个问题标题及三条最近记录,早期记录原位展开 |
| 不同身份但同名 | 仍为独立记录 | 仍是独立问题,绝不按文字相似合并 |
| 打开第19轮 | 既有精确阅读器 | 仍打开第19轮完整原文并返回原入口 |
最有力的反对理由是分组可能掩盖旧负面证据,或者只是把重复文档移入更长的面板。本实现保留组级反驳/暂定数量、记录时间范围及逐条的变化/停止/保留,问题和记录分别分页;实际展开与返回已验证。继续堆卡片或仅改 CSS 都不能提供同样明确的身份关系。
具体改动
评审前读取的接受依据为 https://github.com/loopx-project/loopx/blob/0e47330fe57ce5ea1101dae67ee19b836869ef4e/docs/development/design.md ,固定版本 0e47330fe57ce5ea1101dae67ee19b836869ef4e;同时读取既有 task-first delivery。新增 design 段落按原接受边界判断,没有用新文字自行证明实现正确。
- Research Workspace / 研究工作台 — implemented:保留每条发现的完整原文、确切选择、负面与暂定计数。 本轮通过实际原始记录、恢复/返回和对应状态的验证;不把局部交付计作整个路线图完成。
- Explanations On Demand — implemented:用身份和布局解释重复项;展开仍保留完整正文和失败信息。 本轮通过实际原始记录、恢复/返回和对应状态的验证;不把局部交付计作整个路线图完成。
- Populated Page Review — implemented:检查长重复混合状态的整页、默认/展开及窄屏。 本轮通过实际原始记录、恢复/返回和对应状态的验证;不把局部交付计作整个路线图完成。
关键代码讲解
groupExploreTimelineDecisions复用原 selector,先过滤时段,再按 node 身份归组;没有节点身份时用原事件身份单独收纳。排序、每条原事件和未知时间不被改写,标题只是展示。TrailList初始显示三个问题,“更多问题”扩展同一集合。分页限制是界面状态,不是研究覆盖或完成状态。TrailQuestion初始显示三条原记录,保留异常计数和日期范围;按钮带原事件身份,选择时保持焦点并传入确切 finding。更早记录独立展开,完整正文仍交给现有阅读器。
其余变更是同一页面的细线列表布局、44px最小点击目标、设计说明、现有 TypeScript/浏览器回归扩展,以及六张公开合成截图。没有增加持久化词汇或版本迁移;分组类型属于现有 Explore 只读投影。
对主干的风险
主要风险是把相同标题误当相同问题、分段后仍显示全量计数、或选择旧记录却读到最新内容。本轮独立执行10项历史 TypeScript 测试、完整 packaged research-finding-reader(5.571秒)及 research-history(181.426秒)。20条同题记录、四个同名独立问题、两层分页、早期原文、重载/Back/Escape、窄屏、不可用来源和原始负面均覆盖;数据从生产 HTTP 与隔离 SQLite 读取,分析输出为合成材料。
另外在同一合成输入上构建不可变基线和 head:基线仍是三个重复卡片、零问题组,head 为问题组。四组完整 canonical/timeline 输出与16组分段选择逐字一致,Map 只按原迭代顺序编码;新分组的每条记录集合与原 selector 完全一致。没有归一化时间或删字段来获得相同结论。实际浏览后各来源读回均为零业务写、原始字节未变。
标准 premerge 的4项直接检查和16项选中检查全部执行通过;整体仍退出1、manual_review_required,六张图片的人工门保留。我逐张查看了图片和 PNG 元数据,并独立重建桌面/390px页面;这不把人工检查回写成自动检查通过。没有查询或等待 CI。作者披露的 goal-showcase 刷新恢复失败保留为作者证据,本轮没有重跑,也没有声称该流程已修复。
默认关闭与权限规则没有新增分支,旧的研究事实和状态解析不变;历史阅读本身得到新的布局是有意变化。现有格式解码未被替换成标题相似度或散文分类。分组不声称决策修订、因果链、独立验收或执行权;相关源调用和标准语义检查通过。回滚只需撤销这组投影/界面变更,原始记录无需迁移。
我的整体评价
APPROVE,限 a912d3a3aa1550921606526455dde4085dc68a27。 这个 head 完成了“同一问题的历次决策可连读且可精确打开”的有用切片。长程工作维度为 preserved:累积原文、失败、未知和后续选择保留,未据此声称长程收益;用户体验维度为 improved。分组放在现有 typed owner,局部分页留在界面,是合适且可回退的边界。
实际检查了整页首屏、下方决策组、历史原文及390px展开:标题按真实问题归组,状态与时间为次级信息,变化/停止/保留仍用正文呈现,完整原文通过原阅读器可达。
未验证安装版 App、独立读者理解或长程因果收益;作者披露的 broader goal-showcase 刷新恢复超时未在本轮重跑,其后续恢复/窄屏不由本次 Research 验证补证。
阅读正文保持正常字号,默认列表减少重复标题,完整来源和原文仍经原有入口到达。新增说明不成为第二套权威;采用的评审经验仅用于挑战真实阅读路径,并不证明记忆收益。批准不替代原生图片留置、独立质量门、冲突处理或维护者合并授权。
English verdict: APPROVE at a912d3a. Explicit question containment preserves exact historical findings and negative evidence. Independent 10 TS tests, both packaged reading journeys, full projection/phase parity and same-fixture compiled base/head checks passed; manual image and installed/live-benefit qualifications remain separate.
|
质量核验补充(head 发布评审后,补跑仓库要求的
English: The scoped approval remains evidence-backed, but required broad demo validation fails identically on the immutable baseline and this head. Strict quality remains FAIL; no merge or full-demo qualification is claimed. |
Problem and result
Repeated decision cards made successive records about one research question look like separate questions. Decision history now places the question title once above a chronological list of its recorded outcomes and changes. Three records per question are visible initially; earlier records and additional questions expand independently. Each record still opens its own finding, with keyboard return and expanded-list continuity.
Grouping uses the recorded question ID, never title similarity. Matching titles on different IDs remain separate, negative/tentative record counts stay visible, and time filtering happens before grouping and counting. Stopped and retained evidence remains directly visible alongside changes.
Owner: the existing Explore TypeScript timeline read projection and packaged Research frontend. No new capability/provider, persisted vocabulary, execution authority, configuration, CLI or Lark command. This is question containment, not an inferred decision-revision or causal relationship. The related refactor keeps grouping in the existing typed read owner rather than in React.
Validation
Tested source:
a912d3a3aa1550921606526455dde4085dc68a27(the same product-source content as the locally built candidate). Before capture:0e47330fe57ce5ea1101dae67ee19b836869ef4e. Synthetic records use the real disposable history HTTP/SQLite owner. No active Goal, model call, installation or release was involved.research-finding-readerandresearch-history. Covered 20 decisions under one question, four independent same-title questions, two levels of pagination, exact older-finding selection, reload/Back/Escape, keyboard/touch return, complete evidence, unavailable/missing findings, 1440px/390px layouts and language switching.goal-showcaseis not passing: delivery-review refresh recovery times out atgoal-showcase.mjs:121. Reproduced on both the frozen base bundle and candidate. Initial overview and error captures were inspected; later showcase recovery/narrow checks are not qualified by that run.The ordinary journey changes from scanning repeated titles to reading one question and its successive changes; opening complete evidence still takes one activation. Read-only behavior and source failure recovery retain their existing owners. CI/review remain separate from author validation; no merge or installed-App adoption is claimed.
Visual evidence
Packaged UI with public synthetic data; the first viewport retains the history chart and exposes the grouped section below it. Question headings replace bordered repeat-title cards, time/status form the subordinate row, and full prose remains in the existing reader. Desktop and narrow default/selected views were visually inspected separately from overflow and interaction assertions.
Narrow layout and complete selected record