Repository navigation
fix(runtime): keep heartbeat launch scan scope consistent - #6981
loopx-agent wants to merge 2 commits into
Conversation
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; runtime_reported; reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
REQUEST_CHANGES — b899387:运行时修复成立,但共享 fixture 引入 14 项 checkpoint 回归。
动机
默认 heartbeat 的首次规划、普通执行以及原 Turn checkpoint 恢复调用者。
私有任务含网络测试样本时,原 guard 扫描公开包后允许执行,临启动却改扫任务并拒绝;补丁恢复默认公开包范围。
同一确定性 Host 输入在两种存储的基线均被错误拒绝,修复后均启动并写入合成业务结果;真实 Stop、零算力及缺失状态仍拒绝。
本 PR 不授予模型、原生评分、合并或发布权限,也不改变显式公开扫描与原 Turn 身份契约。
共享测试前提仍破坏全部 14 项 checkpoint 用例;恢复这组原有验收后才能交付。
改动思路
heartbeat_body 原本使用公开包默认扫描,child_process 在真正创建 native 子进程前,仍会经原 Goal lifetime 重读当前来源。旧即时检查额外把扫描范围改为任务工作区,使两个阶段判断不同资源。直接复用 default_public_scan_root() 比跳过 health、删除任务样本或增加一套配置更小,也保留共享 TS 准入 owner。默认扫描与即时启动共用一个已有 owner,保留真实 live-decision 拒绝;测试样本范围需最小修复。
本 PR 的合理边界:仅修正默认 heartbeat 的扫描输入和对应合成集成资格,不扩成新 policy 或科学收益声明。公开材料扫描仍是强制门;source Stop、零算力、缺失状态与原 receipt 绑定仍由原 owner 拒绝。普通 governed Turn 继续使用自己的显式参数,不能把这一默认修复概括成允许任意工作区绕过公开扫描。
具体改动
规范基准为 docs/heartbeat-automation-prompt.md,spec_revision=4e6baa51afdc2ad522012c1f691ae166c9d67e7b。映射两项既有条款:Static semantics retained across hosts 的凭据/私有边界与恢复不绕门,在真实拒绝路径仍保留;Native Goal bootstrap and live execution instructions 的实时 guard 与当前契约所有权未被替换。相邻恢复资格的失败单独列出,不把公开包扫描一致性等同整个 checkpoint 闭环已通过。
关键代码讲解
current_heartbeat_host_launch_decision仅把Namespace的项目 override 改为现有 public-root 默认。初次 planning 无已选 Todo 仍合法;held continuation 的 event/identity 比对及build_live_quota_should_run_decision调用保留。检查仍处于Popen前的原 Goal lifetime 内。default_public_scan_root自身未改动,与公开 quota/heartbeat CLI 共用包目录定义。这里复用既有输入 owner,没有创建持久字段、词汇、迁移或第二个权限判定器。_environment现在无条件向任务目录写入网络样本。这个 helper 还被未改动的 checkpoint 套件导入,其 Host 明确选择任务目录为公开扫描输入。因此新样本改变了相邻测试的前提,而非仅加强本模块的默认范围回归。
[P1] 请限定新增样本的作用范围,恢复 checkpoint 资格。 触发链是共享 helper → 新样本 → checkpoint _HOST 的显式 --scan-path → 正确的公开边界拒绝。后续没有 captured held checkpoint,出现 observations={} 或 closeout guard 文件缺失。该结果不能被当作原 Turn 身份、Stop 或额度反例已经受测。最小修复是用明确 fixture 选项或在对应默认路径用例局部加入样本;保留原恢复断言和 unsafe-public 负例,不删除扫描、不放宽保护。
对主干的风险
我独立运行 uv run --extra test python -m pytest tests/control_plane/test_benchmark_current_admission.py tests/control_plane/test_benchmark_checkpoint_admission.py -q:此 head 14 passed、14 failed(104.78s);全部失败来自后者。相同解释器、不可变基线 4e6baa51afdc2ad522012c1f691ae166c9d67e7b、未修改的 checkpoint 模块为 14 passed(75.44s)。checkpoint 文件和 worker、paths、quota parser、TS launch owner 的对应 blob 没有变化,新增共享样本与显式公开范围直接相交,不能归为无关既有红测。这里证明的是测试资格回归,不据此声称生产恢复实现已坏。
另以相同合成 Host harness/fixture 在基线与此 head 运行普通、Stop、零算力、缺状态两存储对照:基线两项应允许启动的断言失败,其余六项拒绝成立;head 八项全过。选定公开范围 unsafe 的真实 native-spawn 反例也在 File/SQLite 均拒绝且无业务输出。当前模块14项、Ruff、quick premerge 的 diff/编译/双语/公开边界及有界 catalog 检查通过,但 quick 的选择范围没有覆盖上述 companion 套件,不能替代它。
未拉取或等待远程 CI,遵守本轮 review policy。测试使用真实 CLI、File/SQLite 和本地确定性子进程,模型只是合成 actor;作者的 Linux 安装声明未在本次 Mac 审阅中独立重演,真实模型、原生评分和科学收益均未验证。
我的整体评价
这是一个有实际价值、边界适当的运行时增量:justified_increment,既有 owner 足够,生产代码不需要扩大重构。用户体验的默认误拒已在真实进程路径改善且无需新增输入/确认轮次;长程续接的完整资格为 not_yet_proven,因为共享 fixture 遮蔽了全部 checkpoint 不变量。兼容性结论不能仅由当前模块绿测或相同 decision 字段推得。
词汇沿用现有 owner,未新建 schema、领域义务或 default-off 开关;保留强制 gate 与现有权限含义。请先限定 fixture 前提并让以上两个模块原断言完整通过,再按更新后的精确 head 复审;不要求本 PR 修复无关整树问题或先证明科学收益。本结论不授予合并、安装推广或新的实验额度。
English verdict: REQUEST_CHANGES — b899387. The default launch-scope fix passes identical real-process positive and refusal probes on File/SQLite, but the shared private-network fixture breaks all 14 existing checkpoint-admission cases (base: 14 pass; head: 14 fail). Scope the fixture without weakening scan or checkpoint assertions, then rerun both modules. Quick premerge passes; no remote CI or real-model claim.
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; runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
APPROVE — 7086073。旧 head 的共享 fixture 回归已修复;当前未发现阻断项。
动机
默认 heartbeat 的首次规划、普通执行以及原 Turn checkpoint 恢复调用者。
私有任务含网络测试样本时,原 guard 扫描公开包后允许执行,临启动却改扫任务并拒绝;补丁恢复默认公开包范围。
同一合成Host输入的两种存储在基线均错误拒绝默认启动,新head均启动;43项当前集成通过,held公开范围变坏仍拒绝续接且不新增native或结算。
本 PR 不授予模型、原生评分、合并或发布权限,也不改变显式公开扫描与原 Turn 身份契约。
此源码PR的工程路径已验证;main采用、安装与真实模型/原生效果仍由原owner单独验收,不能由本评审推断。
改动思路
本次复审覆盖整个 base 4e6baa51afdc2ad522012c1f691ae166c9d67e7b 到当前 head 的三文件净差异,并单独核对自上次评审后的修复。默认 heartbeat_body 未指定项目扫描 override;临启动重读恢复使用同一公开包默认。已捕获 checkpoint 携 original_quota,保留原项目公开范围重查和原 Turn/event 绑定,不能被新的默认包或 outer wake 代替。两种输入角色本来就存在,没有新建一个手填模式。
复用现有默认owner且保留held原范围/身份,避免默认修复扩大到捕获续接;共享fixture回归已用原oracle消除。本 PR 的边界是:仅修正uncaptured默认heartbeat扫描输入,保留held范围/Stop/权限/原身份与原结算,不新增policy或科学效应声明。Python仍只提供既有transport输入,live quota与共享TS owner继续作强制准入判断,无需为一个默认值新增配置、语言迁移或前端屏幕。
具体改动
规范仍依据 docs/heartbeat-automation-prompt.md,spec_revision=4e6baa51afdc2ad522012c1f691ae166c9d67e7b。Static semantics retained across hosts:凭据/私有边界及异常恢复不绕门,由真实Stop、零额度、缺状态和unsafe-public拒绝覆盖。Native Goal bootstrap and live execution instructions:当前契约、实时guard和原身份继续由既有owner解释,正常恢复的业务产物、原一次结算与幂等replay均实际读回。
关键代码讲解
current_heartbeat_host_launch_decision让uncaptured wake使用scan_path=[]与已有default_public_scan_root(),original_quota is not None时保留项目override。原receipt缺失/event或settlement绑定变化仍拒绝;callback仍在Goal launch lifetime内、Popen前执行。_environment与_quota已恢复基线AST,未通过放宽相邻断言“修绿”。私网样本仅在本次默认正常启动和初始planning情境中创建;helper消费者的原语义保留。原错误地无条件污染共享fixture的问题解决。_run_checkpoint在原guard捕获后插入unsafe公开材料,要求拒绝续接。原16项checkpoint组合中,拒绝时仅有首次native/model、原events不变、无business/spend;正常恢复仍保持原身份、恰一次结算与replay幂等。它保护的是实际resume边界,不是只调用一个拒绝helper。
旧评审b8993871的P1已逐项复核:原checkpoint文件14项在基线通过、旧head全败的记录保留;当前共享前提恢复,原14断言没有被删除,另加两项捕获后范围变化反例。此处重新判断整个PR,没有继承作者测试声明或把旧失败改写为通过。
对主干的风险
当前head独立运行三个admission模块及直接helper消费者的两项参数化重试/失败测试,合计 43 passed /179.93s。同一冻结合成Host harness/fixture在不可变base与当前head比较:base的两个合法默认启动被错误拒绝,其余六个source Stop/zero/missing反例成立;当前八项全过。unsafe public root的真实spawn探针在File/SQLite均拒绝且无native/model/business输出。新增held反例检查捕获后变化,防止“默认允许”掩盖续接时错误放行。另在不修改tracked源码的内存mutation中只删去held项目override,File/SQLite都被原测试的“错误地启动了第二native Host”断言检出;固定head的相同两项通过。这证明新增反例能够识别具体范围逃逸。
quick premerge通过diff、编译、双语、公开边界及有界catalog检查,三文件Ruff通过;当前checkout tracked clean。没有获取或等待远程CI,遵守此Goal的validation policy。这些是实际CLI、File/SQLite、TS判定和确定性本地子进程的资格;作者Linux镜像安装声明没有在本次Mac环境独立重演,真实模型/原生评分与净效率仍未验证。旧head14失败与本地探针的准备错误保存在原证据,未挑选绿测覆盖历史。
我的整体评价
当前工程切片为justified_increment:默认任务可继续有用工作,user_experience=improved且没有额外输入/确认轮次;long_horizon=preserved基于原Host/Turn恢复、拒绝、业务和结算的真实链。它不等于已经证明研究策略提分,或保证任何更长实验都值得继续。默认/held语义的有意差异已通过调用者与counterfactual验证,未增加共享词汇、持久状态、领域义务或default-off机制。
规模与原问题相称,保留现有owner即可。建议同步PR正文说明“held保留原scope”及当前验证范围,避免读者将旧22项声明当作本次完整范围;这是非阻断的说明更新。当前没有需要请求修改的代码发现。旧评审和讨论保留,合并授权、merge-readiness、安装与科学验证仍是各自独立边界。
English verdict: APPROVE — 7086073. The shared-fixture regression is resolved without weakening checkpoint assertions. Uncaptured wakes use the existing public default, while held checkpoints retain their original project recheck. Independent real-process validation: 43 integration cases pass, the same eight base/head probes distinguish the historical defect, unsafe public scopes refuse launch, and quick premerge passes. This is engineering qualification, not merge authority or a model/native-score claim.
A default heartbeat can pass its guard and still be rejected immediately before native launch when its private task contains network or authentication fixtures. The launch recheck scanned the task workspace, while
heartbeat-promptscans the bounded public LoopX package by default.Reuse
default_public_scan_root()for an uncaptured heartbeat launch. Preserve the existing workspace recheck when a checkpoint already holds its original quota packet. Live Goal, Stop, quota, authority and public-boundary checks still run; an unsafe selected public root or a new workspace violation on a held checkpoint still refuses launch.Validation at
7086073e92abbb0f28451f548c51db0fbec583d5:The change uses the existing scan owner and Python transport; it introduces no configuration, state vocabulary, decision owner, scoring change or new frontend operation. Installed-candidate qualification does not establish mainline adoption or a benchmark improvement.