Repository navigation
fix(turn): retain work and acceptance contracts in shared hosts - #6950
Conversation
loopx-agent
left a comment
There was a problem hiding this comment.
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)
APPROVE — a2932d2ad43645b592710c0374ff4615d18c9bbb。完整八路径及两处生产入口的独立评审未发现阻塞问题;代码结论不授予合并权限。
动机
共享 DSH 或 Ark host 必须按原准入的完整工作与验收约束执行,并将结果交回原执行器。基线把 execution_profile 缩为四项展示字段,又在 Python host 提取时丢掉整个 profile 与完整审计;当前版本沿既有 owner 传递完整对象,host 可读到 outcome_floor、退化条件和有序的关闭前要求。
六组原生同源输入在真实 DSH 入口完整保留约束,Ark SDK 实际消息也逐值一致;篡改在 provider 前拒绝,两类契约都缺省时完整提示与基线相同。此交付限定共享 host 的约束可达性;正式安装、模型遵循、长期效果与完整成本及父级 M7.4 验收仍待各自证据。执行了几个操作或拿到有效签名,都不能代替工作规模、结果与关闭条件的判断。未修复时,共享 host 看不到已经存在的原要求,外层只能事后发现遗漏;再添加一套 host 侧选择器会增加分歧和维护成本。
改动思路
复用 TypeScript contractCapsule 的原始字段投影及签名 owner,Python 只提取并呈现这些已签名对象,不建立第二套准入、完成或记账规则。本 PR 修复完整工作与验收约束到共享 host 的传递;后续模型采用和长期收益继续由原执行与验收 owner 验证。
审计保留 current judge、accepted evidence、insufficient proof、continuation guidance 与有序 required_before_closeout;同时传原 detail_ref 和 action_signature,避免把简写、重排或新一次准入替代原观察。工作 profile 保留 outcome_floor、small_scale_streak_threshold 及原始 must_include。host 输出仍为候选,执行器继续验证成果、写回、额度与调度。
具体改动
依据为修改前已读的 docs/reference/protocols/turn-envelope-v0.md 与既有 effect-interpreter RFC,固定基线 51fcb044e5c52de46b39b11f0d2a478003321c13。五项逐一映射:complete-ordered-audit 保留全部有序审计;signed-original-context 使用同一原始观察与签名;outer-effect-owner 保持外层效果权限;complete-source-work-profile 保留已有工作资格及结果/退化条件;unchanged-absent-both-contracts 在两类契约均缺省时保持旧提示。没有审计但有 profile 的输入会有意获得原工作约束,不能称作这类输入提示不变。PR 新增说明未被用作证明自己的验收依据。
八路径 +194/-12:两个生产文件 +37/-8,两个既有测试 +110/-3,一个已有 monitor smoke +2/-1,协议及中英文 RFC +45。TypeScript 从四字段投影改为对非空原 profile 做 structuredClone;Python 在原字段提取处传 profile/audit 并在需要时传原读取引用与签名。monitor smoke 改用现有公开 parse_timestamp,保留 UTC 与函数同一性断言。
关键代码讲解
contractCapsule仍由原 TypeScript owner 从本次原始 payload 建立 capsule;execution_profile 不再经展示白名单裁剪,复制完整对象后纳入现有签名。没有从文本推断工作规模,也不建立新的持久化状态或能力。extract_turn_authority沿已验证 envelope 提取非空映射;审计存在时同时保留 detail_ref 与 action_signature。调用者不能靠另造摘要、改 judge 或替换 profile 绕过现有签名校验;十个反例在 provider 收到请求前被拒绝。render_prompt只在对应原契约存在时增加读取义务。审计要求完整阅读且依 insufficient proof 判断;工作要求按 artifact、validation、outcome 与 degradation 资格执行并交回证据。它没有新增 shell、网络、额度、调度或结束 Goal 的权限。DSH 和可选 Ark host 复用同一处 renderer。
对主干的风险
最强反例是 profile 被当作可自由修改的提示、正文次序变了,或新增指令让模型把有效签名当成成果完成。独立探针从当前原生捕获取六组输入:File/SQLite 的普通和 replan 审计各一组,再加两组没有审计但有工作 profile 的原生决定。不可变基线与当前源码分别运行真实投影、相同原 capture 路径与 runtime,再走实际 DSH stdio。基线保留四项 profile 但 host 丢掉两类契约;当前 host 收到完整 profile、适用审计与原签名/引用,原 capture 和 runtime 不变。分别移除两类契约的显式合成反例,六组完整提示字节相同。普通与 replan 的任务仍返回 typed wait 候选,候选不等于成果验收或实际状态写回。
真实 Ark host 和 AsyncArk SDK 通过 httpx MockTransport 捕获实际 user.message,六组均完整保留同样的 profile/审计;六个 profile 篡改与四个 judge 篡改全部在 provider 前拒绝。完整 SDK 30 项通过,实际模型与云网络调用为零。这证明 SDK 消息边界,不能推断模型理解、执行或安装采用。
当前版本另外通过九个完整 Python 模块 198 项、完整 TypeScript 5140 项(另有 73 项配置跳过)、类型检查、Ruff、mypy 17 个配置文件及精确八路径 standard premerge 的 6 项直接与 17 项选择检查,无 manual hold。73 项配置跳过不能认证真实 PostgreSQL;本 PR 未改存储 owner。未查询或等待远端 CI。实际基线单跑 monitor smoke 重现已删除私有函数的 AttributeError,当前完整 smoke 通过;原失败保留为基线缺陷。
完整语义会增大提示:四组审计输入相对基线增加 6971/6971/5500/5500 UTF-8 字节,两组仅 profile 各增加 664 字节;这是恢复缺失义务的成本,不通过摘要或提高预算掩盖。现有 envelope 预算/外置上下文及签名测试通过;真实模型的完整成本仍待验证。最初可选 Ark 依赖缺失以隔离的 arkruntime 0.8.0 / MCP 1.30.0 环境补齐,没有改依赖锁或降低门槛。旧 head 的 81 Python/36 TS 和四组探针只保留为历史,未转算当前通过。
我的整体评价
本次为 justified_increment。long_horizon 为 preserved:原工作、重规划、证据和关闭 owner 不变,恢复的是这些条款到 host 的可达性;不据测试数量推断目标收益。user_experience 为 preserved:仍使用原共享 host/CLI,原事实自动随本次 envelope 传递,不让操作者重新输入要求或额外确认。复用 TypeScript contractCapsule 的原始字段投影及签名 owner,Python 只提取并呈现这些已签名对象,不建立第二套准入、完成或记账规则。本 PR 修复完整工作与验收约束到共享 host 的传递;后续模型采用和长期收益继续由原执行与验收 owner 验证。
已有 owner 足够,新增分发状态、配置、executor 或模型启发式都不相称。这里直接修复两个现有生产点,配套原生回归和协议对齐;不声明新的独立界面或公开能力。签名等权限边界由机器执行;按 profile 交付证据及满足关闭条件是实际义务,不能降称可忽略建议,但提示到达本身也不是模型遵循证明。剩余安装/模型/成本资格继续归原父任务,无需凭此另造 successor。
English verdict: APPROVE — a2932d2. Full eight-path review. Both shared hosts now receive the complete source work profile and applicable ordered audit through existing projection/signature owners. Six immutable paired DSH cases, actual AsyncArk messages, ten pre-provider tamper refusals,198 Python tests,5140 TypeScript passes,30 SDK tests and local risk checks support this bounded increment.73 configured skips, larger prompts and unverified installed/model/cost outcomes remain explicit. No CI, merge authority or Goal-completion claim.
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)
动机
使用 DSH 或 Ark 执行已准入工作的操作者,需要 Host 收到原本已经确定的工作规模、成果底线和关闭前验收要求。
此前外层决策包含这些要求,capsule 却删去成果与退化条款,随后共享适配器又丢掉整份 profile 和验收 audit;现在原字段沿签名输入直达两类 Host。
独立的同源比较已证明:当前 Host 收到完整 profile 和适用的有序 audit,篡改在 provider 前拒绝,补读仍指向原捕获。
交付范围是源码与协议传输;没有增加配置或界面,也不宣称正式安装、模型遵守、长期效果或完整 token/IO/延迟成本已获资格。
改动思路
两个既有边界各有一次真实丢失:只修 capsule 会继续被 Host 丢弃,只修 Host 会继续收到裁剪后的 profile;复用原 TS 投影和共享适配器同时修复是最小完整边界。
当前 PR 修复原要求到共享 Host 的完整传递,并对已测得的 CLI 展示增长作有界资格化;状态、完成、quota 和 scheduler 效果继续归原执行器。
没有另造 Host 规则、验收状态或 executor。既有配置和 Goal 判断产生事实,TypeScript 签名,Python 只验证及传递;真实 DSH 和 Ark 使用同一个 renderer。已知要求自动随原请求传递,操作者无需再填一份 profile 或增加确认轮次。
| 受控输入 | 基线实际 Host | 当前实际 Host |
|---|---|---|
| 有 profile 与 audit | 两者丢失 | 完整源条款与原捕获证据均到达 |
| 只有 profile | 整份 profile 丢失 | 工作/成果/退化条款完整到达 |
| 两者都缺省 | 原提示 | 提示逐字节相同 |
该表对应实际消息比较,不把“收到提示”视为模型理解或完成成果。
具体改动
重新核对当前 8de5a13 的完整十路径,实际 merge-base 是 e465f85:+280/-16;生产三路径+68/-12,测试/fixture 四路径+149/-4,文档三路径+63。继承主干的其它改动不计入本提案。
关键代码讲解
contractCapsule删除 profile 的四字段展示白名单,完整复制已计算的原对象,继续由既有签名 owner 覆盖。成果底线、退化规则、顺序与原值不再在签名前丢失,也没有重复维护一份摘要。extract_turn_authority先核原签名,再统一读取 unavailable/audit/profile。audit 需要补读证据时携带原detail_ref和签名;它没有从当前状态重建一个新准入。render_prompt只在原契约存在时要求读取有序验收、当前 judge 与完整工作资格。缺失证据暂停依赖它的判断,独立工作保留原权限;Host 返回证据/语义结果,不能接管状态、扣额或调度。_turn_projection_migration复用既有差分迁移入口:只有同一 Turn-plan JSON 行、旧四字段齐全、指定六条路径完整新增、签名覆盖不变且无其它结构变化,才允许一次 160 字符/字节增长。原 context 迁移分支保留;不是给任意大输出开放豁免。
monitor smoke 同时改用 scheduler 实际使用的共享 parse_timestamp,保留函数同一性、UTC 归一化及其余断言。成对 RFC 与双语协议明确传输、成本和权限边界。
规范依据为 TurnEnvelope v0,固定 revision e465f85,按变更前文本判断:Native Turn Host capture 对应原捕获/身份/hash;required_before_closeout 对应完整有序义务和非证明条件;Execution boundary retention 对应原 scope 与外层效果 owner;Budget warnings and allocation 对应保留语义和诊断预算。前两类经实际 provider 输入和拒绝验证,后两类经快照、权限缺省与同输入预算矩阵核验。文档新增的解释不能替代这些独立原来源。
对主干的风险
最强反例是签名正确,但签名/Host 覆盖的内容已经不完整。独立探针在不可变实际基线 e465f85 与当前 head 运行相同八组输入:四份真实 File/SQLite 普通/绑定 replan 捕获,以及两个去掉 audit、两个同时去掉两类契约的显式对照。每组都经过正常 managed Node 投影、真实 DSH 子进程和真实 AsyncArk SDK 的 MockTransport 消息。基线在六组有工作契约的输入上不能满足原来源 oracle,当前完整到达;两组都缺省时完整提示字节相等。两头的整个原 fixture 文件树保持不变。
当前六组 profile 篡改分别在 DSH 和 Ark 入口拒绝,Ark provider 调用数为零;原生测试还覆盖 audit 次序、judge 和非证明条件篡改。没有真实模型、云网络、原生结算或扣额调用。提示成本在本组固定夹具下为普通路径+7259、replan+5500、仅 profile+664 UTF-8 字节,缺省对照为零;这些成本不能称为 token 节省或长期收益。
语义与 CI 对齐
预算是防止无解释展示增长的回归门,生产 8192 字节仍是原诊断边界,执行配额及硬限制没有上调。我用同一完整 96 行公开工作负载,在冻结基线 51fcb044e5c52de46b39b11f0d2a478003321c13 与当前 head 生成回执,再让原 a293 规则和新规则判断同一对回执。原规则确实在 small/crowded/multi-agent 三行分别因 139/142/138 字符与字节、0 额外行失败;原 64/70 字符与128字节额度及失败均保留。新规则仅给完整补齐的一次变化160,最大样本余量18;仍产生 review signal。当前164项差分守卫覆盖部分补齐、已完整后的增长、其它格式/surface/结构、覆盖变化与超额输入,原绝对预算、行数和夹具人口不变。该有证据的调整符合预算决策规则,避免为压尺寸删掉有用要求。
当前 192 Python 测试通过、0 跳过(28项原生捕获/context、164项差分);37项 envelope TS 测试和 typecheck 通过。本地 standard 风险 canary 的 6项直接、18项选择检查通过。共享实现、SDK 调用方和相关依赖在 a293→当前头逐字节核对,旧190项 shared-host 和30项 SDK 回归仅作为明确复用证据,未叠加冒充当前执行次数;八组实际基线/当前输入另行执行。
必需前端检查仍有独立红灯:相同 node .../personal-workspace-contract.test.mjs 在实际基线和当前头均以 exit7 于第378行失败:Personal workspace prefers the registered Goal display name。完整错误仅替换源码根路径后相同,实际 test 与 dashboard-page.tsx 字节相同;这是未修改路径的既有失败。它不归因本 PR,也没有转绿或要求本 PR 顺便修前端。上面的无 Goal canary 不替代托管 change-quality 精确范围验收;作者记录的 quality hold、所需独立批准与维护者合并资格各自保留。未查询、轮询或等待远端 CI。
我的整体评价
APPROVE,只绑定 8de5a13 的完整十路径源码/协议增量。long_horizon 和 user_experience 为 preserved:原工作/验收意义恢复到真实调用方,继续执行、状态效果和原授权边界不变;没有新增人为准备或确认。原字段及词汇复用、已有 owner 足够,直接映射与单次读取已经完成有界整理,无需增加框架或独立界面。
签名校验由机器执行;完整工作和验收要求是应遵守的义务,不能因处于 prompt 就降称可忽略建议。当前证据证明输入到达及拒绝路径,模型实际遵守、安装采用、完整成本和长期目标结果继续由原执行/验收 owner 验证。独立归因的前端失败和托管质量门保持未通过,评审结论不清除这些门或授予合并权限。
English verdict: APPROVE — 8de5a132ce9c3768dc2476975801149f8a9f1e57. The full ten-path review verifies complete existing work/acceptance delivery through shared DSH/Ark inputs, original evidence binding and pre-provider refusal. Eight matched actual-base/head protocol cases,192 current Python tests,37 envelope tests and the retained96-row CLI comparison support the bounded160-byte migration allowance. The unchanged required frontend assertion still fails on base/head; managed quality and merge authorization remain separate. No live-model, installed or long-run efficiency claim.
Duang777
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; self_reported; Codex; OpenAI
REQUEST_CHANGES:Turn envelope 的请求侧约束和预算迁移已基本闭合,但共享 Host 仍无法返回这些约束要求的可验证证据。
动机
受影响的是通过共享 DSH 或 Ark Host 执行受治理 Turn 的调用方。此前 envelope 会丢失部分 execution_profile 和 vision_continuation_audit,Host 即使完成签名校验,也可能不知道成果底线、退化规则和 Goal closeout 前置条件;本 PR 试图把完整约束送到 Host。预期的可观察结果是 Host 按 profile 选择工作规模、遵守验收条款,并把工作与验证证据返回给外层 Turn executor。它不新增执行权限,也不声称已验证真实模型遵守、安装态采用或完整 token/延迟收益。
方向上的问题是真实的。最新 head 已为 profile 扩展提供严格受限的一次性预算迁移,因此旧 head 的预算 blocker 已解除;但当前实现仍只完成了“送达要求”的一半。响应协议没有承接新增证据,material result 还会被硬编码为固定交付分类。
改动思路
TypeScript contractCapsule 从 full quota decision 中构造共享 Host authority:保留完整 execution_profile,并复制 bounded vision_continuation_audit。Python host_candidate.build_prompt 再把这些字段解释成 Host 指令,要求 Host 根据 profile 确定工作规模、读取 closeout 义务,且只把语义结果交回外层 executor;状态、quota 和 scheduler effect 仍由外层 Turn owner 执行。
这一分层复用了既有 envelope 与 shared Host adapter,没有建立第二个 admission owner,RFC 中英文和 protocol 文档也同步描述了边界。CLI differential 现在只允许旧四字段 profile 完整补齐为指定 shape 时使用一次性 160 chars/bytes 迁移额度,并继续约束绝对预算、行数、签名和其他 shape 变化;这是与本次协议升级绑定的窄化例外。
当前 PR 边界仍应同时闭合请求和响应:只有 Host 能返回 profile 要求的 bounded typed evidence,且外层能保留真实交付分类,这个 transport 才构成可验收的完整切片。
具体改动
10 个文件共 +280/-16。双语 RFC 与 turn-envelope-v0 描述 profile/audit 传输;turn_envelope.ts 完整复制 profile 并保留 audit 条款;host_candidate.py 增加 profile/audit 指令;CLI differential 和测试加入上述受限迁移判定;Python/TypeScript 测试覆盖 tamper rejection、File/SQLite provider 输入、字段完整性和预算边界;monitor smoke 改用 scheduler 的共享 timestamp parser。
关键代码讲解
contractCapsule(loopx/control_plane/quota/turn_envelope.ts:521-559)对execution_profile使用structuredClone,对 audit 复制指定行为字段,使签名 authority 能看到完整规则。cli_output_differential.py只在旧 profile 到指定完整 profile 的单一迁移形状成立时放宽 160 chars/bytes;其他字段、行数或绝对预算变化仍失败。build_prompt(loopx/control_plane/turn_driver/host_candidate.py:177-237)要求 Host 返回 work/validation evidence,并根据 profile 的 artifact、validation、outcome 和 degradation rules 选择工作。_complete_material_fields(host_candidate.py:277-296)却无条件写入delivery_batch_scale=single_surface与delivery_outcome=outcome_progress,覆盖 Host 根据 profile 得出的分类。build_result仍按旧的loopx_turn_result_v0字段整形 candidate;公开输出清单没有 work/validation evidence 字段,因此新指令无法形成 typed readback。
评审依据包括 base e465f85bcfc3b383b3c13f7d910b86a4fb8e144a 的双语 agent-loop-effect-interpreter-v0 RFC、turn-envelope-v0 protocol 和仓库现行 CLI regression budget。请求侧完整传输及预算迁移已实现;响应证据闭环仍未满足。
对主干的风险
P1 blocker:Host 响应契约无法返回新增义务要求的证据。 在 exact head 8de5a132ce9c3768dc2476975801149f8a9f1e57 上,probe 输入 delivery_batch_scale=implementation、delivery_outcome=primary_goal_outcome 以及 work/validation evidence;build_result 输出丢失两份证据,并改写为 single_surface/outcome_progress。这使外层 executor 无法区分 Host 是否实际按 profile 完成工作,也让交付分类与已准入 profile 不一致。最小修复是扩展 bounded typed result 与 parser/build 路径,并从 profile/candidate 保留交付分类;然后用实际 parse/build 端到端断言复验。
本地 184 个相关 Python tests、diff check 和双语 RFC check 通过;远端 kernel-contracts 也通过。它们说明 profile/audit 请求侧 transport、tamper refusal 和窄化预算迁移已有覆盖,但不覆盖响应 schema 缺口。其他仍运行或失败的非相关 CI 不能替代这一 changed-invariant probe,也不改变本 finding。
语义与 CI 对齐
本 PR 扩展的是既有 execution_profile、vision_continuation_audit 和 Turn envelope vocabulary,没有创建新的 authority owner。请求侧文档、实现和当前预算迁移对齐;但 mandatory response evidence 仍只有 prompt 指令,没有 machine-readable 字段或执行器 readback,因此 guidance 与可验证 obligation 未对齐。
我的整体评价
完整传递工作与验收条件对长程执行有正价值,也保留了 outer executor 的状态与 quota 权威;monitor parser 和预算迁移的相邻改动都局部且有覆盖。最新提交已经消除了旧的预算 blocker,但当前实现仍无法证明 Host 采纳这些条件,反而会把真实 profile 分类改写成固定值。因此结论仍是 REQUEST_CHANGES。修复后需验证 typed response round-trip、implementation/primary_goal_outcome 分类和 work/validation evidence;真实模型质量和安装态仍可保持为非本 PR 资格。
English verdict: REQUEST_CHANGES - exact head 8de5a132ce9c3768dc2476975801149f8a9f1e57 resolves the prior CLI budget blocker, but still drops the work/validation evidence required by its new Host prompt and overwrites profile-derived delivery classification; 184 focused Python tests plus diff and bilingual RFC checks passed.
115d94d to
94c8f6b
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewer: model_agent · self_reported · GPT-5 · OpenAI
动机
调用共享 DSH 或 Ark Host 执行受治理 Turn 的调用方,以及依赖外层 executor 区分真实交付分类和验收证据的维护者。
此前,一个 material Host 结果即使附带 implementation/primary_goal_outcome 和两组证据,也可能在共享适配层被改写并冻结成 progress;现在这两组公开安全证据进入 typed result,分类原样保留,缺证据时在执行前安全停止。
遗漏响应证据会让外层无法判断 Host 是否按 profile 完成工作,固定分类还会掩盖实际交付规模;重试或追加人工核对会反复消耗同一 Turn 的执行成本。
当前 exact head 的 DSH 子进程和单元测试能够返回 work_evidence、validation_evidence、implementation 与 primary_goal_outcome,并由既有 executor 接收、验证和回读;缺字段、非法证据和 stop-result 走私都会失败关闭。
本 PR 不改变准入、写回、quota 或 scheduler 所有者,也不宣称真实模型一定遵守、安装态已采用或长期成本收益已经证明。
改动思路
原问题只在一次完整 Turn 的请求侧修复仍无法闭合:签名请求已经带有工作与验收要求,Host 返回 material result 时却没有承接这些要求的机器可读字段,还会覆盖传入的交付分类。最小完整边界因此同时覆盖请求、结果和持久读回,而不新增第二套准入或结算规则。
TypeScript contractCapsule 继续拥有 signed projection:它完整复制非空 execution_profile,并保留 vision_continuation_audit 的 ordered obligations、current judge 与 evidence conditions。Python shared candidate 只验证签名并转发这些既有事实;Host 返回 candidate,外层 executor 独占 validation、journal、state、quota 和 scheduler effects。
The contract is retained because it is the smallest complete response-side repair: one typed owner, one shared bound, no new authority and tested compatibility.
具体改动
本 head 共 16 个文件,+657/-22。生产六个文件为 +213/-15;文档三份 +81;测试与 fixture 七个文件 +357/-6。规范依据是 docs/reference/protocols/turn-envelope-v0.md @ revision 68e99ad93ef1954a0bf90ad7158ffb85cf365f2d,TE-CAPTURE、TE-AUDIT、TE-EFFECTS、TE-BUDGET、TE-RESULT 均为 implemented;本 PR 新增的说明未被当作自己的独立规范依据。
关键代码讲解
contractCapsule(loopx/control_plane/quota/turn_envelope.ts:521)删除 profile 的显示字段白名单,完整克隆原 profile;ordered audit 继续由同一 TypeScript signature owner 覆盖。buildTurnEnvelope与 37 项 TS 测试证明非空、完整和顺序语义,且无既有契约时保持缺省。extract_turn_authority与render_prompt(loopx/control_plane/turn_driver/host_candidate.py:70,146)先验证 action signature,再转发 profile、applicable audit、原 capture 路由和 hash;仅在契约存在时加入读取义务,没有把 Host 提示升级为状态或 quota 权限。build_result(host_candidate.py:317)只在 signed profile 与 material result 同时存在时要求两组证据;候选缺少字段时返回missing_host_execution_evidence的 typed wait,并保留 supplieddelivery_batch_scale、delivery_outcome,不再覆盖成固定 progress。_bounded_public_evidence与validate_loopx_turn_host_result(loopx/control_plane/turn_driver/executor.py:252,397)把每个 evidence 字段限制为 1-8 个非空公开安全字符串、每项 240 字符、整字段 1,200 字符;stop result 携带证据会被拒绝。codex_cli_result_schema用同一 limits 与 conditional allOf 对 material result 施加同等要求。execution_payload(loopx/control_plane/turn_driver/execution_readback.py:18)只从 journal 的非空 host_result 数组派生host_evidence;旧 journal 继续可读,不制造第二份持久状态。
对主干的风险
本 head 无阻塞 finding。最强反例是一个绕过 shared candidate/Codex schema 的自定义 Host adapter:它仍可在携带 profile 时输出 material result 而不带证据,因为 executor 对旧 journal 和外部 adapter 保持 optional compatibility。这个迁移风险已明确记录为非阻塞后续;本 PR 交付的首方 DSH、Ark 与 Codex 路径不会走该漏洞。
负向路径由共享 candidate 的 missing-evidence fail-closed、Codex material/stop schema parity、非法类型、空项、超长、超过 8 项、绝对本地路径和 stop-result 走私覆盖。正常路径由真实 DSH stdio 与 File/SQLite 捕获验证 profile、audit、原 capture、分类、两组 evidence 和 executor readback 全部往返;Ark 的 30 项 SDK 测试使用 mock transport,因此不宣称真实云调用或模型理解。
当前 head 的 383 项 shared-host/Codex、115 项 Turn driver、184 项 capability/CLI differential、37 项 TypeScript、30 项 Ark 和 6 项 post-rebase delegation recovery 均通过。Ruff、Python compile、双语 RFC、control-plane typecheck、semantic vocabulary、16 个变更文件的公共边界扫描通过;standard premerge 为 6 direct + 15 selected,0 failure、0 manual hold,CQR cqr_661bccfa8beaeec80538 为 valid/pass。按 packet 的 wait_for_ci=false,本评审未查询、轮询或等待远端 CI。
我的整体评价
APPROVE,绑定 exact head 94c8f6b8eaaf465230bbe473147f8d84394f355e。旧 P1 已在当前实现中被实质修复:Host 可以返回 profile 要求的 evidence,外层能区分真实 classification 与 evidence,缺证据不会进入 progress、写回或扣费。
long_horizon 与 user_experience 均为 preserved:原入口、签名身份、capture/replay、效果 owner 和操作步骤不变,新增内容是有界观察与条件验证。仓库复用成立:共享 candidate、既有 delivery enums、executor allowlist 和 readback 被扩展而不是复制;最终实现还删除了旧的固定分类覆盖,并让 adapter、schema 与 validator 共用一组证据上限。变更规模 16 文件/+657/-22,与一次跨 TS 投影、Python Host 传输、结果验证、持久读回和双语协议的完整修复相称。
当前边界是共享 DSH/Ark 与 Codex 的 profile-backed material result;自定义适配器迁移仍明确记录为非阻塞后续,不把模型遵守、安装采用或全局 Goal 完成纳入本 PR。
English verdict: APPROVE - exact head 94c8f6b closes the prior response-evidence and classification blocker with typed bounded evidence, conditional schema enforcement, executor validation and journal readback; 383 shared-host/Codex, 115 Turn driver, 184 capability/CLI, 37 TypeScript, 30 Ark and 6 recovery tests plus standard premerge and valid change-quality pass. Model adherence, installed adoption, custom-adapter migration and full cost remain explicitly unverified.
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · self_reported · GPT-5 · OpenAI
动机
调用共享 DSH 或 Ark Host 执行受治理 Turn 的调用方,以及依赖外层 executor 区分真实交付分类和验收证据的维护者。
此前,一个 material Host 结果即使附带 implementation/primary_goal_outcome 和两组证据,也可能在共享适配层被改写并冻结成 progress;现在这两组公开安全证据进入 typed result,分类原样保留,缺证据时在执行前安全停止。
遗漏响应证据会让外层无法判断 Host 是否按 profile 完成工作,固定分类还会掩盖实际交付规模;重试或追加人工核对会反复消耗同一 Turn 的执行成本。
当前 exact head 的 DSH 子进程和单元测试能够返回 work_evidence、validation_evidence、implementation 与 primary_goal_outcome,并由既有 executor 接收、验证和回读;缺字段、非法证据和 stop-result 走私都会失败关闭。
本 PR 不改变准入、写回、quota 或 scheduler 所有者,也不宣称真实模型一定遵守、安装态已采用或长期成本收益已经证明。
改动思路
原问题只在一次完整 Turn 的请求侧修复仍无法闭合:签名请求已经带有工作与验收要求,Host 返回 material result 时却没有承接这些要求的机器可读字段,还会覆盖传入的交付分类。最小完整边界因此同时覆盖请求、结果和持久读回,而不新增第二套准入或结算规则。
TypeScript contractCapsule 继续拥有 signed projection:它完整复制非空 execution_profile,并保留 vision_continuation_audit 的 ordered obligations、current judge 与 evidence conditions。Python shared candidate 只验证签名并转发这些既有事实;Host 返回 candidate,外层 executor 独占 validation、journal、state、quota 和 scheduler effects。
The contract is retained because it is the smallest complete response-side repair: one typed owner, one shared bound, no new authority and tested compatibility.
具体改动
本 head 共 16 个文件,+657/-22。生产六个文件为 +213/-15;文档三份 +81;测试与 fixture 七个文件 +357/-6。规范依据是 docs/reference/protocols/turn-envelope-v0.md @ revision 68e99ad93ef1954a0bf90ad7158ffb85cf365f2d,TE-CAPTURE、TE-AUDIT、TE-EFFECTS、TE-BUDGET、TE-RESULT 均为 implemented;本 PR 新增的说明未被当作自己的独立规范依据。
关键代码讲解
contractCapsule(loopx/control_plane/quota/turn_envelope.ts:521)删除 profile 的显示字段白名单,完整克隆原 profile;ordered audit 继续由同一 TypeScript signature owner 覆盖。buildTurnEnvelope与 37 项 TS 测试证明非空、完整和顺序语义,且无既有契约时保持缺省。extract_turn_authority与render_prompt(loopx/control_plane/turn_driver/host_candidate.py:70,146)先验证 action signature,再转发 profile、applicable audit、原 capture 路由和 hash;仅在契约存在时加入读取义务,没有把 Host 提示升级为状态或 quota 权限。build_result(host_candidate.py:317)只在 signed profile 与 material result 同时存在时要求两组证据;候选缺少字段时返回missing_host_execution_evidence的 typed wait,并保留 supplieddelivery_batch_scale、delivery_outcome,不再覆盖成固定 progress。_bounded_public_evidence与validate_loopx_turn_host_result(loopx/control_plane/turn_driver/executor.py:252,397)把每个 evidence 字段限制为 1-8 个非空公开安全字符串、每项 240 字符、整字段 1,200 字符;stop result 携带证据会被拒绝。codex_cli_result_schema用同一 limits 与 conditional allOf 对 material result 施加同等要求。execution_payload(loopx/control_plane/turn_driver/execution_readback.py:18)只从 journal 的非空 host_result 数组派生host_evidence;旧 journal 继续可读,不制造第二份持久状态。
对主干的风险
本 head 无阻塞 finding。最强反例是一个绕过 shared candidate/Codex schema 的自定义 Host adapter:它仍可在携带 profile 时输出 material result 而不带证据,因为 executor 对旧 journal 和外部 adapter 保持 optional compatibility。这个迁移风险已明确记录为非阻塞后续;本 PR 交付的首方 DSH、Ark 与 Codex 路径不会走该漏洞。
负向路径由共享 candidate 的 missing-evidence fail-closed、Codex material/stop schema parity、非法类型、空项、超长、超过 8 项、绝对本地路径和 stop-result 走私覆盖。正常路径由真实 DSH stdio 与 File/SQLite 捕获验证 profile、audit、原 capture、分类、两组 evidence 和 executor readback 全部往返;Ark 的 30 项 SDK 测试使用 mock transport,因此不宣称真实云调用或模型理解。
当前 head 的 383 项 shared-host/Codex、115 项 Turn driver、184 项 capability/CLI differential、37 项 TypeScript、30 项 Ark 和 6 项 post-rebase delegation recovery 均通过。Ruff、Python compile、双语 RFC、control-plane typecheck、semantic vocabulary、16 个变更文件的公共边界扫描通过;standard premerge 为 6 direct + 15 selected,0 failure、0 manual hold,CQR cqr_661bccfa8beaeec80538 为 valid/pass。按 packet 的 wait_for_ci=false,本评审未查询、轮询或等待远端 CI。
我的整体评价
APPROVE,绑定 exact head 94c8f6b8eaaf465230bbe473147f8d84394f355e。旧 P1 已在当前实现中被实质修复:Host 可以返回 profile 要求的 evidence,外层能区分真实 classification 与 evidence,缺证据不会进入 progress、写回或扣费。
long_horizon 与 user_experience 均为 preserved:原入口、签名身份、capture/replay、效果 owner 和操作步骤不变,新增内容是有界观察与条件验证。仓库复用成立:共享 candidate、既有 delivery enums、executor allowlist 和 readback 被扩展而不是复制;最终实现还删除了旧的固定分类覆盖,并让 adapter、schema 与 validator 共用一组证据上限。变更规模 16 文件/+657/-22,与一次跨 TS 投影、Python Host 传输、结果验证、持久读回和双语协议的完整修复相称。
当前边界是共享 DSH/Ark 与 Codex 的 profile-backed material result;自定义适配器迁移仍明确记录为非阻塞后续,不把模型遵守、安装采用或全局 Goal 完成纳入本 PR。
English verdict: APPROVE - exact head 94c8f6b closes the prior response-evidence and classification blocker with typed bounded evidence, conditional schema enforcement, executor validation and journal readback; 383 shared-host/Codex, 115 Turn driver, 184 capability/CLI, 37 TypeScript, 30 Ark and 6 recovery tests plus standard premerge and valid change-quality pass. Model adherence, installed adoption, custom-adapter migration and full cost remain explicitly unverified.
Resolved on reviewed head 94c8f6b: shared profile-backed material results now preserve work_evidence, validation_evidence and the supplied delivery classification; missing evidence fails closed, stop results cannot smuggle evidence, and the outer executor validates/readbacks the typed result. Exact-head APPROVE 5596660856 and focused shared-host, Turn driver, capability/CLI, TypeScript, Ark, delegation, premerge and change-quality evidence cover the original P1.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Preserve actual delivery classification and add bounded work/validation evidence to material shared-host results. Fail closed when the shared adapter omits required evidence, expose the retained evidence on execution readback, and keep legacy journal replay compatible. Signed-off-by: huangruiteng <huangrt01@163.com>
94c8f6b to
9f62edf
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · self_reported · GPT-5 · OpenAI
动机
调用共享 DSH 或 Ark Host 执行受治理 Turn 的调用方,以及依赖外层 executor 区分真实交付分类和验收证据的维护者。
此前,一个 material Host 结果即使附带 implementation/primary_goal_outcome 和两组证据,也可能在共享适配层被改写并冻结成 progress;现在这两组公开安全证据进入 typed result,分类原样保留,缺证据时在执行前安全停止。
遗漏响应证据会让外层无法判断 Host 是否按 profile 完成工作,固定分类还会掩盖实际交付规模;重试或追加人工核对会反复消耗同一 Turn 的执行成本。
当前 exact head 的 DSH 子进程和单元测试能够返回 work_evidence、validation_evidence、implementation 与 primary_goal_outcome,并由既有 executor 接收、验证和回读;缺字段、非法证据和 stop-result 走私都会失败关闭。
本 PR 不改变准入、写回、quota 或 scheduler 所有者,也不宣称真实模型一定遵守、安装态已采用或长期成本收益已经证明。
改动思路
原问题只在一次完整 Turn 的请求侧修复仍无法闭合:签名请求已经带有工作与验收要求,Host 返回 material result 时却没有承接这些要求的机器可读字段,还会覆盖传入的交付分类。最小完整边界因此同时覆盖请求、结果和持久读回,而不新增第二套准入或结算规则。
TypeScript contractCapsule 继续拥有 signed projection:它完整复制非空 execution_profile,并保留 vision_continuation_audit 的 ordered obligations、current judge 与 evidence conditions。Python shared candidate 只验证签名并转发这些既有事实;Host 返回 candidate,外层 executor 独占 validation、journal、state、quota 和 scheduler effects。
The contract is retained because it is the smallest complete response-side repair: one typed owner, one shared bound, no new authority and tested compatibility.
具体改动
本 head 共 16 个文件,+657/-22。生产六个文件为 +213/-15;文档三份 +81;测试与 fixture 七个文件 +357/-6。规范依据是 docs/reference/protocols/turn-envelope-v0.md @ revision d98804591271380db9737443ed5345e3f4e5b890,TE-CAPTURE、TE-AUDIT、TE-EFFECTS、TE-BUDGET、TE-RESULT 均为 implemented;本 PR 新增的说明未被当作自己的独立规范依据。
关键代码讲解
contractCapsule(loopx/control_plane/quota/turn_envelope.ts:521)删除 profile 的显示字段白名单,完整克隆原 profile;ordered audit 继续由同一 TypeScript signature owner 覆盖。buildTurnEnvelope与 37 项 TS 测试证明非空、完整和顺序语义,且无既有契约时保持缺省。extract_turn_authority与render_prompt(loopx/control_plane/turn_driver/host_candidate.py:70,146)先验证 action signature,再转发 profile、applicable audit、原 capture 路由和 hash;仅在契约存在时加入读取义务,没有把 Host 提示升级为状态或 quota 权限。build_result(host_candidate.py:317)只在 signed profile 与 material result 同时存在时要求两组证据;候选缺少字段时返回missing_host_execution_evidence的 typed wait,并保留 supplieddelivery_batch_scale、delivery_outcome,不再覆盖成固定 progress。_bounded_public_evidence与validate_loopx_turn_host_result(loopx/control_plane/turn_driver/executor.py:252,397)把每个 evidence 字段限制为 1-8 个非空公开安全字符串、每项 240 字符、整字段 1,200 字符;stop result 携带证据会被拒绝。codex_cli_result_schema用同一 limits 与 conditional allOf 对 material result 施加同等要求。execution_payload(loopx/control_plane/turn_driver/execution_readback.py:18)只从 journal 的非空 host_result 数组派生host_evidence;旧 journal 继续可读,不制造第二份持久状态。
对主干的风险
本 head 无阻塞 finding。最强反例是一个绕过 shared candidate/Codex schema 的自定义 Host adapter:它仍可在携带 profile 时输出 material result 而不带证据,因为 executor 对旧 journal 和外部 adapter 保持 optional compatibility。这个迁移风险已明确记录为非阻塞后续;本 PR 交付的首方 DSH、Ark 与 Codex 路径不会走该漏洞。
负向路径由共享 candidate 的 missing-evidence fail-closed、Codex material/stop schema parity、非法类型、空项、超长、超过 8 项、绝对本地路径和 stop-result 走私覆盖。正常路径由真实 DSH stdio 与 File/SQLite 捕获验证 profile、audit、原 capture、分类、两组 evidence 和 executor readback 全部往返;Ark 的 30 项 SDK 测试使用 mock transport,因此不宣称真实云调用或模型理解。
当前 head 的 383 项 shared-host/Codex、115 项 Turn driver、184 项 capability/CLI differential、37 项 TypeScript、30 项 Ark 和 6 项 post-rebase delegation recovery 均通过。Ruff、Python compile、双语 RFC、control-plane typecheck、semantic vocabulary、16 个变更文件的公共边界扫描通过;standard premerge 为 6 direct + 15 selected,0 failure、0 manual hold,CQR cqr_904beee6447c671f2af3 为 valid/pass。按 packet 的 wait_for_ci=false,本评审未查询、轮询或等待远端 CI。
我的整体评价
APPROVE,绑定 exact head 9f62edf423b3b9df4e98582d1fe42b52b88ea237。旧 P1 已在当前实现中被实质修复:Host 可以返回 profile 要求的 evidence,外层能区分真实 classification 与 evidence,缺证据不会进入 progress、写回或扣费。
long_horizon 与 user_experience 均为 preserved:原入口、签名身份、capture/replay、效果 owner 和操作步骤不变,新增内容是有界观察与条件验证。仓库复用成立:共享 candidate、既有 delivery enums、executor allowlist 和 readback 被扩展而不是复制;最终实现还删除了旧的固定分类覆盖,并让 adapter、schema 与 validator 共用一组证据上限。变更规模 16 文件/+657/-22,与一次跨 TS 投影、Python Host 传输、结果验证、持久读回和双语协议的完整修复相称。
当前边界是共享 DSH/Ark 与 Codex 的 profile-backed material result;自定义适配器迁移仍明确记录为非阻塞后续,不把模型遵守、安装采用或全局 Goal 完成纳入本 PR。
English verdict: APPROVE - exact head 9f62edf closes the prior response-evidence and classification blocker with typed bounded evidence, conditional schema enforcement, executor validation and journal readback; 383 shared-host/Codex, 115 Turn driver, 184 capability/CLI, 37 TypeScript, 30 Ark and 6 recovery tests plus standard premerge and valid change-quality pass. Model adherence, installed adoption, custom-adapter migration and full cost remain explicitly unverified.
Authorized self-merge decisionExact head:
GitHub merge readiness reports |
Goal And Delivered Outcome
A shared DSH or Ark Host must receive the signed work and acceptance rules and
return evidence that the outer Turn executor can validate. The original branch
restored the complete
execution_profileandvision_continuation_audit; thefinal review repair closes the response-side gap.
Final reviewed head:
9f62edf423b3b9df4e98582d1fe42b52b88ea237Base:
d98804591271380db9737443ed5345e3f4e5b890Final Repair
work_evidenceandvalidation_evidenceas separate bounded arrays. Each field accepts at mosteight non-empty public-safe strings, 240 characters per item and 1,200
characters total.
execution_profileis present, DSH/Ark fail closed if amaterial result omits either evidence field. Codex's structured schema
conditionally requires both for non-stop results.
delivery_batch_scaleanddelivery_outcomeare preserved throughthe shared candidate and validated by the existing executor owner. They are
no longer replaced with fixed progress defaults.
readback as
host_evidence. Legacy journals and non-material stop resultsremain compatible.
four-field profile remains unchanged; absolute CLI limits and fixture size are
untouched.
The earlier P1 is therefore resolved at the response boundary: the Host can now
return the evidence that its new prompt requires, and the external executor can
distinguish the returned delivery classification and evidence without receiving
state, quota or scheduler authority.
Validation
conditional schema requirements, safe evidence bounds, classification
preservation and stop-result isolation.
File/SQLite profile delivery, signature refusal and bounded growth.
ordinary delegation and lost-reply/damaged-history recovery subset passed 6
File/SQLite cases.
checks passed.
failures, zero manual holds.
5596783502at9f62edf423b3b9df4e98582d1fe42b52b88ea237. The prior blocker review5589701366was verified resolved and dismissed without deleting discussion.cqr_904beee6447c671f2af3, fingerprint904beee6447c671f2af3071738f2dda2a2dc0dda103041df387feb26c4ca4ee3,verification
valid, decisionpass.Boundaries And Remaining Risk
This is source/protocol qualification. It does not prove paid-model adherence,
installed App/Lark adoption, complete token/IO/latency cost or sustained outcome
benefit. A custom Host adapter that bypasses the shared candidate and Codex
schema may still omit evidence while carrying
execution_profile; executorcompatibility intentionally leaves the fields optional for that migration
boundary, which is recorded as a non-blocking CQR warning.
No private state, credentials, raw model transcript, local path or internal-only
link is included. Every commit has DCO sign-off.