Skip to content

fix(collaboration): qualify existing peer handoffs on Windows - #5456

Open
jackie-cqz wants to merge 11 commits into
loopx-project:mainfrom
jackie-cqz:codex/fix-existing-peer-handoff
Open

jackie-cqz wants to merge 11 commits into
loopx-project:mainfrom
jackie-cqz:codex/fix-existing-peer-handoff

Conversation

@jackie-cqz

@jackie-cqz jackie-cqz commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Goal and delivered boundary

Fixes #5039. Latest main already preserves multiple peer bindings and exact-thread selection. This slice repairs Windows failures that prevented an existing peer from reading and returning its request: full request hashes plus lock/claim suffixes exceed MAX_PATH, and binary input hashing needs supported Win32 flags.

  • Use extended Win32 addresses for the same private Inbox and lock files, preserving full identities, layout, diagnostic IDs, mutual exclusion and release.
  • Read artifacts with supported binary/nonblocking flags, preserving exact CRLF, Ctrl-Z and binary byte digests.
  • Qualify the real local Codex app-server exchange between two existing synthetic peers: ambiguous historical alternatives fail closed, explicit exact-thread selection resumes the chosen peer, adoption/review is independent, and the original requester restores its identity and consumes the exact head/digest result. Retry retains one request and creates no replacement workers.

The collaboration/manager_context owner remains authoritative. Route previews still report not_attempted; a route grants no permission or lease. Changed entrypoints are CLI/private Inbox and shared Windows lock I/O; frontend/Lark use their existing shared owner. This qualifies the local-host slice, not remote-host execution or overall R2/R3 completion.

The bounded refactor moves the unchanged Windows-address function into dependency-light runtime/file_paths.py, updates actual callers and removes the old internal entrypoint. Function AST parity and architecture coverage retain its behavior while strict kernel type checking stays scoped. The live smoke now isolates its reusable typed runtime locator and closes that runtime through the existing shutdown API before removing the Windows workspace.

Qualification

Head: a7beb36ae4ba5f76addd5f8af33f89f4d17c7fae. Merge base: 5e889bdcba9cea101a8775340a12629eb5a2474a, PR base main. All eleven PR commits carry DCO sign-off.

  • Current-head Windows / Python 3.13.5, installed current source: four decisive regressions passed: long lock identity/release, real cross-process exclusion and release while the holder remains alive, long private-store exchange/retry with full IDs, and exact CRLF/Ctrl-Z artifact digest verification. Target paths explicitly exceed MAX_PATH.
  • Current-head real authenticated Codex app-server smoke: passed. Two newly created synthetic peers; exact thread restored; receiver adopted; original requester consumed the returned exact head/digest; one tracked request after restart; zero replacement workers. Cleanup completed after isolated typed-runtime shutdown. No user task was resumed or host credentials/session records copied.
  • Linux Python 3.11 source-installed lock, peer, routing, architecture and shared CI suite at 73958c6dfe7f681905fefb747dda0e239a5fce5b: 113 passed, 4 Windows-only skips. The final two commits change only validation fixture/smoke handling; product code is identical.
  • Current-head exact CI mypy 1.20.2 passed all 19 configured sources. CI Ruff, TypeScript control-plane typecheck, full semantic smoke and three typed routing tests passed.
  • Exact Linux CLI output-budget smoke passed on both base and the production-identical qualified head; no budget changed. Actual wheel/Chat build, isolated installation and current release install/uninstall validator passed for all eight skills.

Two intermediate live runs failed during Windows workspace cleanup. The final run above includes the resource isolation/shutdown repair and passes the whole command. Linux generated-file validation uses LF checkout bytes; no generated contract was changed.

Shared fixture repairs preserve actual queued-Turn claims, isolated runtime roots and the existing read-only Todo delivery contract. Upstream #5463/#5479 own the doctor/skill metadata fixes; duplicate patches were dropped. Public boundary scans are clean; raw host evidence stays private. Hosted CI and maintainer re-review/merge remain required.

