Skip to content

fix(research): focus long histories on one readable finding - #7123

Merged
loopx-agent merged 2 commits into
mainfrom
codex/research-findings-reader-20261023
Oct 23, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/research-findings-reader-20261023

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

A research question with many saved findings currently becomes a long stack of collapsed document headings below the whole timeline. Opening the question does not immediately answer what the selected finding says.

This change makes the selected question a focused reader: one complete finding, direct selection and previous/next controls, with refuted/tentative counts kept visible. The full recorded history remains available in place and through the existing return action. Exact finding focus survives reload and Back, and is cleared when switching physical sources. The actual chosen analysis pack stays visible beside its unchanged explicit action, including while whole-history context is closed.

Author Declaration

  • Written by: model_agent, OpenAI GPT-6 family.
  • Implemented against docs/development/design.md (Research Workspace, Explanations On Demand, Populated Page Review) and docs/development/frontend-delivery.md (Task-first delivery), baseline 01f61ee9f3b993bfafc11419ea1842e722906957.
Criterion Disposition Implementation and evidence
Selected content leads with full readable findings implemented GoalResearchHistory renders one article; 20 long findings remain selectable.
Whole history and original source stay reachable implemented Existing history view reused in the contextual disclosure; complete original retained in source detail.
Failures/unknowns remain visible implemented Three refuted/four tentative fixture findings remain counted; blocked source and absent explicit finding do not silently become another result.
Reload, Back and source isolation implemented Local research_finding URL focus; router retention and physical-source cleanup; real source-switch regression.
Populated default and expanded narrow composition implemented Actual packaged 1440/390 captures below; 16px reading text, 14px source identities, no clipped or fixed-height document.

Scope And Continuation

Complete for the selected-question reading journey. Existing Explore projection, measurement parser, history writer, scientific scoring and execution authority remain the owners. No model call or new configuration is introduced. The existing workbench-wide content/usage and review-consistency work remains open; this PR does not claim whole-product design completion, scientific benefit or installed-App adoption.

Bounded simplification: remove the two finding-render modes and obsolete accordion styles, reuse one history view, and keep focus in the existing local navigation state rather than adding a store or capability.

Validation

  • Tested revision: 3810d143ab18eb6b3d9f1452b548204cd1ed923b; run state: finished.
  • Input classes: synthetic, public_fixture.
Check kind Result Evidence / limitation
static passed Dashboard TypeScript + packaged Chat build and integrity verification; CSS token classifier/inventory. Existing chunk-size advisory retained.
real_entrypoint / real_backend passed research-finding-reader: production history HTTP handler with disposable SQLite; 20 long findings, exact selection/reload/Back, full original, keyboard/touch, single-record and unavailable/unknown-link recovery; zero source mutation attempts.
regression_parity passed Existing research-history, research-measurements, goal-showcase and real runtime-source-workspace-browser-smoke.mjs; values, zero/unknown/negative results, history coverage, citation recovery and source isolation retained. Final UI regressions and source identity verified; focused reader includes current analysis scope and rejects analysis writes.
regression_parity passed Identical 24-event fixture: baseline selected question exposes 20 closed document rows and zero visible finding bodies; this reader exposes one full body and all 20 choices. This is a presentation comparison, not an efficiency benchmark.
manual passed Default, expanded original and lower reader inspected at desktop/390px, plus populated showcase. Ten synthetic PNGs inspected; only PNG image-data chunks.
static passed DCO, diff whitespace, bilingual RFC check (no pair changed), actual publication-candidate boundary scan with isolated registry. Unrelated local Goal registration failures retained separately.
static passed Exact-scope strict change-quality receipt cqr_062a8e5c89d08974dab3; one bounded safe-fix pass applied; no unresolved blocker.
integration passed / manual holds Standard managed premerge: 4 direct and 19 selected checks passed, zero failures. Aggregate remains manual_review_required for ten added PNGs; their actual pixels/source/metadata were inspected. Exact-head review and readiness remain separate merge gates.

