Skip to content

Restore saved case chapters from their links - #8424

Merged
loopx-agent merged 2 commits into
mainfrom
codex/case-study-section-links-20261109
Nov 9, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/case-study-section-links-20261109

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

A reader returning to a later chapter of a saved case study used to reopen its introduction. Each chapter now has a normal link bound to the same child Goal, source and saved version. Reload, fresh open and Back/Forward restore the selected passage; a hash from a different version or source does not focus another chapter.

Author Declaration

Written by OpenAI Codex as a model agent. Implemented against the Research Workspace reading contract.

Integration And Scope

Tested revision: cd5b09de97ca308442ccd16087c3800f1fd8316d, based on cffb53fe46ea57bae5394cd633bf98f71af93d3a.

The current revision integrates the merged #8384 and #8411. It preserves their single-expansion conclusion evidence, same-result refresh, citation version fence and in-place retry. Conflict resolution keeps the existing evidence state owner and shared citation list. The static reader fixture now supplies its required navigation context for both single- and multiple-version checks.

No analysis, source registration, persisted Goal state, execution permission or benchmark scoring changes. Original records remain a separate reading view.

Validation

Check Current result
Build and source reader TypeScript/Chat bundle, CSS properties, existing research analysis/native read smoke passed.
Integrated chapter journey The actual compiled Chat entry and native read backend passed at 1200px and 390px: keyboard links, fresh open, reload, Back/Forward, unknown chapter, repeated chapter IDs in two versions, version change and return.
Citation boundaries and recovery The original-to-localized-result regression and delayed original response passed in the same bundle. Injected HTTP 503 recovered the same cited passage and returned focus to the originating chapter without changing its link.
Conclusion evidence One expansion still shows five original references and the current saved window, run and revision. Source fixtures stayed unchanged; zero mutation requests.
Local qualification Standard premerge: four direct and two selected checks passed. Strict exact-scope change-quality receipt cqr_00051d02606434a774bf verified.
Limits This revision has not been installed into the production App. Its new exact head requires review; the earlier approval at 05edd379eb does not approve this integration. Current browser qualification uses synthetic data and the real read handlers; the earlier three archived-case checks remain evidence for their original revision.

The initial combined static smoke failed because its controller fixture lacked the navigation callback. The fixture was corrected; production reading did not gain a compatibility fallback. Previously reported CI latency remains a diagnostic observation with an unresolved original trigger; this PR does not claim to repair it. Remote CI was not queried under the current managed policy.

Frontend / Visual Evidence

All current images show the same public-safe synthetic study in the compiled Chat bundle at cd5b09de97ca308442ccd16087c3800f1fd8316d with the native HTTP read backend. This is a source bundle qualification, not installed Desktop or a new benchmark result. The first viewport keeps the conclusion; optional originals and provenance remain below one disclosure. A chapter link restores its heading and full text in the narrow reading column.

Desktop first viewport 390px first viewport
Integrated desktop case reader Integrated narrow case reader
Conclusion evidence after one expansion Narrow chapter restored after fresh open
Current conclusion citations and saved scope Restored chapter in the integrated reader

Type of Change / LoopX Area

  • Dashboard reading/navigation repair.
  • DCO signed; no RFC, authority, private-state or scoring changes.

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 · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

受影响的是读完研究解读的一部分、之后要继续读或把某一节发给同事的人。 主干的目录按钮会滚动到章节,地址栏仍指向整份解读。 例如读到第二节“另一个版本中的同名章节 ID”,复制旧地址再打开会回到开头,收件人要再找一次。候选的同一操作会打开原先保存的版本并定位第二节。 打开或刷新章节链接即可继续阅读;浏览器后退和前进恢复相应章节,章节里的原文仍可查阅。

本轮只验证已保存的解读与只读来源,不验证模型执行、线上数据或已经安装的客户端。

改动思路 / Approach

保留 Research 的 URL 和读源所有权。仅在当前解读加载后由章节组件定位,现有原文读取和版本选择继续共用。 目录生成固定版本的普通链接;页面就地打开时沿用 History 更新,首次载入或历史导航后由章节组件恢复焦点。 如果只给地址加章节片段,默认版本变了仍可能打开另一份材料;目录第一次生成链接就固定版本。

本 PR 只改变 Case 解读的目录导航与恢复;不引入新持久状态、分析入口或数据访问权限。

具体改动 / Changes

审查 05edd379eb765abdbbed1f1084db4837fd0f7238,对照主干 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021,覆盖 4 个文件(+79/−16)。验收依据:Research Workspace · docs/development/design.md。

  • research-reading-selection。重开、刷新或使用浏览器历史时,保留已选的阅读内容。 桌面与窄屏都恢复了第二节和第三节;主干重开没有章节焦点。
  • research-source-boundary。阅读位置绑定原来源、Goal 和确切保存版本。 两个版本有同名章节 ID;把一个版本的片段用于另一个版本、无解读 Goal 或另一来源时均未定位。
  • original-evidence-return。已选内容的依据和原文可按需读取,普通研究记录仍是独立视图。 读到指定三行原文,窄屏模拟读取失败后重试成功,关闭时焦点返回引用;普通研究记录仍可进入。

