|
| 1 | +# v1.17.5 |
| 2 | + |
| 3 | +> 发布日期:2026-08-14 |
| 4 | +> 类型:Patch / Published package npm scripts closure |
| 5 | +
|
| 6 | +## 摘要 |
| 7 | + |
| 8 | +本版本修复 `devcodex@1.17.4` 发布包的 npm scripts 闭包缺陷:源码仓中的维护脚本被原样保留在最终 `package.json`,但 tarball 并未包含这些脚本的全部目标,导致安装目录执行 `npm run validate` 或再次执行 `npm pack` 时可能出现 `MODULE_NOT_FOUND`。v1.17.5 将源码开发面与安装包运行面明确分离,并从最终 tarball manifest 验证真实闭包。 |
| 9 | + |
| 10 | +## 修复内容 |
| 11 | + |
| 12 | +- 新增 `PublishedPackageScriptsContractV1`:源码继续保留测试、生成、benchmark 与发布编排脚本;最终 tarball 只公开安装态真正支持的 8 个入口。 |
| 13 | +- 安装包公开 `postinstall`、`prepack`、`postpack`、`validate`,以及 `global-adapters` apply/remove 的执行与 dry-run 入口。 |
| 14 | +- `prepack` 在源码根以带摘要收据的事务投影发布 manifest;`postpack` 无论正常完成还是恢复流程都要求将源码 `package.json` 原字节还原,冲突时失败关闭。 |
| 15 | +- 发布包内的 `prepack` / `postpack` 改为安装态闭包验证,不再调用仅存在于源码仓的生成器。 |
| 16 | +- 新增安装态 validator,从最终 `package.json` 重新解析直接脚本目标、嵌套 npm scripts、CommonJS/ESM 本地依赖、`path.join` 与受支持的 spawn 目标。 |
| 17 | +- `test:pack-clean` 升级为真实 `pack → 隔离 HOME 安装 → installed validate → installed self-pack`,不再仅依据 `package.json.files` 反向证明自身完整。 |
| 18 | +- V6、validation DAG、发布风险路由、README FAQ 与 package files 同步接入同一闭包合同。 |
| 19 | + |
| 20 | +## 安装包脚本边界 |
| 21 | + |
| 22 | +最终发布包只保留以下 npm scripts: |
| 23 | + |
| 24 | +- `postinstall` |
| 25 | +- `prepack` |
| 26 | +- `postpack` |
| 27 | +- `validate` |
| 28 | +- `global-adapters:apply` |
| 29 | +- `global-adapters:apply:dry-run` |
| 30 | +- `global-adapters:remove` |
| 31 | +- `global-adapters:remove:dry-run` |
| 32 | + |
| 33 | +维护者需要运行源码测试、生成器或发布编排时,应使用 Git checkout,而不是全局 npm 安装目录。 |
| 34 | + |
| 35 | +## 防回归验证范围 |
| 36 | + |
| 37 | +- 公开脚本精确白名单、source-only 泄漏、直接与嵌套脚本目标缺失、lifecycle 单边配置。 |
| 38 | +- `require` / `import` / `path.join(ROOT|__dirname, ...)` / spawn 本地目标闭包的正向与负向探针。 |
| 39 | +- manifest 投影、原字节恢复、崩溃恢复、摘要冲突、重复 cleanup 与状态残留。 |
| 40 | +- 真实 tarball 隔离安装、安装态 validator、`npm run validate` 与安装目录 self-pack。 |
| 41 | +- 六宿主 adapter、安装/卸载、SkillRoute、Profile、README、版本、portfolio、完整验证、安全审计与发布干跑。 |
| 42 | +- Windows 上 `cli-behavior` 独立实测约 102 秒、package DAG 负载下曾达到 120 秒;节点发布预算由 120 秒调整为 180 秒,保留超时失败关闭并降低远端 CI 偶发超时。 |
| 43 | + |
| 44 | +## 兼容性与边界 |
| 45 | + |
| 46 | +- 本版本是向后兼容 patch;CLI、工作区布局、六宿主配置与 Cursor Beta 能力声明均不改变。 |
| 47 | +- 安装包不再承诺包含源码仓的全部维护脚本;这是发布边界收紧,不是用户功能删除。 |
| 48 | +- Cursor Cloud Agent 仍不加载用户级 Hook,保持 Partial / `UNVERIFIED`。 |
| 49 | +- 本缺陷与宿主“完全访问权限”无关;缺失的是发布包文件闭包,提升文件系统权限不能修复。 |
| 50 | + |
| 51 | +## 发布拓扑 |
| 52 | + |
| 53 | +- npm 包名:`devcodex` |
| 54 | +- registry:`https://registry.npmjs.org/` |
| 55 | +- 发布分支:`main` |
| 56 | +- 目标 Tag:`v1.17.5` |
| 57 | +- 上一版本:`v1.17.4` |
| 58 | +- 关联修复:`.devcodex/devcodex/bugs/发布包npm-scripts闭包修复/` |
0 commit comments