@jackie-cqz
jackie-cqz force-pushed the codex/fix-existing-peer-handoff branch 5 times, most recently from 130c87c to 74e7b73 Compare October 2, 2026 13:53

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | GPT-5 | OpenAI

动机

结论:REQUEST_CHANGES,原因是受影响 Windows 路径的独立验收尚未完成,不是已复现的代码 bug。评审完整 head 74e7b73。#5039 要让请求抵达用户指定的既有 peer,并在恢复后返回结果;不能用临时子任务替代。主干已有多候选绑定与精确路由,这份 PR 解决 private Inbox/锁长地址及二进制读取的 Windows 障碍,并增加显式真实宿主资格测试。机制有正价值,但 POSIX 正路和作者声明不能代替受影响平台的可复核执行。

spec_ref = https://github.com/loopx-project/loopx/issues/5039;spec_revision = sha256:54fda1c96674e6ae1d0194b28a566842cd47ede28e014e0d6183d95e0ce89369,是本次读取的原议题正文摘要,另以不可变 base 4fc30f1 核对已有协议与生产 owner。原议题「Decisive acceptance」编号按原样映射:

criterion_id 本 head 的判定
1. 多历史绑定下精确选中可读 task、零替代 worker:既有路由测试通过;新增真实宿主场景已读,未独立执行其付费模型部分,保留资格缺口。
2. 一个历史 task 不可达仍保留其他候选且不自动恢复:既有 route/directory 验证通过;本 PR 不改选择 owner,真实宿主观察未重新认证。
3. ambiguous/revoked/archived/cross-profile 区分且不复制会话:主干 typed route 与负例保留;本地 Windows fs 增量不关闭跨宿主 R6,沿原议题边界 deferred。
4. 既有 peer 收到 exact-head 请求、采纳、返回、重启重试不重复:独立实际 CLI/store 往返及重试通过;Windows 长 private-store 和原生锁正是变更路径,本轮未实机验证,not_met 的是这段观察证据,不是已发现的行为错误。
5. 普通 directory 只读、公私边界:既有 native route/directory 用合成状态验证,生产改动只处理 private 地址和 digest,不把正文、宿主路径或会话复制到公开状态。

改动思路

有界实现是现有 collaboration Inbox 加一层本地文件地址表示,共享锁继续保护同一文件,不创建第二套 request、registry 或决策库。只改 Win32 寻址、不缩短完整 request 身份,这比截断 hash、改变存储布局或关掉锁更容易回滚。输入核验仍限定 receiver worktree、普通文件和四 MiB;Python 保留在本机 fs/transport 边界合理,通用状态与 host locator 权限仍复用既有 owner,无需为这几十行扩大 TS 迁移。

正路从 manager-inbox request 到 receiver read/adopt/report,再到原 requester read/consume/replay;路由预览始终是 locator_only/not_attempted,不是提交成功、采纳或 lease。失败/恢复分别归 route 与 durable request/return owner。新增 live smoke 的模型使用必须显式授权,普通执行不启动宿主;我实跑无开关路径,得到 argparse exit 2 的清楚拒绝,没有开启真实模型。

具体改动

