Skip to content

feat(vnext): ship the Electron + Node architecture upgrade - #90

Draft
Dailin521 wants to merge 32 commits into
mainfrom
V1
Draft

feat(vnext): ship the Electron + Node architecture upgrade#90
Dailin521 wants to merge 32 commits into
mainfrom
V1

Conversation

@Dailin521

@Dailin521 Dailin521 commented Aug 27, 2026

Copy link
Copy Markdown
Owner

目的 / Why

按 Accepted vNext Electron + Node 架构基线,在保留 checkpoint 历史的单一 Draft PR 中交付共享 Node Core、兼容 CLI、重建 Web UI、现代 Electron 桌面端、跨运行时安全合同,以及 release-ready 打包/CI 工程。

本 PR 使用 ADR-0011 记录的单分支/单最终 PR 例外。它是代码审查与内部验收 PR,不是公开发布授权,也不授权合并。

关联基线 / Baseline

  • docs/VNEXT_ELECTRON_NODE_ARCHITECTURE_ZH.md
  • docs/migration/VNEXT_MIGRATION_EXECUTION_INDEX_ZH.md
  • docs/adr/0011-v1-single-branch-single-final-pr.md

改动 / Changes

  • C0–C3:冻结治理、外部合同、JSON CLI、Prepare/Apply、OperationCoordinator,以及 Codex Home → State DB 双层跨运行时锁。
  • C4:建立 apps/*packages/* workspace;根 npm 包和原 CLI bin 保持 Node >=16.20.2 兼容。
  • C5:以共享 React App UI 重建 Web,提供八个现代双语页面、三主题、键盘/焦点/reduced-motion/200% 缩放,并维持 pairing、Origin、64 KiB、Profile revision 与 History 正文边界。
  • C6–C8:落实 Electron Renderer → Preload → Main → Utility Process → Core;默认拒绝 Node、任意 IPC、导航和权限,提供只读、Sync/Switch、Restore v2、Watch、Diagnostics 与 Main-only Update 状态机。
  • C9–C10:四原生目标候选、ABI rebuild、ASAR/fuse/native-driver 审计、SBOM/checksum、最终容器 smoke、strict ci-gate 与 release-false-only C10 evidence bundle。
  • 更新安装增加编译期 releaseAuthorized fail-closed 门;安装前由 Main 再次向 Utility 查询 Watch 状态。外部 CLI/Web/Watch writer 的跨运行时维护租约仍列为发布阻断项。
  • Restore relocation 完成共享 UI → Preload → Main → Utility → Core 的隐藏窗口闭环;Diagnostics token 具备 TTL、上限、撤销、单次消费和物理目标去重。
  • Watch 按物理 Codex Home 去重并覆盖并发 start、stopped history 上限及多 active watcher 场景。
  • 根 npm tarball smoke 执行真实 sync --json → backup → drift → restore --json
  • checksum 固定的正式 v0.4.1 Automation Release 二进制现已在 hosted Windows runner 上真实产出 metadata v2 backup,并由当前 Node Restore 完成 synthetic round-trip;该证据不外推为 GUI/Electron/Beta/真实用户升级验证。
  • 共享 UI 明确区分 Desktop 与 Local Web surface;新版 Windows/Electron 使用现代界面,旧 .NET UI 不做视觉重构。
  • 保留可构建、可测试的 .NET Windows/macOS 实现;Electron 为交接后的主桌面目标,.NET 为 Legacy fallback,当前候选不冒充公开替代已完成。

Checkpoint review order

  1. 29c84ec C0 governance and baseline
  2. f008d0e C1 public API and structured errors
  3. 13163f5 C2 CLI JSON contract
  4. 166f6ff C3 Plan/Apply and dual locks
  5. d6b0fef C4 workspace and Core clients
  6. 8a53ce8 C5 shared UI and Web migration
  7. 6820858 C6 Electron secure read-only runtime
  8. 1ec27a5 C7 Electron Sync/Switch
  9. 1673147 C8 Restore/Watch/Diagnostics/Update
  10. 73256f3 C9 release candidate gates
  11. c1a59c9 C10 evidence handoff
  12. c63a403 C10 cross-runtime actual writers and surface-aware UI
  13. 6d53196 C10 candidate-role documentation and final evidence snapshot
  14. eb4e273 C10 updater, Restore, Watch, Diagnostics and compatibility hardening
  15. f6a7c85 CI: bind packaged desktop CDP startup
  16. d0d3308 C10: verify hosted historical Release backups
  17. de2fab8 C10: harden Electron cancellation lifecycle

中间 hardening checkpoints 均保留在历史中。如未来获得合并授权,请使用 merge commit,不 squash,以保留阶段证据。当前禁止合并。

版本、候选角色与发布边界

Root/Desktop source manifests 当前统一为 1.0.0。Source head de2fab8032341cf52f0edc673197b95105e0880f 的完整 PR merge-ref 门禁已通过;这只表示“经 CI 验证的源版本”,不构成 Beta、Stable、公开发布、默认更新入口或可下载产品声明。

V1 候选在界面和文档中显示“Electron 新版主桌面端候选 / .NET 交接后 Legacy fallback 目标”。当前公开 Release 仍是 .NET v0.4.1;Electron 尚未合入 main,没有公开下载、签名、公证或生产更新通道。

本 PR 未执行且不授权:

  • 合并到 main
  • tag
  • npm publish 或 GitHub Release
  • Windows/macOS 代码签名或 macOS notarization
  • 更新 metadata、更新通道、下载/重启升级验证
  • 删除 .NET 实现

验证 / Validation

Final required CI

C10 assertions 全部通过:linear checkpoint chain、evidence hashes、source/base binding、13 类 required jobs、four-target candidate completeness、candidate commit identity、正式历史 Release backup、release unauthorized policy 与 redaction scan。Bundle 明确记录 releaseAuthorized/tag/npm/githubRelease/signed/notarized/updateMetadata/crossVersionUpgrade=false

正式历史 Release 证据固定到 v0.4.1 Release ID 366935386、tag object 1971fd52c8b9f9e24835dd2b4719137e73b36d77、commit 75f45756cf732333e7c52f45c8cd1b183291a029、Automation ZIP SHA-256 6a8266a38567c56f9c8bb2662a84ac5a7b739c837a92cc4be0f4fdef76058616 与 EXE SHA-256 e1ed5a75018833ecc80cd2da90b185c9573efcf4d07e13baef2c206fb6b70c64。测试仅使用临时 synthetic Home/SQLite/auth canary;EXE 为 NotSigned,并不构成签名或生产升级证据。

前一轮 run 33150180709 保留了可审计失败:Windows Electron 的 cancel-before-backup 和一个 Utility crash 场景分别耗尽 90/45 秒,而 hosted formal Release fixture 已成功。de2fab8 没有用 rerun 或放宽 timeout 掩盖失败,而是增加取消确认的单飞指数退避、operationId 建立后的再次确认,以及 test-only crash pending 的同步 settle;新的完整 run 33152377789 通过 26/26。

Local pre-push evidence

  • npm test: 378/378 passed。
  • Core Client contracts: 20/20;Desktop contracts/unit: 73/73。
  • dotnet test CodexProviderSync.sln --configuration Release --no-restore: 417 passed,1 environment skip(真实 WSL)。
  • hidden Electron full E2E: 16 passed,1 environment skip(真实 WSL UNC)。
  • 两个原远端超时场景在隐藏窗口连续 5 轮:10/10 passed,且未增加测试 timeout。
  • Web build/E2E、production/unpacked bundle smoke、root tarball lifecycle、cross-runtime fixture、historical tag/formal Release fixture 均通过。
  • production audit(moderate+)与完整依赖树 audit(high+)均为 0 vulnerability。
  • Electron 验证使用 CPS_DESKTOP_WINDOW_DISPLAY=hidden,没有占用主屏。
  • 验证只使用 synthetic/temp fixture;未读取真实 auth.json、凭据、消息正文或用户数据库。

Draft blockers / 尚未授权或尚未闭合

  • PR 必须保持 Draft;用户已明确禁止合并。
  • PR merge-ref 证据不能替代未来实际 main commit;若以后获准合并,必须在最终 main SHA 上重跑 required CI 与 C10 bundle。
  • 真实 Windows WSL UNC 场景仍需在健康的真实 WSL distribution 上闭合;本机注册的 Ubuntu 缺失 ext4.vhdx,不得把明确 Skip 当作通过。
  • Main 的更新安装门尚不能覆盖外部 CLI/Web/Watch writer;公开更新前必须定义并验证一个跨运行时 maintenance lease。
  • Phase 6 仍缺真实 Beta/用户环境证据;候选 CI 不能外推为 Stable。
  • 候选产物故意未签名、未公证;签名、公证与跨版本更新验证需另行授权。
  • 未获得公开发布授权:不得创建 tag、发布 npm/GitHub Release 或更新通道。
  • .NET 删除不属于本 PR;稳定版交接后仍至少保留两个维护周期,再另立 Phase 7/PR。

检查清单 / Checklist

  • C0–C10 checkpoint commits 保留,禁止 squash
  • 外部行为变化同步更新合同与 Fixture/测试
  • source 1.0.0 在当前 head 上通过 required CI
  • 四原生目标 candidate 与 aggregate 成功
  • checksum 固定的正式 v0.4.1 Automation backup → 当前 Node Restore 证据成功
  • C10 release-false-only 脱敏 evidence bundle 成功
  • strict ci-gate 成功
  • .NET 实现保留、可构建、可测试
  • 未创建 tag、npm/GitHub Release、签名、公证或更新通道
  • PR 保持 Draft、未合并
  • 真实 WSL UNC 与真实 Beta 门禁闭合
  • 跨运行时 update maintenance lease 闭合
  • 获得明确合并授权并在合入后的 main SHA 重跑证据
  • 获得独立发布授权并完成签名、公证与升级验证

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant