Repository navigation
build(deps): bump sharp from 0.35.3 to 0.35.5 in /packages/dsh-loopx-plugin - #5806
Conversation
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent — gpt-6.1-sol / OpenAI; runtime_reported; reasoning_effort=xhigh.
动机
维护 DSH 插件的开发者在全新检出后安装固定版本依赖。 基线的固定锁文件安装成功,PR 却在相同 pnpm 版本和相同离线输入下因 override 不一致而失败。 当前补丁尚不能完成可重复安装;恢复既有 override 后才可继续验证 sharp 更新。 本次只评估依赖锁文件更新,不新增图像功能,也不证明所有平台的原生二进制兼容。
改动思路
锁文件继续复用现有依赖解析边界,但必须保留 manifest 的既有约束。 当前 PR 仅更新 sharp 与配套 libvips,恢复无关 override 是最小修复。 sharp 是 DSH 开发依赖经宿主包引入的图像处理库,升级应沿既有 pnpm 解析和平台选择完成。当前重复安装成本来自锁文件违反现有 manifest,而不是缺少一个新升级流程。
具体改动
关键代码讲解
overrides / importers(packages/dsh-loopx-plugin/pnpm-lock.yaml:7):Removed override no longer agrees with unchanged package manifest。锁图的平台、引擎约束需继续保留,版本变动本身不证明安装通过。sharp@0.35.5 snapshots(packages/dsh-loopx-plugin/pnpm-lock.yaml:11572):Sharp and optional platform libraries move together; unrelated archive pin must be retained。锁图的平台、引擎约束需继续保留,版本变动本身不证明安装通过。
规格:packages/dsh-loopx-plugin/README.md,不可变修订 3a1a92ebd3e168b0e93e788b1127fb73e035f79c。
pnpm-qualification:implemented — Qualification uses pnpm 10.33.0; use that version for reproducible source and isolated-registry checks.frozen-source-install:not_met — Run pnpm install --frozen-lockfile --ignore-scripts before validation.
全量差异为一个锁文件 +125/-123,sharp 0.35.3→0.35.5、libvips 1.3.2→1.3.4;同时删掉 override 并把 libreoffice-kit 的 fflate 退回 0.8.2,这个无关变化需撤回。上游修复详情见 sharp v0.35.5,这次没有把上游发布声明当成本仓库兼容性证据。
对主干的风险
[P1] 恢复锁文件中的既有 override。 用工作流明确指定的 pnpm 10.33.0,对基线和 PR 的 manifest、workspace、lockfile 副本执行 install --frozen-lockfile --ignore-scripts --lockfile-only --offline:基线退出 0,PR 退出 1,报 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH。这发生在网络、图像处理和构建之前,影响普通源检出路径。最小修复为保留 @deepseek-ai/libreoffice-kit>fflate: 0.8.3,重新生成锁文件后重跑固定安装、build、typecheck 和插件测试。首次用了主机 pnpm11,其离线元数据失败且已不读 package.json 的 pnpm 配置;该试验不能证明此 PR 问题,以上固定 pnpm10 的成对证据才是判断依据。图像处理和其他原生平台尚未验证,当前不会给升级本身兼容性背书。
我的整体评价
当前 PR 仅更新 sharp 与配套 libvips,恢复无关 override 是最小修复。 当前长程效果与体验为 regression:全新安装中断会把一次依赖维护变成反复手动修复。升级可能有补丁收益,但这个 exact head 的净效果为负;应完成上述最小修复后重审,无需引入新策略。
Exact head: 5806@f69aa13c0fb3cf39da20aa5759b8b41a51177446.
English verdict: REQUEST_CHANGES — The pinned frozen installation regresses; retain the existing override and regenerate the lockfile.
f69aa13 to
30cd70d
Compare
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
精确 head:30cd70d13e276314ae4db192d13fcc1292fe43be。
动机
从干净检出安装 DSH 插件依赖的开发者。 相同 pnpm10.33.0 和离线输入下,base 的固定锁文件安装成功,新 head 却因锁文件缺少 manifest 的 override 而失败。 升级原生图像依赖的价值尚未验证;新 head 的普通固定安装可重复失败,必须先恢复 override,再验证图像和构建路径。 只评审依赖维护;不新增图像功能,不将上游发布或锁文件版本宣称为已验证兼容,也不扩大整个插件框架。
改动思路
既有 pnpm manifest/锁文件必须一致;保留原 override 并针对 sharp 重生锁图是最小修复,不需新的依赖升级框架。 当前边界是 sharp/libvips 更新,但锁图的 override 和大量无关 peer 图重写仍需修复及收敛。 仍通过既有命令/解析器、权威输入和副作用 owner 完成操作;没有新 Goal、租约、额外状态源或账户权限。正向路径要求得到可回读的结果,反向路径检查真实副作用及恢复,不以单元测试或历史 verdict 代替。可选读取提示不改变机器强制的现有操作约束。
具体改动
独立规格:packages/dsh-loopx-plugin/README.md,不可变修订 df826263926651ab9c50acee182ef96e2a60ff4b。先读取变更前合同和原评审,再判断此 head;条款原文无编号,标识用于对应下列原有要求。
pnpm-qualification:implemented — Qualification uses pnpm 10.33.0 for reproducible source and isolated-registry checks.frozen-source-install:not_met — pnpm install --frozen-lockfile --ignore-scripts before validation.
关键代码讲解
overrides/importers:锁文件删掉既有 override,manifest 仍要求 libreoffice-kit 的 fflate0.8.3。更新后的图引入 fflate0.8.2;这不是 sharp 升级所需的权限或策略变更。sharp/platform/snapshots:sharp0.35.3→0.35.5、libvips1.3.2→1.3.4 的各平台包与完整性摘要一起更换;大量 Cordis/DSH peer 键重新生成。全锁图解析发现662 个 snapshot 变化及 ajv-formats 的 peer 元数据变化。一个文件 +1990/-2008,不应只按标题把其余解析关系当作无行为的格式变化。
对主干的风险
[P1] 锁文件仍违反 manifest 的 override,阻断普通固定安装。 用工作流指定 pnpm10.33.0,在完全相同离线 manifest/workspace 输入下运行 npx --yes pnpm@10.33.0 install --frozen-lockfile --ignore-scripts --lockfile-only --offline:固定 base 退出0,当前 head 退出1,完整错误是 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH,发生在网络、build 和图像运行之前。新 head 虽然变化扩大,之前的阻塞仍真实存在;本次独立重跑证明,不继承旧结论。
最小修复:保留 @deepseek-ai/libreoffice-kit>fflate:0.8.3 override 并使用指定 package manager 重新生成聚焦锁文件,解释或撤回无关 peer/ajv-formats 解析变动,再执行固定安装、build、typecheck、插件测试及风险相关图像路径。当前没有用未验证的原生平台行为制造额外已知问题,也没有把缺依赖后续检查算通过。
语义与 CI 对齐
复用既有 pnpm resolution schema;manifest→锁图→安装的合同不一致是当前阻塞,不能通过删 override 或放松 frozen 要求抹掉。CI 没有查询/等待;独立固定安装失败已有充分本地证据。
我的整体评价
新的锁文件仍阻断全新源检出的固定安装;本 head 的维护效率和体验为负向。 既有 pnpm manifest/锁文件必须一致;保留原 override 并针对 sharp 重生锁图是最小修复,不需新的依赖升级框架。 当前边界是 sharp/libvips 更新,但锁图的 override 和大量无关 peer 图重写仍需修复及收敛。 REQUEST_CHANGES。原生图像库补丁可能有价值,但这个 head 使必经安装路径失效,效果和效率均有明确负向。先修复最小阻塞并收敛解析变动再重审,不需要添加新抽象。
English verdict: REQUEST_CHANGES - 30cd70d; The unchanged manifest override is absent from the regenerated lock. Pinned pnpm10.33.0 frozen offline installation succeeds at base and fails at this head; restore the override and regenerate before runtime qualification.
Bumps [sharp](https://github.com/lovell/sharp) from 0.35.3 to 0.35.5. - [Release notes](https://github.com/lovell/sharp/releases) - [Commits](lovell/sharp@v0.35.3...v0.35.5) --- updated-dependencies: - dependency-name: sharp dependency-version: 0.35.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
30cd70d to
8a22c15
Compare
The regenerated lockfile dropped the manifest's @deepseek-ai/libreoffice-kit>fflate override, so the pinned pnpm install --frozen-lockfile failed with ERR_PNPM_LOCKFILE_CONFIG_MISMATCH and fflate regressed to the vulnerable 0.8.2. Keep the base lock graph and apply only the sharp 0.35.3->0.35.5 / libvips 1.3.2->1.3.4 bump, with the integrity hashes pnpm 10.33.0 resolved from the registry. Signed-off-by: huangruiteng <huangrt01@163.com>
…lockfile No conflicts: main did not change packages/dsh-loopx-plugin/pnpm-lock.yaml since this branch's base, so the PR diff stays lockfile-only. Signed-off-by: huangruiteng <huangrt01@163.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · self_reported · effort_unavailable
精确 head:ccc2add57b5bdaf914a542ae5c089fb93230ce91;base c741853c61021354a84c06611a93d8bdb9af5ff1;整份 1 文件 +119/-119(相对当前 main 的 packages/dsh-loopx-plugin/pnpm-lock.yaml)。这是对两条既有 change request 的复审:本轮 head 由修复提交 c16458e26a 与把 main 并入分支的 ccc2add57b 组成,我的判断都在这个 head 上重新验证,不继承旧结论。
动机
从干净检出安装 DSH 插件依赖的开发者,以及维护该插件发布流程的维护者,都会先执行固定锁文件安装。此前的 head 缺少 manifest 仍要求的 override,固定安装在网络与构建之前就报 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH,并让 fflate 退回 0.8.2 触发 dependency-review 的中危告警;现在同一个固定安装命令通过,override 与 fflate 0.8.3 保持不变,sharp 仍然从 0.35.3 升到 0.35.5。可观察结果是 pnpm 10.33.0 的固定安装与离线固定安装都在同一个 head 上通过,锁文件相对 main 只有 sharp/@img 条目变化,dependency-review 不再新增 fflate 0.8.2 告警。本次不新增图像功能、不改变插件的运行时行为或 peer 范围,也不为 sharp 或 libvips 的原生二进制做平台兼容性背书。新 native 依赖在各平台的实际运行路径没有在本仓库验收,且本机的 registry 安装 smoke 因企业 registry 配置无法复现,这部分仍由 CI 与后续依赖维护覆盖。因此这是 justified_increment:它把一条必经的安装路径修回可用,同时把升级范围收回到一次可评审的解析更新,而不是宣称这项原生依赖已经被全面验收。
改动思路
本次只改一个包自己的锁文件解析:沿用既有 pnpm 解析 owner、既有 manifest override 与既有 peer 范围,把 sharp 家族条目换成 pinned pnpm 10.33.0 从 registry 解析出的版本与完整性摘要。本次边界是 DSH 插件这一个包的锁文件:只更新 sharp/libvips 解析并恢复被删掉的 override,不改变插件运行时行为、peer 范围、发布产物内容或其它包的依赖。三个 head 在同一命令下的形状对照(按文件内容整理的说明性比较,不是执行证据):
| head | 相对 main 的锁文件变化 | pnpm install --frozen-lockfile(pinned 10.33.0) |
|---|---|---|
base c741853c61 |
无(main 的锁文件) | 通过 |
上一个 head 8a22c15f29 |
+1990/-2008,含整张 peer 图重写并删掉 override | 失败:ERR_PNPM_LOCKFILE_CONFIG_MISMATCH |
本 head ccc2add57b |
+119/-119,仅 sharp/@img 条目 | 通过 |
修复方法是:以 main 的锁图为准,只把 27 个 sharp 家族包条目与 27 个对应 snapshot 条目替换为 pinned pnpm 10.33.0 解析出的版本与 registry 完整性摘要(sharp 0.35.3→0.35.5,@img/sharp-* 0.35.3→0.35.5,@img/sharp-libvips-* 1.3.2→1.3.4),并用真实的固定安装与离线固定安装验证;这比“重新生成整张锁图再补回 override”或手工拼完整性摘要都更小且可验证。
具体改动
packages/dsh-loopx-plugin/pnpm-lock.yaml(+119/-119)是三处内容:顶部 overrides 段落保持 @deepseek-ai/libreoffice-kit>fflate: 0.8.3;packages 段与 snapshots 段中 sharp 家族条目改版本号并更新完整性摘要;sharp: 0.35.3(@types/node@22.20.1) 这条依赖引用改为 0.35.5。除此之外的每一行都与 main 的锁文件逐字节相同,fflate 只有 0.8.3 一处解析。
关键代码讲解
overrides(packages/dsh-loopx-plugin/pnpm-lock.yaml:8):锁文件顶部的 override 与 manifest 的pnpm.overrides必须一致,这是 pinned pnpm 判定ERR_PNPM_LOCKFILE_CONFIG_MISMATCH的依据。上一个 head 删掉它,既让固定安装失败,也让@deepseek-ai/libreoffice-kit的 fflate 退回 0.8.2;本 head 保留原值,rg fflate@0.8.2在锁文件里为 0 处。sharp@0.35.5(packages/dsh-loopx-plugin/pnpm-lock.yaml:4576):sharp 的包条目,版本与 registry 完整性摘要一起更换,engines: {node: '>=20.9.0'}与@types/node可选 peer 保持不变,所以升级没有改变本包的 Node 支持范围。@img/sharp-darwin-arm64@0.35.5(packages/dsh-loopx-plugin/pnpm-lock.yaml:2728):26 个平台包条目的代表;它们连同cpu/os/libc约束与 libvips 依赖一起只换版本与摘要,平台集合没有增删,说明这次升级没有改变可选二进制矩阵。sharp@0.35.5(@types/node@22.20.1)(packages/dsh-loopx-plugin/pnpm-lock.yaml:11570):snapshot 条目列出 sharp 的 26 个可选平台依赖;它与上一行的包条目必须同一版本,正是这一对配对关系让“只换一半”的拼接错误会在固定安装时暴露。
规格对照:本改动落在包自己的资格说明 packages/dsh-loopx-plugin/README.md(不可变修订 5085182f33c361e8b583d85d738ea2e60b4dbffe)。逐条:pnpm-qualification(资格验证使用 pnpm 10.33.0 做可复现的源码与隔离 registry 检查)为 implemented,本 head 的每项验证都用 10.33.0 执行;frozen-source-install(用 pnpm install --frozen-lockfile --ignore-scripts 与 npm pack 构建当前源码)为 implemented,同一条命令在 base 与上一 head 上的失败/通过配对正是本次修复的对象;registry-install-qualification(registry smoke 在回环上提供真实打包字节,CI 在 Linux 与 Windows 重复安装与卸载)为 implemented,由 dsh-plugin 工作流的同名步骤覆盖。
对主干的风险
两条 change request 的 P1 都是同一个根因(锁文件缺少 manifest override),本 head 已修复并有配对证据:同一条 pnpm@10.33.0 install --frozen-lockfile --ignore-scripts --lockfile-only --offline 在 base 退出 0、在上一 head 以 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH 退出 1、在本 head 退出 0;CI 里真正执行的 pnpm install --frozen-lockfile --ignore-scripts 也在本 head 上通过。
剩余的实质风险是这次锁文件是“按条目挑选”拼出来的,而不是整卡重新生成:如果某个 sharp 家族条目漏改或版本配错,固定安装会在完整性校验阶段拒绝。可控性来自三点——锁文件其余部分与 main 逐字节相同,sharp 家族 54 个条目全部同时改成 0.35.5/1.3.4 且引用关系一致,且 pnpm install --frozen-lockfile 与 --offline 变体都在本 head 上真实通过(后者不做网络解析,只能靠锁文件自洽通过)。爆炸半径限于 DSH 插件包的依赖解析:插件运行时代码、peer 范围、打包产物内容(files 不含锁文件)与其它包都不受影响。回滚方式是单文件回退到 main 的锁文件,代价是放弃这次 sharp 补丁升级。
未能在本机复现的一项:node smoke/dsh-registry-smoke.mjs --tarball <packed> 在本机失败,原因是本机 npm 配置指向企业私有 registry(ERR_PNPM_FETCH_404,该 registry 不承载这个包名),而不是本 PR 的行为;该 smoke 只消费打包 tarball,而 pnpm-lock.yaml 不在包的 files 清单里,因此本次改动不可能影响它的输入。CI 在本 main head 上执行同一步骤为绿色。
语义与 CI 对齐
本次没有引入或扩展共享词汇或类型化状态:改动是单个包的解析结果,没有新增协议字面量、枚举、必填字段或控制面文案,也没有触碰 generic 义务文本,因此不需要语义登记或 RFC 同步。需要如实记下的默认行为变化是:DSH 插件依赖图中的 sharp 从 0.35.3 升到 0.35.5、libvips 从 1.3.2 升到 1.3.4,这属于依赖维护的预期更新,已在 PR 标题与正文中说明,且不改变插件的对外契约。
我的整体评价
APPROVE。problem_context 的两个维度都是 improved:long_horizon 上,干净锁定装的必经路径恢复可用,依赖维护不再需要人工补 override,同时不再引入中危依赖告警;user_experience 上,开发者与维护者用同一条固定安装命令即可完成检出与发布前验证。observable_semantics 是有意变更且已验证:唯一的可观察变化是 sharp/libvips 的解析版本,兄弟路径(其它包条目、peer 范围、files 打包内容)保持逐字节不变;code_volume 为 necessary,+119/-119 全部落在 sharp 家族条目上,没有可再压缩的等价写法,兼容性决策为 retain(deployment_boundary: co_deployed,无持久化契约)。change_proportionality 与 architecture_assessment 均为 retain:用既有 pnpm 解析 owner、既有 override 与既有范围完成一次聚焦升级,semantic_alignment 为 local_only。无阻塞性发现;两条既有 P1 已在当前 head 上被独立证据证明解决。剩余未验证项是新原生二进制的平台运行路径,以及本机无法复现的 registry 安装 smoke(环境原因),两者都由 CI 与后续依赖维护覆盖,不需要在本 PR 添加新抽象。本评审不授予发布、绕过或破坏性 Git 的权限。
English verdict: APPROVE - ccc2add57b5bdaf914a542ae5c089fb93230ce91: the two change requests' P1 (missing manifest override / broken frozen install) is resolved at this head. Pinned pnpm 10.33.0 frozen install passes online and offline (base exit 0, previous head exit 1 with ERR_PNPM_LOCKFILE_CONFIG_MISMATCH, this head exit 0), the lockfile diff versus main is +119/-119 confined to the sharp/@img entries, fflate stays at 0.8.3 so no new vulnerable package is introduced, and typecheck, peer-range smoke, 215 tests and the canary premerge gate (3 direct + 6 selected) are green.
@/tmp/dismiss5806.md
Bumps sharp from 0.35.3 to 0.35.5.
Release notes
Sourced from sharp's releases.
... (truncated)
Commits
51a990fRelease v0.35.596de105Upgrade to sharp-libvips v1.3.43a61390CI: Configure Dependabot with all package.json locations4940c50Improve gain map support for rotate/flip/flop ops20654aaPrerelease v0.35.5-rc.1ef4f934CI: Upgrade to Ubuntu 26.04358df95Upgrade to libvips v8.18.749f4903Improve gain map support for rotate-then-extract #46060e2e55eSilence a couple of compiler/static analysis warningscef3b8cImprove gain map support for extract operation #4606