关键代码讲解

  • navigate:换保存版本时清理前一版本的章节片段。 沿原版本读取路径选择新版本。 源码
  • studyNavigation:为当前版本和 Goal 生成地址,复用既有来源及路由。 目录首次点选也带上当前版本 ID。 源码
  • ResearchCaseStudy:在挂载、后退、前进或片段变更时恢复当前文章的合法章节。 目标必须存在、可见、属于当前文章,且模式、Goal、版本、来源片段都匹配。 源码
  • case-outline:呈现键盘可用的章节链接。 普通点击沿现有 History;修饰键保留浏览器原有链接行为。 源码
  • ResearchCitationPanel:沿既有原文入口展示原始片段、等待和错误。 关闭返回发起引用,证据保持只读。 源码

对主干的风险 / Risks

最大的风险是同名章节跨版本误恢复,或者恢复时抢走普通研究记录页的焦点。对照使用相同的合成研究输入和真实 Chat 读后端,包含两个已保存版本及没有解读的 Goal。

场景 主干 候选
同一份解读打开第二节,重新打开地址 目录只滚动;重新打开回到导语 固定原版本,恢复第二节与焦点
浏览器重载、后退和前进 章节没有自己的地址或历史条目 恢复保存版本的对应章节
另一个版本复用同名章节 ID,或片段不存在、来源不符 无章节地址可恢复 不聚焦该片段,仍可读当前版本
进入研究记录,浏览器后退 普通记录可读;回到报告开头 普通记录投影一致;后退恢复第二节
从章节展开原文,失败后恢复 既有原文入口和读失败处理 窄屏故障提示、重试三行原文、关闭归还焦点

在 1200 × 900 与 390 × 844 验证点击、键盘、重开、刷新及历史往返。模拟阻断原文读取后,候选能显示错误、重试读到三行并将焦点归还给引用按钮。普通研究记录页对照一致;无解读的 Goal 仍显示研究历程。两端源文件读回不变且无写请求。

两端 Chat 源码构建通过;候选的研究原文 smoke、快速预合并 4 项直接检查和 2 项所选检查通过。 视觉检查限于两种宽度的本地 Chat 源码构建和合成资料;未独立复装作者的 wheel,未复测外部已登录来源及其他浏览器。

我的整体评价 / Verdict

实看了桌面和窄屏:默认先见版本、标题和结论,范围仍折叠;深链将章节标题置于可见区,展开的原文在窄屏能换行并关闭返回。 视觉检查限于两种宽度的本地 Chat 源码构建和合成资料;未独立复装作者的 wheel,未复测外部已登录来源及其他浏览器。

当前提交的证据支持批准。目录可独立恢复位置,原文和普通研究记录仍沿用已有入口。

English verdict: APPROVE. The exact head restores chapters for the pinned study version across fresh open, reload and browser history, with evidence recovery and record-view parity verified in the local Chat build.

@mergify

mergify Bot commented Nov 9, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 9, 2026
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 9, 2026

@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 · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

受影响的是读到研究解读中后段、之后要继续读或分享某一节的人。 主干目录能滚动到第五节,但复制地址重新打开会回到导语;候选链接固定同一保存版本,并恢复第五节。 在桌面和窄屏中,重开、刷新、后退和前进恢复已选章节;章节原文失败后能在原处重试。

复制一个章节后仍要重新寻找正文,会在每次阅读中断时重复消耗注意力。原来的研究记录和引用入口已能读取资料,缺的是继续阅读同一份资料的位置,而无需重新选版本或输入已知信息。本轮只验证已保存解读的阅读导航与只读来源,不证明模型研究效果或已安装客户端行为。 安装后的实际 App 阅读仍待部署后读回;研究完整性与科学结论的验证继续由原研究任务负责。

改动思路 / Approach

保留现有 Research URL、保存版本与引用读取所有权,只把章节选择投影到地址并在文章内恢复焦点。 本 PR 只交付已保存 Case 解读的章节链接与恢复,不增加持久 Goal 状态、分析权限或后台执行。

目录第一次生成链接就固定当前版本,避免只加片段后跟随新默认版本。普通点击沿现有 History 就地更新;修饰键仍使用浏览器普通链接行为。重新挂载或历史导航后,仅允许当前文章内存在且可见、Goal、版本和来源均匹配的章节恢复焦点。现有引用的版本隔离、失败重试和焦点归还继续由原控制器负责,不增加第二个分析或读源实现。

