Repository navigation
Honor the explicit runtime during host activation - #8771
loopx-agent wants to merge 1 commit into
Conversation
Signed-off-by: LoopX Agent <[email protected]>
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)
评审提交 4b3d7215b4da008c45afc5dc87e0358ef2ea7270,对照目标基线 4604f938b612c5da0d8a3485ce563bea922fc14e。
[P2] 外部 LOOPX_REGISTRY 把项目相对运行目录改指到另一套状态。 显式传入 --project 和相对 --runtime-root,省略 --registry 参数,同时保留指向另一项目的 LOOPX_REGISTRY。 候选的两个入口返回成功,项目连接仍列出正确的源注册表,但别名查找和激活命令都指向另一项目的运行目录。agent-onboard 还读取那里的机器配置并启用了本项目未启用的 change-quality skill 指导。 触发分支
动机 / Motivation
从 Git worktree 接入 LoopX 或为现有项目生成 Antigravity 激活命令的操作者。 机器上两处默认运行目录都已有状态。调用方指定 worktree 和相对 --runtime-root,shell 里还保留了另一项目的 LOOPX_REGISTRY。 基线的两个入口都在默认目录冲突处退出,连显式提供运行目录的调用也无法继续。 显式注册表、绝对运行目录和没有外部变量的项目相对路径均沿正确运行目录生成可执行的 heartbeat 命令。省略运行目录时,两处默认状态冲突仍明确拒绝。 本轮使用隔离 macOS 源码入口、真实 Git worktree 和本地注册表。原样执行了生成的 heartbeat 命令。实际 Antigravity 定时器和原生 Windows 待验。
改动思路 / Approach
CLI 入口确定运行目录的锚点,项目别名和机器配置各读该次选定的运行目录,宿主命令直接携带同一个已解析路径。 在 CLI 边界一次解析项目、显式注册表和运行目录。按本 PR 对 --project 路径的承诺处理环境默认值,或者对冲突组合给出明确错误,并确保别名、机器配置和生成命令消费同一权威路径。
具体改动 / Changes
关键代码讲解
- 两个 CLI 入口的共同分派层先把相对值变成绝对路径。只要环境中有 LOOPX_REGISTRY,代码就取该注册表的父项目作锚点。显式 --project 仍决定连接目标,于是包里同时出现正确的项目和错误的运行目录。共同 CLI 分派 相对路径解析
- 选中的运行目录实际参与全局注册表别名查找,与包里列出的项目源注册表是两次读取。两个生成的 Antigravity heartbeat 命令都沿用了外部运行目录;隔离运行返回成功。使用显式注册表或绝对路径的对照不会走进外部目录。别名查找与源注册表 宿主命令组装
- agent-onboard 也从选中的运行目录读取机器配置。外部目录启用 change-quality 而项目目录禁用,只有误路由用例建议该项目 skill。命令预览和后续真正安装由各自的入口处理。读取本机配置 生成激活指令
explicit-runtime-selection 和 implicit-conflict-refusal 在对照中通过。relative-project-authority 对环境里留有外部注册表的调用未满足。全量改动为 5 个文件,+148/−15。路径处理可以继续复用已有 CLI 解析器,项目别名和宿主生成器只需消费已确定的路径。默认路径冲突和全局选择约定
对主干的风险 / Risks
误选发生在成功回包之前,同一个结果里混入两个运行域。操作者可能把外部机器配置和激活命令用于本项目。原样运行验证了 heartbeat 入口和路径参数,真实调度采用仍待验。
语义与 CI 对齐
标准预合并 6 项全过。相邻测试 47 通过、1 跳过。隔离夹具中,两条入口都通过实际命令验证。外部变量只在相对路径场景改变选址,显式注册表和绝对路径均恢复预期。两套默认目录、三套路由及其配置在探针前后 10 个检查文件字节一致。托管 CI 未查询。
我的整体评价 / Verdict
请求修改。在带空格的真实 worktree 加两处有状态的默认目录,用另一项目的注册表和不同机器配置重放两个入口。核对别名来源、生成命令中的运行目录和实际 skill 指导。
English verdict: REQUEST_CHANGES at 4b3d721. An ambient foreign LOOPX_REGISTRY redirects a project-relative runtime override in both entrypoints. The emitted heartbeat inherits that root, and onboarding projects the foreign machine policy.
| return handle_loopx_bootstrap_command_pack_command( | ||
| args, print_payload, runtime_root_arg=args.runtime_root, | ||
| runtime_root_arg = args.runtime_root | ||
| if runtime_root_arg and (not allow_missing_registry or os.environ.get("LOOPX_REGISTRY")): |
There was a problem hiding this comment.
[P2] 外部 LOOPX_REGISTRY 把项目相对运行目录改指到另一套状态。 显式传入 --project 和相对 --runtime-root,省略 --registry 参数,同时保留指向另一项目的 LOOPX_REGISTRY。 候选的两个入口返回成功,项目连接仍列出正确的源注册表,但别名查找和激活命令都指向另一项目的运行目录。agent-onboard 还读取那里的机器配置并启用了本项目未启用的 change-quality skill 指导。 在 CLI 边界一次解析项目、显式注册表和运行目录。按本 PR 对 --project 路径的承诺处理环境默认值,或者对冲突组合给出明确错误,并确保别名、机器配置和生成命令消费同一权威路径。 在带空格的真实 worktree 加两处有状态的默认目录,用另一项目的注册表和不同机器配置重放两个入口。核对别名来源、生成命令中的运行目录和实际 skill 指导。
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. 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 HEADFor a same-repository clone whose Keep the DCO |
What changed
When both the current and legacy LoopX runtime roots contain state,
bootstrap-command-packandagent-onboardcan fail during project lookup even if the caller passed--runtime-root. The project alias lookup now uses the selected runtime's global registry. Onboarding uses that same runtime for machine configuration and carries it into the generated activation, quota and retry commands.A relative override uses the explicitly selected registry's project as its base. When the caller supplies only
--project, the requested project is the base. With no override, the existing default route selection still refuses ambiguous state.Validation
loopx checkandgit diff --check.The existing CLI and host activation UI keep their current controls and generated instructions. This change fixes the route behind those commands. The Antigravity sidecar's project registry is handled separately in #8768.
Written by a Codex agent.