关键代码讲解

  • windows_extended_path(loopx/control_plane/runtime/file_paths.py:9):非 Windows 返回同一 Path;Windows 先绝对化,已扩展地址保持原样,UNC 转成扩展 UNC,其余转成扩展盘地址。它不发现 Goal、不改拓扑,只是地址适配。inbox._root(loopx/control_plane/collaboration/inbox.py:41)把 private manager-context 原根交给它;完整 request 目录与文件名保留。
  • _lock_path / _lock_id / _effect_mutation_lock_path(loopx/file_lock.py:125、163、612):Python kernel 锁和 TS-effect sidecar 都用扩展地址;diagnostic lock ID 先消除 Windows 地址前缀,再按原规则 hash,防止同一文件两个 ID。现有 regular-file、symlink/hardlink、token 所有权与释放规则未放宽。原 pid 仍活着时释放后重获,以及独立进程竞争拒绝,在真实 POSIX 后端通过;不能把它冒充 Win32 成功。
  • input_readiness(loopx/control_plane/collaboration/peers.py:477、526):支持不存在的 O_NONBLOCK、显式 O_BINARY;仍先检查 workspace,再 fstat、有限读取、digest。我的 CRLF 加 Ctrl-Z 合成 artifact 在真实 CLI 收件人得到 available;随后内容变化为 changed、删除为 unavailable,未把内容供应给投影。Windows CRT 读取需受影响平台补验。
  • qualify / main(examples/peer-handoff-live-smoke.py:72、196):只创建该验证拥有的两个 synthetic threads,恢复它们的明确身份,用已有 CLI/read/adopt/report 工具证明 exact-head/digest 返回;不启用 native replacement worker。关闭会话在 finally;--execute-real-host 是成本授权边界。本轮没有执行这个付费入口,不继承作者的 authenticated host 结论。

完整 13 文件、+369/-16 均已阅读:生产 fs/Inbox/readiness、214 行 live qualification、协议和 self-repair 指导,以及 UTF-8、read-only interrupted Turn、Windows update/install 相关测试。安装技能集合和 archive 平台修正属于共享测试期望,不是新的默认 update 机制。没有 tracked 生成物或新的用户配置。共享 dependency-light 地址 seam 是合理的伴随重构,下一次锁变更无需导入 Goal 路由图。

对主干的风险

本轮 125 项 Python 通过、8 项平台条件测试跳过;严格 kernel mypy 的 19 源文件通过,Ruff、diff check 和语义 advisory 通过。另在不可变 base 和该 head 用同一独立 harness、真实 source CLI 与文件后端执行 peer 请求/采纳/报告/消费/重试、binary digest 及跨进程锁竞争。完整归一化结果相同:fixture 0bdf12913f9f4952be7a1706bb9fb4f4df23959991fa9939d3a008895a4a14a6,base/head observation 29b61762ca8597d4f2cae6c7273875ed9ae3fffef8b0d5df02a2184cc27a630f。只归一化临时根与创建/更新/收取/交付等 wall-clock,未去掉状态、身份、digest、回执或拒绝语义。已纠正评审 harness 的 timeout 参数错误;它不是 PR 回归。

P2:Windows 变更路径尚缺本次独立可复核证据。 此处触发条件就是 >260 字符 private-store/sidecar、普通和扩展地址混用、Windows binary artifact。两个新长路径测试在当前主机确实跳过;不能由非 Windows 的 identity、重放或锁通过推出 Win32 的释放、互斥和 exact-byte 正确。请补充当前 exact head 的 Windows 实机两项回归及独立跨进程锁证据,或由有该环境的 reviewer 重跑;真实宿主付费资格仍应在其既有授权下完成。最小修复首先是证据,不要求凭空改实现,也不要求把 CI 当验收。复验命令:uv run --extra test python -m pytest tests/test_file_lock.py::test_long_lock_paths_release_and_keep_one_identity tests/test_peer_collaboration.py::test_peer_exchange_survives_long_private_store_paths -q。恢复和精准重试应保持一个 request、同文件的一个锁身份、持有者活着仍能正确释放;不得缩短身份或扩大锁权限。

语义与 CI 对齐

受影响的是既有文件地址、输入核验及锁的语义,不是新增 actor 协议或通用工作义务。状态仍用既有 typed readiness/route/return vocabulary;没有 substring denylist、benchmark 专用 quota 文案,也没把机器拒绝叫建议。新增指导讲精确资格环境,不激活 peer/model 操作。当前缺口归 observable_semantics/真实平台 validation;没有查询、轮询或等待 GitHub CI,也没有调预算或权限来补绿。

我的整体评价

