Skip to content

feat(benchmark): observe usage from unfinished solver turns - #7054

Merged
loopx-agent merged 3 commits into
mainfrom
codex/research-observed-usage
Oct 22, 2026
Merged

loopx-agent merged 3 commits into
mainfrom
codex/research-observed-usage

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

An interrupted solver capture loses usable token observations when registration requires a completed final Turn. This PR adds explicit --include-incomplete-usage to retain persisted counters through an unfinished final Turn. The default complete-session path stays strict. Research → Sources and usage presents the observations, coverage and uncertainty together.

The existing benchmark-toolkit TypeScript reducer owns codex_observed_session_counters_v1 and its optional unfinished interval. Python reads scoped files and transports the typed result. Missing tail counters stay unknown; cancellation never establishes completion; identity, prefix, fork, gap, reset and malformed-capture checks remain enforced. Source hashes still distinguish current and historical captures. This introduces no billing ledger, model dispatch, scoring change or new configuration owner.

The expanded usage panel now puts elapsed time, uncached input and output first, with readable units and the unfinished/historical state beside them. Counter provenance and analysis provenance are separate native disclosures. Scope explanations use the existing keyboard/touch-accessible help, and the current analysis attempt stays separate from solver usage. Missing capture help does not claim a complete capture. This reuses the existing component and help owner without introducing another rendering framework.

Validation at 171b671ba65c8b7ada5c560026e025f9f98f1612 (source unchanged from the tested build):

  • 27 TypeScript trajectory tests and 39 Python store/assessment/HTTP tests pass. Full packaged chat build and the packaged research-history browser scenario pass, including keyboard disclosure/help and missing-capture coverage.
  • Actual CLI registration → isolated SQLite owner → production HTTP backend → packaged Research UI verified for complete, observed, missing and changed-source captures. Restoring the original bytes removes the historical warning. Browser mutation attempts: zero. Synthetic analyst subprocesses populated 12 episodes with affirmative, negative and unknown judgments; no model was called.
  • Premerge executed 6 direct and 19 selected checks without failures, including benchmark permission/source boundaries and the public boundary scan. Its result remains manual_review_required; this is not merge readiness or installation qualification.
  • Functional tests and absence of overflow did not establish the previous expanded panel's readability. The visual qualification below supersedes that inference; earlier functional evidence remains scoped to behavior. Full monetary cost and measured long-horizon benefit remain unqualified.

Visual evidence

Public-safe synthetic inputs, actual browser captures: desktop 1440×1000 and narrow 390×844. Before assets are source-built at 53d9f2bc8 (the prior UI after integrating main); after assets are the verified packaged build of 171b671ba65c8b7ada5c560026e025f9f98f1612. No hosted preview or installed-App qualification is supplied.

Observed composition: the old expansion placed several metadata rows and repeated small-print limits before the counters. The new expansion starts with three prominent readings, keeps unfinished/historical uncertainty adjacent, and moves hashes/methods to readable detail rows. On narrow screens these rows stack; long source descriptions and identifiers remain readable after expansion. The existing narrow Goal heading still truncates and the surrounding research layout remains outside this bounded correction.

Expanded desktop before Expanded desktop after
Before desktop After desktop
Expanded narrow before Expanded narrow after
Before narrow After narrow

Default first viewport

Default narrow, populated content and recovery

Default narrow

Mixed judgments default view

Mixed judgments and separate analysis attempt

Long source detail on narrow screen

Touch help on narrow screen

Missing capture

Historical capture

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.

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

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

未发现阻断问题,批准当前头 e9d5c080bca1a582527b3522ce5abeae7f8fe2f7 的代码与诊断交付;合并权限和原生人工门禁单独保留。

动机

整理中断运行证据并在研究工作台查看用量的操作者。同一份捕获含一轮完整记录和一轮未完成记录:此前登记被拒绝,页面没有这份捕获的用量;本次显式选择观察模式后,可读取已持久化的输入、输出和末轮覆盖边界。已验证合成捕获的总输入 325、缓存输入 175、输出 26,以及未完成轮输入 75、输出 9;默认完整会话路径保持原结果。不恢复求解器,不执行分析模型,不记账,不改评测分数,也不把观测片段说成完整研究成本。真实研究的完整成本、与原生收益的配对比较及长期净收益仍未验证。

用量观察首先回答“这段运行已经观测到多少开销”。中断并不意味着没有开销,也不能为了显示数字给原始轨迹补一个完成事件。本次让既有研究页面读取这段已知事实,收益是减少手工整理和缺失诊断;它没有证明研究更有效或整个运行更便宜。

改动思路

