Repository navigation
Conversation
Signed-off-by: BigDataDZ <76271875+BigDataDZ@users.noreply.github.com>
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。发现一个 [P2] 所选宿主被后续验证和卸载绕过 的回归。当前提交:fd7511cae3247a4638311b21b500e7f4bb3662c0。
动机
使用指定 DSH 宿主从源码安装插件的用户,以及为支持的宿主版本做安装资格验证的维护者,需要可信的安装、版本读回和卸载结果。
原安装器把多行 JavaScript 交给 DSH 执行,作者报告它在 Windows 注册成功后仍无法完成版本读回;本次将校验改成单行,但新增测试随后绕开了 DSH_BIN 指定的宿主。
独立真实 DSH 对照中,两版普通安装均通过;让所选宿主拒绝卸载时,基线冒烟失败,当前提交却报告通过,且所选宿主完全没有收到卸载调用。
当前范围是源码安装器和已有安装资格测试;修复应保留同一宿主的校验链,既有权限、激活条件及发布边界继续有效。
改动思路
单行校验继续使用现有安装器和 DSH 执行接口,保持包名与版本的严格条件;为 Windows 直接调用已发布 JS 入口的方向合理,但入口必须仍属于已经选定的宿主。
保留此次可逆的命令格式修复和已有冒烟;修复 DSH_BIN 与后续 JS 入口的绑定,使版本检查、读回和卸载始终针对同一个已选安装。
安装器的权威输入仍是既有包名、版本、支持范围和真实 profile;SHA 输出只是诊断。沿用 registry smoke 的 JS 调用模式可以解决 Windows 不能直接启动 shell shim 的问题,但那个模式没有本测试已有的 DSH_BIN 覆盖契约,不能把它独立的默认选择一起搬过来。这里需要修的是已知宿主的传递,不需要第二个选择流程或新的状态 owner。
具体改动
完整 diff 是 3 文件、+47/-13:install.sh 将同一个严格版本校验压成一行;现有安装冒烟增加正确/过期版本、profile 不变和直接 JS 调用;Ubuntu/Windows 分发 job 各复用已有 smoke:install 入口。没有更改依赖或插件激活逻辑。
先读取改动前的 packages/dsh-loopx-plugin/README.md,spec_revision=4f6e20a13b090318e14efeb20b91790e33fe694b。这是实际 merge base;其相关 README 与最初目标分支版本逐字节相同。对无编号条款使用对应内容索引:
| 原合同内容索引 | 当前提交的处置 |
|---|---|
| Install / source entry | implemented:实际冻结安装、构建、打包和 profile 注册通过。 |
| Installation and upgrade recovery / version readback | implemented:单行表达式保持包名/版本拒绝,当前真实 DSH 正确和过期版本检查通过;Windows 实机结果保留为作者报告。 |
| Installation and upgrade recovery / selected host | not_met:后半程切换到包内 CLI,绕过已选宿主的失败。 |
关键代码讲解
install.sh的版本读回 保持manifest.name和manifest.version严格比较,仍通过dsh_bin执行;格式修复本身不应弱化拒绝条件。dshScript选择 只看额外的DSH_CLI_JS或包内require.resolve,没有沿用已解析的DSH_BIN。runDsh被后续正确/过期版本、profile 读回和卸载调用使用。因此安装和资格验证可以落到两套 CLI;DSH_BIN=<某个支持版本> pnpm smoke:install不再验证完整的那个版本。
对主干的风险
[P2] 反例已通过真实公开入口验证。 选择器包装器将命令转发给真实 DSH 0.2.0-rc.2,并记录实际参数。两版普通源码安装都成功;仅让这个已选宿主对 plugin --profile web remove dsh-loopx-plugin 返回 37 时,结果如下。profile、包安装和其余 DSH 操作均真实执行;注入边界只有所选宿主的卸载失败。
| 同一受控输入 | 基线 | 当前提交 |
|---|---|---|
| 所选宿主收到卸载 | 是 | 否 |
| 所选宿主拒绝卸载后,完整冒烟退出 | 1,正确失败 | 0,错误地报告通过 |
让 runDsh 的所有操作继续服从 DSH_BIN;若需要 JS 入口,从所选安装解析并校验同一宿主,或明确拒绝不匹配。已知宿主路径不应变成需要用户再提供第二套选择信息。
修复后保留默认安装、严格版本拒绝、profile 不变、不兼容宿主在副作用前拒绝和真实移除,再加入上述“所选宿主失败必须使整体失败”的反例。不要只验证包内默认宿主。实际执行入口就是现有 DSH_BIN=<selected-supported-host> pnpm smoke:install;无需新 runner 或额外用户确认。
语义与 CI 对齐
这是既有可执行文件选择合同的退化,没有新建共享词汇或权限协议。600 秒为公开说明的测试子进程上限,分发 job 仍为 20 分钟;本机缓存热环境样本不能复核作者的冷安装测量或宣称加速。相关主干的 pnpm 冻结配置与 Node 下限修复是独立相邻改动,不应转成这项 PR 的额外实现范围。
本地标准 premerge 4 项直接检查通过;13 项选中检查执行,12 通过,根目录 examples/install-local-smoke.py 在原 120 秒上限无输出超时。其中 DSH 的 quality/package/runtime 检查全部通过。该根目录安装检查与这里的 DSH 安装器不同;相同 120 秒预算下,基线与当前提交都停在首轮 install-smoke-initial;检查脚本和根安装器的 SHA 均相同。该对照及最初无输出超时全部保留,内部等待原因仍未定,不把它归为本 PR 引入,也不通过放宽上限抹掉失败。未查询或等待远端 CI,Windows 实机结果不冒领为本次独立验证。
我的整体评价
生产端的一行格式修复与复用现有冒烟的范围合理,所需修复也很小;没有理由追加框架、迁移或服务。但整体资格结论被已复现的宿主选择回归阻断,测试绿色不能覆盖这个反例。现有 Goal/Driver 的长期续做边界保持;安装资格操作的用户体验则退化为“指定一个宿主、实际验证另一个宿主”。先恢复一个已知宿主贯穿安装、验证和移除,再按同样反例复审即可。
English verdict: REQUEST_CHANGES — fd7511cae3247a4638311b21b500e7f4bb3662c0. Preserve DSH_BIN for the complete qualification: the new local-JS fallback bypasses a selected-host removal failure and falsely reports success. Real base/head source installs and the controlled removal counterexample were executed; the separate root installer timeout and native-Windows limits remain disclosed.
| const require = createRequire(import.meta.url) | ||
| // Windows cannot spawn the .bin shell shim directly. Match the registry smoke | ||
| // for direct DSH operations; the shipped installer still runs through Bash. | ||
| const dshScript = process.env.DSH_CLI_JS |
There was a problem hiding this comment.
[P2] Keep the selected DSH host for all qualification operations
When DSH_BIN selects another supported installation, install.sh uses it but runDsh() now invokes the package-local lib/bin.js unless a second DSH_CLI_JS is supplied. The documented DSH_BIN=... pnpm smoke:install path therefore no longer checks that selected CLI's later readback, stale-version rejection or removal. A forwarding wrapper around real DSH that rejects only plugin --profile web remove dsh-loopx-plugin makes the base smoke fail; this head still reports success and never sends removal to the selected CLI. Preserve the already-selected executable, or derive and validate its matching JS entrypoint, and cover that selected-host failure.
…sion-readback-20261019 Signed-off-by: BigDataDZ <76271875+BigDataDZ@users.noreply.github.com>
Signed-off-by: BigDataDZ <76271875+BigDataDZ@users.noreply.github.com>
|
已修复所选宿主被绕过的问题,当前提交 删除独立的 真实反例先复现:所选宿主只拒绝卸载,旧代码仍返回 0、报告完整验收通过,且所选宿主未收到卸载。新增耐久 smoke 在真实 DSH 上执行安装、版本及 profile 检查,再要求所选宿主收到卸载且拒绝导致整次验收失败。修复后此反例通过;普通完整原生 Windows 验收也通过,包含过期版本拒绝、profile 不变、不兼容宿主拒绝和真实移除。两项入口均接入现有 Ubuntu/Windows CI。 Node 24.20.0 / pnpm 10.33.0;TypeScript host/client/test、peer-range、JS/Bash 语法、YAML、差异/公开边界及 bilingual RFC 检查通过。独立作者侧差异检查未发现新阻塞,不代替正式评审。600 秒子进程和 20 分钟 job 上限未变;新增负例聚合进程上限 900 秒。所有状态仅为临时 profile,没有模型任务、真实 Goal、全局升级或发布。 当前提交的托管 CI 与维护者复审待完成;旧提交 CI 成功和根目录安装 smoke 的 120 秒超时各保留原修订边界,不当作当前提交的验收结论。没有自合并。 Author follow-through: the selected host now owns the whole qualification. The real removal-refusal counterexample rejects correctly, and the ordinary native Windows installation/removal journey passes. Awaiting exact-head maintainer re-review; this is author evidence, not approval. |
|
Current-head follow-through at
|
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
APPROVE — 完整评审当前 head a9e9629c3eb5adad6d029da4aa429103a4db0870,集成基线 10d23a80988ceab757ea6cb98d16a76cf65e4e9c。原“所选宿主被绕过”的反例已实际复验修复;旧请求修改结论保留其原版本边界。
动机
为指定 DSH 宿主安装源码插件、验证升级或卸载结果的用户与维护者。
原安装器的多行校验在所报 Windows 传输边界失败;前一 head 又让后续测试绕到另一包内 CLI,所选宿主拒绝卸载时仍假通过。当前保留严格条件但参数改为单行,并让已知宿主贯穿整次验证。
真实 DSH 对照中,普通安装、正确与过期版本、profile 不变、不兼容宿主拒绝和真实卸载通过;所选宿主拒绝卸载时,当前完整测试正确失败,恢复旧的独立 JS 入口则再次假通过。
边界是既有源码安装器、耐久安装测试和其 CI 接入,不发布 npm、不升级全局 LoopX、不运行模型,也不新增另一套宿主选择或用户确认。
本轮独立执行是 macOS/Bash、DSH0.2.1-rc.2、Node24.21.0 与 pnpm10.33.0;Windows 实机通过是作者在当前 head 的公开报告,不冒领为本轮独立执行,完整发布、浏览器和真实用户 profile 仍由原流程验收。
改动思路
在原 installer 和原 smoke 中保留单一 DSH_BIN;Bash 的 exec "$@" 处理现有 shell shim 并保持参数边界,删除独立 DSH_CLI_JS/包内 JS 选择。
当前切片完成严格单行版本读回和同一所选宿主的完整资格链,原 SDK、Driver、Client 与正式发布流程保持各自边界。
保留多行参数会留下所报传输失败;再加一个 JS 路径要求用户重新描述已知宿主,也会继续分裂验证责任。这里复用原来已经选定的可执行文件更小、更可靠:安装、正确/过期版本、profile 和卸载都属于同一次任务,失败必须来自同一个宿主。
具体改动
先读修改前的 包 README 中 Install 与 Installation and upgrade recovery,再读旧评审全文、inline和作者跟进。规范 revision 是 10d23a80988ceab757ea6cb98d16a76cf65e4e9c,相关 README/manifest/lock 与当前 head 逐字节相同。原合同的 source entry、strict version readback、selected host 三项均已实现;作者新测试不是独立规范。支持范围不被格式修复扩大,profile 注册本身也不证明 Session/模型已经继续。
原合同内容索引与本次处置:
| 内容索引 | 处置与当前证据 |
|---|---|
| Install / source entry | implemented:实际冻结依赖、build/pack/install 与真实 profile 读回完成。 |
| Installation and upgrade recovery / version readback | implemented:同一严格条件的正确/过期版本拒绝和 profile 不变已执行;Windows 传输边界由受控换行拒绝区分,实机范围仍明示。 |
| Installation and upgrade recovery / selected host | implemented:同一所选宿主贯穿验证和移除;旧入口绕过反例再现,当前普通/失败两侧均正确。 |
关键代码讲解
install.shL141 将同一个 manifest.name/version 严格条件放在一个 JS 参数中;原 mismatch 异常、外层失败和dsh_bin不变。它不是改成仅检查安装成功或忽略版本。runDshL39 沿现有 Bash 用exec "$@"执行已选 DSH_BIN。$0只是诊断标签,后续参数逐项保留;含空格路径、JavaScript和版本参数不会重新解释成 shell 文本。原独立 DSH_CLI_JS/包内入口解析已删除。- 正确/过期版本及前后完整 profile、原包 JSON、unsupported host 与最后真实 removal 都经同一函数。600 秒子进程上限沿用前一 head;没有用放宽其上限掩盖失败。
- 新 selected-host smoke 只在真实转发宿主上注入 removal 拒绝,要求该调用被收到、完整子测试失败并且没有成功行;其900秒是完整嵌套测试的聚合界。四行 workflow 将普通和负例入口接入既有 Ubuntu/Windows Bash job,20分钟 job 上限保持;本轮不查询或等待 hosted CI。
全 4文件 +94/-13,主要增加既有资格检查和49行具体回归守卫;产品修复仍是一行原校验及小型统一转发。没有新状态、配置、协议或部署 runtime。实际当前 tarball33个文件已检查,安装器/测试不进入自动加载的包内容;未另构建基线 tarball,不声称整包 byte parity。最新 target main 7a03792090abb44850109cb6f6d93219c63e555e 在此包和 workflow 上与 PR base 没有差异。
对主干的风险
独立使用当前完整源码、真实 DSH 0.2.1-rc.2、Node 24.21.0 和 repository CI 所固定的 pnpm 10.33.0。包装器的路径含空格,只记录原 argv并转发真实操作;不会伪造成功安装或 profile。对照如下:
| 相同实际包/宿主,受控变化 | 观察 |
|---|---|
| 用精确 base 旧 verifier、宿主只拒绝带换行参数 | 真实安装后,在版本读回被拒绝38,整体不成功。它模拟所报传输约束,不是 Windows 实机证明。 |
| 仅恢复旧独立包内 JS 选择、已选宿主只拒绝卸载 | 整体返回0并假报通过;所选宿主没有收到 removal,原反例重现。 |
| 当前普通入口、所选宿主拒绝任何换行参数 | 完整安装/版本/profile/真实卸载通过;收到的参数均无换行。正确版本通过,过期版本拒绝,前后完整 profile/manifest不变,不兼容宿主在 profile操作前拒绝。 |
| 当前入口、同一宿主只拒绝卸载 | 所选宿主收到 removal,整体非零、拒绝标记明确,没有完整成功行。 |
仓库新增的耐久 negative smoke 也已单独执行通过。以上只注入两个明确的失败边界,其余 build/pack/install、profile、版本和移除均为真实 DSH。当前完整任务能够成功,失败也能够真实传回,避免只证明“更严格拒绝”。
固定 pnpm10.33 的 host/client/test typecheck、peer-range、JS/Bash syntax 与标准 native premerge 4 direct / 13 selected 全部通过,包含本次实际根安装检查和 DSH quality/package/runtime;旧 root安装120秒超时仍属历史,不声称找到旧根因或以本次绿灯证明间歇性已消失。首次私有长路径在 pnpm 本地 tarball缓存索引触发 ENAMETOOLONG,发生在待测 verifier/removal之前,原完整输出保留;同一源码归档与工具版本放到较短物理路径后,才执行并计入上述对照,未修改产品或上限。早先全局 pnpm11静态检查另存,实际资格已按10.33重新准备和验证。
我的整体评价
当前修复可批准:严格条件没有弱化,同一所选宿主覆盖完整用户任务,原假成功有敏感反例保护。已知宿主和授权从初始输入复用,用户不再需要第二份 JS 入口信息或额外确认;这比加选择器或另起 framework 更符合当前边界。原 runtime/SDK/正式分发的更大验收继续由既有 owner 承担,不为此有界修复制造新跟踪任务。
检查完整四文件 diff、既有 Bash 安装器、CLI/profile 读回和 unchanged packed Client/Host 输入,没有渲染页面、布局或控件变化,视觉审查不适用。 未执行原生 Windows、浏览器或实际用户 profile;作者 Windows 结果保留其证据来源。 作者当前公开说明的 Windows 实机成功属于作者证据,本轮没有读取或等待CI、启动模型、操作真实用户 profile、发布或合并。批准后仍需分别读回审批收尾与当前合并就绪状态,不能用 review 或测试绿灯替代权限与 gate。
English verdict: APPROVE — a9e9629c3eb5adad6d029da4aa429103a4db0870. Real supported DSH tests reproduce the old unbound-selector false pass and show that the fixed smoke reaches the selected host, propagates removal refusal and completes the opposite normal install/readback/removal journey. The unchanged strict verifier is now one-line; controlled newline rejection discriminates the old representation. Pinned pnpm10.33 type/peer checks and native4direct/13selected checks pass. Independent execution is macOS/Bash; native Windows remains author-reported. Initial path-setup failure and historical timeout limits remain explicit; no live profile/model/CI/merge claim.
…sion-readback-20261019 Signed-off-by: BigDataDZ <76271875+BigDataDZ@users.noreply.github.com>
Problem and result
On Windows, the DSH source installer can build and register the plugin, then fail final version readback because host transport rejects multiline command arguments. Keep the strict package-name/version verifier in one line.
The installer smoke preserves
DSH_BINthroughout installation, correct/stale-version checks, profile readback and removal. Bash forwards arguments to that same executable, including Windows shims; there is no separate JavaScript-entrypoint selection. This repairs the demonstrated false success when a selected host refuses removal.The durable negative smoke delegates to real DSH through a selected executable with a spaced path and rejects only removal. It requires the selected host to receive removal and the complete installer smoke to fail with that refusal. Existing Ubuntu/Windows distribution jobs run both the ordinary and negative qualification.
Author Declaration
Written by: model_agent (OpenAI Codex), under the author's direction. Basis: reproduced Windows source-installation failure and the published selected-host review counterexample; existing installer/host selection contracts. Intended base:
main.The current integration head is
b69eb67751dbedaadad19c409587c7ce0a1d48a9, merging main7c48375df5aa4824c8d6fba0baef1f96de6cc87e. All four DSH-owned paths are byte-identical to the previously approved head,a9e9629c3eb5adad6d029da4aa429103a4db0870. That review does not approve the new merge head; fresh review remains pending.Validation
Run state: finished. Inputs: synthetic. Native Windows, Node 24.20.0 and pnpm 10.33.0; actual DSH with disposable profiles.
research-historybrowser qualification is blocked before its target assertions: initial per-Goal status stalls in Windows path redaction, then fixture teardown produces a connection reset. A disposable-backend stack probe locates that stall in the existing path-redaction owner. Final fixture mutation/source-byte readback was not reached. This is not a passing browser scenario or a reproduction of the historical CI assertion.Both Ubuntu/Windows DSH distribution jobs and pnpm 9/10/12 frozen jobs passed on the previous
a9e9629chead. Its broader run failed the digest-owner guard and a research-history assertion; the existing main repairs #7208 and #7209 are now integrated. Those historical failures remain recorded, and complete hosted CI on the new head is pending. An earlier unrelated root install-local 120-second timeout remains historical and was not rerun here.The original smoke subprocess limit remains 600 seconds and the distribution job 20 minutes. The aggregate negative harness retains its 900-second limit. No timeout, assertion or CI gate was weakened.
Scope and continuation
Complete within source installer qualification. Reusing the selected host removes duplicate selection authority. No frontend/Lark behavior, model/provider Turn, actual user profile/Goal, global software upgrade, publication or self-merge is performed. Maintainer review and complete hosted CI remain the integration gates; local browser qualification retains the gap above.