# [recycle] mnote 单仓维护边界约定

> 更新时间：2026-04-14
>
> 主仓：`/mnt/Data1T/mnote`
>
> 历史仓：`/mnt/Data1T/mnote-rust`

## 1. 主结论

- 只保留 `/mnt/Data1T/mnote` 作为启动、规划、保存、验证的唯一主仓。
- `/mnt/Data1T/mnote-rust` 只作为历史资产来源，不再承担主执行入口。
- 任何新设计、执行清单、架构说明都优先写入 `/mnt/Data1T/mnote/design/` 或 `/mnt/Data1T/mnote/rust/design/`。

## 2. 主仓执行入口

- 根目录脚本入口只认 `/mnt/Data1T/mnote/package.json` 与 `/mnt/Data1T/mnote/scripts/`。
- 当前 `package.json` 仅通过 `node scripts/*.js` 暴露仓库级入口，没有任何脚本要求先进入 `mnote-rust`。
- 如需调用 Rust，统一使用 `cargo --manifest-path /mnt/Data1T/mnote/rust/Cargo.toml ...`，不从历史仓发起 Cargo 命令。
- 当前 `scripts/desktop-hot.js` 已固定从主仓根目录解析 `.env.all`，并以 `wolai-frontend/`、`wolai-backend/` 作为唯一联调入口。

## 3. `mnote-rust` 历史资料分类

### 3.1 核心规范

这些内容可作为协议与设计参考，但主线副本以 `/mnt/Data1T/mnote/rust/` 为准：

- `design/blueprint/`
- `design/core/`
- `crates/core-domain/`
- `crates/core-protocol/`
- `crates/event-log/`
- `crates/storage-convex-bridge/`
- `crates/index-fts/`

### 3.2 历史阶段

这些内容保留为阶段记录，不作为当前实现依据：

- `design/phases/**`
- `design/execution/**`
- `design/UI/**`
- `design/mindmap/**`

### 3.3 参考实现

这些内容可用于盘点边界、提取协议或核对交互，但不能整块复制覆盖主仓：

- `app/**`
- `components/**`
- `lib/**`
- `convex/**`
- `infra/onlyoffice/**`
- `crates/mnote-cli/`
- `crates/adapter-onlyoffice/`
- `crates/adapter-mindmap/`
- `crates/adapter-legacy-mnote/`

### 3.4 错误方向

以下内容明确不进入主仓主线：

- 对象页壳与试验页：`app/page.tsx`、`app/onlyoffice/page.tsx`、`app/documents/**`
- 第二套导航壳：`components/sidebar/sidebar.tsx`
- 诊断与构建产物：`.next/diagnostics/**`、`.next/**`、`.tmp/**`
- 仅用于历史 smoke/夹具的目录：`.tmp/phase7-test-fixtures/**`

## 4. 主仓默认不动目录

除非当前任务明确要求接线或修复，否则默认不扩写以下目录：

- `/mnt/Data1T/mnote/wolai-frontend/`
- `/mnt/Data1T/mnote/wolai-backend/`
- `/mnt/Data1T/mnote/infra/convex/`
- `/mnt/Data1T/mnote/src/components/onlyoffice/`
- `/mnt/Data1T/mnote/recycle/`

## 5. 最小维护约定

### 5.1 Workspace 责任面

- 入口文件：`/mnt/Data1T/mnote/rust/Cargo.toml`、`/mnt/Data1T/mnote/rust/Cargo.lock`
- 维护范围：`/mnt/Data1T/mnote/rust/crates/*`
- 要求：新增 crate、依赖调整、共享协议变更，必须先在主仓 workspace 内完成，不得回写到历史仓再反向复制。

### 5.2 Bridge 责任面

- 入口文件：`/mnt/Data1T/mnote/wolai-frontend/src/lib/documents/bridge.ts`
- 相关边界：
  - `/mnt/Data1T/mnote/wolai-frontend/src/lib/documents/metadata-command-adapter.ts`
  - `/mnt/Data1T/mnote/wolai-frontend/src/lib/documents/save-command-adapter.ts`
  - `/mnt/Data1T/mnote/wolai-frontend/src/app/api/documents/**`
  - `/mnt/Data1T/mnote/wolai-frontend/src/app/api/sidebar/route.ts`
  - `/mnt/Data1T/mnote/wolai-frontend/convex/bridgeLogs.ts`
- 要求：新 command/query 先收口协议边界，再决定是否继续下沉到 Rust crate。

### 5.3 接入链责任面

- C1 页面元信息：`src/app/(app)/documents/[id]/page.tsx`、`src/components/editor/document-content.tsx`
- C2 Sidebar 聚合：`src/components/sidebar/**`、`src/hooks/use-convex-sidebar-data.ts`、`src/lib/sidebar-data.ts`
- C3 正文保存：`src/components/editor/blocknote-editor.tsx`、`src/app/api/documents/save/route.ts`
- Phase D 边界：`src/components/editor/blocks/MindmapBlock.tsx`、`src/app/onlyoffice/**`、`src/app/api/onlyoffice/**`
- 要求：优先改主仓现有链路，不复制历史仓页面壳替换现实现。

## 6. 禁止误复制清单

- 不把 `mnote-rust` 当成新的主执行仓。
- 不复制第二套 Next 前端壳、对象页壳、diagnostics 页、smoke 页进入主线。
- 不通过软链接、硬链接、跨仓路径偷接来伪装“已迁移”。
- 不在主仓根目录散落多个 Rust 源码根。