沿用既有输入、文件绑定、TypeScript 计数归约和研究读者,避免另建用量账本;显式模式只改变这次捕获的完整性口径。本 PR 交付从可信整理者登记到打包研究页面读取的观察链路;模型质量、全研究成本及科学增益仍属于既有研究验收。

可信整理者沿原命令显式选择一次捕获;Python 只做路径约束、原文读取和计数字段传输,TypeScript 继续负责会话完整性与累计计数差分。旧的完整方法不改含义,新方法用独立标识说明“观测到哪里”,末轮无计数则保留 null。结果进入原有不可变包,页面仍从原生 HTTP 读取,并在现有“来源与用量”中展示,无需额外设置页或让操作者复制内部标识。

下表是当前头的行为说明,执行证据来自下文的真实入口验证。

输入与选择 登记与读回
完整捕获,默认选项 保留旧方法、数字、响应结构和页面
未完成捕获,默认选项 拒绝,不伪造完成
未完成捕获,显式观察 包含已持久化计数;末轮仍未完成、完整成本未知
来源变化或缺失 保留历史值并警示;恢复原字节后回到当前读回

具体改动

按修改前接受的 docs/reference/trajectory-assessment.md,固定规格版本 9aedbbd3d2987498e0b17083fd02c195b4fe4bbe,逐项判断:Solver capture registration 的包含路径、预期会话、前缀/间隙/重置检查及默认完整性已实现并保留;Coverage and interpretation 的未知成本与事实/判断分离由 null 末轮和可见限制落实;Producer and consumer boundary 继续使用 benchmark-toolkit 的同一 TypeScript 决策所有者,Python 未接管计量或评分;Goal workspace reader 通过真实登记、读取、来源恢复和选源验证,不因浏览而启动分析。新增文档是明确的可选扩展,不能反过来充当旧默认行为已正确的证据。

关键代码讲解

  • register_pack 仍从受限 source root 读取原文件,要求路径和预期会话成对出现。新增选项没有捕获时拒绝,成功后由既有包身份绑定方法、计数和原始 SHA,重复登记返回相同完整记录。
  • summarizeTrajectoryCodexUsage 保留同一套无分叉、连续累计计数和生命周期检查。开关为真时把已观测末轮差分计入总量,但 completed_turns/turns 只包含完整轮;没有末轮计数就返回 null。取消事件不冒充完成,重复计数不重复收费,时间也只截止到受支持的已观测事件。
  • ResearchProgress 在既有折叠详情里显示末轮已观测输入/输出和未知范围,沿用来源 SHA 与历史警告。共享方法类型只扩展既有闭集,不建立另一个用量账本、权限状态或评分协议。

对主干的风险

最强反例是把未完成运行显示为完整成本,或在 CLI 漏传开关、选源后借用上一个包的数字。独立合成轨迹经过真实 CLI、一次性 SQLite Goal 权威、原生 HTTP 和新构建的打包页面,读回输入 325、缓存 175、输出 26;末轮输入 75、输出 9,完整轮数仍为 1。移除实际 CLI 开关会使独立的观察成本断言失败;恢复开关后完整记录可重放。来源改变、移除、恢复及完整/无捕获/观察三类选源均保持各自语义,没有分析回执和 HTTP 写入。

默认隔离有直接对照:不可变 base/head 的完整/无捕获 CLI 全响应、默认拒绝的完整 JSON、归约输出,以及完整/无捕获的生产 ResearchProgress 全部 HTML 均逐字节相等。另有 19 个独立计数对照场景、27 项 TypeScript 与 39 项 Python 测试通过;基线对应 Python 37 项通过。类型检查、Ruff、打包构建和 packaged research-history(含混合状态、延迟、引用、历史、窄屏)通过。自己的 HTTP/浏览器链路使用合成数据和禁用执行入口,不代表真实研究数据或安装后验证;初次私有测试脚本的参数覆盖错误,以及选源自动折叠后误读不可见 innerText 的超时,已保留并修正测试条件,没有修改产品或放宽断言。

标准 premerge 执行 6 项直接检查和 19 项选中检查,检查失败为零;命令以 manual_review_required 返回 1,六个人工门禁原样保留,不能报告成合并门通过。五张公开 PNG 的像素、元数据和合成来源已逐一检查,未见私人路径、账户、消息或原始研究日志;基准适配器敏感面也在本次独立审查内。未查询/等待远程 CI,没有合并、安装或评测/模型执行。

在 1440×1000 默认页,研究范围和“尚未分析”是主信息,新增技术细节未挤占首屏;展开后数字、末轮限制和来源在同一区域。390×844 逐项阅读无横向溢出,恢复后的警告与末轮数字可见。窄屏长标题已有截断、详情需纵向滚动;这不是本 PR 新增问题。公开截图是合成演示,独立浏览器检查的是当前头新构建和真实后端,二者未混为真实基准结果。

语义与 CI 对齐

codex_observed_session_counters_v1 是既有 TrajectorySolverUsage 方法闭集的扩展;完整方法和旧持久化格式保留。严格布尔、事件类型与数值归约决定状态,没有按文字推测运行结束。CLI/文档明确默认不变,文件存在、发现能力或查看页面都不自动启用观察。未知、来源新鲜度、取消不等于完成、无评分/记账/执行权限这些条款均沿真实调用路径核对。它没有新增 work-lane、quota 或 Todo 的通用义务。

我的整体评价

代码规模与中断诊断缺口相称;保留一个归约器、现有文件绑定和现有折叠读者,是比独立账本或无条件放宽完整方法更小且可回滚的边界。架构判断 retain,交付判断 justified_increment:用户体验 improved,长程语义 preserved;可读部分用量不等于已证实长期效率提升。

残余限制明确保留:缺失前缀、间隙、分叉或恢复时未关闭旧轮仍不支持,未持久化和后续请求、金额、评测与操作者成本未知。独立评估校准、完整成本与配对净收益继续属于既有研究验收;本次不以测试数量或 PR 合并代替这些结果,也未验证 live installed runtime。没有需要为这项请求另建的跟踪任务。当前批准不授予合并或安装权。

English verdict: APPROVE — Explicit observed-capture mode delivers persisted unfinished usage through the existing typed owner and packaged reader, while complete-mode outputs remain equal to the immutable base. Integrity, unknown-cost and historical-source boundaries were exercised. Native manual merge holds and unqualified full-study economics remain separate.

…ed-usage

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-astra · OpenAI · runtime_reported · reasoning_effort=xhigh

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

审查精确提交 171b671ba65c8b7ada5c560026e025f9f98f1612;这是完整 PR 的重新判断,不继承旧头的批准。特别更正旧评审:默认折叠和390px无溢出只能证明局部行为,不能证明展开内容可读;此前据此给出的视觉验收结论不充分。

动机

在研究工作台检查中断运行开销的操作者。同一份含未完成末轮的捕获,以前默认登记被拒绝,旧提案展开后又先堆来源小字;现在显式观察后先看到读数、范围和未完成状态,再按需读完整来源。已验证真实登记、独立读回及打包页面的未完成计数、缺失、历史与恢复显示。不改评分、求解器、模型预算或自动执行,不把部分用量当完整成本或已证实的效率收益。完整研究成本、独立评估校准及可比预算下的长期净收益仍未验证。

已持久化计数值得保留,但展示它们不需要新账本或增加配置步骤。读者要先知道观测到了多少、哪些还未知,再决定是否展开技术依据。本次纠正既有组件的阅读顺序与正文层级;没有把来源和限制直接删除,也没有把部分运行说成已完成。

改动思路

保留一个计数归约器和现有研究读者,重排读数与来源,比分立账本或无条件放宽完整模式更小且可回滚。本PR交付显式捕获观察到可读页面的完整诊断链路;外围研究阅读器、安装验收及科学收益不并入本次改动。

CLI沿原登记入口把明确选项交给TypeScript,Python仍只读受限原文件并保存不可变包。浏览器沿原HTTP读者显示求解用量,分析尝试单独列出;完整方法/哈希、全部取样说明和费用边界通过已有details与ContextHelp可达。打开研究页、切换来源或展开帮助都不会发起模型。已有意图与授权无需新增确认轮次;技术细节的第二次展开是可选阅读,不是执行前置门。

场景 本头结果
完整捕获或无捕获,默认登记 全CLI响应与不可变基线一致;页面层级有意改善
未完成捕获,未选择观察 保持拒绝
同一捕获,显式观察 读取持久化计数,末轮仍标未完成
变化/缺失来源,再恢复 保留历史警告或未测状态;恢复字节后重新显示当前

具体改动

依据修改前的 docs/reference/trajectory-assessment.md,规格固定于 2babbdbda4c239ffeb148c2e0e7a1945f78042c7,并应用同版本的 docs/development/design.md。逐项映射:Solver capture registration 的路径/身份/计数完整性和完整模式默认值保留,观察模式作为明确扩展;Coverage and interpretation 的未知成本、原生事实与模型判断分离得到保留;Producer and consumer boundary 继续使用现有benchmark-toolkit与研究读者,把主要发现和不确定性放在技术依据前。新增文档用于说明扩展,不反过来作为旧契约正确的证据。