No paid model or solver was run. PostgreSQL/store conformance is not changed by this presentation-only path. The semantic advisory supports no changed vocabulary carriers here; the finding URL key and numeric navigation tuple are local presentation state, manually reviewed, not a new shared protocol.

Frontend / Visual Evidence

UI impact: changed. Source data: synthetic. Packaged UI + production disposable backend; no private or live screenshots.

First viewport at 3810d143ab18eb6b3d9f1452b548204cd1ed923b:

After: first viewport

Before / after reading composition
Before After
Desktop Before desktop After desktop
390px Before narrow After narrow
Expanded original and lower reader

Expanded desktop
Expanded narrow

Attention review: the chosen question and its observation/decision lead; the navigation count and nonzero exceptions remain once; the full timeline, provenance, version and original stay on request. No summary is inferred from source prose. The last finding is merely the default reading choice, never labeled best or accepted.

Craft review: one reading anchor, existing workspace frame and reading column; no new per-finding cards, idle motion or raw color values. Unknown/failure states retain actual text. The unchanged ordinary populated Goal showcase remains usable. Full-page content outside this selected-question journey is not qualified by these images.

Boundary Checklist

  • Public-safe source, synthetic fixtures and images only; no private state, credentials, raw traces, internal links or machine paths.
  • No benchmark run, scoring, execution or permission change.
  • Scoped to the existing research-reading outcome; remaining program work retained.
  • No RFC pair changed; bilingual diff check passed.
  • Actual first viewport embedded with revision and build/data boundary.
  • Commit includes DCO sign-off.
Actual analysis scope remains visible

Analysis scope desktop
Analysis scope narrow

Presentation-only synthetic analysis catalog over the real history backend; no model or analysis write.

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 loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

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 (author-owned PR; GitHub blocks formal self-approval)

Exact head: 3810d143ab18eb6b3d9f1452b548204cd1ed923b. This is a COMMENTED author-owned review, not formal self-approval.

动机

用户打开一条包含许多结论的研究问题时,需要直接读懂其中一条观察与决策。
旧版先排整张历史图和20条折叠标题;新版先显示一条完整结论,20条可切换,研究全景可原位展开。
所选正文直接可读,刷新和返回保留同一条结论;反驳、待检查及完整依据仍能核对。
本次不改变评分、候选采用、分析执行权限或实验过程,也不证明研究产生净收益。
整个研究工作台的其余长内容、用量来源层级和review能力一致性仍沿既有任务继续;本次仅完成选中问题的结论阅读。

旧问题是实际阅读任务被历史图和重复标题打断,单纯增大字号仍保留这个顺序。本次交付的是一个可独立使用、可回退的阅读流程;不把局部界面变化当成整个产品目标完成。

改动思路

保留现有历史与分析所有者,只调整同一研究页的阅读投影;所选结论是用户意图,分析范围仍由既有pack选择决定。
本PR交付选中问题的一条完整结论阅读、精确返回和来源隔离;研究全景、分析执行、评分、权限及用量所有者不重建。

入口仍是原 Goal 的 Research,数据来自原历史 HTTP 与 SQLite 所有者,正文使用既有结构解析器及测量组件。只在 URL 保存明确的结论选择;同一批历史不能推断用户想读哪一条,因此这是阅读意图,不是第二份研究事实。首次省略选择时展示返回序列末条并固定其身份,不称为最佳、成功或最新验收。

已有保存结论页有自己的分页边界,本次没有把它并成另一个缓存或业务所有者。整图与指标复用同一视图放到“研究全景”,完整来源、适用范围和原文仍可展开。审查发现这会把分析范围选择器一同收起,已补上按钮旁的实际 pack 名;读到某问题不再造成按钮会分析该问题的暗示。这个修复不改分析控制器、配置或显式执行权限。

操作 本次可观察行为
打开多结论问题 直接读一条完整正文,20条可选择
切换与返回 原始结论身份进入URL,刷新及Back恢复
来源不可用/链接缺失 保留真实原因或缺失状态,不静默换另一结论
查看分析范围 按钮旁展示实际选中包;浏览和切换不启动分析

具体改动

