Skip to content

v3.3.4 — 吸收社区 60 项修复(#359–#419)+ 修「启动自检误清配置错误」

Choose a tag to compare

@Aik358 Aik358 released this 14 Oct 15:07
· 19 commits to main since this release

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。