Repository navigation
v3.3.4 — 吸收社区 60 项修复(#359–#419)+ 修「启动自检误清配置错误」
3.3.4 — 吸收社区 60 项修复(#359–#419)+ 修「启动自检误清配置错误」
安装 / 升级
npm install @a9i5k4/dsh-auto-memory@3.3.4界面半边刷新页面即可;宿主半边(
lib/index.js)改动需重启 dsh web 生效。
构建源(可逐项核对)
| 项 | 值 |
|---|---|
| 构建源提交 | 832e256205290a7f9f02024701d0466c4ae2a5cc(GitHub main = tag v3.3.4) |
| npm 包 | @a9i5k4/dsh-auto-memory@3.3.4 |
| tarball shasum | dc75b632e3c11219fea54068f42aecd866dafc53 |
| 文件数 | 246 |
| 平台 / 运行时 | Windows 11 · Node 24.18.0 · npm 11 |
| 全量测试命令 | node tools/run-smoke.mjs |
| 结果 | 399 PASS / 1 FAIL / 0 TIMEOUT / 208.6s |
| 失败项 | smoke-test-a1-mutation-admission —— 既有间歇缺陷,非本版引入 |
| CI(同 sha) | 见 Actions |
本版内容
1. 吸收社区贡献(#357 承诺的落实)
合并并逐块移植 Minervaowl7 的 PR #394 / #420(共 73 个提交,处理 60 项 issue:#359–#419)。
main:「054942b5」→「394fdbe2」→「832e2562」,两个 merge commit 保留在历史上(7e379262+394fdbe2)- 并开启
main分支保护(禁止强推 / 禁止删除 / 对管理员同样生效)。原因:旧推送命令带--force,已把 PR#240 / #243 / #279 / #280 四个已合并 PR 从main世界线抹掉(页面仍显示 Merged,merge commit 已非祖先) - 60 项 issue 全部保持 open,未因合并触发自动关闭(两个 PR 的正文与 73 条 commit message 中
fix #N/closes #N计数为 0)
2. 为什么不是照搬(移植方式可机器复核)
开发树与 main 历史分叉且行尾不同(开发树 CRLF / 仓库历史 LF / .gitattributes 未声明 eol)⇒ 直接三方合并实测 790 冲突;merge.renormalize 只能降到 372 且会改变结果树。改用三分桶整文件法:
| 桶 | 条件 | 数量 |
|---|---|---|
| A | 开发树该文件 ≡ main(忽略行尾)⇒ 整文件取 PR 版(等价于一次干净三方合并的结果) |
84 |
| B | 开发树中不存在 ⇒ 新增 | 56 |
| C | 需判断 | 2 |
| 守恒 A+B+C | 142 = PR 变更路径总数 |
EOL 全程不翻转:17 个 CRLF 保持 CRLF、67 个 LF 保持 LF、53 个新增按 LF、3 个二进制逐字节。
C 桶处置:.gitattributes 保留开发树版(6 条有效规则是 PR 的 1 条的真超集);tools/check-write-contract.mjs 同名异物 ⇒ 重命名共存(PR 版 → check-write-contract-await.mjs,两套检查并存)。
3. 缺陷修复
- 启动自检会静默抹掉真实的配置错误(移植中发现,与 #376/#421 同族):
updateEmbeddingConfigPre在createOnly命中已存在文件时不写盘,却返回与「真写过」同形的对象 ⇒ 调用点engine._jsConfigurationError = ''凭空清掉真实错误。启动约 16s 后跑一次该自检 ⇒ 用户重启后面板显示「正常」,配置其实仍是坏的。现让「未写」可区分(__unchangedByCreateOnly),调用点据此才清空。 - 覆盖 #421(
lujfsd报:唤起注入模式改为 canary-explicit 后重启被重写回 shadow):PR 已引入启动自检createOnly: true,叠加上述修复后启动路径既不覆盖用户档位、也不误清错误状态。 - 诊断证据口径恢复:
semantic-emit: ok ...补回created=/emit=/policy=—— #421 报障者引用的正是这三个字段。
4. 发布物漏拷修复(发版时实测抓到)
.gitattributes此前不在任何复制清单:漏拷会让它从main被删除 ⇒ CI 行尾红、zip 字节契约与 group-digest 锚串失守tools/白名单缺两个被发布树测试引用的写入契约检查器
未吸收项(如实登记)
- #390 / #400 / #405:有修复代码,但在开发树回归中找不到对应套件(其余 57 项都有)。已在各 issue 评论中回报并建议并入相邻组;未替贡献者补测试。
- #179 / #201:两条 [Hold] 继续保持 open(迁移 / 重嵌入代价需产品决策)。已附今日重新复现的证据。
独立验证
git fetch origin && git log --oneline -3 origin/main # 看两个 merge commit
git merge-base --is-ancestor 3d55c4552fc0662ce9f5ba03a62d5f98effb50f0 origin/main \
&& echo "PR#420 在 main 上"
node tools/build-iter5-skin.mjs --check # 期望 SYNC-OK
node tests/smoke/smoke-test-issue368-write-contract-negative.mjs # PR 的写入契约套件
node tests/smoke/smoke-test-i332-write-contract.mjs # 开发树既有契约套件(两者并存)完整变更见 CHANGELOG.md。