方向和体量适当,没有要求抽象框架或平行 Python 决策源;普通 POSIX 使用和持续 request/return 重试已证明保持,不必重复重构邻域。long_horizon 的已有持久往返保留,Windows 修复的持续使用仍 not_yet_proven;user_experience 不增加确认步骤,Windows 失败恢复效果也需实机观察。故保留 REQUEST_CHANGES 作为明确验收 hold,不声称发现了代码缺陷,不关闭 #5039/R2/R3 整体验收。最有价值的下一步是补受影响平台结果,按原 owner、原身份重验,不是另开有名无实的后续能力。没有合并、会话复制、付费调用或主动升级宿主。

English verdict: REQUEST_CHANGES - 74e7b73: evidence hold, not a reproduced code defect. 125 Python tests and 19-source mypy passed; immutable base/head real CLI/store and POSIX lock parity passed. The changed Windows long-path/binary paths remain independently unqualified; eight platform cases skipped. No merge.

Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
(cherry picked from commit aa8a44fd01dfbc97c276a7a1d4e6b82539167c8c)
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
@jackie-cqz
jackie-cqz force-pushed the codex/fix-existing-peer-handoff branch from 74e7b73 to a7beb36 Compare October 2, 2026 18:40
@jackie-cqz

Copy link
Copy Markdown
Contributor Author

Rebased onto 5e889bdcba9cea101a8775340a12629eb5a2474a; current head is a7beb36ae4ba5f76addd5f8af33f89f4d17c7fae.

The Windows evidence hold now has current-head qualification in a source-installed Python 3.13.5 environment:

  1. Long ordinary/extended addresses preserve one lock identity and release.
  2. A separate live holder excludes acquisition through the alternate address; after release, acquisition succeeds while that holder process is still alive.
  3. Long private-store exchange preserves full request IDs/digests and idempotent retry.
  4. Binary artifacts containing CRLF, Ctrl-Z, NUL and non-ASCII bytes retain exact SHA-256 through receiver readiness.

All four passed. The actual Codex app-server smoke also passed on this head: two new synthetic peers, exact existing-thread resume, independent receiver adoption/review, exact checkout head/digest returned and consumed by the original requester after restart, one tracked request, zero replacement workers. The smoke isolates and shuts down its own reusable typed runtime before Windows cleanup; two earlier cleanup failures are recorded as repaired in the PR body.

The production-identical Linux suite passed 113 tests (four Windows-only skips). Current-head exact CI mypy/Ruff, TypeScript typecheck, semantic smoke and typed routing tests passed. Paired base/head CLI budget and actual-wheel install/uninstall validation passed without changing ceilings or contracts.

This remains the local-host collaboration qualification slice; route previews confer no execution authority and overall R2/R3 is not declared complete. Hosted checks are rerunning after push, and the Windows evidence is ready for maintainer re-review.

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | GPT-5 | OpenAI

动机

REQUEST_CHANGES 是受影响平台的证据 hold,不是声称发现新代码缺陷。本次完整 head a7beb36ae4ba5f76addd5f8af33f89f4d17c7fae。作者已在当前 head 说明报告四项 Windows 成功和真实宿主成功;这与旧 head 的“尚未运行”不同。下面明确区分作者声明、当前源代码和我实际执行的证据,不把旧结论机械搬到新 head。

spec_ref = https://github.com/loopx-project/loopx/issues/5039;spec_revision = sha256:54fda1c96674e6ae1d0194b28a566842cd47ede28e014e0d6183d95e0ce89369,为本次原议题正文摘要。另核对不可变 base 5e889bd 的既有 peer 协议。按原 Decisive acceptance 的 criterion_id:1. 精确既有 task、零 replacement worker,现有路由检查通过;2. 单个历史 task 不可达不否定其他候选,既有 typed route/directory 负例通过;3. ambiguous/revoked/archived/cross-profile 的 owner 未改,跨宿主授权沿原议题边界 deferred;4. 接收、采纳、返回、重启不重复,实际本地 CLI/store 往返通过,但本 PR 改动的 Windows 长地址/CRT 读取尚缺我可复核的执行来源;5. ordinary directory 只读和公私分离保留,目录不是 lease 或执行授权。

