Explorar o código

记录 Bot 优化包从历史正式版升级的成品验证结果

Samien hai 1 mes
pai
achega
e26699c133

+ 42 - 0
docs/verification/2026-09-13-bot-message-optimization/DESKTOP-UPGRADE.md

@@ -0,0 +1,42 @@
+# Bot 优化分支安装包升级修复
+
+原测试包 `0.4.16 / c1c17c9` 复用了正式版本号。已发布的桌面包为
+`0.4.16 / 9241531`,来自不同的 Git 构建历史,二者都不包含对方的提交。
+`syncDecision` 因此返回 `unknown`,启动页显示“App 与 Web 的构建先后关系无法确定”。
+之前只验证全新安装和保留较新 Web,没有覆盖这个历史正式包。
+
+本次将分支版本改为 `0.4.17-bot-latency.1`,同步修改 `release.json`、
+`package.json` 和锁文件。版本比较、防降级、事务备份及用户数据处理逻辑保持原实现。
+修复提交为 `49971c62b324d5ee562b99da42ec79af60133489`,产物从干净提交构建。
+这里只生成开发分支安装包,没有创建发布标签、发布版本或合并主线。
+
+## 验证结果
+
+- 原测试包对实际旧正式包返回 `unknown`,新增历史包验收入口能复现失败。
+- 新包对旧正式包返回 `upgrade`;旧 App 对新服务返回 `newer`,保留新服务。
+- 未来正式版 `0.4.17` 对本测试版返回 `upgrade`。
+- `tests/server/desktopSync.test.ts` 的 12 项事务及版本回归测试通过。
+- 成品测试使用独立临时数据目录和 LaunchAgent,先安装并启动旧正式包的完整服务,
+  再启动新 App;确认服务切换到新构建且保留旧服务设置。退出后服务继续运行、
+  保留较新服务、停止后重启及启动错误重试均通过,2/2 项成品测试成功。
+- App 严格签名校验、运行时文件清单校验、DMG 校验通过。arm64,Apple Development
+  签名,未公证。未操作用户已有服务或安装到 `/Applications`。
+
+原始输出与校验值保存在 [results/desktop-upgrade](results/desktop-upgrade)。
+
+## 复现命令
+
+在本 worktree 执行以下命令。`DESKTOP_TEST_PREVIOUS_RUNTIME` 指向旧安装包内完整且
+校验通过的 `Contents/Resources/runtime/web-service`;测试不会修改该目录。
+
+```sh
+NODE_OPTIONS=--no-experimental-webstorage npx vitest run tests/server/desktopSync.test.ts
+npm run desktop:pack -- --config.directories.output=desktop-release/bot-latency-49971c6-20260913
+NODE_OPTIONS=--no-experimental-webstorage \
+  DESKTOP_TEST_EXECUTABLE='/Users/samien/git/bot-message-latency/yaoyao/desktop-release/bot-latency-49971c6-20260913/mac-arm64/夭夭.app/Contents/MacOS/夭夭' \
+  DESKTOP_TEST_PREVIOUS_RUNTIME='/Users/samien/git/yaoyao/desktop-release/v0.4.16/mac-arm64/夭夭.app/Contents/Resources/runtime/web-service' \
+  node --test --test-concurrency=1 desktop/service-sync.test.mjs desktop/startup-feedback.test.mjs
+```
+
+省略 `DESKTOP_TEST_PREVIOUS_RUNTIME` 时继续验证全新安装。版本含预发布后缀时,
+成品测试先提取基础版本再生成较新服务夹具,避免生成含 `NaN` 的版本号。

+ 1 - 0
docs/verification/2026-09-13-bot-message-optimization/results/desktop-upgrade/SHA256SUMS

@@ -0,0 +1 @@
+b57e1d2860024ea5306b22d5a7a00a36e16934184e9496f3173d16b96f9b1699  Yaoyao-0.4.17-bot-latency.1-arm64.dmg

+ 31 - 0
docs/verification/2026-09-13-bot-message-optimization/results/desktop-upgrade/reproduction.txt

@@ -0,0 +1,31 @@
+✖ App first launch installs an independent Web; Web remains up after quit and a newer Web is retained (521.238834ms)
+ℹ tests 1
+ℹ suites 0
+ℹ pass 0
+ℹ fail 1
+ℹ cancelled 0
+ℹ skipped 0
+ℹ todo 0
+ℹ duration_ms 692.907916
+
+✖ failing tests:
+
+test at desktop/service-sync.test.mjs:45:1
+✖ App first launch installs an independent Web; Web remains up after quit and a newer Web is retained (521.238834ms)
+  AssertionError [ERR_ASSERTION]: the packaged App must unambiguously upgrade the historical release
+  + actual - expected
+  
+  + 'unknown'
+  - 'upgrade'
+  
+      at TestContext.<anonymous> (file:///Users/samien/git/bot-message-latency/yaoyao/desktop/service-sync.test.mjs:69:14)
+      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
+      at async Test.run (node:internal/test_runner/test:1404:7)
+      at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
+    generatedMessage: false,
+    code: 'ERR_ASSERTION',
+    actual: 'unknown',
+    expected: 'upgrade',
+    operator: 'strictEqual',
+    diff: 'simple'
+  }

+ 6 - 0
docs/verification/2026-09-13-bot-message-optimization/results/desktop-upgrade/runtime-verification.json

@@ -0,0 +1,6 @@
+{
+  "version": "0.4.17-bot-latency.1",
+  "commit": "49971c62b324d5ee562b99da42ec79af60133489",
+  "dirty": false,
+  "artifactDigest": "fbd8714f687ad91f650b910d84e1fb256df80d2141243096e59825f88999d84b"
+}

+ 11 - 0
docs/verification/2026-09-13-bot-message-optimization/results/desktop-upgrade/upgrade-tests.txt

@@ -0,0 +1,11 @@
+Historical upgrade fixture: 0.4.16 92415312524c564a58056d7a0f2a06fdbb484ea6 -> 0.4.17-bot-latency.1 49971c62b324d5ee562b99da42ec79af60133489
+✔ App first launch installs an independent Web; Web remains up after quit and a newer Web is retained (15934.493208ms)
+✔ built startup page shows a real helper error and Retry recovers into the Web (4000.408459ms)
+ℹ tests 2
+ℹ suites 0
+ℹ pass 2
+ℹ fail 0
+ℹ cancelled 0
+ℹ skipped 0
+ℹ todo 0
+ℹ duration_ms 20273.384708

+ 19 - 0
docs/verification/2026-09-13-bot-message-optimization/results/desktop-upgrade/verification.json

@@ -0,0 +1,19 @@
+{
+  "version": "0.4.17-bot-latency.1",
+  "bundleId": "cn.samien.yaoyao.desktop",
+  "commit": "49971c62b324d5ee562b99da42ec79af60133489",
+  "branch": "codex/bot-message-latency",
+  "architecture": "arm64",
+  "sha256": "b57e1d2860024ea5306b22d5a7a00a36e16934184e9496f3173d16b96f9b1699",
+  "bytes": 203320508,
+  "signing": "Apple Development",
+  "notarized": false,
+  "checks": {
+    "historicalUpgrade": true,
+    "newerServiceRetained": true,
+    "packagedTests": 2,
+    "runtimeIntegrity": true,
+    "signature": true,
+    "dmgIntegrity": true
+  }
+}