chore(integration): snapshot local main worktree

This commit is contained in:
inman
2026-08-31 10:23:21 +08:00
parent 48a9189939
commit 33fb31fb28
116 changed files with 8108 additions and 3026 deletions

View File

@@ -4,16 +4,14 @@
## 发布边界
- 正式包固定使用仓库锁定的 Pi 版本和生产依赖闭包。Electron Main 从安装目录中的 `resources/pi-runtime` 解析运行时、扩展、Manifest 与编码 Skills缺失、版本漂移、开发路径泄漏或产品自有的 OpenCode runtime/资源残留均阻断发布。锁定的 `@earendil-works/pi-ai` 生产包会静态导入其内置 `providers/opencode*` 模块;这些上游文件必须在报告中单独列出,不能冒充旧 Makelore OpenCode runtime也不能为制造“零命中”而破坏 Pi 闭包。
- 正式包固定使用仓库锁定的 Pi 版本和生产依赖闭包。Electron Main 从安装目录中的 `resources/pi-runtime` 解析运行时、扩展、Manifest 与编码 Skills,并从 `resources/pi-agent-server.mjs` 启动共享 Agent Server任一资源缺失、版本漂移、开发路径泄漏或产品自有的 OpenCode runtime/资源残留均阻断发布。锁定的 `@earendil-works/pi-ai` 生产包会静态导入其内置 `providers/opencode*` 模块;这些上游文件必须在报告中单独列出,不能冒充旧 Makelore OpenCode runtime也不能为制造“零命中”而破坏 Pi 闭包。
- Renderer 只使用 Main-owned Host API 和产品 Conversation 契约,不读取 Pi wire 类型,也不直接启动 worker、访问本地运行时地址或接触 Provider 凭证。
- 产品保留既有 `niancode` 应用 id、协议、数据目录和项目配置兼容标识;这不代表旧 OpenCode 运行时、路由或资源仍被携带
- 项目配置和 Conversation 元数据只使用 `.makelore`;不得携带 `.niancode` / `.opencode` 项目探测、迁移、兼容路由或提示状态。应用 id、桌面协议、全局用户数据路径与服务端请求头是独立发布契约,不属于项目数据格式
- 正式产品界面不提供 share/unshare、revert/unrevert、todos 或全局运行时控制。项目分支只创建新的 Conversation 历史,不表示文件回滚。
## Conversation 兼容性
## Conversation 数据边界
升级前已有的 OpenCode Conversation 数据继续保留,项目首次进入 Pi 会显示一次迁移说明,但 Pi 不导入、续写或改写这些旧 Conversation。升级后新建的 Pi Conversation 使用新的本地契约;旧版本不能读取或续写它们
因此,旧 Conversation 的“保留”是可回滚的数据边界,不是跨运行时续写兼容。不得通过复制 Session、混用资源目录或在同一安装中切换旧/新 runtime 来绕过该边界。
产品只支持 Pi Conversation。项目元数据分别写入 `.makelore/project.json``.makelore/conversations.json`Pi Session 由 Main-owned registry 绑定;运行时不探测、导入、续写或改写 OpenCode Conversation也不提供旧格式提示与确认接口。不得通过复制 Session、混用资源目录或在同一安装中切换不同 runtime 来绕过该边界
## 必须验证的正式产物
@@ -36,7 +34,7 @@ pnpm run smoke:pi:real -- --app-exe <final-product-executable> --samples 5 --rep
pnpm run perf:pi:release -- --app-exe <final-product-executable> --samples 5 --report <performance-report.json>
```
产物验证必须确认版本与 Node engine、生产依赖闭包、扩展、Manifest、编码 Skills、`resolve/get_state`、无产品自有 OpenCode runtime/资源、上游 Pi provider 例外清单以及无构建工作区绝对路径。Smoke 必须从最终产品可执行文件启动最终 `resources/pi-runtime`,覆盖 session、prompt、tool、abort、settle、reopen、双 worker 重叠与隔离、子 Agent 和 shutdown。性能报告必须记录 p50/p95/max/样本数组、RSS、Main→Renderer IPC/提交延迟和 Git commit并覆盖 Spec 17.3 的十个场景。
产物验证必须确认版本与 Node engine、生产依赖闭包、共享 Agent Server、扩展、Manifest、编码 Skills、`resolve/get_state`、无产品自有 OpenCode runtime/资源、上游 Pi provider 例外清单以及无构建工作区绝对路径。Smoke 必须从最终产品可执行文件启动最终 `resources/pi-agent-server.mjs``resources/pi-runtime`,覆盖 session、prompt、tool、abort、settle、reopen、同一 Server 内多线程重叠与隔离、单线程关闭、Server 崩溃重启、独立子 Agent 进程和 shutdown;四条父 Conversation 并发时应只有一个父 Agent Server 进程。性能报告必须记录 p50/p95/max/样本数组、RSS、Main→Renderer IPC/提交延迟和 Git commit并覆盖 Spec 17.3 的十个场景。
## Provider 验证的准确含义
@@ -55,12 +53,12 @@ pnpm run perf:pi:release -- --app-exe <final-product-executable> --samples 5 --r
## 整版本回滚
Pi 与旧运行时之间只支持完整应用版本回滚,不支持运行时组件级回滚或混装:
Pi 版本之间只支持完整应用版本回滚,不支持运行时组件级回滚或混装:
1. 停止发布和自动更新,完整备份目标用户数据目录及项目中的 `.niancode` 数据。
2. 退出 Makelore确认没有 Pi worker 或安装器进程仍在运行。
3. 安装上一完整、已验证的应用版本;不得把 runtime 覆盖到新版本 `resources`,也不得保留新旧文件拼接后的安装目录。
4. 旧版本只继续使用其原本可读的旧 Conversation。升级后新建的 Pi Conversation 保留在磁盘中,但对旧版本不兼容,不能读取或续写
5. 需要重新升级时安装完整 Pi 版本并重新执行该版本的项目迁移与一次性说明流程;不要在不同版本间复制 Session 文件
1. 停止发布和自动更新,完整备份目标用户数据目录及项目中的 `.makelore` 数据。
2. 退出 Makelore确认没有 Pi Agent Server、子 Agent 或安装器进程仍在运行。
3. 安装上一完整、已验证且支持当前 `.makelore` schema 的应用版本;不得把单独的 runtime 覆盖到 `resources`,也不得保留不同版本文件拼接后的安装目录。
4. 回滚后验证项目配置、Conversation 元数据和 Pi Session 绑定均可正常读取;不要在版本间手工复制或编辑 Session 文件
5. 需要重新升级时安装完整 Pi 版本并重新执行该版本的正式产物验证与 smoke
回滚完成后,应验证应用标识与用户数据目录未改变、旧 Conversation 仍可按旧版本能力读取、Pi Conversation 字节未被旧版本改写。任何需要手工编辑 Conversation 文件才能恢复的情况都应停止操作并保留备份。
回滚完成后,应验证应用标识与全局用户数据目录未改变、`.makelore` 项目数据未被意外改写。任何需要手工编辑项目或 Conversation 文件才能恢复的情况都应停止操作并保留备份。