Skip to content

fix(dsh): patch vulnerable source-toolchain dependencies - #7998

Merged
huangruiteng merged 1 commit into
mainfrom
codex/dsh-dependency-quality-20261103-143847
Nov 3, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/dsh-dependency-quality-20261103-143847

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

合入读回

准确 head ba3d1898723f78b0f6ac2d9bed9d4cf82cb5f371 已于 2026-11-03 由维护者合入,实际 merge commit 为 2eca84b445e2a0daaccb99084c35f0096f8bb30d。以下原审计、五项 DSH 分发 CI 成功及 Python 共享静态检查失败记录继续保留;后续 #8000 已通过准确 head 的静态检查,但其 Windows lifecycle 尚有具名超时,不能宣称整个交付链全绿。

本 PR 的 source dependency 修复已合入;当前机器上的 Host 升级、最低 Node 22 的实际 Host 和 release-only Docker 仍按原边界单独验收,本次没有进行全局安装或改写历史失败。

当前 CI 读回与修复依赖

准确 head ba3d1898723f78b0f6ac2d9bed9d4cf82cb5f371 保持不变。DSH 分发 CI 的 pnpm 9.15.9 / 10.33.0 / 12.10.1 冻结检查及 Linux / Windows 分发检查共五项均为 SUCCESS。

Python CI 的实际首个阻断是 kernel-static-checks:tests/test_lark_private_conversations.py:817 的 imported pytest fixture F811。该文件在本 PR 的不可变 base 34cc6883 与 head 中 blob 相同。其余四个失败汇总门报告上游 failure/skipped,不能记作通过或另一个已复现的运行时故障。

修复提案 #8000 @ d46c25c00e6232f9c93a9f42e897a7e8d9c796bb 针对当前 main 6f90e561 的该 F811 与后来新增的同一测试 E731;完整 Ruff 由两错变为零,原 15 个故障分支 base/head 均过。提案尚未合并,旧 CI 仍是失败;后续按实际新检查结果重验 readiness,保留 review 与 merge 权限边界。下文原本地资格仍绑定其声明的 revision/base,不追认旧失败。

Goal And Delivered Outcome

DSH 源工具链锁定的 fast-uri、undici 和 Zod 命中已公开的安全告警。同一工具链、同一审计命令下,pnpm audit --json 从基线的 13 条告警(5 high、6 moderate、2 low,exit 1)降为本分支的 0 条(exit 0)。

依赖 原版本 → 修复版本 公开来源
fast-uri 3.1.8 → 3.1.9 URI scheme advisory
undici 8.11.2 → 8.12.2 redirect advisory
Zod 4.4.3 → 4.6.6 collection validation advisory

更新现有的有界 overrides,同步 package.json 与 pnpm-workspace.yaml,并用仓库约定的 pnpm 10.33.0 重建 lock。三个修复都留在原 major 内;DSH SDK 仍固定为 0.2.1-rc.2。lock 重建同时补全了既有 rolldown 1.2.15 的 15 个跨平台可选绑定,并重算受影响的 peer snapshots;没有升级其他既有包版本。

  • Outcome basis: 上述公开告警与可复现的源工具链审计;普通缺陷修复,无虚构 roadmap 编号。
  • Intended base: main;实现基线 34cc6883fb7c9ca374e652dc900d5caf4fc924e2。

Author Declaration

  • Written by: model_agent — OpenAI Codex (GPT-6 family).
  • Specification: no written specification; the request in this PR is the basis. 复用该基线的 package manifest、workspace overrides、.github/workflows/dsh-plugin.yml 和 README 中的源工具链资格边界。
Criterion Disposition Path Evidence
将实际源工具链中的三个依赖解析到修复版本 implemented package.json / pnpm-lock.yaml audit 前后对照;pnpm why 与已安装 package metadata
兼容两份既有 pnpm 配置投影 implemented pnpm-workspace.yaml / package.json pnpm 9、10、12 冻结安装,lock 字节不变
保留插件构建、安装与真实 Host 加载能力 implemented existing DSH distribution journey 下述打包、真实 Web、安装/禁用/移除及负例