本切片修复现有 peer 往返的 Windows I/O 障碍,而非再造 resolver 或宣布 R2/R3 全部完成。它有独立价值;唯一阻塞是此受影响平台的验证边界,不要求追加无关产品能力。

改动思路

已有 binding、collaboration Inbox 和 request/return owner 已能表达精确 peer。保持完整 request ID 和现有目录,只给 Win32 文件地址加 extended 表示,比缩短 hash、关闭锁或另建队列更小且可回滚。binary digest 沿原四 MiB 有限读取、workspace/regular-file 核验路径处理 supported flags,不放宽输入权限。

正路仍是 request → receiver read/adopt/report → 原 requester read/consume → 同身份 replay;返回、采纳和同意执行是不同事实。失败由原 route/Inbox/锁 owner 恢复。live smoke 明确要求成本开关,只拥有两个新 synthetic threads;它不恢复用户 task,不启用 replacement worker,不把 locator_only/not_attempted 预览称为实际送达。自动加载指导解释平台资格,不自动启用 peer/model 操作。Python 留在本机文件和 transport 边界合理,通用状态继续用既有 typed owner,不需要平行 TS/Python 决策库。

具体改动

关键代码讲解

  • windows_extended_path,loopx/control_plane/runtime/file_paths.py:9:非 Windows 原样返回;Windows 绝对化、保留已有 extended 地址并转换 UNC/盘地址。inbox._root:42 用同一 private manager-context 根,不缩短 request ID。依赖轻的 runtime seam 不需要导入 Goal 拓扑。
  • _lock_path / _lock_id / _effect_mutation_lock_path,loopx/file_lock.py:125、163、612:kernel 和跨 runtime sidecar 都使用同一扩展寻址;diagnostic ID 消除地址前缀后仍按原身份计算。token、真实文件身份、互斥和释放规则未放宽;新独立进程测试还要求 holder 释放后仍活着时可以重获。
  • input_readiness,loopx/control_plane/collaboration/peers.py:509:使用可用的 NONBLOCK 和 BINARY flags,避免 Win32 text 模式改动 CRLF/Ctrl-Z 摘要;仍核对所属 workspace、文件类型、大小和精确字节 SHA-256,内容不进入投影。
  • qualify / main,examples/peer-handoff-live-smoke.py:31、199:资格场景通过既有 host adapter 和明确工具执行恢复/采纳/返回/消费;finally 关闭其拥有的 session。当前 main 给自己的 typed runtime 独立 temporary locator,再经现有 shutdown API 停止后清理目录,恢复环境;_runtime_dir 确实按 tempfile 根寻址,不应停止共享用户 runtime。无 --execute-real-host 实跑 exit 2,未启动宿主或模型。

完整 14 文件、+451/-15 均已阅读:四个生产 fs/readiness/锁源、238 行显式 live qualification、peer 协议和 self-repair 指导、四项 Windows 回归,以及 Chat/replan/技能 metadata/parity 的 fixture 修正。queued Turn claim、隔离根、read-only Todo 和 UTF-8 期望没有变成新权限或 update 行为。frontend/Lark 不新增操作,继续用既有 shared owner;这里不是一个应当另加表单的配置能力。临时 root/宿主记录/原始日志没有进入 tracked diff。

对主干的风险

本轮实际源 CLI 和文件后端,在不可变 base 与当前 head 用相同独立 harness 完成 request/read/adopt/report/return-consume/replay、binary artifact available→changed→unavailable,以及真实跨进程锁竞争和释放。归一化整个输出一致:fixture 0bdf12913f9f4952be7a1706bb9fb4f4df23959991fa9939d3a008895a4a14a6,base/head observation 同为 29b61762ca8597d4f2cae6c7273875ed9ae3fffef8b0d5df02a2184cc27a630f。只排除临时 root 和各自交付/读写 wall-clock,不删除状态、身份、digest、回执或拒绝细节。此证据是实际 POSIX owner,不是 Win32 或 authenticated model。