对照既有 docs/development/design.md,规范版本 01f61ee9f3b993bfafc11419ea1842e722906957:research-workspace implemented(完整内容、精确来源焦点);explanations-on-demand implemented(全景和重复细节按需,必要操作范围保留);populated-page-review implemented(20条长结论、反驳/待检查及展开原文的桌面与窄屏)。新增中英文说明延续该规范,不作为自证验收的替代。

关键代码讲解

  • selectedFromUrl 17行:先验证Goal,再复用现有数组解码并读取可选结论身份。另一来源的同名Goal由既有切换事务清理,避免“名称一样就沿用旧选择”。
  • findingElement 114行:删除折叠/展开两套正文,统一完整article;既有观测、解读、决策、测量和执行事实继续显示,结构化摘要的完整原文放在原来源入口里。
  • selectedFinding 250行:显式id精确匹配,只有省略时才选末条;首次显示用replaceState固定,不制造额外返回步骤。未知id不降级到别的记录,用户可以重新选择。
  • 分析操作区314行:展示既有控制器的pack标题,保留单独用量和显式按钮。全景展开后仍能用原选择器切换范围,测试验证A到B且无分析写请求。
  • 来源清理3430行:新的本地焦点与node/pack一起清除;router保留它以支持刷新,真实RuntimeWorkspaceServer测试验证来源切换与Back。

生产变化集中在原有四个文件;文字331增/52删,21个路径中10个是公开合成PNG。163行新增场景经生产历史HTTP/一次性SQLite读取24条合成事件;现有历史、测量、普通Goal与来源切换测试保留。CSS去掉过时摘要裁剪规则,正文16px、身份14px,窄屏正常换行,无固定高度正文。文档及截图说明数据、构建和未验证边界,没有提交运行时构建产物或私人Goal。

对主干的风险

最强风险是把全局分析上下文收起后,用户误以为按钮针对正在读的问题。已用实际pack名称留在操作旁,且测试从现有选择器切换A/B,确认标题跟随真正所有者;它是展示测试,不是模型执行验收。另一风险是新记录加入时阅读突然跳走,或缺失id静默展示别条;精确URL固定和显式缺失恢复测试覆盖了这些分支。

相同24条输入在不可变基线与此head都保留20条可访问记录,原始源不变、变更请求为0;基线可见完整正文0条,新版1条。这个独立可读性断言在旧缺陷上失败、在新实现上通过,不以“不溢出”替代正文可读。历史、测量、普通Goal、来源切换、键盘/触摸及展开原文测试也通过。scope目录是合成分析catalog,真实历史后端与它的模拟边界分别记录,不能据此宣称分析授权或模型已跑通。

当前head的4项直接与19项选定检查全部通过,失败0;canary整体仍报告10个PNG的manual_review_required,并未被改写为全绿。已人工检查这10张原始合成图片的像素、来源和PNG元数据;严格CQR cqr_062a8e5c89d08974dab3 匹配最终范围。一轮安全细化修复已记录。早期fixture缺语言与构建未完成就起测试的失败保留,分别由完整fixture和构建就绪后重新验证解决,未放松产品检查。全局scan另有无关本地Goal契约读取失败,未迁移它们以刷绿;实际全部公共候选使用隔离空registry完成文本扫描。

按当前Goal契约wait_for_ci=false,没有查询、轮询或等待远端CI。无存储/权限/评分变化,不要求无关PostgreSQL或付费模型实验。不是default-off声明;普通Goal回归与读操作无副作用是直接证据,不用“没出现对象”推断隔离。回滚只需还原这些UI提交,本地可选URL没有持久化迁移。一次只读一条增加了并排比较时的选择动作,完整上下文仍可返回;本PR不声称完成比较分析设计。

我的整体评价

结论为APPROVE,交付判断为justified_increment:用户体验 user_experience=improved,仅限定于已验证的选中问题阅读;长程效果 long_horizon=preserved,未测量科学收益或用户节省时间。已检查长正文、20条混合状态结论和展开原文的桌面与390px页面:所选观察与决策成为阅读主体,反驳与待检查计数保留,共同历史移到按需入口,完整来源正常换行。
未资格化整个工作台、所有真实数据组合、实际模型执行或安装后的App;本轮公开证据仅证明打包UI与一次性真实历史后端的阅读行为。

