Repository navigation
fix(workspace): ground research reading in real benchmark state - #8003
Conversation
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
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · reasoning_effort=max (runtime_reported)
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
回看真实研究过程、读取已保存分析和核对结论依据的工作区用户。
旧页面在中文或英文缓存尚无结果时,把同一分析包已经保存的原文藏了起来;用户只能看到尚无分析,容易重复生成。现在页面直接读取经过身份核验的原文,并保留语言提示、原判断、引用和用量。
已用同一份保存响应比较 base 与 head:旧界面没有原文,新界面可读六个片段的全部 36 条判断;近期 Grid 两组完整展示记录也保持原文、顺序、负面和未知结果。
本次交付限定为研究展示与已保存原文的只读恢复;不重跑模型、不恢复求解器、不证明因果收益,也不代表已安装版本或后续更多真实案例已验收。
改动思路 / Approach
沿用已有 research-analysis reader、分析包和原文引用 owner。当前界面语言已有结果时保持原路径;没有结果才对同一个 pack 发起省略语言的只读 GET,并校验 pack、method、scope 和 result key。readingPack 服务阅读及引用,requestPack 服务当前语言的明确执行、retry 和 cancel,两者分开,避免把历史原文误标成翻译或误用作新执行的身份。
读取身份不变量、已有 provider IO 和派生展示留在各自既有 owner;可选原文读取只观察已保存结果,不生成权限或另建状态,缺失与拒绝保持可见。
本 PR 完成真实记录展示和同包原文可读这一可独立验证、可回退的切片;不承担后续安装推广、更多完整案例或科学采用结论。
普通 finding 直接复用 findingNarrative 和已有完整原文浏览器;没有结构化决定时保留可展开解释,不从措辞、相邻时间或 confirmed 标签推导新状态和因果关系。相比重新生成、另设缓存/翻译服务或只换标签,这条现有 owner 内的修复直接补齐了用户可读结果。
| 触发 | base | head |
|---|---|---|
| zh/en 无结果,原文已有保存 | 显示尚无分析 | 同包校验后标注已保存原文;不生成 |
| 原文身份不一致或其他显式语言 | 不应替代当前结果 | 拒绝/不采用;保持错误与作用域 |
| 只读响应 | 后端仍拥有写入权限 | 前端也尊重本地 explicit false;读取不启用执行 |
具体改动 / Changes
关键代码讲解
readAnalysisSnapshot:首次读取仍按 zh/en 验证完整结果身份;fallback 只检查同一个 pack 的未指定语言原文,不接受另一个显式语言替身。失败不会自动生成分析。useResearchAnalysis:既有 generation/readSequence 在来源、Goal、pack 和语言变化时隔离旧响应;读取原文和执行当前语言仍使用各自身份。readEvidence按正在阅读的原文 key 请求引用;本地与外部来源的只读动作守卫一致。AnalysisReport:5/6 已做收益检验与1个未知同时可见;“做过检验”没有升级为“收益为正”。六片段全部36条判断、原理由、未知和引用均保留。GoalResearchHistory让普通记录和 display rewrite 使用同一 finding 解析器,完整原文入口仍在。timeline 的缺失决定说明按需展开,不补造决定或关系。Handler.do_GET复用真实隔离 HTTP/SQLite 展示 owner;Graph 只返回精确捕获查询,其他引用明确404,所有 mutation405。独立真实 owner/合成 provider 测试与冻结展示证据分开。
按改动前不可变规范 docs/development/design.md,revision 6f90e561ee99a1ef2e3db4e90c94e3c767990c58 审查,逐项为 implemented:Earn The User's Attention(首屏层级和主要测量);Research Workspace / 研究工作台(原文、时间、来源和未知边界);Explanations On Demand(完整内容和可达详情);Populated Page Review(长重复内容、混合状态、窄屏及下方成本)。已先读规范,再审 diff;本 PR 新增的 reference 说明用于披露行为,未拿它自行定义验收。
16文件 +5523/-65,其中4925行来自三份可复用展示夹具。两组 Grid 保留33/11条完整展示事件及44条导出原文/顺序;Graph 是历史六片段定向样本及已保存响应,不冒充更新的完整轨迹。package 注册、既有 browser runner、Python 夹具测试、SSR consumer 与文档围绕同一实际入口,没有另建执行或持久状态 owner。
对主干的风险 / Risks
最需要防的是缓存缺失时串用其他 pack/来源/语言的结论,或把只读原文变成执行许可。已走正反路径:同包原文恢复、错误 scope/key/显式外语拒绝、来源/pack 切换旧响应隔离、本地 explicit readonly、引用404后关闭再读捕获原文。报告4只有8–15行已捕获;24–35行和其他未捕获范围明确不可用,不用虚构内容填补。重载后原文仍可读,四个隔离 reader 的 source_unchanged 均为 true;人工 Graph 路径 mutation_attempts=0。
本次 PASS:11条 Python 测试;base/head 均构建;生产 SSR consumer;real-benchmark browser(7.107s);原有 history(233.476s)及 record-search(5.584s);最终 quick premerge 的5项直接检查、3项 catalog 检查和变更路径公共边界扫描。初次两个并发 browser 运行在共享5196端口启动失败,改用各自显式端口后原断言通过;初次 base/head semantic 扫描均缺仓库根 TypeScript dev dependency,隔离 checkout 补齐依赖后 base semantic 与 head quick gate 通过。原失败保留,未将环境失败报成产品通过。
语义与 CI 对齐
新增 Snapshot 字段是已有 Pack 的本地派生展示,复用 typed assessment/语言/只读语义;没有新增共享词汇、持久 schema、peer authority 或控制平面义务。diff advisory 为零支持的 carrier 只说明工具范围,另有 TSX 人工全量 triage 与 full-tree semantic PASS。原生测量、原文、执行默认和新增本地 readonly 守卫均已对照披露。按当前 wait_for_ci=false,未查询、轮询或等待远端 CI,状态 UNVERIFIED。构建原有 chunk-size warning、合成 provider 与冻结 API 边界也保留;没有声称整仓、已安装客户端或真实付费模型资格。
我的整体评价 / Verdict
APPROVE:此 head 完成“真实研究展示和现有原文可读”的有用切片,未发现需要修改的阻塞项。long_horizon=preserved,user_experience=improved;持续科学收益和实际模型采用仍未证明。复用了既有 reader、parser、citation 和权限 owner,局部派生状态与一次条件 GET 的维护成本匹配被复现的问题;没有用样本/测试数替代实际结果判断。
实看了真实记录填充的整页、展开长原文、390px 窄屏和下方方法/成本区。首屏先给原生测量与未知数,判断详情、来源、成本按需展开;失败引用有独立提示,关闭后可读取已捕获引用,原分析仍在。
未检查已安装桌面版本、第三个更新的完整研究案例或科学校准;Graph 是历史六片段定向样本,Grid 是两组近期完整展示日志,均不构成因果或总体覆盖证据。
实看 Ego 视口为1200×888;另外检查了当前 head 的1440×900及390×900自动化截图,包含展开的长原文,另看390×844合成12记录默认页补充布局边界。观察到主数值先行、未知和负面保留,方法/hash/成本位于可达详情;不可用来源有独立提示和关闭路径。
精确审查 head 1353d017ee5d589ba0c2555f03962b6453cc644a;发布前再次核对其未变化。这是作者同账号的 COMMENTED approval conclusion,不是 GitHub formal approval,也不授予 merge/install 或其他审查意见处置权限。
English verdict: APPROVE — 1353d017ee5d589ba0c2555f03962b6453cc644a. No blocking findings; built reader, original evidence, negative/recovery paths and local checks pass. Remote CI, installed delivery and causal benefit remain unverified.
Goal And Delivered Outcome
Real benchmark display state should drive the research reader. This proposal uses both complete 3 November Grid R7 logs (33/11 records) as the default populated-page reference and an actual saved Graph analysis as the core analysis reference. Synthetic inputs remain controlled boundary/race tests.
Dense original findings reuse the observation/interpretation/measurement reader; absent structured decisions move on demand. A language-specific cache miss reads only the same verified pack's saved unspecified-language original, retaining its identity, citations and usage. The real Graph result also exposed an incorrect headline: one unknown episode hid five recorded utility tests. It now shows 5 / 6 tested, 1 unknown, without claiming positive utility.
Intended target:
loopx-project/loopx:main.Author Declaration
model_agent— OpenAI Codex; both commits signed off by LoopX Agent.Scope And Boundaries
The recent R7 arms both genuinely use
benchmark-goalin separate runtimes and are loaded independently. No relationships are inferred from matching questions or adjacent times. Both retainrunner_invalid, diagnostic scope andscore_countable=false; source-authored confirmation can contain negative or unknown findings. This is frontend evidence, not a causal comparison or qualified benchmark gain.The older Graph case (11–12 October) supplements those recent logs. It is a six-episode purposive sample, not a third newer whole-history case. Its actual analysis Goal has no Explore log; that gap remains visible. Solver tokens, monetary cost, population coverage and causal effects remain unknown.
The Graph preview replays frozen real GET responses and one public-safe cited native-result range. Original HTTP byte digests are pinned independently. Uncaptured citations fail explicitly. It neither imports the source analysis store nor synthesizes a job to counterfeit real usage. Raw sessions, authority/credential stores, evaluator internals and verifier traces are excluded. Credential/private-path scans found no values to remove from the selected display state.
The synthetic process/SQLite/HTTP test remains separate qualification of the real backend owner. No model/solver call, installed App change, scoring change, release or merge is performed. Broader default/installed adoption and three newer complete cases remain unqualified.
Validation
Current tested source:
1353d017ee5d589ba0c2555f03962b6453cc644a(packaged Chat, real captured-state HTTP reader).npm run build:chatnpm run smoke:research-analysis-readresearch-real-benchmarkgit diff --checkEarlier
c6a70461also passed the completeresearch-historyandresearch-record-searchregressions and local quick premerge/CQR. Those are historical receipts and are not current-head review or merge readiness. Current-head CI and review remain pending. One bounded rerun of the prior cancelled checkout completed classification, then failed on inheritedtests/test_lark_private_conversations.py:62Ruff E731, with downstream Stage 2C skipped. No CI policy or unrelated test was changed to bypass it.No RFC pair changes. Vocabulary disposition: the new fields belong only to the local frozen fixture transport; no shared state/protocol vocabulary is introduced. The semantic advisory supports
loopx/carriers and cannot certify the untracked app JSON. Bounded adjacent improvement: reuse existing readers and transport; no new analysis owner.Frontend / Visual Evidence
Actual packaged UI with real public-safe captured display state. Screenshots are attached, not committed. Reproduce through the reader guide; preview is local only. No installed/live execution readback is claimed.
Graph before: one unknown hides five recorded utility tests.
Graph after: original judgments remain intact; the mixed result is explicit.
390px: saved-original boundary, mixed result, long real questions and negative/unknown judgments.
Recent Grid first-screen and original-record evidence (unchanged presentation)
Before:
After:
Attention review: the first viewport distinguishes native results, measured costs, model judgments and missing history. Complete long repeated questions/reasons remain available. Known results are not erased by one unknown; a utility test is not a positive benefit. The narrow layout wraps without horizontal overflow. Remaining data limits are preserved rather than filled with synthetic success.