Skip to content

feat(workspace): analyze evidence for original runtime Goals - #6878

Merged
huangruiteng merged 15 commits into
mainfrom
codex/runtime-source-analysis-20261019
Oct 19, 2026
Merged

huangruiteng merged 15 commits into
mainfrom
codex/runtime-source-analysis-20261019

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

An existing Goal in an isolated runtime could show its research history but could neither read its registered trajectory input nor invoke the existing analysis provider. The ordinary Goal overview now reads native history and factual measurements first; its explicit Deep analysis action runs the existing provider and returns versioned judgments and exact citations. It creates no replacement Goal and changes no solver, scoring, registry or parentage.

--analysis-runtime-root explicitly enables local Codex analysis with separate usage. Storage is isolated by physical source namespace and original Goal id. Every provider operation re-reads the original source and registered membership, bypassing the two-second display cache; ordinary factual reads retain that cache. Missing membership or an unavailable source prevents execution, including immediately after a successful page read. Default-off behavior and all other source mutations remain denied.

The adapter reuses the existing toolkit's packs, claims, validation, cancellation, retries and result reuse. Selection, browser history and failures retain the physical source; an identically named Goal in another source cannot borrow its input or result.

Validation at 7c008dc89e8ff0d38b7a5ea8f4acdd48eed7b12a:

  • 46 distinct focused native cases passed, including actual HTTP and disposable provider processes; seven TypeScript assessment cases passed.
  • Four warm-cache removal/unavailability cases failed on the previous implementation and pass after repair, for both start and retry. Failed admission starts no provider; recovery uses the same original Goal. Display-cache reuse remains covered.
  • Dashboard type checking and build, verified packaged Chat build, Ruff, diff hygiene and the bilingual RFC gate passed. Existing bundle-size advisories remain.
  • The complete selected premerge run passed its other checks but failed the full-tree semantic ratchet: 44 independently maintained Python/TypeScript twins against a budget of 43. Baseline attribution remains a merge hold; the budget was not changed.

This is a source-checkout proposal. Installed App adoption, cross-source parent/child organization and scientific strategy benefit require their own evidence. Factual reads start no analysis; model judgments do not replace native outcome measurements.

Visual evidence uses a synthetic Goal, measurements and provider response. Captures are from a4a54c191434231b97bc3d78b380f15af64f0c3a; the subsequent source-admission repair does not change this presentation. The current packaged build is validated separately above.

Before: ordinary source reader

After: factual native measurements before analysis

After explicit analysis

Narrow first viewport

Narrow metric details

loopx-agent and others added 5 commits October 19, 2026 16:37
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…rogressive-load-20261019

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

# Conflicts:
#	apps/presentation/dashboard/src/features/personal-workspace/lark-settings-page.tsx
#	apps/presentation/dashboard/src/features/personal-workspace/private-conversation-panel.tsx
#	examples/personal-workspace-browser/fixture.mjs
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent and others added 3 commits October 19, 2026 20:35
…idence

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: BigDataDZ <76271875+BigDataDZ@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

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

当前 head a4a54c191434231b97bc3d78b380f15af64f0c3a 有一项阻塞发现:[P2] 分析执行准入复用了两秒展示缓存,来源刚失效时仍能启动分析。 基线 907ede6e1faff1fab0f2f765dde4358c69c7b7ff。以下结论覆盖完整11文件、+309/-24,而不是只评价新增按钮;当前代码需修复后复审。

动机

受影响的是已在某个运行来源中查看原 Goal、希望按其原证据继续研究的用户。 此前来源工作区只能读研究记录,不能直接分析已注册的证据包;本次允许用户在原 Goal 上显式分析,无需复制一个新 Goal。 正常路径已能读取原包、显式执行、取消和重试,并返回原文引用;但来源刚失效时,执行仍可能把旧展示缓存当成当前准入。 当前还缺执行前的实时来源资格核验;已安装宿主、真实模型效果、父子组织和科学收益不在本次已验证范围。 原 Goal 身份和原证据不应为了一个分析按钮迁移到另一份执行状态。保留来源、显式付出分析用量是有用的改进,但“曾经可读”不能替代点击时来源仍符合当前准入要求;普通展示可以短暂缓存,启动新的模型进程需要更强的资格证据。

改动思路

