Skip to content

fix(research): show successive decisions under their question - #7366

Merged
huangruiteng merged 2 commits into
mainfrom
codex/decision-history-hierarchy
Oct 26, 2026
Merged

huangruiteng merged 2 commits into
mainfrom
codex/decision-history-hierarchy

Conversation

@huangruiteng

Copy link
Copy Markdown
Collaborator

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.

  • Passed: 10 Explore history TypeScript tests, including same-title/different-ID isolation, backfills, unknown times, historical negatives and phase filtering.
  • Passed: dashboard TypeScript + production Chat build, bundle source verification, control-plane typecheck, semantic vocabulary smoke and diff whitespace checks.
  • Passed: packaged research-finding-reader and research-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.
  • Broader goal-showcase is not passing: delivery-review refresh recovery times out at goal-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.

Candidate first viewport

Before Grouped decisions
Repeated cards Question and successive decisions
Narrow layout and complete selected record

Narrow grouped history
Selected record on desktop
Selected record on phone

Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>

@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

动机

在研究页回顾同一问题多轮尝试、并打开某条历史结论的读者。

旧界面面对同一问题的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.

@huangruiteng
huangruiteng merged commit f937a5c into main Oct 26, 2026
29 of 43 checks passed
@huangruiteng
huangruiteng deleted the codex/decision-history-hierarchy branch October 26, 2026 09:41
@loopx-agent

Copy link
Copy Markdown
Collaborator

质量核验补充(head a912d3a3aa1550921606526455dde4085dc68a27;既有独立评审结论保留)

发布评审后,补跑仓库要求的 npm run smoke:demo-readiness,严格质量资格仍未通过:

  • 两次独立端口、串行 base/head 对照均在首页断言 Missing dashboard home text: Codex 失败。固定基线 0e47330fe57ce5ea1101dae67ee19b836869ef4e 与该 head 的完整错误输出逐字相同,相关五个首页/命令源文件也相同;这支持既有首页路径失败的归因,未发现本 PR 引入的研究页缺陷。
  • 最初并发尝试共用默认端口,分别出现首页获取超时或缺少 Codex;原失败保留,端口冲突只是已确认的环境隐患,不能断言是唯一原因。后续串行对照没有把这些运行改记为通过。后续未抵达的完整 demo 阶段保持未验证。
  • 原独立研究页专项、编译、完整语义对照及已执行 premerge 自动子检查通过。带 Goal 的 premerge 再次读回严格质量凭证 invalid_receipt,并保留 6 张图片的原生 manual_review_required;人工查看图片不消除该原生标记。
  • 精确差异质量凭证 cqr_2866183fbce32d22690a,fingerprint 2866183fbce32d22690a5ca732ed5875ef5d7b0753c9e02b2b910cfebb33d2bc,结论 FAIL。未改代码、断言或所需检查;该失败不授予绕过质量门、合并或完整交付资格。

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.

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