Skip to content

fix: hotpack 包管理全面审计与加固(13 项根因修复) - #26

Merged
YisfL merged 2 commits into
mainfrom
fix/v1.0.1-hotpack-package-mgmt
Aug 23, 2026
Merged

fix: hotpack 包管理全面审计与加固(13 项根因修复)#26
YisfL merged 2 commits into
mainfrom
fix/v1.0.1-hotpack-package-mgmt

Conversation

@YisfL

@YisfL YisfL commented Aug 23, 2026

Copy link
Copy Markdown
Collaborator

概要

对热插拔包(hotpack)包管理与相关功能做了一次极端严格、进程隔离实测驱动的全面审查,定位并修复 13 项根因缺陷(另修正 1 处误导性报错),每项均以真实进程隔离测试复现并新增回归测试。

修复清单

解析与校验(shared-core)

  • source.type 显式空串不再静默降级为 npm(与空白被拒对齐),仅缺省默认 npm
  • dshpackToHotpack 显式枚举 npm/github,path/未知类型显式报错,不再静默降级并丢弃 path 信息

包管理生命周期(hotplug)

  • store 键单射编码:name/ref 含 / 编码为 %2F,消除层级目录与 rmSync 连删兄弟 ref 缓存的数据丢失
  • activate 前一包 manifest 缺失时仍移除旧 patch 块(与 deactivate 对齐),消除孤儿块
  • 挂载回滚只撤销本次新下载/替换的 npm 包,不误删 reused 的预存依赖
  • linkEntryIntoProfile 真实目录占用 link 路径时先移除再建 junction
  • ensureNpm reused 判定补包名校验;退出 0 但版本不符不再误报「exit 0」
  • writeTextSafe 迁移到 writeFileAtomic,消除固定 .tmp 名多进程竞态

市场与契约(market)

  • marketDetail 改用 vendor-shared validateSourceRepo/validateSourceRef 单一真源(ref 允许 /,拒绝非法 repo)
  • buildGithubPluginPack 版本校验改严格 semver,非法版本兜底 0.0.0
  • packIdOf 追加 sha1 短哈希,消除 /- 有损映射导致的 id 碰撞
  • raceFiles 404/403/410 白名单,429 限流不再丢弃镜像合法 200

会话安全(ai-session)

  • sessionPath 改为严格校验+拒绝,消除有损清洗导致的 id 碰撞(覆盖/误删/读不到)

测试验证

套件 结果
dsh-hotplug-hub 173 通过(新增 13 条回归)
shared-core 176 通过(新增 2 条)
launcher 520 通过
dsh-memory-hub 51 通过

vendor-shared 三份副本与 shared-core 逐字节一致;内嵌 dseam-skillmcp tgz 已重打包一致。

提交范围

本次提交:8 个源码文件 + 17 个测试/文档文件 + shared-core 解析器(含 3 份 vendor-shared 同步)+ 内嵌 tgz 重打包。

不提交(已由 .gitignore 排除):node_modules、installer/runtime、coverage、sandbox/.sandbox、release/dist、本地备份与内部审查文档、启动器自动生成索引。

版本

项目版本号保持 1.0.1(不变)。第三方插件 dseam-skillmcp 0.8.1-pre、子包版本(shared-core 0.1.0 / launcher 0.3.0 / memory-hub 0.8.0-pre)与示例/测试夹具数据均按约定不随本 PR 变更。

YisfL added 2 commits August 23, 2026 21:16
- source.type 显式空串不再静默降级 npm(与空白被拒对齐),仅缺省(undefined/null)默认 npm
- dshpackToHotpack 显式枚举 npm/github,path/未知类型显式报错,不再静默降级 npm 丢弃 path
- 同步 3 份 vendor-shared 副本并重打包内嵌 dseam-skillmcp tgz
- 新增回归测试
- store 键单射编码:name/ref 含 / 编码 %2F,消除层级目录与 rmSync 连删数据丢失
- activate 前一包 manifest 缺失仍移除旧 patch 块(与 deactivate 对齐,消除孤儿块)
- marketDetail 改用 vendor-shared validateSourceRepo/validateSourceRef 单一真源
- buildGithubPluginPack 版本校验改严格 semver;packIdOf 追加短哈希消除碰撞
- raceFiles 404/403/410 白名单(429 限流不再丢弃镜像 200)
- ensureNpm reused 判定补包名校验;退出 0 但版本不符不再误报 exit 0
- 挂载回滚只撤本次新装 npm 包(不误删 reused 预存依赖)
- linkEntryIntoProfile 真实目录占用先移除再建 junction
- writeTextSafe 迁移 writeFileAtomic(消除固定 .tmp 竞态)
- ai-session sessionPath 严格校验拒绝(消除有损清洗 id 碰撞)
- 新增 13 项回归测试(hotplug 173 / shared-core 176 / launcher 520 / memory-hub 51 全绿)
@YisfL
YisfL requested a review from ARFCON as a code owner August 23, 2026 13:18
@YisfL
YisfL merged commit b1f8351 into main Aug 23, 2026
11 checks passed
@YisfL
YisfL deleted the fix/v1.0.1-hotpack-package-mgmt branch August 23, 2026 13:22
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.

1 participant