完整原文、负结果、未知和既有分析权限保持;读数来源所有者没有复制,新增键属于local_only阅读意图。去掉双正文分支和重复历史堆叠是本次有价值的有界简化;没有版本兼容层、额外执行模式或新能力。现有whole-page与review机制工作继续,不能因本次截图/测试或合并结算整个原任务。精确head审查、公开回读和merge-readiness仍需各自满足后才能按已有相关任务授权合并。

English verdict: APPROVE 3810d143ab18eb6b3d9f1452b548204cd1ed923b. The selected-question reader now leads with one complete finding while retaining all findings, negative states, original evidence and exact navigation. Local packaged/real-history tests and before/head replay passed; ten synthetic images were manually inspected. CI was not consulted by policy. This is a bounded presentation improvement, not proof of model execution, scientific benefit or installed-App adoption.

@loopx-agent
loopx-agent merged commit 74651e3 into main Oct 23, 2026
24 of 38 checks passed
@loopx-agent
loopx-agent deleted the codex/research-findings-reader-20261023 branch October 23, 2026 06:05
@loopx-agent

Copy link
Copy Markdown
Collaborator Author

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · effort=max

Post-merge audit — REQUEST_CHANGES · #7123 @ 3810d143ab18eb6b3d9f1452b548204cd1ed923b

[P2] 关闭结论阅读器后应返回原时间线标记。 当前 historyView 的条件放置 把时间线从画布移入 details 子树,打开时就卸载了原标记。select 保存的 opener 因而变成断开的 DOM;closeReader 后的布局 effect 落入画布焦点回退。键盘聚焦标记→Enter→Escape,以及打开后点“回到全图”,在当前提交都得到 opener.isConnected=false、原控件未聚焦;相同合成输入的原始基线可返回原按钮。这增加了键盘连续阅读时重新寻找研究项的成本。最小修复:保留时间线/关系图子树,或保存稳定标记身份并在重挂载后定位新控件;关闭阅读器后聚焦原标记,补 marker→Enter→Escape 和返回按钮的真实浏览器断言。

动机

在同一 Goal 的研究页连续阅读多条结论、并用键盘在时间线和正文之间往返的用户会遇到这个问题。

一个问题有二十条长结论时,原版把二十个折叠入口并列放在阅读区;新版只展开选中正文,保留二十项选择与前后切换,并把全景和来源放到按需展开处。

实测新版保留全部二十条选项,每次呈现一条完整正文,失败与待检查计数可见,刷新和返回恢复结论;但从时间线打开后关闭正文,焦点未返回原标记。

本次范围是研究页的已记录结论阅读,不认证分析模型效果、研究结论正确性、已安装桌面版本或长期收益。

改动思路

沿现有历史投影和分析控制器完成阅读交互即可;选中结论只是本地阅读意图,无需新增研究权威、后台服务或执行流程。 当前边界为已记录结论的可读正文、完整历史选择、来源展开、来源隔离与键盘往返;最小待修复项是原时间线控件焦点返回。

实际路径是 Goal 研究页→已有历史 HTTP 读取→既有 Explore 类型投影→本地结论选择→完整正文与来源展开。后端保留已记录事实,前端只决定本次读哪一条。新增 research_finding 保存用户所选的真实结果身份;这个意图不能从“最新”“最佳”或其他无关记录猜出。省略时使用投影序列末项,再把该身份固定进 URL;这不证明末项是按事件时间最新或质量最佳。

下表描述本次精确提交的前后行为;它是源码与执行观察的对照,不代替测试。没有使用未验证渲染的图示。

用户动作 原始基线 当前提交
打开二十结论的问题 二十个折叠入口 一条完整正文,二十项选择与前后切换
读取来源或全景 与正文同时占用注意力 按需展开,全部原始记录仍可到达
改分析范围后收起历史 范围选择在原区域 现有 pack 标题在动作旁保留,A→B 读回通过
从时间线打开再关闭 返回原标记 原标记被卸载,焦点回退到画布,F1

