Repository navigation
Adopt the native account observer with managed Core activation - #8403
Conversation
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
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · GPT-6 · OpenAI · self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
Core 报告激活成功时,原生账号观察器仍可能加载旧构建。影响同时使用托管 Chat 和同账号根独立观察器的安装。同样的三个原作业和同一个候选 Core,基线只改两个作业,最终版本交接三个。原观察器锁的归属、两个构建摘要和 Core 就绪均可读回。账号选择策略、relay 所有权和消息执行职责仍归原 owner。生产账号切换、原消息实际回传和真实回复时延仍需独立验收。
基线的 packages/loopx-codex-provider-routing/NATIVE.md 在 c44eb156d947198b9b5e36e1f9444afbbf9b205b 规定了已安装生命周期。NATIVE-HANDOFF-1 使用原作业和同一账号根。NATIVE-HANDOFF-2 保护在途工作并恢复原路由。NATIVE-HANDOFF-3 复用原 relay 排空。NATIVE-HANDOFF-4 另验原消息送达。
改动思路 / Approach
现有激活日志和两个原生锁能保护切换与回滚。范围限于同账号根的已注册观察器、托管 Core 激活与独立的 relay 换代。一次性改 LaunchAgent 的解释器会留下后续更新和失败恢复的缺口。此次沿用 launchd、Chat 入站锁、账号锁和 relay 状态锁,只把匹配账号目录且原进程持锁的观察器纳入原有交接流程。
具体改动 / Changes
审查提交 7efecf65e65bc94c6be15d70a2b334f3c33d9afc。 _retarget_observer 复用原参数并绑定同一 Core 和解释器。 _alignment_guard 在任何信号前检查 Chat 在途工作和账号事务。 _verify_observer 以已加载的作业 PID、持锁者和新心跳核对两种实际加载的构建摘要,避免同样的观察器代码掩盖不同 relay。0.15.5 把这个摘要放进已有心跳,不开新的服务入口。启动失败和中断后由原激活日志恢复作业路由。绑定建立后,缺少固定 provider 的后续更新会在重启前延期。
对主干的风险 / Risks
风险集中在可选 provider 与旧启动路由的兼容性。已用真实隔离 launchd 对照基线和最终安装包,覆盖忙时延期、失败回滚、不同账号目录、同构建重入及后续未绑定更新。两路 relay 换代沿用原独立入口。195 项 Core 测试通过、1 个默认测试中的可选宿主样例跳过,30 项 provider 测试及标准预合并检查通过。当前配置采用本地验证。
我的整体评价 / Verdict
交接决策和恢复由既有管理器完成,provider 报告实际加载的 transport。改动封住了已复现的构建漂移,并在实际采用前保留了明确的延期和回滚路径。上线之后仍需原服务给出真实送达与耗时证据。
English verdict: APPROVE — installed managed handoff and recovery are verified; production adoption and original-message delivery remain separate.
…tive-provider-observer-handoff-20261109 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 · OpenAI · self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
Core 报告激活成功时,原生账号观察器仍可能加载旧构建。影响同时使用托管 Chat 和同账号根独立观察器的安装。同样的三个原作业和同一个候选 Core,基线只改两个作业,最终版本交接三个。原观察器锁的归属、两个构建摘要和 Core 就绪均可读回。账号选择策略、relay 所有权和消息执行职责仍归原 owner。生产账号切换、原消息实际回传和真实回复时延仍需独立验收。
基线的 packages/loopx-codex-provider-routing/NATIVE.md 在 f4c5d6d70c4c88ee4dae705c0ea7b5a8ea87e5ff 规定了已安装生命周期。NATIVE-HANDOFF-1 使用原作业和同一账号根。NATIVE-HANDOFF-2 保护在途工作并恢复原路由。NATIVE-HANDOFF-3 复用原 relay 排空。NATIVE-HANDOFF-4 另验原消息送达。
改动思路 / Approach
现有激活日志和两个原生锁能保护切换与回滚。范围限于同账号根的已注册观察器、托管 Core 激活与独立的 relay 换代。一次性改 LaunchAgent 的解释器会留下后续更新和失败恢复的缺口。此次沿用 launchd、Chat 入站锁、账号锁和 relay 状态锁,只把匹配账号目录且原进程持锁的观察器纳入原有交接流程。
具体改动 / Changes
审查提交 7c85fadd56a588f9126479ad45e56ab77a3bae97。 _retarget_observer 复用原参数并绑定同一 Core 和解释器。 _alignment_guard 在任何信号前检查 Chat 在途工作和账号事务。 _verify_observer 以已加载的作业 PID、持锁者和新心跳核对两种实际加载的构建摘要,避免同样的观察器代码掩盖不同 relay。0.15.5 把这个摘要放进已有心跳,不开新的服务入口。启动失败和中断后由原激活日志恢复作业路由。绑定建立后,缺少固定 provider 的后续更新会在重启前延期。
对主干的风险 / Risks
风险集中在可选 provider 与旧启动路由的兼容性。已用真实隔离 launchd 对照基线和最终安装包,覆盖忙时延期、失败回滚、不同账号目录、同构建重入及后续未绑定更新。两路 relay 换代沿用原独立入口。265 项 Core 测试通过、1 个默认测试中的可选宿主样例跳过,30 项 provider 测试及标准预合并检查通过。主干同步前后 PR diff 逐字节相同。同步后额外验证了管家续接路径,63 项 TypeScript 会话绑定测试通过。当前配置采用本地验证。
我的整体评价 / Verdict
交接决策和恢复由既有管理器完成,provider 报告实际加载的 transport。改动封住了已复现的构建漂移,并在实际采用前保留了明确的延期和回滚路径。上线之后仍需原服务给出真实送达与耗时证据。
English verdict: APPROVE — installed managed handoff and recovery are verified; production adoption and original-message delivery remain separate.
Managed Core activation can leave a standalone native Codex account observer on an older interpreter. During API fallback, that observer can replace the relay with the build it loaded.
When the target Core uses a provider installed in its own virtual environment, activation now includes the supported standalone watcher on Chat's account root. The existing handoff journal and ingress guard cover all three jobs. Account and relay locks fence the handoff. The watcher starts first and reports both its observer and relay digests, which activation verifies along with lock ownership and Core readiness. A failed or interrupted handoff restores the original job routes. The same build can be activated again without restarting the jobs. Later Core updates that would drop the adopted provider defer before restarting any job.
Validation