Skip to content

fix(collaboration): retain queued handoffs across native lane contention - #7531

Open
loopx-agent wants to merge 4 commits into
mainfrom
codex/delegation-inbox-wake-20261028
Open

loopx-agent wants to merge 4 commits into
mainfrom
codex/delegation-inbox-wake-20261028

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

Chat 交接落盘后的恢复原先跳过预检;预检后出现 native Turn lane 竞争,也可能把尚未执行的原请求记为失败。人工确认 operation 的回调还会直接提交委派,未使用 Chat 已有的忙闲、权限和验收预检。本改动让 task-bound 的首次提交、prepared 恢复和确认回调消费同一 TypeScript 预检判断;忙碌或未知时保留原请求与确认,不提交 peer 工作或 worker。

启动后竞争仍由原生 fence 处理。只有尚无原 Turn journal、且原生回执明确证明未启动和零副作用,TS observation owner 才把原 operation 保留为 prepared,供后续获授权重试。原 request、完整 brief、回传会话与租约身份保持;已有 journal、effect 或未知结果沿原恢复流程。未探测的 configured runtime 保留原有界尝试规则,独立 original_operation continuation 不变。

本次相关重构已应用:删除 Python 重复 readiness 判断,两处现有调用方直接消费 TS 的 dispatch_allowed;Python 只适配 IO。必要回执事实通过既有 observation owner,大块 evidence/Host 配置留在原结果;持久化仍归既有 validation IO owner。CLI、MCP、Chat 和确认回调共用原生规则,无新配置、scheduler 或自动重试循环。

验证版本:head 98a6e6fb675217e4534e2086fdb37355ec87890b,main 基线 9558f75ae52e8a0c9f74ad7df0f47a69e0d413ad。

  • 103 项共享入口/恢复测试通过,覆盖真实 File/SQLite、软/硬租约、停止、失回执和原身份一次 Host/扣额/原会话返回。确认回调最终 51 项通过:其中 10 项使用真实 File/SQLite 和 native 协议夹具,41 项为 Lark 回调身份/并发重放单测;另 6 项既有 native Codex 回调/profile 测试通过。

  • 完整 TS 5603 通过、75 条件跳过、零失败;全量 TS typecheck、Ruff、配置内 mypy 17 文件、语义 advisory、双语差分和 11 文件公开边界检查通过。重基未改变受测产品和测试语义,最终改动仅清除测试末尾空行,AST 一致。

  • 反例:不可变 26caf900 在忙碌 lane 仍提交回调;当前阻止提交。原 968afd8 的 6 个迟到竞争失败及先前大结果传输/模块超限失败保留。新增测试初版把未探测 runtime 当已知不可用的两项失败已纠正;Lark wire fixture 明确模拟预检边界,真实准入由上述原生用例覆盖。首轮 premerge 发现末尾空行,已修正,未改变断言或阈值。

  • 精确范围 CQR 有效;标准 premerge 的 6 项直接检查与 11 项选中检查全部通过,零失败、跳过或人工 hold。校验使用已核实的固定 main 提交,避免并行更新远端跟踪引用改变同次验证基线。

  • 隔离打包补验:同一 head 的 CPython 3.14 非 editable wheel 安装后,原公开恢复与回调预检两模块 34 项全部通过,零失败/跳过。覆盖真实 File/SQLite、prepared 忙闲恢复、迟到竞争、硬租约、6 MiB 结果、原身份一次 Host/扣额/返回及确认回调撤权。5 个改动产品文件与 wheel/安装内容逐字一致;已采集的 237 份 Python 导入记录和主进程 1175 个产品模块未从源码目录加载。初建因过期 Chat 资源被拒,按标准重建后打包成功;失败记录保留。这是隔离协议 Host 资格,正式 App 和真实模型采用仍未验。

  • 远端 CI 尚未完整资格:本 head 的 CI Maintenance 因旧 Python Tests 运行未在取消观察窗口内终止而失败;旧 head 6602022 的该运行后来于 23:31:11Z 读回 cancelled。清理任务的失败仍保留,未重跑或豁免;其他远端检查以实际结果为准。