当前 native route/directory/锁/peer/architecture 五文件验证 81 passed、4 skipped,四项 skipped 正是 Windows 专属;kernel mypy 19 源文件通过,CI 范围 Ruff 和语义 advisory 通过。初次测试命令写了两个不存在的路径,已改为实际 native 文件重跑;那是评审命令错误,不是 PR 回归。没有查询或等待远端 CI,也没有因 CI 颜色增加成本开关。

P2 验收 hold:Windows 执行结果目前只有作者文字声明,未取得可复核的当前来源与结果记录。 新跨进程和 binary 测试直接覆盖旧 hold 的必要条件,方向正确;然而本机四项均跳过,POSIX 的 exact-byte 和同文件锁不证明 Win32 的扩展寻址、互斥与 CRT 读取。我没有依据否定作者报告,也不能把声明升级为我已验证的运行。最小下一步是提供删敏的当前 head Windows 资格结果(source revision/安装来源、OS/Python、四项精确用例结果、完整命令退出状态),或由可运行 Windows 的 reviewer 复跑并读回。无需改权限、缩短 ID、再写新抽象或重复付费模型场景;原始 session/transcript/路径和凭据不应公开。

复验现有四例:uv run --extra test python -m pytest tests/test_file_lock.py::test_long_lock_paths_release_and_keep_one_identity tests/test_file_lock.py::test_long_lock_paths_exclude_other_process_and_release_while_holder_alive tests/test_peer_collaboration.py::test_peer_exchange_survives_long_private_store_paths tests/test_peer_collaboration.py::test_peer_binary_artifact_preserves_crlf_and_ctrl_z_digest -q。要求四例确实运行而非 skipped;其中第二例明确 >260 字符、alternate address 不能绕锁、holder 活着时释放可重获。该缺口归验证证据,不虚构一个代码 bug。

语义与 CI 对齐

复用既有 readiness/route/return 和 lock vocabularies;新地址函数是 provider-local 寻址,不创造 actor 生命周期或 quota 义务。没有通用控制面 substring denylist、domain-specific 强制推进文案或把 machine rejection 叫 guidance。Win32 从可能失败/错误字节读取改为同身份/精确字节,是明确披露的兼容性修复,不改变普通 POSIX 默认。live qualification 的拒绝开关已实跑,加载指导不是执行权限。共享锁调用者使 Win32 验收必须包含真实互斥/释放;不能仅凭 helper 字符串或更严格检查宣称语义闭合。

我的整体评价

体量、ownership 和未来重构适当:地址表示集中到最近的 dependency-light fs seam,原请求/锁生命周期仍同源;不需要另一个通用 abstraction,兼容同一持久文件身份必要。POSIX long_horizon 和 user_experience 已通过实际持久往返/恢复保留,没有增加用户选择或确认步骤;Windows 持续使用与失败恢复为 not_yet_proven。故 REQUEST_CHANGES 保留为明确证据 hold,认可作者新增的当前资格报告但不伪称独立实机验证。真实模型部分未执行,本机不假装具备 Windows。没有删除或撤销未核验评审、合并、复制 session、启动付费任务或关闭 #5039 整体验收。

English verdict: REQUEST_CHANGES - a7beb36: no reproduced code defect; affected-platform evidence hold. The author reports four current-head Windows passes, but independently inspectable execution provenance/results remain unavailable here. Immutable base/head real CLI/store and POSIX lock parity passed; 81 native tests passed, 4 Windows tests skipped, mypy 19 sources passed. No paid host call, CI polling or merge.

@mergify

mergify Bot commented Oct 2, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @jackie-cqz.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 2, 2026

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

needs-rebase Mergify: the pull request has merge conflicts with its base branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Resolve existing peer Agent delivery routes before substituting host sub-agents

2 participants