Self-check: 保留现有直接配置结构和 typed owners;额外抽象或重构不增加此次修复的可验证价值。审阅了三文件差异、原生 lock 解析结果、依赖来源与对应 Node engine 下限。

Scope And Continuation

本切片完成源工具链依赖修复。overrides 属于开发依赖资格,不会修补用户另行安装的 DSH Host;没有发布、全局安装或实际采用的结论。其他生态的依赖告警和桌面 updater 的兼容资格不在本 PR 范围内,无需为此切片制造 successor。

Validation

  • Tested revision: ba3d1898723f78b0f6ac2d9bed9d4cf82cb5f371。
  • Run state: finished.
  • Input classes: synthetic, public_fixture.
  • Environment: Node 24.21.0、Python 3.14.8、pnpm 10.33.0;隔离的临时 DSH profiles / loopback registry。
Check kind Result Evidence / limitation
regression_parity passed 同一 pnpm audit --json:基线 13 条,head 0 条;保留基线 exit 1。
static passed pnpm 9.15.9、10.33.0、12.10.1:install --frozen-lockfile --lockfile-only --ignore-scripts,每次 lock 字节不变。
static passed pnpm typecheck;三依赖 tarball integrity 与 registry 一致;两配置投影与 lock overrides 一致。
unit passed pnpm test:14 文件、230 项;同步 main 后在最终 head 复跑,包含真实 LoopX 原生准入测试。
integration passed smoke:peer-range 与 smoke:mcp-transport;实际 MCP transport 的同源保留、跨源拒绝。
real_entrypoint passed npm pack 与 smoke:artifact;packed manifest 与 head 相同。rebase 前后整个 DSH 源码和配置逐项一致,因此保留同一受测 artifact。
real_entrypoint passed smoke:registry / smoke:profile:真实 DSH 0.2.1-rc.2 安装、逐 bundle 读回、移除;tag、发现目标、integrity 错误均拒绝。
real_backend passed smoke:runtime:真实 DSH Web boot、Client 加载、live-disable、disabled-package boot、teardown;LoopX bootstrap 使用既有 synthetic carrier,mounted browser Start/Pause 的独立资格未重做。
real_entrypoint passed smoke:install 与 selected-host smoke:实际 installer、旧版本/不兼容 Host 拒绝、profile 不变、移除;指定 Host 的移除拒绝正确使完整流程失败。
static passed 三文件 public-boundary scan、diff whitespace、staged/committed RFC bilingual 检查。
integration passed canary premerge --from-git-diff --git-diff-base origin/main:4 项 direct checks、6 项原生选择检查全部通过,无 failure / advisory / manual hold。
manual not_run 最低 Node 22 的真实 Host 和 release-only Docker smoke;本 PR 不声明发布或已安装 Host 资格。
  • Change-quality: cqr_08481c0ee0e0aa6cca05,exact-scope verified;fingerprint 08481c0ee0e0aa6cca05afe4eab752c144775241ae38c2aecdfeea3c0170377e,3 files,safe-fix allowed / not applied,0 blockers / warnings / advisories。
  • 历史失败:原生 premerge 首轮调用宿主默认 pnpm 11,六个检查均在启动阶段失败。使用仓库约定的 pnpm 10.33.0 执行同一门禁后全部通过;没有改写首轮失败或降低检查要求。
  • Review/merge: 独立 review 与 CI 仍需确认;提交提案不授予 merge authority。

Frontend / Visual Evidence

UI impact: none。源码工具链配置修复,没有布局、文案或用户入口变更;截图、viewport 与 craft review 不适用。

Type of Change

  • Bug fix

LoopX Area

  • Build, packaging, installer, or CI
  • Host or runtime integration

Shared-authority RFC fixture impact: N/A;不改变 authority、provider、运行时路由或 RFC 成熟度。

Boundary Checklist

  • Public-safe diff/body;不包含私有状态、凭据、原始日志、内部链接或本机路径。
  • 未重复 maintainer-owned benchmark 工作。
  • 保持三依赖修复范围。
  • 无 RFC pair 变更,双语 diff 检查通过。
  • UI impact none。
  • DCO signed-off commit。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; runtime_reported; observation_id=85ce6a76f6a8181954175b6c3558ea84b69d6115c425763a9b72b0829234c80c

