feat: 完成 OpenNexus 第三阶段核心功能与生产化基础 #45

Merged
Kronecker merged 151 commits from feat/phase3-completion into main 2026-09-10 01:16:31 +08:00
2 changed files with 11 additions and 1 deletions
Showing only changes of commit 28f7d9f4e6 - Show all commits
@@ -933,3 +933,13 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 无可用备份的损坏库固定拒绝解锁且不重建或覆盖原文件;同一进程中的独立 Workspace 仍可创建、保存、读取本地笔记并核对文件摘要,凭据故障不阻断编辑。
- 提交 `101c8070b9b83e809610e80a7c3e51d2537c8ced` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`,5 项断言通过,耗时 54583 ms。证据目录 `H:\OpenNexus-acceptance\b03-101c807-d2b194f8c8454fbbb43b28b47468a6e3-report\`,报告标记 `contains_credentials=false`;隔离数据根已删除。
- 五项 exact Rust oracle、全目标 Clippy `-D warnings`、runner 7 项测试、Python 编译、Rust 格式和差异检查均通过;D-03 前一轮完整 Rust 回归也覆盖改动前的全部其他目标。B-03 可记为通过;其余 13 个生产验收 ID 尚未登记,整体生产化目标保持未完成。
## 增量:B-04 凭据迁移断电恢复与确认清理生产验收
- Fernet 到 Stronghold 的迁移现在持久记录 `backed_up/copy/verify/ownership switch` 状态;源目录的所有权标记与 Host 侧迁移日志包含同一源摘要、记录数、密钥来源和迁移 ID。迁移完成后若源摘要、记录数、密钥来源或迁移身份变化,Host 拒绝再次导入;旧 Python 凭据库看到所有权标记后拒绝读取、查询、写入和删除。
- 显式清理先由原生文件选择器读取迁移预览,再由原生确认对话框展示记录数、源 SHA-256 和删除范围。WebView 不提供路径或确认值。确认前旧 `credentials.json`、本地 `master.key` 和本次迁移的加密备份均保留;确认后只删除本次迁移管理的普通文件和备份目录,环境密钥及环境模式下已有的非托管 `master.key` 保持不变。
- 清理授权在删除前持久化为 `cleanup_authorized`,删除完成后写入 `cleanup_confirmed`。源、密钥、备份、所有权标记和日志均拒绝符号链接或 Windows 重解析点;备份中的源摘要和由 Stronghold 会话封存的旧密钥在删除前重新核对。六个清理边界的中断均可幂等恢复。
-`backed_up``copied``verified``ownership_committed``switched` 五个持久边界各启动并强制终止 20 个真实测试进程,共 100 次。每轮重开后只观察到完整旧状态或完整新状态,再次迁移后 3 条凭据逐值相等、记录数恰为 3;累计核对 300 条,重复数为 0。开发预跑耗时 893.67 秒。
- 提交 `52f5ee58121b8bdbff629e8644cea1324b638507` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`,6 项断言通过,耗时 969160 ms。指标为 5 个迁移边界、100 次硬终止、300 条恢复记录、6 个清理边界、0 个残留受管理对象、0 次外部密钥变化、4 次旧版本写入/读取拒绝和 1 条原生确认边界。证据目录 `H:\OpenNexus-acceptance\b04-52f5ee5-3f49df5bae9a416b8d98fe9d36c76e92-report\`,报告标记 `contains_credentials=false`;隔离数据根已删除。
- 全目标 Clippy `-D warnings`、凭据设置界面 3 项、runner 7 项、旧 Python 所有权拒绝测试、Rust 格式与 Python 编译通过。B-04 可记为通过,正式验收累计 18/30;按用户要求,其余 12 项长时生产验收暂缓,先交付可访问的 OpenNexus Demo 与 Sync Server 前端页面。
@@ -24,4 +24,4 @@ python scripts/phase3-production-acceptance.py `
报告目录包含 `summary.json``case-manifest.json``junit.xml``cases/<ID>.json` 和脱敏的 `logs/<ID>.log`。摘要记录 commit、各锁文件 SHA-256、配置摘要与已提供安装产物摘要。日志将仓库、数据根、报告根、用户主目录和配置声明的秘密值替换为占位符,并限制为 10 MiB。报告目录必须为空,避免单例复跑覆盖原始证据。
当前 runner 与失败闭合行为已实现,A-02/A-03 Sidecar、B-01/B-02/B-03 凭据、C-03 沙箱许可、D-01/D-03 扩展包与事务、S-01/S-02/S-03/S-08 Sync 客户端以及 S-04/S-05/S-06/S-07/S-09 Sync 服务 driver 已登记;其余 13 个生产验收 ID 尚未登记,运行时会生成 `NOT_IMPLEMENTED` 证据并退出 1。这用于阻止误报,不是这些用例的验收通过。
当前 runner 与失败闭合行为已实现,A-02/A-03 Sidecar、B-01/B-02/B-03/B-04 凭据、C-03 沙箱许可、D-01/D-03 扩展包与事务、S-01/S-02/S-03/S-08 Sync 客户端以及 S-04/S-05/S-06/S-07/S-09 Sync 服务 driver 已登记;其余 12 个生产验收 ID 尚未登记,运行时会生成 `NOT_IMPLEMENTED` 证据并退出 1。这用于阻止误报,不是这些用例的验收通过。