Skip to content

fix(workspace): ground research reading in real benchmark state - #8003

Merged
loopx-agent merged 2 commits into
mainfrom
codex/research-source-consumer-20261104
Nov 4, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/research-source-consumer-20261104

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

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

  • Written by: model_agent — OpenAI Codex; both commits signed off by LoopX Agent.
  • Specification: maintainer direction to replace synthetic core display references with public-safe real benchmark state; existing task-first frontend delivery and trajectory assessment contracts.
Criterion Disposition / evidence
Recent, complete original display logs Both R7 arms preserve original text, IDs, times, append order and measurements; independent JSONL byte/hash oracles
Actual saved analysis and costs Historical Graph: six episodes, all 36 verbatim judgments, original pack/run/revision, 447.0s, 53,768 input / 19,278 output tokens
Negative and unknown evidence Mixed headline keeps known/unknown distinct; invalid initial result is missing, not zero; native best/retained and final candidate remain separate
Language and source isolation Current-language cache state stays separate from the saved original; mismatched pack/scope/method/key/language and failed reads do not become accepted evidence
Read-only browsing Source digests and no-write readbacks; all fixture mutation verbs rejected; production consumer honors execution-disabled responses

Scope And Boundaries

The recent R7 arms both genuinely use benchmark-goal in separate runtimes and are loaded independently. No relationships are inferred from matching questions or adjacent times. Both retain runner_invalid, diagnostic scope and score_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).

Check Result / boundary
npm run build:chat passed; whole dashboard TypeScript and packaged Chat bundle
npm run smoke:research-analysis-read passed; production consumer negatives, abort/stale reads, failure/recovery, real isolated SQLite/HTTP/job owner with synthetic process output
Python history + fixture suites 11 passed; original five log hashes/bytes, real response byte hashes, language cache misses, citation/unavailable paths, no synthesized jobs, read-only verbs
Packaged research-real-benchmark passed in 6,717ms; both R7 arms and Graph; all 44 exported original records, all 36 original judgments in zh/en, exact cited excerpt, actual analysis costs, desktop/390px, no writes
Touched Python Ruff + git diff --check passed
Public/private boundary 16 changed text files clean; supplementary fixture credential/private-path scan clean; attached images visually checked
Manual Ego packaged captured-state reader; before/after and 390px, no horizontal overflow; 18 existing registered-source file hashes unchanged; one originally absent source path remains absent and zero mutation requests

Earlier c6a70461 also passed the complete research-history and research-record-search regressions 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 inherited tests/test_lark_private_conversations.py:62 Ruff 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 analysis before

Graph after: original judgments remain intact; the mixed result is explicit.

Graph analysis after

390px: saved-original boundary, mixed result, long real questions and negative/unknown judgments.

Graph analysis at 390px

Recent Grid first-screen and original-record evidence (unchanged presentation)

Before:

Grid before

After:

Grid after

Grid negative finding at 390px

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.

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

关键代码讲解

  1. readAnalysisSnapshot:首次读取仍按 zh/en 验证完整结果身份;fallback 只检查同一个 pack 的未指定语言原文,不接受另一个显式语言替身。失败不会自动生成分析。
  2. useResearchAnalysis:既有 generation/readSequence 在来源、Goal、pack 和语言变化时隔离旧响应;读取原文和执行当前语言仍使用各自身份。readEvidence 按正在阅读的原文 key 请求引用;本地与外部来源的只读动作守卫一致。
  3. AnalysisReport:5/6 已做收益检验与1个未知同时可见;“做过检验”没有升级为“收益为正”。六片段全部36条判断、原理由、未知和引用均保留。
  4. GoalResearchHistory 让普通记录和 display rewrite 使用同一 finding 解析器,完整原文入口仍在。timeline 的缺失决定说明按需展开,不补造决定或关系。
  5. 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.

@loopx-agent
loopx-agent merged commit 2087f54 into main Nov 4, 2026
26 of 32 checks passed
@loopx-agent
loopx-agent deleted the codex/research-source-consumer-20261104 branch November 4, 2026 07:44
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