Exact head ba3d1898723f78b0f6ac2d9bed9d4cf82cb5f371;base 34cc6883fb7c9ca374e652dc900d5caf4fc924e2。未发现阻断性问题,结论 APPROVE。以下为独立审查和本地验证;不是插件发布或用户 Host 更新的证明。

动机

从源码构建、验证和打包 DSH LoopX plugin 的维护者。原锁文件解析到有已公开告警的 fast-uri 3.1.8、undici 8.11.2 和 Zod 4.4.3;同一源码工具链审计报告 13 项告警。新锁文件固定到 fast-uri 3.1.9、undici 8.12.2 和 Zod 4.6.6;独立审计为 0,实际构建、隔离安装和运行路径保持可用。本 PR 只修复源码工具链,不更新用户独立安装的 DSH Host,不发布插件或承诺整套应用没有安全问题。

实际风险随库的调用方式而不同,审计计数并不表示插件存在 13 个可直接利用的入口。例如 undici 的已公开跨源缓存问题有 interceptor 组合等前提;本 PR 的合理边界是移除已知受影响的解析版本,再证明既有开发与打包路径继续工作。不会把源码 override 宣传为已经修复其他进程里的 DSH。

改动思路

沿用已有 package/workspace 双 override 投影并重算锁文件,保持旧新 pnpm 的同一图;没有增加运行时安全策略或新的依赖 owner。当前 PR 边界为三个依赖文件 +261/-98,SDK 仍为 DSH 0.2.1-rc.2,产品源码及现有 peer 范围未改。只改一个 override 投影会破坏跨 pnpm 配置一致性;跳过锁文件不能保证实际解析修复版本。复用现有冻结版本矩阵与真实安装 smoke 足够。 package.json 投影服务 pnpm 9,workspace 投影服务较新 pnpm;两个位置选择同一修复版本,锁图负责记录实际解析和 integrity。没有新 feature 开关、安装权限、依赖缓存协议或平台适配框架。

规范依据为 packages/dsh-loopx-plugin/README.md; .github/workflows/dsh-plugin.yml,spec_revision 34cc6883fb7c9ca374e652dc900d5caf4fc924e2,在实现 diff 前读取。逐项映射:Install 保留源码与独立安装 Host 的边界;frozen-configuration 要求 pnpm 9.15.9/10.33.0/12.10.1 的冻结配置不改锁字节;Maintainer release and marketplace handoff 要求用 pnpm 10.33.0 和实际打包字节验证隔离安装、运行与卸载。当前检查覆盖这些源码维护义务,没有借此宣称完成整个发布矩阵。

修复版本另对照官方 fast-uri advisory、undici advisory 和 Zod advisory 核实,分别达到 3.1.9、8.12.2 和 4.6.6 的修复下限。没有通过忽略告警来获得 audit0。

具体改动

关键代码讲解

package.json 的 pnpm.overrides 把 fast-uri 上限推进到 3.1.9,并增加受限的 undici 8.x 和 Zod 4.x 修复选择;已有 fflate、MCP 和 Vite override 保留。选择器没有把所有版本无条件压成一个新版本。

pnpm-workspace.yaml 同步同一组规则,allowBuilds 未改。独立的三个临时配置副本实际执行各版本 lock-only frozen install,均无交互提示且锁字节相同;没有把一次显示确认提示后退出的 pnpm9 调用算作完成矩阵。

pnpm-lock.yaml 的 129 个结构化变更叶子,除三组版本/integrity 替换、peer snapshot 重算和 override 外,还补入已有 Rolldown 1.2.15 的 15 个可选平台 binding。没有其他既有包版本升级。18 项新增/替换解析的 registry integrity 全部匹配;三个修复包又实际下载并校验 SHA-512。undici 的 Node>=22.19 和 binding 的 Node>=22.12 声明没有超过当前 package 的 Node22.22.3 下限。