这是可独立验证、可回退的 task-bound 恢复修复。普通无预建 Todo 的 Inbox 自动激活、持续唤醒队列、正式 App/真实模型采用与完整长期成本验收仍未完成;DSH 可选 SDK 用例因依赖缺失跳过,未作该 runtime 新资格。原权限、停止、预算与租约门继续有效。PR 尚未合并;正式运行环境未升级。

@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.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: 968afd8; base: a85a804.

动机 / Motivation

使用已授权Chat交接的请求方,在保存操作后、worker启动前退出时需要恢复原任务。
旧版本在原操作仍为prepared时跳过预检,已被占用的Turn lane仍会提交worker;新版本保留原操作并返回忙碌原因,释放后同一请求只执行并回传一次。
已验证忙碌时没有worker、新Turn或任务改写,恢复后原请求被处理并向原对话回传一次。
不新增grant、任务、scheduler或自动重试,不代表普通Inbox自动激活或正式App/model采用。
剩余缺口是无预建Todo的普通Inbox自动激活及正式安装Host采用,保留原有独立交付边界。

改动思路 / Approach

恢复与首次提交共用既有native预检;Python只组合当前事实,TypeScript继续拥有准入和状态转换,启动锁负责随后发生的竞争。
本PR只修复已有明确Todo与grant的prepared恢复,不交付普通Inbox自动唤醒或第二套controller。
没有新增准入规则、协议、RPC、配置或持久缓存。submitted=false 表示本次没有提交,原operation仍可恢复;running、turn_returned及终态继续读原记录,避免已完成Todo的新启动拒绝遮住历史结果。fresh source检查在可能较慢的inspect之后再执行,预检不能代替启动时的原生fence。

具体改动 / Changes

独立依据是 docs/reference/local-delegation.md,spec revision a85a804;activate、source-use-and-recheck、disconnect-and-recovery 三项均按上面原合同实现并验证。

关键代码讲解

  1. execution.dispatch 先验证原Inbox、完整brief、binding及回传Session/Turn,只让仍为prepared的分支进入共用inspect。拒绝时返回原operation_id、Todo与replayed状态,不写出另一个操作。
  2. Delegations.resume 保留原锁与prepared_source_request_id,迟到worker发现操作已经推进时只观察。该owner未改,因此本次adapter不复制其启动/状态规则。
  3. 两个测试文件同时覆盖真实File/SQLite占用lane、释放恢复、原请求处理和一次回传,以及撤权、停用、缺失预检事实和五类已推进状态。对应文档中英文补充预检是观察以及没有自动wake的边界。

对主干的风险 / Risks

PASS:四个完整相关模块共113项测试,6项直接检查加11项选中标准premerge全部通过,零人工hold。没有查询、轮询或等待CI。
FAIL(预期base反例):把同一组新断言应用于不可变base,10项失败、7项通过;其中File/SQLite两条真实忙碌lane均观察到旧代码继续提交。head的完整测试验证busy不动原记录/held lane/Todo,释放后一次Host执行、原请求conclusion一次返回,终态重放不再inspect或spawn。
没有把mock admission当真实Host证明:单位用例覆盖快速故障分支,实际后端、原生CLI、fixture Host和返回transport覆盖端到端恢复。当前没有新增off开关;无binding/context-only与撤权拒绝路径保留,不因可见binding或注册获得权限。preflight之后的竞争仍由原native start fence处理;这不是原子预留或安装态模型资格。

我的整体评价 / Verdict

APPROVE,无阻塞发现。这是可独立使用的恢复增量:长程工作能够保留原承诺并在恢复后处理原请求;调用方收到可行动的拒绝和同一操作的结果,无新增确认轮次。恢复与首次提交共用既有native预检;Python只组合当前事实,TypeScript继续拥有准入和状态转换,启动锁负责随后发生的竞争。 本PR只修复已有明确Todo与grant的prepared恢复,不交付普通Inbox自动唤醒或第二套controller。
4文件+180/-18中,生产adapter净增7行;测试直接保护已发货的恢复边界,未另建状态owner。保留既有持久operation/Turn与回执兼容,相关准入词汇均复用,semantic advisory及公开边界检查通过。
完整4文件diff和原handoff回复消费者未改变任何渲染布局、设置或首屏结构;visual review不适用,实际安装App交互仍未验证。 正式App、真实外部模型、PostgreSQL、Windows、全仓与长期净收益未本轮资格化;本次采用已有Source/Turn/返回owner,不能用一次fixture回传关闭这些轴。合并须由维护者另行决定。

