2026-04-14 13:22:29 +08:00
{
"version" : 2 ,
2026-04-21 06:26:35 +08:00
"created" : "2026-04-19T15:01:07Z" ,
2026-04-14 13:22:29 +08:00
"session_config" : {
"concurrency_mode" : "exclusive" ,
2026-04-21 06:26:35 +08:00
"max_tasks_per_session" : 8 ,
"max_sessions" : 80
2026-04-14 13:22:29 +08:00
},
2026-04-15 03:34:52 +08:00
"tasks" : [
{
"id" : "task-001" ,
2026-04-21 06:26:35 +08:00
"title" : "执行 P0.5-1:冻结主编辑器接入点与 runtime shell 退场策略,明确真实文档页切流入口、flag、debug/prototype 边界" ,
2026-04-15 20:01:12 +08:00
"status" : "completed" ,
2026-04-17 23:36:24 +08:00
"priority" : "P0" ,
2026-04-15 03:34:52 +08:00
"depends_on" : [],
"attempts" : 1 ,
2026-04-17 23:36:24 +08:00
"max_attempts" : 3 ,
2026-04-21 06:26:35 +08:00
"started_at_commit" : "a0edc9d1" ,
2026-04-15 03:34:52 +08:00
"validation" : {
2026-04-21 06:26:35 +08:00
"command" : "python3 - <<'PY'\nfrom pathlib import Path\npath = Path('/mnt/Data1T/mnote/design/05-editor-mainline/process/5-1-main-editor-cutover-entry-v1.md')\ntext = path.read_text(encoding='utf-8')\nassert '主编辑器接入点' in text\nassert 'runtime shell' in text\nassert 'debug/prototype' in text\nprint('task-001-cutover-entry-doc-ok')\nPY" ,
"timeout_seconds" : 120
2026-04-15 03:34:52 +08:00
},
"on_failure" : {
"cleanup" : null
},
2026-04-17 23:36:24 +08:00
"error_log" : [],
2026-04-21 06:26:35 +08:00
"checkpoints" : [
{
"step" : 1 ,
"total" : 1 ,
"description" : "已冻结真实文档页主链、DocumentContent 接入点、切流 flag 归属,以及 runtime shell 仅保留 debug/prototype 的边界。" ,
"timestamp" : "2026-04-19T15:29:25Z"
}
],
"completed_at" : "2026-04-19T15:29:25Z"
2026-04-15 03:34:52 +08:00
},
{
"id" : "task-002" ,
2026-04-21 06:26:35 +08:00
"title" : "执行 P0.5-2:把 leptos-tiptap host 接入真实文档页壳与真实路由,退出 localhost:8123 作为唯一验证入口的状态" ,
2026-04-15 03:34:52 +08:00
"status" : "completed" ,
"priority" : "P0" ,
2026-04-17 23:36:24 +08:00
"depends_on" : [
"task-001"
],
2026-04-15 03:34:52 +08:00
"attempts" : 1 ,
"max_attempts" : 3 ,
2026-04-21 06:26:35 +08:00
"started_at_commit" : "a0edc9d1" ,
2026-04-15 03:34:52 +08:00
"validation" : {
2026-04-21 06:26:35 +08:00
"command" : "cd /mnt/Data1T/mnote/wolai-frontend && pnpm test src/components/editor/main-editor-host.test.tsx && cd /mnt/Data1T/mnote && node test/scripts/block-editor-main-editor-smoke.js" ,
2026-04-18 05:43:49 +08:00
"timeout_seconds" : 900
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [
{
"step" : 1 ,
"total" : 1 ,
2026-04-21 06:26:35 +08:00
"description" : "已改为真实 /documents/[id] 承载 8123 runtime,去掉 bridge 假壳,补齐 embed/postMessage 协议,并通过自动拉起 8123 的 smoke 验收截图。" ,
"timestamp" : "2026-04-19T18:24:24Z"
2026-04-18 05:43:49 +08:00
}
],
2026-04-21 06:26:35 +08:00
"completed_at" : "2026-04-19T18:24:24Z"
},
{
"id" : "task-003" ,
"title" : "执行 P0.5-3:引入稳定 block_id 策略,明确 Rust EditorBlock.block_id 为真相,Tiptap UniqueID 仅作 runtime 辅助" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-001"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p core-protocol editor_block_id && cargo test -p mnote-web editor_block_id_bridge" ,
"timeout_seconds" : 600
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
},
{
"id" : "task-004" ,
"title" : "执行 P0.5-4:打通 EditorBlockDocument -> Tiptap doc 最小 load adapter,先覆盖 Paragraph/Heading/BulletListItem/NumberedListItem/Todo/Quote/CodeBlock" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-002" ,
"task-003"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p mnote-web tiptap_load_adapter && cargo test -p mnote-editor-core editor_block_roundtrip_load" ,
"timeout_seconds" : 900
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
},
{
"id" : "task-005" ,
"title" : "执行 P0.5-5:打通 Tiptap doc -> EditorBlockDocument 最小 save adapter,并把真实页面保存链接到 Rust truth" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-002" ,
"task-003" ,
"task-004"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p mnote-web tiptap_save_adapter && cargo test -p mnote-editor-core editor_block_roundtrip_save" ,
"timeout_seconds" : 900
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
},
{
"id" : "task-006" ,
"title" : "执行 P0.5-6:对齐最小块类型映射与 reload/re-enter 稳定性,确保常用块在真实页面中可稳定往返" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-004" ,
"task-005"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p core-protocol editor_block_schema && cargo test -p mnote-web editor_reload_roundtrip" ,
"timeout_seconds" : 900
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
},
{
"id" : "task-007" ,
"title" : "执行 P0.5-7:对齐最小 EditorCommand 合同,先覆盖 ReplaceBlock/InsertBlockAfter/DeleteBlock/SplitBlock/MergeWithPrevious/MoveBlock" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-005" ,
"task-006"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p core-protocol editor_command_catalog && cargo test -p mnote-web editor_command_mapping" ,
"timeout_seconds" : 900
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
},
{
"id" : "task-008" ,
"title" : "执行 P0.5-8:把当前已有的 slash、floating toolbar、左侧手柄、块菜单、turn into 迁入主编辑器,并按官方行为模型微调" ,
"status" : "pending" ,
"priority" : "P0" ,
"depends_on" : [
"task-002" ,
"task-006"
],
"attempts" : 0 ,
"max_attempts" : 3 ,
"started_at_commit" : null ,
"validation" : {
"command" : "cargo test -p mnote-web tiptap_surface_ui && cd /mnt/Data1T/mnote && node test/scripts/block-editor-interaction-smoke.js" ,
"timeout_seconds" : 1200
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
"checkpoints" : [],
"completed_at" : null
2026-04-18 05:43:49 +08:00
},
{
"id" : "task-009" ,
2026-04-21 06:26:35 +08:00
"title" : "执行 P0.5-9:为图片上传、表格、页面引用、块引用、heading collapse、普通块缩进增强建立显式降级和 feature guard,避免污染正式合同" ,
"status" : "pending" ,
"priority" : "P0" ,
2026-04-18 05:43:49 +08:00
"depends_on" : [
2026-04-21 06:26:35 +08:00
"task-004" ,
"task-005"
2026-04-18 05:43:49 +08:00
],
2026-04-21 06:26:35 +08:00
"attempts" : 0 ,
2026-04-18 05:43:49 +08:00
"max_attempts" : 3 ,
2026-04-21 06:26:35 +08:00
"started_at_commit" : null ,
2026-04-18 05:43:49 +08:00
"validation" : {
2026-04-21 06:26:35 +08:00
"command" : "cargo test -p mnote-web editor_feature_guards && python3 - <<'PY'\nfrom pathlib import Path\npath = Path('/mnt/Data1T/mnote/design/05-editor-mainline/process/5-1-main-editor-cutover-entry-v1.md')\ntext = path.read_text(encoding='utf-8')\nassert '未支持能力降级' in text or '降级策略' in text\nprint('task-009-feature-guard-doc-ok')\nPY" ,
2026-04-18 05:43:49 +08:00
"timeout_seconds" : 600
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
2026-04-21 06:26:35 +08:00
"checkpoints" : [],
"completed_at" : null
2026-04-18 05:43:49 +08:00
},
{
"id" : "task-010" ,
2026-04-21 06:26:35 +08:00
"title" : "执行 P0.5-10:建立主编辑器验收链路,覆盖打开文档、编辑常用块、slash 插入、turn into、刷新保留、再次进入保留" ,
"status" : "pending" ,
"priority" : "P0" ,
2026-04-18 05:43:49 +08:00
"depends_on" : [
2026-04-21 06:26:35 +08:00
"task-005" ,
"task-006" ,
"task-007" ,
"task-008" ,
2026-04-18 05:43:49 +08:00
"task-009"
],
2026-04-21 06:26:35 +08:00
"attempts" : 0 ,
2026-04-18 05:43:49 +08:00
"max_attempts" : 3 ,
2026-04-21 06:26:35 +08:00
"started_at_commit" : null ,
2026-04-18 05:43:49 +08:00
"validation" : {
2026-04-21 06:26:35 +08:00
"command" : "cd /mnt/Data1T/mnote && node test/scripts/block-editor-main-editor-acceptance.js && cargo test -p mnote-web main_editor_acceptance" ,
2026-04-19 21:03:25 +08:00
"timeout_seconds" : 1800
},
"on_failure" : {
"cleanup" : null
},
"error_log" : [],
2026-04-21 06:26:35 +08:00
"checkpoints" : [],
"completed_at" : null
2026-04-15 03:34:52 +08:00
}
],
2026-04-21 06:26:35 +08:00
"session_count" : 2 ,
"last_session" : "2026-04-19T18:24:24Z"
2026-04-14 13:22:29 +08:00
}