复用搜索覆盖基线和当前 head 的 History、Saved results、Timeline、分析控制器、路由及来源切换。Saved results 是另一种分页结果列表,不能替代完整节点历史;当前做法直接延伸原历史阅读器,没有第二套解析、结果判定或分析执行权威。布局/选择属于展示,完整分页与回放属于已有不变量,分析网络和执行仍由原控制器拥有。删除旧的折叠/展开双渲染分支是合适的有界简化;焦点修复也应留在此处。

具体改动

完整比较使用合并前已捕获的原始基线 01f61ee9f3b993bfafc11419ea1842e722906957 到当前 3810d143ab18eb6b3d9f1452b548204cd1ed923b,保留整个 PR;没有把合并后的主干当新基线而得到空 diff。21 个路径共 +331/-52:4 个生产文件 +113/-46,5 个浏览器测试/fixture 文件 +176/-6,2 个文档 +42,另有 10 张 PNG。生产改动为阅读器/CSS、路由接收新字段和来源切换清理;浏览器入口加入长结论阅读用例,并更新原历史、测量和来源切换覆盖。两处文档说明实际阅读层次和合成证据边界。

验收依据是 docs/development/design.md @ 01f61ee9f3b993bfafc11419ea1842e722906957,先读其既有正文、完整历史、来源隔离及键盘返回约定,再读 diff。以下标识是本评审对原有条款的映射,不是新发明的产品门:

  • READ-BODY — implemented:完整选中正文优先;当前一篇文章、二十项选择,正常 16px 字号。原文按需展开,长标题只在原生选择列表内截短。
  • READ-HISTORY — implemented:24/24 记录、3 条反驳和 4 条待检查保留;全景及全部已读记录仍可展开。当前 9 个历史 owner 测试覆盖两百节点尾部、晚到记录、回放冲突及错误 Goal。
  • READ-FOCUS — not_met:原约定要求关闭返回精确原控件;当前时间线回返实测失败,见 F1。需要稳定原控件身份并增加对应真实浏览器断言。
  • READ-CONTEXT — implemented:选择写入结果 id,刷新/Back 保留;来源 A→B 清除旧节点及结论,Back 恢复 A。来源暂时不可读时保留上一份完整正文,重试后恢复。后两项旧捕获保留其原 H0 版本,复核其阅读、路由、来源 owner 在当前提交逐段相同后才复用。
  • READ-LAYOUT — implemented:当前 1440×900 和 390×900 的整页默认态与来源展开图已检查;二十项混合状态有清楚层级,完整原文自然滚动。此项不覆盖 F1 的键盘要求。

本 PR 新增的十行设计约定只能解释有意的展示变化,不能用于自证符合原先要求,也不能取消原有精确焦点返回条款。

关键代码讲解

  1. selectedFromUrl(17):先核 Goal,再复用路由数组编码,最后读可选 finding。原节点链接继续有效,跨 Goal 选择不借用旧状态。router.tsx:38 接收同一可选字段,没有存储格式迁移。
  2. findingElement(114):直接渲染完整原始结论,沿用已有结构解析和测量展示;适用范围、输入版本与原文进入单独 disclosure。未识别内容仍是原文,没有从文字推断确认或收益。
  3. select / selectedFinding(223、250):选项及前后按钮更新精确结果 id;首次省略时固定投影末项。显式不存在的 id 不回退成另一篇“成功”正文,而给出可恢复的列表。popstate 恢复选择,来源变化在 Dashboard 3430 行一并清理。
  4. historyView / closeReader(380、241、204):有选择时把全景放进历史 disclosure,正文位置因此更清楚;但祖先从画布变为 details,原控件身份失效。现有列表返回测试使用节点 id 找回新按钮,时间线路径只保留 HTMLElement,所以它才触发 F1。应补的是稳定定位与真实入口断言。
  5. runtimeSourceChanged(3430):把新结论字段加入已有来源切换清理集合,沿用 source/Goal 绑定。它没有成为另一个研究状态 owner。