English verdict: APPROVE — 968afd8; prepared recovery now shares native preflight; 113 tests and 6 direct/11 selected checks pass, with real File/SQLite base counterexamples and once-only recovery/return.

@loopx-agent
loopx-agent force-pushed the codex/delegation-inbox-wake-20261028 branch from 968afd8 to 6602022 Compare October 27, 2026 22:53
@loopx-agent loopx-agent changed the title fix(collaboration): preflight prepared source handoff recovery fix(collaboration): retain queued handoffs across native lane contention Oct 27, 2026
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>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@loopx-agent
loopx-agent force-pushed the codex/delegation-inbox-wake-20261028 branch from 6602022 to 98a6e6f Compare October 27, 2026 23:29

@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.

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

动机 / Motivation

现有获精确binding授权的Chat/CLI/MCP请求方和已确认task-bound callback接收者。
已保存请求或已确认operation遇忙碌/未知lane:旧代码提交worker或拒绝原操作;head先保留原身份与确认,恢复后原会话启动一次,启动后竞争仍由native fence裁决。
当前File/SQLite四完整模块128例、11个原生profile案例及12独立native正反例通过;实际target base上8个原交接/late-race及10个callback反例失败,head保持原identity、confirmation、一次Host/结算/返回。
不新增自动retry/wake pump、普通无Todo Inbox激活、执行grant或正式App/真实模型/安装资格。
普通无预建Todo的Inbox自动激活及正式App和真实模型采用仍由既有collaboration/host工作承接。

已保存但尚未启动的合法交接,以及已确认的 task-bound callback,在接收方忙碌时应保留原承诺。旧代码的 prepared Chat 重放跳过预检;callback 也会直接提交 peer 工作;预检之后的 native lane 竞争还可能把从未启动的操作记为终态拒绝。请求方被迫另建操作会扩大重复执行与重复扣额风险。

本次只评价完整 98a6e6f,actual target base 为 9558f75:11 文件 +625/-52。变更前的 local-delegation 合同已要求确认、启动授权、原生开始、消费、验收和原受众返回各自成立;这些既有要求是判断依据。旧 968/660 的结论不继承到本 head。

改动思路 / Approach

两个consumer复用同一TS preflight决定;状态转换复用原TS owner,持久化复用已有IO/fence;无第二调度/authority。
现有task-bound原请求恢复及确认callback准入;普通无Todo Inbox自然激活和正式App/provider仍未交付。

Chat 与新 task-bound callback → Delegations.inspect → TS delegationPreflight → 原 start/resume → native Turn fence → 既有结果 IO/observation → 原请求返回。dispatch_allowed 由原 TS owner 从完整预检事实派生;两个 Python consumer 只接受严格的 True,删除重复资格判断。

prepared 重放先检查当前来源、workspace、authority、acceptance、runtime 与 lane,再复查 grant。callback 拒绝时只返回 blocked 和原因,保留原 canonical confirmation,零新 peer 请求/worker;已有 delegation 的重放仍只读。独立 original_operation 的原 reservation 路径没有改动。

晚于 preview 的竞争仍由 native fence 处理。只有原 operation 没有匹配 journal,且真实回执的 schema/mode、非 replay、zero spend、host.executable=not_invoked 和全部 effects 明确 false 时,TS observation 才把 running 保留为 prepared。effectful、已有 journal 或不确定结果仍走原对账;没有自动 retry pump。

具体改动 / Changes

依据 docs/reference/local-delegation.md @ 9558f75:activate 核精确 grant 和当前验收;source-use-and-recheck 核原请求/brief/binding/Session;disconnect-and-recovery 核原 operation、unknown 与一次执行;acceptance-and-return 核独立验收、规范完成与原路返回;confirmed-callback-admission 核确认/启动授权独立及原 Session/profile。五项 implemented,均用变更前合同及实际 entrypoint 验证。