操作 主干 当前候选
复制第五节地址后重开 回到导语,没有章节焦点 打开同一保存版本并恢复第五节
同名章节跨版本 无章节恢复能力 不借用另一版本的章节;主动切版清除旧片段
原文失败后重试并关闭 既有错误与恢复入口 仍读同一原文,归还章节焦点与原地址

具体改动 / Changes

审查提交 cd5b09de97ca308442ccd16087c3800f1fd8316d,对照主干 cffb53fe46ea57bae5394cd633bf98f71af93d3a。本次整合包含前置 #8384、#8411 已合并的能力;重新核对当前差异是四个文件(+81/−17),不是 GitHub 一度缓存的旧主干比较。旧提交的批准不覆盖这个整合提交。

验收依据为 docs/development/design.md#research-workspace--研究工作台,固定版本 cffb53fe46ea57bae5394cd633bf98f71af93d3a。以下标签是这份阅读合同的描述性索引,不是新增合同词汇:research-reading-selection 已实现重开、刷新和历史恢复;research-source-boundary 已实现 Goal、来源和保存版本隔离;original-evidence-return 保留原文、失败恢复和独立研究记录入口。对应验证使用真实编译后的 Chat 页面及原生只读后端,不以组件出现作为恢复成功。

关键代码讲解

  • navigate 沿现有版本选择更新地址,只在切换版本时清除章节片段;不会把新目录引入为读源或状态权限。
  • studyNavigation 从现有来源、Goal 和 pack 派生可复制地址。章节选择是明确的阅读意图,其余信息均复用当前目录事实,浏览器历史负责回放。
  • ResearchCaseStudy.restore 在挂载与历史变化后核对模式、Goal、版本、来源前缀和当前文章可见性,清理旧 frame/listener。未知目标直接忽略。
  • case-outline 用真实链接替代滚动按钮,保留键盘与修饰键行为;焦点和滚动共用局部 helper。静态 smoke 的真实调用 fixture 同步补齐 navigation,没有生产兼容分支。

对主干的风险 / Risks

最强反例是两个版本有同名章节,旧片段把读者带到另一份资料;另一风险是延迟原文响应或普通记录视图夺走章节焦点。当前 1200×920 与 390×920 真实入口对照验证了同名 ID、缺失章节、外来片段、切版及 Back、刷新与 fresh open。带着子 Goal 选择进入父 Goal 时,实际读源返回不可用而没有借用子资料;未知片段不聚焦。普通研究记录可进入,返回后仍恢复第五节。

PASS:两端源码构建、当前 TypeScript/Chat bundle、CSS 检查、研究分析原生读 smoke、原文到本地化结果与延迟响应回归、标准预合并四项直接检查和两项所选检查。严格质量凭据与当前 base/head 匹配。注入 HTTP503 后同一原文重试成功,关闭归还原章节;源文件未变且无写请求。独立恢复断言在主干实际得到 null、候选得到预期第五节标题,证明检查能够识别旧缺陷。

保留失败历史:整合最初暴露静态 fixture 缺少 navigation,修正 fixture 后按原断言通过;一个额外负例脚本曾等待不存在的父页 CSS 类,改为检查实际不可用提示后完成。此前报告的 CI 延迟原因仍 UNVERIFIED,没有称作已修复。本轮遵循不等待 CI 的既定策略,没有查询或轮询 CI。改动没有新增激活、权限、配额或 agent 指令;无功能开关隔离承诺,也没有为获得通过而降低门槛。

我的整体评价 / Verdict

这是 justified_increment:long_horizon 和 user_experience 在重复阅读的连续性上 improved,不代表研究结论或模型得分提高。实看桌面与窄屏的长篇合成解读:默认先见结论,展开后可见全部五条依据;恢复链接将章节标题和正文带回阅读区。 视觉资格限于当前源码构建、真实读后端与合成资料;当前未复装 Desktop/WK,也未复测外部已登录来源。

保留现有 Research URL、保存版本与引用读取所有权,只把章节选择投影到地址并在文章内恢复焦点。 本 PR 只交付已保存 Case 解读的章节链接与恢复,不增加持久 Goal 状态、分析权限或后台执行。 小范围 helper 和现有 URL owner 足够,无需并行状态、兼容解码器或新抽象。完整内容、依据与普通记录仍可到达,版本恢复没有要求额外确认。源构建和真实读路径已达到本次导航切片验收;安装后的观察与原任务的完整研究验收分别保留,不能从批准推断已部署或科学效果。

English verdict: APPROVE. Exact head cd5b09de97ca308442ccd16087c3800f1fd8316d restores the pinned study chapter across reopen, reload and history, with source/version isolation and citation recovery verified in the compiled Chat/native read path.

@loopx-agent
loopx-agent merged commit 701795d into main Nov 9, 2026
27 of 52 checks passed
@loopx-agent
loopx-agent deleted the codex/case-study-section-links-20261109 branch November 9, 2026 14:53
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