TTS MultiModel v2.2.3
v2.2.3
补丁版,只有一个理由:把修好的 wheel 交出去。
v2.2.2 的 tag 打在一处修复之前,所以已发布的 wheel 仍然缺完整性自检的三件套 ——
integrity_manifest.json、它的 Ed25519 签名、验签公钥都没打进包,而配置默认
security.integrity_selfcheck.enforce: true,且"清单不存在"分支只写一行 info 日志就跳过。
后果是:通过 pip install 拿到包的用户,P0 的核心模块完整性保护一条都没有在运行,
而配置声称它在强制运行(Docker 镜像与便携包另外拷了源码树,所以那两条路一直是好的 ——
也正因如此,这个缺口躲过了所有门禁,直到发布后把 wheel 解开看内容才发现)。
自 v2.2.2 以来的变化
- security(本次发布的目的):三件套随包分发;
enforce开着却没清单 → 直接RuntimeError
拒绝启动,报错给三条出路(源码检出生成清单 / 装出来的包漏打说明是构建问题 /
确实要关保护就显式写enforce=false)。非强制模式保持原来的"跳过"语义。
CI 的Build (sdist/wheel)作业新增一步:解开 wheel 断言三件在场 ——
只查pyproject声明不算数,setuptools 行为一变就会重新出现"声明对、产物里没有"。 - ci:
release-please.yml的三处静默失效已修(skip-github-pull-request+ 从无 release PR、
5 个入参被 action 忽略、build-release依赖的 job outputs 从未声明)。
修好后它当场自动开出了下一条 release PR,说明路径通了。 - test:版本位一致性守卫两处自我修正 —— 撤掉
minimum_shell_version == 本次版本
(它是下界,强令相等等于每次发版把上一版壳判死;本版仍是2.2.2),
以及把"装配中间物"scripts/installer/version.json从硬性存在改为若在场则必须等于源
(它被.gitignore排除,硬要求会让 CI 在干净检出上直接报错)。
产物
| 文件 | 大小 (B) | SHA256 |
|---|---|---|
tts_multimodel-2.2.3-py3-none-any.whl |
28,378,301 | 7528654771543b7457634fa3c2db5dc2f2bf28697972adc10fae3d54e6dc3f96 |
tts_multimodel-2.2.3.tar.gz |
28,324,368 | f73015373827df6daccd925f4df139d286fdb6a5433c567c496983b02bd88feb |
SHA256SUMS.txt |
198 | — |
python -m build 产出、twine check 两件均 PASSED。这次发布的验证点本身就落在产物上:
解开 wheel 确认 integrated_app/security/ 里三件套在场,且包内那份清单与仓库里的
integrity_manifest.json 字节一致(sha256 相同);METADATA 也带上
Requires-Dist: einops>=0.7.0 / addict>=2.4.0。发布后再从 Release 页面下载回来比对 SHA256。
不含 ~26 GB 便携分卷与桌面增量包(需 release_gate.ps1 真实构建 + 单独授权;本批无权重变化)。
无 GPG 分离签名:仓库只有 MANIFEST_SIGNING_KEY_B64 一个 secret,gpg-signed-release.yml 只会 notice 跳过。
tag 为注解 tag、不做 GPG 签名(与本仓历史一致)。
已知未覆盖(与 v2.2.2 相同,未变)
- 桌面安装包链路(staging → 7z 分卷 → NSIS)无任何 workflow 覆盖,本机也无从安装验证。
- GPU 冒烟(真加载 + 真合成)在 CI 上恒为
skipped:仓库没有注册 runner,真机验收由维护者本人完成。 - 锁集的全新 venv 真装复验(GB 级下载)仍待执行。
Performance Benchmark门禁仍在制造随机红(同一份代码在 runner 间 mean 摆动 17%–80%,
门槛 20%,且会拿同一 PR 两分钟前的 run 当"历史基线")→ 见 issue #118。