继续复用 benchmark-toolkit 的包、claim、执行和引用 owner,来源适配器只负责物理来源绑定、当前 Goal 准入与本地分析目录隔离。 本次边界是原来源 Goal 的显式本地分析,不是来源 Goal 的生命周期、求解器、评分或权限管理。 这种放置比建立 Goal 镜像或第二个分析调度器更直接,能够沿原工作区完成读取、显式分析、引用回看和失败恢复。新增 root 是本地执行的显式启用意图,namespace 则绑定具体的物理来源;二者既不是来源 Goal 的所有权,也不能让一个旧观察变成实时注册事实。

下面按该 head 源码说明实际分支,执行结果见后文:

输入与状态 当前结果 / 应有约束
未提供 analysis root 保留只读,分析 POST405
已启用,当前来源/Goal/包都有效 显式执行并回读同包结果
namespace、Goal 或包不匹配 现有检查拒绝
有效读取后两秒内来源失效 旧缓存仍允许执行,应先实时核验并拒绝

具体改动

独立规范依据为不可变基线的 trajectory-assessment:原章节 Register a fixed case for the research workbench 的来源注册,Explicit execution and readback 的显式执行,Producer and consumer boundary 的既有 provider 归属,以及 Goal workspace reader 的结果/引用消费。原文要求 host 在操作前解析授权 runtime/owner Goal,不以 renderer 路径或发现结果授予执行。当前 namespace/包/原 Goal 绑定与现有 provider 复用已 implemented;当前来源准入 criterion 仍 deferred,具体修复就是上述新鲜读取。当前打包界面的正常流程有证据,安装态、父子组织和独立评估器校准不据此宣称完成。新文档对本地账号、额外用量、停用和保留历史的说明有价值,但其“current registered membership”声明尚未在普通缓存路径上兑现。

关键代码讲解

  • RuntimeWorkspaceServer:root 按现有物理 source namespace 分目录,原 Goal ID 保留,不创建执行 Goal;不传选项仍拒绝写操作。
  • _research_analysis_scope:新执行路径从 reader.goals() 检查 registry_member。问题在于这个 reader 是已有的两秒展示缓存,check_access() 本身只核对固定 Goal/SSH alias,不重读原生注册表。
  • _research_analysis_write:核对 namespace、Goal/pack/key、显式 retry,再调用既有 toolkit。claim、取消、证据哈希、历史 result 没有重造;不过这些检查无法补上前一层缓存的当前来源资格。
  • useResearchAnalysis.execute/cancel:只有服务端声明 enabled 才向原 source URL/namespace POST,沿用现有 generation 和原包回读。GET 不自动执行,取消和重试仍是用户动作。

独立本地运行42项 source/API/store 测试与7项 TypeScript assessment 测试、dashboard 类型检查/原生构建、Ruff,全部通过。标准 premerge 为6 direct、4 catalog、8风险 smoke、1公开边界检查,无 failure/manual hold;构建 chunk advisory 保留。完整新增/修改文档、测试与5张合成展示图片均已检查。未查询或等待 CI,也未把通过的这些测试替代独立负向验收。

另用真实 RuntimeWorkspaceServer、现有包/claim/store 和实际合成 provider 子进程做4格反例,没有接触活跃 Goal 或真实模型账号。冷启动下原 Goal 已移除得到404、来源不可用得到503,两个都没有启动进程;先GET预热后再分别改变这两个来源事实,POST都在不到0.33秒内返回200并启动1个进程,来源总读取仍只有最初1次。独立回归为 2 failed / 2 passed。这将问题定位到新增执行入口复用旧展示缓存,而不是宣称缓存作为只读显示有新故障;基线 adapter 没有这个执行入口,POST始终405。

对主干的风险

[P2] 执行准入不能复用两秒展示缓存 — runtime_workspace.py:110–112。用户打开分析页后立即点击,正是容易命中缓存的正常路径;若原 Goal 此时已不再注册、原来源已失联,旧 registry_member=true 仍被当作当前资格,进入 execute_pack 并产生独立本地用量。现有新增负例在变化前手动设置 _read_at=0,所以只能证明冷读取会拒绝,覆盖不到上述普通路径。

在进入 execute/retry 前通过既有来源 owner 做强制新鲜读取并验证 registry_member;保留展示缓存,新增不清空 _read_at 的预热后失效回归。 最小回归先GET、再改变原注册或来源可用性、立即POST,要求404/503且provider调用为0;不要靠修改私有 cache 时间或全局关闭缓存使测试绕过问题。保留合法来源显式执行、取消/重试、恢复和不同 namespace 的用例。来源恢复后仍应能以原 Goal 继续,修复无需新状态服务或一套独立授权记录。