独立行为反例用无执行副作用的 URI 字符串检查:base 将百分号编码 scheme 变成 javascript:...,head 保留编码,普通 HTTPS 规范化相同。两侧各 33 个归档文件逐字节比较,只有 package.json 不同;Host/Client 编译字节未变。真实隔离 registry 验证 package-name 安装、正确 bundles、错误 tag/discovery/integrity 拒绝和移除;真实 DSH profile 验证初始化、carrier、禁用、disabled boot 与清理。

对主干的风险

base/head各230项测试、Host/Client/test类型检查通过;独立临时副本的pnpm9.15.9/10.33.0/12.10.1冻结配置均实际执行且锁字节不变;两侧peer/MCP、打包、artifact、隔离registry和真实DSH runtime通过。18项registry integrity相符,其中3个修复包的下载tarball另验SHA512。 当前 head 用 pnpm10.33.0 和短隔离临时目录完成原生 premerge:4项 direct、6项 selected 全通过,manual holds=0。MCP transport 保留 same-origin,拒绝 cross-origin;runtime 中 live-disable 保留共享 DSH,卸载后不留 LoopX rows。LoopX bootstrap 使用合成 CLI carrier;这里没有偷偷安装/升级真实用户 runtime 或调用模型。

保留非绿历史:长嵌套 macOS 临时目录下,汇总 runtime 检查两次触发 pnpm ERR_PNPM_ENAMETOOLONG;在同一原生 canary runner 的不可变 base 和当前 head 都复现为本地 tarball store rename 的文件名限制。使用短的、独占临时目录后,同样的完整 gate 通过,直接 runtime 两侧也通过。没有删除断言、放宽限制、修改产品源码,或声称原长路径条件已经修好。该条件与本次依赖语义分别归因。

CI 按 wait_for_ci=false 未查询、轮询或等待。发布前作者在同一 head 的 PR 正文补充:五项 DSH CI SUCCESS,Python kernel-static-checks 报 F811、其余汇总 failure/skipped,并链接另一个修复提案 #8000。这些是已收到的作者诊断,required=false;我没有独立核验 CI 结果、根因或该修复,故不把它们称为本审查已证明的通过、回归或既有失败。它们不替代本次本地正反向证据。

audit0 是当前 registry 对当前锁图的观察,不替代兼容性、安全设计或所有平台资格。原生 Windows/Linux、最低 Node22实际 Host 和 Docker 发布场景未在本次重跑,不能继承为本 head 的独立验证结果。

我的整体评价

沿用已有 package/workspace 双 override 投影并重算锁文件,保持旧新 pnpm 的同一图;没有增加运行时安全策略或新的依赖 owner。当前 PR 边界为三个依赖文件 +261/-98,SDK 仍为 DSH 0.2.1-rc.2,产品源码及现有 peer 范围未改。 最强反例是依赖审计清空了,却破坏 peer 范围、构建器、包安装或禁用后的共享服务;现有原生检查和本次 base/head 实际 profile 路径覆盖了这些边界。修复沿既有 owner 完成,所需维护成本主要是保留受支持的双配置投影,没有新增人工操作轮次。

已检查完整三文件 diff 和打包产物,33个归档文件中只有 package.json 字节变化;没有页面或布局变更,visual review 不适用。未验证原生 Linux/Windows、最低 Node 22 的真实 Host、Docker 发布矩阵或浏览器挂载交互;没有升级已安装用户 Host。 采用 repository experience 中“走真实调用与恢复”的建议,因此读回实际 bundles、profile 和卸载结果;没有把测试数量、接入登记或 audit0 说成长期模型收益。源码维护切片已得到独立正反向证据,用户独立 Host 仍由其 owner 升级;closeout、readiness 和发布授权另行判断。

English verdict: APPROVE. The exact source graph resolves the patched packages and independently passes frozen configuration, integrity, build, package, transport and isolated real DSH lifecycle checks. The pre-existing long-temp-path failure is retained with successful short-path qualification. Remote CI was not consulted; no user Host update, release or merge was performed.

@huangruiteng
huangruiteng merged commit 2eca84b into main Nov 3, 2026
23 of 28 checks passed
@huangruiteng
huangruiteng deleted the codex/dsh-dependency-quality-20261103-143847 branch November 3, 2026 16:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants