chore: align local-first control plane and editor fixes
- wire SQLite control-plane access/session paths into Rust web local-folder routes - preserve local Markdown attachment semantics across upload, reload, and secondary-pane resource tabs - refresh design governance docs, Reasonix task templates, and bug records - retire root .mcp.json local MCP config
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Reasonix Worker A:SQLite control-plane store 骨架
|
||||
|
||||
Project root: `/mnt/Data1T/mnote`
|
||||
|
||||
你不是独自在代码库中工作。其他 worker 可能并行修改 auth、access policy 或迁移脚本。不要还原、覆盖或清理不属于你任务范围的改动。不要提交 git。
|
||||
|
||||
## 背景
|
||||
|
||||
上位设计稿:
|
||||
`design/02-convex-rust-long-term-architecture/process/2-8-convex-replace-with-rust-sqlite-control-plane-v1.md`
|
||||
|
||||
目标是用 Rust + SQLite 完全替换 Convex 控制面。你的任务只负责 SQLite store 骨架,不接运行时 route。
|
||||
|
||||
## Ownership
|
||||
|
||||
允许修改:
|
||||
- 优先新增 `rust/crates/control-plane/**`
|
||||
- 必要时修改 `rust/Cargo.toml`
|
||||
- 必要时新增/修改 `rust/crates/mnote-web/Cargo.toml` 仅用于依赖引用建议
|
||||
|
||||
禁止修改:
|
||||
- `rust/crates/mnote-web/src/routes/gateway.rs`
|
||||
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
|
||||
- `rust/crates/mnote-web/src/routes/session.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/**`
|
||||
- `infra/convex/**`
|
||||
- `.env*`
|
||||
|
||||
如果发现 workspace crate 接入风险过大,先实现为可编译独立 crate;不要跨模块硬接 runtime。
|
||||
|
||||
## 任务
|
||||
|
||||
1. 新增 `control-plane` Rust crate 或等价最小模块,优先独立 crate。
|
||||
2. 定义核心 model 与 `ControlPlaneStore` trait。
|
||||
3. 实现 `SqliteControlPlaneStore`,支持临时路径 DB。
|
||||
4. 实现 migration v1,包含至少:
|
||||
- `users`
|
||||
- `auth_identities`
|
||||
- `auth_sessions`
|
||||
- `workspaces`
|
||||
- `workspace_members`
|
||||
- `directory_grants`
|
||||
- `share_links`
|
||||
- `sync_state`
|
||||
- `ai_policies`
|
||||
- `audit_log`
|
||||
- `outbox_events`
|
||||
- `legacy_id_map`
|
||||
5. 实现最小 CRUD:
|
||||
- upsert user
|
||||
- create/get session
|
||||
- ensure default workspace
|
||||
- grant/revoke directory access
|
||||
- append/drain outbox
|
||||
6. 补单测:migration 幂等、默认 workspace、owner grant、outbox drain。
|
||||
|
||||
## 验收命令
|
||||
|
||||
优先运行:
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p control-plane -- --nocapture
|
||||
cargo fmt --check --all
|
||||
```
|
||||
|
||||
如果没有新增独立 crate,而是放入 mnote-web:
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web control_plane -- --nocapture
|
||||
cargo fmt --check --all
|
||||
```
|
||||
|
||||
## 最终回复格式
|
||||
|
||||
请列出:
|
||||
- 修改文件
|
||||
- 新增表和核心 API
|
||||
- 实际运行过的命令及结果
|
||||
- 未完成项/风险
|
||||
@@ -0,0 +1,60 @@
|
||||
# Reasonix Worker B:Auth/session SQLite 切换准备
|
||||
|
||||
Project root: `/mnt/Data1T/mnote`
|
||||
|
||||
你不是独自在代码库中工作。其他 worker 可能并行修改 SQLite store、access policy 或迁移脚本。不要还原、覆盖或清理不属于你任务范围的改动。不要提交 git。
|
||||
|
||||
## 背景
|
||||
|
||||
上位设计稿:
|
||||
`design/02-convex-rust-long-term-architecture/process/2-8-convex-replace-with-rust-sqlite-control-plane-v1.md`
|
||||
|
||||
当前用户报告过新注册账号显示“开发用户的空间”、不能新建页面。根因方向之一是真实 actor/profile/workspace name 没有统一来自控制面。本任务只处理 auth/session 切换准备,不处理 local folder access。
|
||||
|
||||
## Ownership
|
||||
|
||||
允许修改:
|
||||
- `rust/crates/mnote-web/src/routes/session.rs`
|
||||
- 可新增 `rust/crates/mnote-web/src/routes/auth_sqlite.rs`
|
||||
- 可新增 `rust/crates/mnote-web/src/control_plane_auth_adapter.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/pages/auth.rs` 仅限必要表单字段/测试适配
|
||||
- focused tests in same files
|
||||
|
||||
只读参考但不要直接改,除非确实必要并最小修改:
|
||||
- `rust/crates/mnote-web/src/routes/gateway.rs`
|
||||
- `rust/crates/mnote-web/src/middleware/request_context.rs`
|
||||
- `rust/crates/mnote-web/src/context.rs`
|
||||
|
||||
禁止修改:
|
||||
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/pages/admin.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/styles.rs`
|
||||
- `infra/convex/**`
|
||||
- `.env*`
|
||||
|
||||
## 任务
|
||||
|
||||
1. 梳理现有 signIn/signUp/session cookie 链,写在代码注释或测试名中,不写长文档。
|
||||
2. 增加 SQLite session adapter 的 route/helper 骨架:
|
||||
- 从 `mnote_session` 查 session。
|
||||
- 生成/刷新 `mnote_actor_id/name/email/type` display cookies。
|
||||
- `/api/session` 优先使用 SQLite session,缺失时保留现有 fallback。
|
||||
3. 注册/登录 adapter 应明确输出真实 `user_id/email/name/actor_type`。
|
||||
4. 新用户注册测试必须断言不回退到 `DEV_USER_NAME`。
|
||||
5. 不要求本轮完全删除 Convex auth fallback。
|
||||
|
||||
## 验收命令
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web session -- --nocapture
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web auth -- --nocapture
|
||||
cargo fmt --check --all
|
||||
```
|
||||
|
||||
## 最终回复格式
|
||||
|
||||
请列出:
|
||||
- 修改文件
|
||||
- 新增/调整的 cookie 与 session 规则
|
||||
- 实际运行过的命令及结果
|
||||
- 未完成项/风险
|
||||
@@ -0,0 +1,56 @@
|
||||
# Reasonix Worker C:Access policy SQLite adapter
|
||||
|
||||
Project root: `/mnt/Data1T/mnote`
|
||||
|
||||
你不是独自在代码库中工作。其他 worker 可能并行修改 SQLite store、auth/session 或迁移脚本。不要还原、覆盖或清理不属于你任务范围的改动。不要提交 git。
|
||||
|
||||
## 背景
|
||||
|
||||
上位设计稿:
|
||||
`design/02-convex-rust-long-term-architecture/process/2-8-convex-replace-with-rust-sqlite-control-plane-v1.md`
|
||||
|
||||
当前 `access-policy.json` 是本地目录授权事实源,但完全替换 Convex 后,应迁到 SQLite。你的任务是抽象 access policy adapter,保留 JSON fallback,为 SQLite grant 接入打接口。
|
||||
|
||||
## Ownership
|
||||
|
||||
允许修改:
|
||||
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
|
||||
- 可新增 `rust/crates/mnote-web/src/local_access_sqlite.rs`
|
||||
- 可新增 focused tests
|
||||
|
||||
禁止修改:
|
||||
- `rust/crates/mnote-web/src/routes/session.rs`
|
||||
- `rust/crates/mnote-web/src/routes/gateway.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/pages/admin.rs`
|
||||
- `rust/crates/mnote-web/src/ssr/styles.rs`
|
||||
- `infra/convex/**`
|
||||
- `.env*`
|
||||
|
||||
## 任务
|
||||
|
||||
1. 找出 `ensure_local_workspace_read_access` / write access / admin access 的现有调用和策略读取点。
|
||||
2. 抽象一个 access policy provider/adapter:
|
||||
- JSON provider 维持现有行为。
|
||||
- SQLite provider 可先是 trait/mock/stub,不要求真实 DB。
|
||||
3. 增加测试覆盖:
|
||||
- 默认 workspace owner 有 write。
|
||||
- read grant 禁写。
|
||||
- write grant 可写。
|
||||
- 未授权拒绝。
|
||||
4. 为后续 SQLite store 接入预留最小接口,不要重写 tree command 或 UI。
|
||||
|
||||
## 验收命令
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web local_access_policy -- --nocapture
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web local_workspace_access -- --nocapture
|
||||
cargo fmt --check --all
|
||||
```
|
||||
|
||||
## 最终回复格式
|
||||
|
||||
请列出:
|
||||
- 修改文件
|
||||
- 新增 adapter/trait 设计
|
||||
- 实际运行过的命令及结果
|
||||
- 未完成项/风险
|
||||
@@ -0,0 +1,62 @@
|
||||
# Reasonix Worker D:迁移工具与 Convex 下线 guard
|
||||
|
||||
Project root: `/mnt/Data1T/mnote`
|
||||
|
||||
你不是独自在代码库中工作。其他 worker 可能并行修改 Rust control-plane、auth/session 或 access policy。不要还原、覆盖或清理不属于你任务范围的改动。不要提交 git。
|
||||
|
||||
## 背景
|
||||
|
||||
上位设计稿:
|
||||
`design/02-convex-rust-long-term-architecture/process/2-8-convex-replace-with-rust-sqlite-control-plane-v1.md`
|
||||
|
||||
目标是给完全替换 Convex 准备迁移 dry-run 工具和 guard,不执行真实破坏性迁移。
|
||||
|
||||
## Ownership
|
||||
|
||||
允许修改:
|
||||
- 新增 `scripts/migrate-control-plane-to-sqlite.js`
|
||||
- 修改 `scripts/check-local-first-convex-guard.js` 仅限增加 SQLite 迁移期 guard 规则或建议输出
|
||||
- 可新增 `scripts/task*-sqlite-control-plane-*.js` focused smoke
|
||||
- 可向设计稿 `2-8` 追加“执行记录”,不得改设计结论
|
||||
|
||||
禁止修改:
|
||||
- `rust/crates/**`
|
||||
- `infra/convex/docker-compose.yml`
|
||||
- `.env*`
|
||||
- 不删除任何 Convex 数据、Docker volume 或本地数据文件
|
||||
|
||||
## 任务
|
||||
|
||||
1. 实现 dry-run 迁移工具:
|
||||
- 读取 `/mnt/Data1T/Mnote_data/control-plane/access-policy.json`,路径可用参数覆盖。
|
||||
- 扫描 `/mnt/Data1T/Mnote_data/users/*/workspaces/*/.mnote/workspace.json`,路径可用参数覆盖。
|
||||
- 生成 `migration-report.json`,包含 users/workspaces/grants/legacy_id_map 建议,不写 DB。
|
||||
2. 支持命令:
|
||||
|
||||
```bash
|
||||
node scripts/migrate-control-plane-to-sqlite.js --dry-run --out /tmp/mnote-control-plane-migration-report.json
|
||||
```
|
||||
|
||||
3. 更新 guard 或输出建议:新增 Convex 控制面代码应被标记为禁止或迁移例外。
|
||||
4. 补最小 node smoke,断言 dry-run report 可生成。
|
||||
|
||||
## 验收命令
|
||||
|
||||
```bash
|
||||
node scripts/migrate-control-plane-to-sqlite.js --dry-run --out /tmp/mnote-control-plane-migration-report.json
|
||||
npm run check:local-first-convex-guard
|
||||
```
|
||||
|
||||
如新增 smoke:
|
||||
|
||||
```bash
|
||||
node scripts/<new-smoke>.js
|
||||
```
|
||||
|
||||
## 最终回复格式
|
||||
|
||||
请列出:
|
||||
- 修改文件
|
||||
- dry-run report 字段
|
||||
- 实际运行过的命令及结果
|
||||
- 未完成项/风险
|
||||
@@ -0,0 +1,55 @@
|
||||
# Reasonix Worker E:control-plane share_links / audit / outbox 扩展
|
||||
|
||||
Project root: `/mnt/Data1T/mnote`
|
||||
|
||||
你不是独自在代码库中工作。其他 worker 可能并行修改 `mnote-web` 适配层、auth/session 或 access policy。不要还原、覆盖或清理不属于你任务范围的改动。不要提交 git。
|
||||
|
||||
## 背景
|
||||
|
||||
上位设计稿:
|
||||
`design/02-convex-rust-long-term-architecture/process/2-8-convex-replace-with-rust-sqlite-control-plane-v1.md`
|
||||
|
||||
当前 `control-plane` crate 已有 users/auth/workspaces/directory_grants/sync_state 的骨架,但 share_links、audit_log、outbox 的能力还不够完整。
|
||||
|
||||
## Ownership
|
||||
|
||||
允许修改:
|
||||
- `rust/crates/control-plane/src/model.rs`
|
||||
- `rust/crates/control-plane/src/store.rs`
|
||||
- `rust/crates/control-plane/src/sqlite.rs`
|
||||
- `rust/crates/control-plane/src/migrations.rs`
|
||||
- `rust/crates/control-plane/migrations/*.sql`
|
||||
- `rust/crates/control-plane/src/error.rs` 仅限必要错误映射
|
||||
|
||||
禁止修改:
|
||||
- `rust/crates/mnote-web/**`
|
||||
- `infra/convex/**`
|
||||
- `.env*`
|
||||
- `scripts/**`
|
||||
|
||||
## 任务
|
||||
|
||||
1. 补强 `control-plane` 模型与 store trait:
|
||||
- `share_links` 的 create/list/revoke/resolve
|
||||
- `audit_log` append/list 最小能力
|
||||
- `outbox_events` drain/mark-delivered 的稳定方法
|
||||
2. 为 share_links 增加 SQLite 实现与单测:
|
||||
- token 只保存 hash
|
||||
- revoke 后不可再 resolve
|
||||
3. 为 audit_log 增加最小单测:
|
||||
- 创建分享、撤销授权、AI/控制面关键事件可追加
|
||||
4. 保持 schema 迁移幂等。
|
||||
|
||||
## 验收命令
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p control-plane -- --nocapture
|
||||
```
|
||||
|
||||
## 最终回复格式
|
||||
|
||||
请列出:
|
||||
- 修改文件
|
||||
- 新增 API / 表能力
|
||||
- 实际运行过的命令及结果
|
||||
- 未完成项 / 风险
|
||||
Reference in New Issue
Block a user