Repository navigation
fix(ci): select one Node application and qualify current Host contracts - #6322
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.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
使用 PowerShell 执行原生调度后续命令的用户会遇到这个问题。PATH 中有两个 Node 应用时,旧 launcher 把两个 Source 路径合成一个命令,尚未进入调度器便失败;只有一个 Node 的正常路径成功。 当前版本按 PATH 顺序选择第一个 Node 应用,真实双候选调用进入原生调度器并读回成功;Host ACK 仍要求当前宿主配置一致。 这是 launcher 修复及现行合同测试维护;不调整调度权限、CI 门禁、runner 或正式安装状态,不代表全量 CI 成本已降低。 物理 Windows、当前 hosted CI 和安装采用尚未验证;另一个 Todo-less settlement 修复仍属于既有 #6285,不能由本 PR 的通过记录代替。
改动思路
按修改前 docs/development/testing-and-quality.md 的冻结 2e3ab4c4a5665378b9e422f9483a820066fca40b 核验,逐项采用 Quality Layers / 质量分层, Pull-Request Baseline / PR 基线 的约束;另读拥有该边界的源码及总体路线,改动后的规格不能自证正确。
运行时只需把 Application 集合收窄到首项;三个现行合同测试复用真实 Host fixture、选定解释器和既有完整清除选项,避免另建规则或仅刷新 expected。 当前 PR 可独立交付双 Node 的真实 launcher 修复和 Host/配置继承的合同回归;完整 CI critical path、依赖采用及正式安装分别由原 owner 验证。
近邻重构判断:Applied the bounded transport simplification already in the diff; existing complete-setting clear helper and Host fixture replace partial/manual setup. No additional architecture is needed.
具体改动
审查完整 head bce869f1b1a9d0ebab278180c6e700225d6945df,5files+76/-19; production1linechanged, remaining four test files repair the affected existing qualification.
first Node Application(scripts/loopx.ps1:71):Select first Application before native TS dispatch; preserve all existing gates.single/multiple actual launchers(tests/test_scheduler_native_launcher.py:174):Test first valid and later invalid Node application with Python unavailable.current Host ACK/failure(tests/control_plane/test_scheduler_compat_state_key.py:125):Use real Host manifest and selected interpreter for ACK; missing/mismatch preserve bytes; failure stays native.complete cadence clear/inheritance(tests/capabilities/test_machine_configuration_goal_defaults.py:369):Preview no-write, apply full clear, inspect inherited machine configuration and History.v2 clear option(tests/test_chat_goal_configuration_api.py:326):Retain existing owner-provided clear_execution_stride_strategy option.
Own actual PowerShell7.6.6: B single succeeds/multiple fails before dispatch; H both succeed. All87 focused current tests pass with real Unix/PowerShell, canonical File/SQLite Host ACK and complete configuration/history readback.
对主干的风险
Missing/mismatched Host manifest rejects ACK with rrule_mismatch and identical canonical/legacy/coexisting scheduler bytes; failure hints still enter native route with Python unavailable. A later invalid executable candidate never runs.
当前独立 premerge 的4direct通过;14selected中13通过,1项 goal_frontier metric 仍失败并被原生标记 advisory_inherited_failure。同一冻结基线同命令失败、同源码 blob 未变,未改预算或删断言;这是现有合并资格缺口,不归因为此PR。首次运行13个PowerShell用例因PATH不可用跳过,补入既有真实PowerShell7.6.6后同完整87例零skip通过。没有把当前 hosted CI、物理Windows或作者的最低Python版本结果继承为本次证据。
Intentional runtime delta is first Application selection; full v2 clear and Host requirements were already implemented in unchanged owners. No default scheduling/quota/CI change. Actual macOS PowerShell/native TS and real File/SQLite state; not physical Windows or hosted CI, no paid model/live Goal effects. CI按 wait_for_ci=false未查询、轮询或等待。既有前端/Lark/配置入口没有新增页面;这份源码评审不代表安装采用或模型遵守。
我的整体评价
APPROVE。真实运行时增量和现行合同维护有独立证据,未发现当前代码阻塞。当前 PR 可独立交付双 Node 的真实 launcher 修复和 Host/配置继承的合同回归;完整 CI critical path、依赖采用及正式安装分别由原 owner 验证。 现有预算 advisory、依赖与合并权限继续分开;没有安装、合并或撤销其他评审。
English verdict: APPROVE — exact head bce869f1b1a9d0ebab278180c6e700225d6945df. The real dual-Node PowerShell regression is fixed;87 actual focused cases and the frozen-base counterexample qualify this bounded transport change. The unchanged architecture advisory, hosted/physical-Windows, dependency and installed/merge qualifications remain separate. This COMMENTED author-account fallback grants no merge authority.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
PowerShell native scheduler follow-ups fail before dispatch when PATH contains two Node applications:
Get-Commandreturns multiple command objects, so invoking their combinedSourcevalues produces an invalid command. Select the first application in PATH order and extend the existing real launcher test with a later, non-executable candidate. The original hosted failure and an independent duplicate-Node reproduction establish the cause; restoring the old lookup makes the new case fail.This also repairs two current-contract qualification fixtures from the same full Python CI failure group. Compatibility ACKs now use the current Host reader and selected Python interpreter; missing/mismatched Host manifests reject without changing canonical/legacy scheduler bytes. Failure hints retain the exact native route with Python unavailable. Cadence clearing now includes the existing v2 stride option and is checked through real configuration preview/apply, machine inheritance inspection and history readback.
The remaining Todo-less settlement fixture belongs to #6285 at
277dab815eb8dba20ff1ca6256009589a1675a85. Its exact public patch passes all three affected chains with this repair on current main, including missing/mismatched Host negatives. The temporary integration overlay was removed; this PR does not duplicate that change. #5787 changes a different Windows Python process adapter and does not fix PowerShell Node selection.Written by: model_agent — OpenAI Codex (GPT-6 family).
Validation at
bce869f1b1a9d0ebab278180c6e700225d6945df, base2e3ab4c4a5665378b9e422f9483a820066fca40b:goal_frontiermetric debt; the failed observation is retained without an independent baseline waiver. Strict change-quality remains held for current-head hosted CI, the unadopted settlement dependency and that retained advisory. Formal review entry is separate from these merge holds.Owner/refactor pass: reuse the existing PowerShell transport, Host-manifest fixture, configuration owner and typed scheduler. One direct first-application selection replaces collection invocation; no new framework, decision owner or vocabulary. Normal single-Node behavior, Host read/outer-controller guards, receipt authority, all test partitions, workers, deadlines, coverage/JUnit and required gates remain unchanged. Frontend/Lark changes: none; CLI/provider and existing configuration readback were exercised. This source proposal makes no installed-adoption, full-CI latency reduction or release-capacity claim. Maintainer merge authorization remains required.