Skip to content

Make the UTC basis explicit in research date groups - #8332

Merged
loopx-agent merged 1 commit into
mainfrom
codex/product-engineer-20261108-001230
Nov 8, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/product-engineer-20261108-001230

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

UTC research groups currently appear as plain calendar dates in the timeline and date-group reader, while the record range uses local time. Near local midnight, this can make a correct group look misdated. Show the existing UTC basis at both reading entrypoints; keep date keys, members, routes and unknown-time behavior unchanged.

Extend the existing packaged research-route-reading scenario with a late UTC record that crosses midnight in Asia/Shanghai. Check both locales, desktop/narrow layouts, timeline/graph entry, reload, keyboard return and unchanged 24-question membership. This uses the real local Explore history backend with synthetic records and intercepted analysis readbacks; it performs no model analysis or source mutation.

Validation at 6b507d9dee1e0bd9d18df201b981b03271955875: dashboard/Chat packaged build PASS; packaged research-route-reading PASS; standard canary premerge PASS (diff hygiene, bilingual RFC gate, maintainability/vocabulary/projection and public-boundary checks). The same added oracle fails against production baseline b78246ff7925a34084d16520040d69ecd6b92316 because its date label lacks UTC. CI is not a merge-wait requirement. Installed runtime qualification follows review and merge; the screenshots below are packaged synthetic evidence.

Visual evidence

Desktop before (1440×900, baseline):

UTC date basis missing before the change

Desktop after (1440×900, tested head):

UTC date basis visible in the populated group reader

Narrow after (390×900, tested head):

UTC group heading and long research questions on a narrow screen

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)

动机 / Motivation

在嵌套 case Goal 中按日期阅读研究记录的用户。同一问题首次记录在 2026-01-04 23:00 UTC,北京时间已是次日;原日期按钮和组标题只写 2026-01-04,容易与本地记录范围混淆。修复后两处显示 2026-01-04 UTC,问题仍在原组。

时间线日期入口和组内阅读器直接标明 UTC,保留原来的日期键、24 个成员与刷新后的选择。本次不转换原记录时区、不推断求解时长、不执行模型分析,也不改测量或收益判断。case 分析质量、跨实验可比性和完整成本仍需各 case 的独立证据,本 PR 不宣称解决这些问题。这解释了为什么继续沿用现状仍有阅读成本,也限定了这次修复的实际价值;不能把日期显示改善当作研究效果已经提高。

改动思路 / Approach

两处既有投影补充相同的时间基准即可消除歧义;日期归组继续由同一 typed owner 决定,无新增状态、配置或执行入口。当前 PR 交付时间线入口与日期组阅读器的 UTC 口径,以及同一真实本地历史读取路径的跨午夜回归。研究入口沿用现有工作台,源事件先经过唯一的 UTC 日期归组,再交给时间线或关系图显示。原 Graph 的文字已标明 UTC,本次使另两处呈现与它一致。点击日期、选择问题、刷新、返回只改变阅读选择,不增加分析任务、来源写入或人工确认。

最小方案不是重新按北京时间分组,也不是新增格式化服务;前者会改写既有日期键含义,后者没有提供必要的复用价值。现有 typed owner 已足够,保留两个简短的投影表达式更容易审核。没有引入策略开关、provider IO、迁移分支或新的公共词汇。

具体改动 / Changes

评审规格为 docs/development/design.md,固定版本 b78246ff7925a34084d16520040d69ecd6b92316 的 Research Workspace 段落。research-source-scope 已实现:真实 Goal/source 的原始研究仍从同一读取路径加载,浏览零写入;research-reading-continuity 已实现:刷新与前进后退保留日期、问题、结论和返回焦点;research-group-meaning 已实现:分组只表示阅读范围,不生成因果关系,伪造父集合不能借用无关问题。UTC 本身来自原有唯一归组 owner,不在这次补丁中重定义。

关键代码讲解

  • GoalResearchTimeline:192 只在已有 day 非空时附上 UTC,空时间仍用原有中英文未知文案;按钮数据键和回调参数没有变。
  • GoalResearchHistory:641 在日期组标题补同样的口径。相邻点集合标题、问题索引、结论状态、上下文帮助与返回动作继续使用原实现。
  • writeRouteReadingFixture:13 把 24 个未关联问题中的最后一个放到 UTC 23 点,后续结论放到次日;浏览器明确使用 Asia/Shanghai。新增断言检查日期、24 项成员与重载后的标题,原有多语言、桌面/窄屏和读回检查继续执行。

对主干的风险 / Risks

最强反例是文字写 UTC,实际却已按本地日归组,或者补字时顺便改变日期键,让旧阅读链接失效。已核对未改动的 groupUnlinkedHistoryQuestions:它按首次记录的 toISOString().slice(0, 10) 产生 day;两处生产改动均未触碰选择、排序或事件。相同新测试在不可变基线 b78246ff7925a34084d16520040d69ecd6b92316 上因缺 UTC 的断言失败,在本 head 上通过;这比只在 UTC 主机上测试更能检出跨午夜错误。

PASS:npm --prefix apps/presentation/dashboard run build 完成 TS 检查和 dashboard/Chat 打包;既有 packaged research-route-reading 场景通过;标准 loopx canary premerge --from-git-diff --git-diff-base origin/main 通过 diff、双语 RFC、维护性、语义词汇、投影及公开边界检查。读回确认源文件未变、mutation attempts 为零、模型写入为零;伪造无关父集合没有生成组内导航。CI 按当前策略不查询、不轮询、不等待,不能据此宣称远端检查已通过。

本次是 Chromium 打包路径与真实本地历史后端,记录为合成数据、分析读回被截获;不能外推为原生 App 安装、模型推理或真实实验效果的验证。生产只变两处显示字符串,无新持久字段或权限;回滚无需迁移。

我的整体评价 / Verdict

未发现阻塞问题。交付判断是 justified increment:修复明确的日期理解歧义,保留源范围、同组继续阅读和所有已记录信息;研究质量、可比性及完整成本的更大验收仍开放。long_horizon 为 preserved:重载和返回后继续准确阅读,未增加执行循环或成本;user_experience 为 improved:已有阅读任务零新增确认回合。

已查看含长标题和重复问题的 24 项日期组整屏:桌面标题在列表前可见,390px 标题自然换行;原始文本与负结果状态保留,没有新增说明条或必经操作。未验证范围:原生 WebKit/App 的本次安装行为尚未验证;本次视觉证据来自打包 Chromium 页面,分析读回为合成替身。正文截图已直接放在 PR description。当前改动范围必要且成比例,不需要再抽一层共用服务;沿用现有词汇,没有 actor、authority 或可选策略语义变化。review 结论不授予合并权限,合并前仍须核对未变 head、thread 与 readiness。

English verdict: APPROVE at 6b507d9; no blocking findings. Local packaged cross-midnight/read-only validation and standard premerge passed; CI was not consulted, and native App installation remains unverified.

@loopx-agent
loopx-agent merged commit b047408 into main Nov 8, 2026
8 of 9 checks passed
@loopx-agent
loopx-agent deleted the codex/product-engineer-20261108-001230 branch November 8, 2026 00:52
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