Ego 在当前实际构建、真实 HTTP/store 与合成来源/provider 上验证:读取不启动分析,Retained 的显式分析返回同包判断和事实原文;Fresh 的即时取消后显示取消状态,再显式重试成功;390px整页无横向溢出。来源503后页面不展示旧 Goal,Retry 回到同一原来源。另一个未启用 reader 即使点击分析入口,也未增加 provider 进程。首个 Retained 合成运行在后续取消观察前已自然结束,没有把它记成取消成功;Fresh 另行在一个动作序列内实际取消并恢复。桌面和窄屏完整视口已查看,静态截图不被当作持久性、实时来源资格或科学收益证明。

语义与 CI 对齐

沿用既有 toolkit 类型、job 和 source namespace,新增 execution_enabled 是 operator root 选项的派生可用性投影,不是 source grant。原生 Chat 无 namespace 的 owner Goal/包 source Goal 既有语义保留;默认关闭路径的503/404/405和零新增模型调用有测试/浏览器证据。Python 仍做适配与 provider IO,评估与计数由既有 TypeScript owner 管理,没有新评估器或通用控制面状态机。研究专用文字留在专用能力;没有改变 quota/Todo/settlement。当前失败是明确的可观察准入回归,无法被一致的字段名、类型或语义 advisory 通过所抵消。

我的整体评价

REQUEST_CHANGES。 方向和分工合比例,原来源直接分析是有用的 bounded increment;问题不是必须同时完成模型校准、整个父路线图或已安装发布,而是本次已经开启的真实执行入口不能满足自己的当前来源边界。long_horizon 与 user_experience 在这个暖缓存反例上均为 regression:可能花费原来源已经不合格的分析用量,并把旧有效状态当作当前可执行条件。

保留展示缓存和既有 toolkit,把源资格的即时核验放回准入 owner,即可作局部修复;不需要复制 Goal、加更多确认轮次或让用户重录已知身份。正常分析/cancel/retry/引用、不同物理来源隔离、默认关闭和当前构建视口的通过证据仍保留。科学收益、真实模型/完整成本、安装和主干集成没有在本轮获得资格。此 COMMENTED 结论受 GitHub 作者身份限制,并不意味着撤回别人的评审或合并授权。

English verdict: REQUEST_CHANGES — a4a54c191434231b97bc3d78b380f15af64f0c3a against 907ede6e1faff1fab0f2f765dde4358c69c7b7ff. [P2] New source-analysis admission uses the existing2-second display cache: after a valid GET, removing the original Goal or making its source unavailable still lets POST return200 and launch1actual synthetic provider child; cold controls correctly reject404/503. Revalidate current source membership before execute/retry and add warm-cache negatives without resetting _read_at.42native tests,7TS tests, types/build/Ruff and local premerge pass; actual built UI normal/cancel/retry/citation,390px, source recovery and default-off paths work. No paid model, installed or scientific qualification; CI was not consulted.

Comment thread loopx/presentation/runtime_workspace.py Outdated
# Check current access and actual registered membership before local
# pack reads or provider effects. No host registry entry is created.
try:
goals = self.server.reader.goals(goal_id)["items"]

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.

[P2] 执行准入不能复用两秒展示缓存。先 GET 有效 Goal/包,再在缓存期限内移除原 Goal 或让来源不可读,POST 仍会拿到旧 registry_member=true;独立真实 HTTP + 合成 provider 进程验证,两种 warm 场景均返回200并启动1进程,而冷场景正确404/503。请在 execute/retry 前通过原 source owner 强制新鲜读取并检查注册资格,保留展示缓存;回归先预热再改变来源,不设置 _read_at=0,并断言 provider 调用为0。

