Files
mnote/.codex/reasonix-tasks/2026-05-22-sqlite-control-plane-worker-a-store.md
T
lix-2026 5f97800489 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
2026-05-23 23:38:42 +08:00

2.3 KiB
Raw Blame History

Reasonix Worker ASQLite 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。

验收命令

优先运行:

cargo test --manifest-path rust/Cargo.toml -p control-plane -- --nocapture
cargo fmt --check --all

如果没有新增独立 crate,而是放入 mnote-web

cargo test --manifest-path rust/Cargo.toml -p mnote-web control_plane -- --nocapture
cargo fmt --check --all

最终回复格式

请列出:

  • 修改文件
  • 新增表和核心 API
  • 实际运行过的命令及结果
  • 未完成项/风险