关键代码讲解

  • register_pack 通过同一受限source-root读原字节,选项与捕获成对,沿既有包身份、锁和发现路径持久化。无捕获时使用观察选项会拒绝;浏览器没有新增路径登记或执行权限。
  • summarizeTrajectoryCodexUsage 保留会话身份、无分叉、累计计数连续性与生命周期检查。显式观察只把最后已持久化差分纳入统计;completed_turns仍只数完成轮,无末轮计数保持null,取消不冒充完成。缓存输入是总输入的一部分,推理不另加一次。
  • ResearchProgress 先展示捕获时间跨度、未缓存输入和输出,14px正文/单位与24px读数形成层级;未完成/历史状态紧邻计数。方法、总输入/缓存、UTC范围及完整哈希可独立展开;分析尝试没有加进求解总数。缺失数据的帮助不再错误声称存在完整捕获。

相对上一评审头e9d5,本轮整合主干并修正这两份UI文件、现有research-history回归及12张公开安全截图;后端观察计数逻辑未在布局纠正中改写。完整PR仍包含原CLI/typed协议、原用量回归和公开文档,均按当前组合核查。

对主干的风险

最强风险是把未完成观察误当完整成本,或折叠后把必要不确定性隐藏。当前实际CLI对同一合成输入做base/head对照:无捕获、完整捕获、完整重放和未完成默认拒绝的完整JSON相等,无归一化。去掉显式观察选项会触发拒绝;恢复选项后独立读回140总输入、80缓存、60未缓存、15输出,完成轮数1,末轮40输入/5输出,job为null。完整/未完成/缺失切换及来源变化/恢复经过实际HTTP和打包UI;计数不是截图手填值。

当前27项TypeScript、39项Python、类型检查、打包构建及research-history浏览器场景通过。标准premerge执行6项直接检查和19项选中检查,失败0;整体仍返回manual_review_required,六个人工合并门未被当成通过。提交后双语RFC/差异检查再次通过。未查询或等待远程CI。初次私有CLI比较脚本误取projection字段的KeyError仅修正测试读取路径,产品未改;此前构建清单和浏览器选择器等准备失败保留,最终实际路径验证不以放松断言换绿。

默认隔离仅针对“允许未完成捕获”的开关;UI阅读层级改进明确适用于完整、未完成和缺失模式,不能再声称所有默认HTML逐字节相等。源文件存在、工具安装或页面浏览不激活观察。真实数据、模型质量、安装后行为未用合成fixture代替。长内容fixture的分析结果是本地受控输出,验证显示及分离边界,不证明模型判断质量。

语义与 CI 对齐

新增观察方法是既有TrajectorySolverUsage闭集的扩展,完整方法和旧持久化含义保留。状态来自精确事件类型、布尔选项和数值规则,没有按自由文本判断完成;通用quota/Todo、权限及评分契约不变。源码检查覆盖词汇和公共边界,原有规模预算未提高。保留一套归约逻辑比并行兼容分支更合适;没有为外部猜测消费者新增适配层。

我的整体评价

已目视核验默认、展开及390px整页:读数与末轮状态先于技术来源,长字段按行展开,分析尝试另列;判断依据是实际层级和正文可读性,不是折叠或无溢出。未验证正式安装版、真实研究数据的全成本或长期效果;窄屏原有Goal标题截断仍在,本次未改该导航。

具体观察包括1440×1000默认和展开页、390×844默认/展开及长来源:主要值先于方法和hash,未完成说明贴近尾段数值,来源长段落使用正常正文;12片段的5是/4否/3未知保持分母和抽样边界。键盘Enter可开关详情、Escape关闭帮助,触屏帮助在可视范围;历史警告和缺失值仍可见。公开before图来自冻结的布局基线,after来自本头相同源码构建和原生后端,均为合成示例。它们证明这次布局组合的可读性改进,不证明用户理解或长期收益。

交付判断为justified_increment,long_horizon=preserved,user_experience=improved:已验证的增量是诚实、可读的观察链路,完整研究效果另行资格化。结构上复用现有组件和帮助,局部去重已实施,进一步扩大成通用框架无必要。作者自审不代替独立产品验收,当前批准不授予合并或安装权限。

English verdict: APPROVE — 171b671ba65c8b7ada5c560026e025f9f98f1612 preserves strict complete-capture defaults and exposes explicitly observed unfinished usage through the existing typed owner. The revised reader was inspected in populated desktop, expanded and390px views, with source recovery and missing-data cases. Current local checks pass; native manual merge holds, independent installed acceptance and full-study efficiency remain separate.

@loopx-agent
loopx-agent merged commit 04f3528 into main Oct 22, 2026
27 of 33 checks passed
@loopx-agent
loopx-agent deleted the codex/research-observed-usage branch October 22, 2026 15:12
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