hhyykk and others added 7 commits October 19, 2026 21:39
…eScript (#6860)

* refactor(collaboration): converge Inbox reads and Turn context in TypeScript

Signed-off-by: aihop <4408344+hhyykk@users.noreply.github.com>

* fix(collaboration): keep Inbox IO failures on the caller contract

Moving the Inbox read into the TypeScript transaction changed how a corrupted
entries directory surfaces: the native owner reports ENOTDIR as a typed
EffectRuntimeIOError, but the Python adapter only mapped EffectRuntimeRejected.
The CLI therefore exited 1 with an empty stdout instead of the original
`ok=false` JSON, and the existing pagination regression
(test_unreadable_or_conflicting_entries_fail_without_read_receipts[directory])
failed with JSONDecodeError.

Map EffectRuntimeIOError back to OSError at the same IO boundary, keeping the
runtime diagnostic code (and therefore the retryable/permanent distinction) in
the message. Callers and the CLI classify IO failures as OSError, so the
structured failure and the untouched read receipts are preserved.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

---------

Signed-off-by: aihop <4408344+hhyykk@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Co-authored-by: aihop <4408344+hhyykk@users.noreply.github.com>
Co-authored-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
# Conflicts:
#	apps/presentation/dashboard/src/views/dashboard-page.tsx
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; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max

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

精确 head 7c008dc89e8ff0d38b7a5ea8f4acdd48eed7b12a:APPROVE。原评审 5572290325 的 P2 暖缓存准入问题已由独立反例验证解决,未发现当前阻塞 finding。标准预合并仍有既有语义双实现预算 44/43 失败,保留独立合并阻塞。

动机

受影响的是已在某个运行来源中查看原 Goal、希望沿其原证据继续研究的用户。此前来源工作区只能读研究记录,不能直接分析已注册的证据包;用户若另建一个本地 Goal,会分散原有身份和历史。本次让用户在原来源 Goal 上先读事实与历史,再显式调用既有分析 provider,沿同一来源回读判断、引用、取消与重试;执行前实时核验来源资格。本 PR 不启动 solver,不修改评分、原注册表或 Goal 归属,也不把模型判断当作原生测量或科学收益。安装态采用、真实模型判断质量、父子组织及研究策略收益仍未取得本轮验证,合成进程不能替代这些验收。

改动思路

继续复用已有包、claim、执行、取消和引用 owner;来源适配器只负责物理来源绑定、当前资格核验及本地分析目录隔离。本次边界是原来源 Goal 的显式本地分析与实时准入,不包含原 Goal 生命周期、求解器、评分或安装态和科学收益资格。操作员显式开启本地分析后,用户从原 Goal 看到事实和历史,按一次既有深度分析按钮才产生独立分析用量;不用重录已知身份,也没有再复制一套 Goal。保留关闭状态与现有 toolkit,比新增 runner、调度器或授权日志更小,也更容易验证和回滚。

展示可以复用两秒缓存,但点击时的新分析必须重新读取原来源。当前修复把这种读取意图交给已有 reader:GET 继续缓存,POST 在进入 provider 前强制新鲜读取。这解决原问题,也保留普通查看的缓存收益;类型和值相同本身不能证明来源仍有效,因而采用真实 HTTP 和进程计数做反例。

预热后发生的变化 旧 head 当前 head
原 Goal 移除后启动 200,新进程 1 404,新进程 0
来源不可用后启动 200,新进程 1 503,新进程 0
原 Goal 移除后重试已有失败 job 200,新进程 1 404,新进程 0
来源不可用后重试已有失败 job 200,新进程 1 503,新进程 0

这张表来自独立自然时钟测试,未修改私有 cache 时间或冻结时钟;四种拒绝后恢复原来源,仍可用同一原 Goal 成功分析。

具体改动

关键代码讲解

  • GoalSourceReader.status/goals 新增默认 false 的 fresh 参数。普通调用仍用已有短缓存,显式 fresh 则先清除旧状态并重新读取;失败继续由原 reader 清理缓存。
  • RuntimeWorkspaceHandler._research_analysis_scope 在 POST 以 fresh 读取当前注册事实,再核对原 Goal。移除与来源错误分别返回 404/503,发生在实际 provider 子进程前;物理 namespace 与本地分析目录仍绑定原来源。
  • ResearchAnalysisRequestMixin 复用已有 pack、analysis key、claim、执行、取消和引用,拒绝 namespace、Goal、包不匹配及额外渲染端路径。无 namespace 的原生 Chat 调用保留其既有 owner/solver Goal 区分。
  • useResearchAnalysis.execute/cancel 只在服务端声明启用后向原来源 URL 发起显式操作,继续按当前 generation 回读;普通浏览不会启动分析。

独立规范是 docs/reference/trajectory-assessment.md,读取版本 764b989dce88ef43ade5aba5af4958ee2cf3a821。逐项映射:Register a fixed case for the research workbench 的原来源授权包注册、Explicit execution and readback 的显式操作和即时资格核验、Producer and consumer boundary 的既有 provider/TS 分工、Goal workspace reader 的状态、引用与失败恢复均为 implemented。已安装宿主和科学校准不因此获得资格;没有用本 PR 新写的文字替代先前合同。

相对已集成主干的实际共同基线 764b989dce88ef43ade5aba5af4958ee2cf3a821,完整变更为 12 文件、+348/-28。接口目前还列出 52 个集成历史路径,逐项验证它们与该主干基线的 blob 相同,未把它们当成本 PR 新增内容。所有七个文本文件完整读过;五张描述中的合成首屏图与前次已检查版本逐项同 hash,当前页面另行重新构建和实走。

对主干的风险

原 P2 是当前资格与短期显示缓存混用。独立四格验证不仅传 retry 标志,还先造出实际失败 job 再重试:旧 a4a54c191434231b97bc3d78b380f15af64f0c3a 四格均在约 0.25 秒返回 200,并增加一个真实合成 provider 子进程;当前四格在 1–3 毫秒返回 404/503,新增进程均零。原注册表、状态文件与证据均保持原字节,来源恢复后同 Goal 可继续。原 review/inline 的发现已据此逐项解决,原讨论保留。

本轮重新运行 46 项不同原生 source/API/store/assessment 用例、7 项 TypeScript 用例、Ruff、类型检查及 dashboard/验证 Chat 构建,均通过。Ego 在当前构建、实际 HTTP/reader/store 与合成来源/provider 上确认:浏览不启动,显式分析返回同包判断,取消保留 attempt 1 的 cancelled 记录,重试成功为 attempt 2;原文引用内容逐字匹配,390px 无横向溢出;来源 503 时旧 Goal 不当作当前内容展示,重试回到同一 Fresh;未启用来源点击后没有新进程。首个 Retained 运行自然完成,未把它算作取消成功。

私有浏览器脚本有过错误等待选择器与过窄的错误文字匹配,检查实际页面后在同一 TaskSpace 继续;取消/重试由实际持久回执独立核实。没有删除断言来掩盖产品失败,也没有将作者提供的真实实验页面和私有记录公开。

语义与 CI 对齐

未查询或等待远端 CI。完整本地标准 premerge 的 6 项直接检查、另外 6 项 catalog、8 项风险 smoke 和 1 项公开边界检查通过;语义 ratchet 仍失败。独立不可变主干基线与当前 head 的相同 canonical check 都报 44 independently maintained py/ts twins; budget is 43。核对了相同 821 个控制面跟踪路径、未改的注册表/guard/generator;唯一控制面源码改动是已有 IO reader 的 fresh 参数,既未增删 twin,也未改变预算计算。失败完整身份和细节相同,且本 PR 不变量有独立通过证据,因此归因既有且无关,审阅可 APPROVE,合并检查仍保持红色。没有调预算、缩窄扫描或把失败说成已修复。

默认关闭仍是分析 GET503、引用404、写405且零进程;开启后的错误来源、同容器其他 Goal 和其他物理 namespace/包仍拒绝。启用只产生独立本地分析能力,不赋予来源生命周期、会话、求解或评分权限。语义决定为 reuse_existing,沿用已有分析类型和 owner,fresh 只是 IO 意图,不增加一套通用控制面状态。

我的整体评价

交付判断为 justified_increment,user_experience improved,long_horizon preserved:原身份、证据、历史、取消重试和结果复用保持在已有 owner,用户沿原页面取得可回看的有界分析结果;这不等于分析提高了真实研究成绩。范围和维护成本合比例,已应用的简化是复用来源 reader 的新鲜读取意图,避免独立 cache/grant 状态或新 runner。

原暖缓存 finding 已修复,当前完整精确 head 给予 APPROVE。安装态采用、真实模型判断质量、父子组织及研究策略收益仍未取得本轮验证,合成进程不能替代这些验收。44/43 的预合并失败仍是单独合并阻塞;批准结论不表示安装、合并、撤回他人 review 或放宽门槛的授权。

English verdict: APPROVE at 7c008dc89e8ff0d38b7a5ea8f4acdd48eed7b12a against immutable main 764b989dce88ef43ade5aba5af4958ee2cf3a821. The original warm-cache admission finding is resolved: four independent real-HTTP/process counterexamples, including retries of existing failed jobs, fail on the prior reviewed head and reject with zero new children here; original-source recovery succeeds. 46 native and 7 TS cases, current build/UI cancellation, retry, citations, isolation and default-off paths pass. The unchanged 44/43 semantic ratchet remains a separate merge hold. No live-model, installed or scientific-benefit qualification.

@huangruiteng
huangruiteng merged commit b5a1a81 into main Oct 19, 2026
30 of 44 checks passed
@huangruiteng
huangruiteng deleted the codex/runtime-source-analysis-20261019 branch October 19, 2026 16:21
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.

4 participants