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

Merged
Kronecker merged 151 commits from feat/phase3-completion into main 2026-09-10 01:16:31 +08:00
Showing only changes of commit d8f416818f - Show all commits
@@ -851,3 +851,13 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 同一真实服务用例验证带现有本地文件首次绑定空 Vault 时,提交前服务器 revision 为 0,提交后 delete revision 仍为 0。解绑前冻结旧 operation ID,重绑同一空远端后产生新 ID;旧 binding 明确返回 `SYNC_BINDING_CHANGED`,服务器最终仅出现新 ID。独立状态机 oracle 另以 20 轮轮换 `local/remote/copy` 并重开 Workspace,覆盖同目标 rename 的三种持久化选择。 - 同一真实服务用例验证带现有本地文件首次绑定空 Vault 时,提交前服务器 revision 为 0,提交后 delete revision 仍为 0。解绑前冻结旧 operation ID,重绑同一空远端后产生新 ID;旧 binding 明确返回 `SYNC_BINDING_CHANGED`,服务器最终仅出现新 ID。独立状态机 oracle 另以 20 轮轮换 `local/remote/copy` 并重开 Workspace,覆盖同目标 rename 的三种持久化选择。
- 提交 `a5e5122` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`commit 为 `a5e512279c76886cde8d8c8b011a297570ab0dbd`,8 项断言通过,耗时 33734 ms。证据目录 `G:\OSProject\OpenNexus-acceptance\s03-a5e5122-535b10624f944f99a2febeebd0e9a296-report\`,报告标记 `contains_credentials=false` - 提交 `a5e5122` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`commit 为 `a5e512279c76886cde8d8c8b011a297570ab0dbd`,8 项断言通过,耗时 33734 ms。证据目录 `G:\OSProject\OpenNexus-acceptance\s03-a5e5122-535b10624f944f99a2febeebd0e9a296-report\`,报告标记 `contains_credentials=false`
- 最终 desktop Rust 全目标 154 通过、15 ignored`.build/s03-rust-full.log`),包括既有 S-01 与新增 S-03 的真实服务回归;全目标 Clippy `-D warnings` 通过(`.build/s03-clippy-final.log`),runner 6 项自测、Python 编译与 Rust 格式检查通过。S-03 可记为通过;分类 schema、PostgreSQL/MinIO 并发、鉴权/就绪、备份恢复与性能门分别属于 S-08、S-04~S-07/S-09,仍未完成。 - 最终 desktop Rust 全目标 154 通过、15 ignored`.build/s03-rust-full.log`),包括既有 S-01 与新增 S-03 的真实服务回归;全目标 Clippy `-D warnings` 通过(`.build/s03-clippy-final.log`),runner 6 项自测、Python 编译与 Rust 格式检查通过。S-03 可记为通过;分类 schema、PostgreSQL/MinIO 并发、鉴权/就绪、备份恢复与性能门分别属于 S-08、S-04~S-07/S-09,仍未完成。
## 增量:S-08 同步分类与逻辑记录兼容生产验收
- 补齐对话、已结束 Agent 历史、一般 Provider 参数和安装清单四类严格逻辑记录,加上既有人设与布局形成六个默认关闭的独立范围开关。所有记录使用 `opennexus-records/v1` 白名单路径、schema 1 信封、32 位小写十六进制业务 ID 和逐层未知字段拒绝;运行中 Agent 状态不能编码,Provider 不能携带 credential_id,安装清单恰好只含包类型、ID、来源、版本和 SHA-256。
- Workspace schema 升至 13。12→13 在事务迁移前生成完整可读 SQLite 备份,保留原 persona/layout 选择,新增四类全部初始化为关闭;绑定期间不能改变范围。上传捕获、外部扫描、初始对账、对象下载和提交前均复核范围,旧排除作业不能绕过选择。
- 新增真实 Uvicorn Sync 服务与两台 Rust 客户端测试。默认范围只产生 6 个远端当前项并在空目标完整往返:Markdown、附件、任务、用户 Skill、主题和编辑器偏好;六类可选记录在未选择时远端 revision 为 0。日志、缓存、模型、索引、向量和普通 Provider JSON 均未出现在服务端。全部选择后 12 个默认及可选项完整落地,安装记录仍只有五个非授权字段。
- schema 单测逐类注入 api_key/未知字段并拒绝;Provider 的 credential_id 和安装清单的 permissions、granted_permissions、enabled、trusted、device_grants、package_path 全部在 journal 前拒绝。远端 schema 2 写入返回 `RECORD_SCHEMA_UNSUPPORTED`,本地文件与待上传队列保持不变。
- 提交 `9729751` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`commit 为 `97297519d7ac0c85d5edd111caa6bae44e744d70`,8 项断言通过,耗时 9276 ms。证据目录 `G:\OSProject\OpenNexus-acceptance\s08-9729751-8a9fa683692349029898835bbe10fff3-report\`,报告标记 `contains_credentials=false`
- 最终 desktop Rust 全目标 158 通过、15 ignored,包含既有 S-01/S-03 和新增 S-08 的真实服务回归;全目标 Clippy `-D warnings` 通过,前端 103 个测试文件共 536 项通过,runner 6 项自测、Python 编译、Rust 格式和 Markdown 链接检查通过。S-08 可记为通过;PostgreSQL/MinIO 并发、鉴权/就绪、备份恢复与性能门 S-04~S-07/S-09 仍未完成,整体生产化目标保持未完成。