关键代码讲解

  • manager_context.execution.dispatch:prepared 与首次 dispatch 共用预检;advanced 状态不再按新启动检查已完成 Todo,原 source/binding/brief/Session/Turn 不替换。
  • delegationPreflight:原拒绝/未知分支均派生 false;已配置但未 probe 的 runtime 仅可有界尝试,不能呈现为 ready/running。
  • dispatch_confirmed_operation_wake:在新 peer 发布前消费同一预检;existing readback 和 original-operation reservation 仍先进入各自原 owner。
  • transitionDelegationObservation:严格识别未开始的 native lane refusal;不是按 reason substring 或自由文本猜状态。
  • delegation_validation.record_turn_result:原结果 IO 归回已有 owner,只运输必要 receipt facts;publish=False、锁内恢复和原 stop-fenced 写入 seam 保留,四个 caller 没有第二套状态规则。

验证与发现 / Findings

无阻塞发现。对本 head 独立执行:

验证 实际结果
source replay、Chat execution、callback preflight、Lark operation 四个完整模块 128 passed,零 skip
独立真实 native receipt 正反例,File/SQLite 12 passed;Host/state/quota/scheduler 任一 effect 或 unknown effect 都不回退
原生 callback/Session/profile 选中案例 11 passed,22 deselected
完整 delegation TS 模块及 control-plane typecheck 28 passed;typecheck 通过
actual target-base 的同一断言 8 个交接/late-race、10 个 callback 均复现旧缺陷;只 overlay 测试,product 未改,已还原
标准风险 premerge 6 直接 + 11 选中通过;零失败、警告或人工 hold

真实 disposable File/SQLite、native CLI、journal/lease 与 owned app-server 协议 fixture 验证了:重复忙碌不改原身份/确认,释放后原 Session 的 Host 只启动一次;原交接完成后 journal/debit 与原会话返回各一次。workspace 缺失、foreign/unreadable lane、preview 期间撤 grant、缺失/非 boolean 决定和错原请求都保守拒绝。Lark wire 测试的固定 preflight 仅验证身份与重放;真实准入由独立 backend 模块补齐,未把 mock 当原生开始证明。

旧 660 的五模块 192 passed 仅保留为对应版本历史;本 head 使用上表重新执行的范围。首次误写测试路径的 collection 失败、作者历史 module ceiling/large-result/旧 callback fixture 失败均保留,不改标为通过。按当前策略未查询、轮询或等待 CI。

对主干的风险 / Risks

最强风险是把已有副作用或未知回执误当未启动并重跑。当前严格 native 事实合取、原 journal lookup 和 stop/source/lease fence 保留;prepared 的再次启动仍须当前授权,并不新增自动循环。预检与最终启动之间仍可能发生竞争,其裁决继续归 native fence;不能把本次单路径恢复解释为自动 Inbox、安装、模型或长期净益资格。

语义与 CI 对齐

预检决定是观察;执行授权与最终 native fence 仍独立。缺 grant/context-only/未配置 callback 不激活,注册或确认也不替代当前准入。46 行双语文档明确新顺序、unknown 恢复、原 operation 重试及不新增自动 wake;未压缩旧义务或加入领域专用通用规则。标准语义/公开边界预检通过。

我的整体评价 / Verdict

APPROVE,无阻塞发现;justified increment。 现有 task-bound 承诺在争用中可保留,并有真实后继的一次启动、结算与返回证据;long_horizon 与 user_experience 在这个有界路径上 improved。新增生产成本为 +108/-49,主要复用 TS 预检/observation 和原 IO owner;两 consumer 共用派生决定,callback 仅 7 行接入,不需要新的队列、配置或 scheduler。

完整11文件diff只修task-bound准入和恢复、文档及测试;现有Chat/Lark shared frame布局、设置与首屏未改变,visual review不适用。正式App交互未验证。 普通无 Todo Inbox 自然激活、正式 App/真实外部模型、PostgreSQL、Windows、持续调度与完整长期成本收益未本次资格化;未据此关闭父级路线图。preflight 不是原子预留,真正的启动 fence 继续裁决其后的 race。合并与安装由维护者另行决定。

English verdict: APPROVE — 98a6e6f; shared typed preflight and strictly effect-free late-lane recovery preserve the original task-bound operation. Current-head 128 Python, 12 independent native, 11 profile and 28 TS cases pass; 18 actual-base counterexamples establish regression sensitivity.

This branch has not been deployed

No deployments
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