对主干的风险

F1 属于本 PR 引入的回归:同一 24 事件/20 结论合成输入,经真实研究页和一次性 SQLite/history HTTP 后端,原始基线 Enter→Escape 后原按钮仍连接且被聚焦;当前提交在打开时就已断开,Escape 与返回按钮都把焦点交给画布。因果路径是本次新增的祖先切换,不能用构建成功、列表返回正常或截图看起来合理排除。现有 reader smoke 关闭后检查文章数量,未检查时间线原控件;因此测试全绿仍存在这个反例。按 F1 修复后应重跑这两个路径,并保留分组列表、刷新/Back、来源隔离场景。

真实正例覆盖完整正文、全部二十项、前后切换、英文界面保留中文原文、未知/受阻无结论、显式缺失 id 与单条结论。当前新增的分析范围 A→B 在桌面及窄屏均能在收起历史后显示 B;该部分用合成只读分析目录供给输入,未启动模型或研究模式。实际 history 读回保持源未改、mutation_attempts=0,目录代理非读请求为零。来源 A/B 与受控故障使用实际服务配合合成来源提供者,不能据此声称原生来源全事务已通过。

本次是普通阅读默认行为变化,未声称 feature-off 保留旧布局。已有研究模式和分析执行开关的权限归属未变;读取或选择结果不授予分析、写入、调度或合并权限。新增字段复用精确 typed result id 和现有状态;没有子串/散文判断、通用义务混入研究专用要求,或新增 actor/协作生命周期名称。

本地验证:当前 npm run build 通过;标准 premerge 的 4 项直接检查及 19 项选定检查全部通过、无失败或跳过;9 个当前历史 owner 测试全部通过。premerge 原始整体仍为 exit 1 / manual_review_required,原因是 10 张 PNG 不在文本扫描覆盖范围。已另行检查全部像素、仅 IHDR/IDAT/IEND 的元数据与合成来源,未把该人工检查冒充原始命令全绿。3 张 before 图与先前已检查版本逐字节相同,其余当前图片均重看。当前契约 wait_for_ci=false,未获取、轮询或等待 CI。

我的整体评价

REQUEST_CHANGES,作为已合并提交的新问题审计发布。 当前阅读层次与现有 pack 范围提示有明确改善,生产机制和兼容成本与问题相称;但验收 READ-FOCUS 未满足,problem_context=not_yet_proven,可观测行为存在非预期漂移。长程维度只判断记录、失败、未知、重试和后续阅读能力被保留,不能推导实际净收益;用户体验维度因为键盘回返回归判为 regression。

已检查包含二十条长结论、反驳和待检查状态的整页:桌面和窄屏正文层次清楚,来源与完整原文按需展开;本次新补的分析范围 A→B 提示读回成立。焦点回归仍单独计为用户体验退步。

未认证安装后的桌面应用、其他浏览器、真实分析模型或长期任务收益;来源切换使用受控来源提供者,不能替代原生来源全事务资格。

本次保留已有类型/历史 owner,仅新增本地阅读意图;URL 与 UI 一同部署,历史存储独立保留,无需新版本分支或兼容 shim。合适的后续改动是 F1 所述的局部焦点修复及反例验证,不要求扩展成新框架或完成整个研究路线图。参考过既有“先验证首个有用结果和恢复路径”的评审经验,并在当前阅读、失败和来源恢复场景中应用;这不证明经验检索改善了评审质量。早先同提交的作者批准结论未被继承、撤销或替代;本评论记录新验证的问题,不作合并、安装或正式批准操作。

English verdict: REQUEST_CHANGES — post-merge audit of 3810d143ab18eb6b3d9f1452b548204cd1ed923b. Reparenting the history canvas unmounts the originating timeline marker, so both Escape and Back return focus to the canvas instead of that control. Same-fixture baseline restores it. Current build, 9 history-owner tests and 4+19 native checks pass; 10 PNG manual holds were separately inspected. Preserve the marker identity and add real-browser round-trip assertions. Actual model benefit and installed-app qualification remain outside this review.

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.

1 participant