257 lines
8.4 KiB
JSON
257 lines
8.4 KiB
JSON
{
|
|
"version": 2,
|
|
"created": "2026-04-19T15:01:07Z",
|
|
"session_config": {
|
|
"concurrency_mode": "exclusive",
|
|
"max_tasks_per_session": 8,
|
|
"max_sessions": 80
|
|
},
|
|
"tasks": [
|
|
{
|
|
"id": "task-001",
|
|
"title": "执行 P0.5-1:冻结主编辑器接入点与 runtime shell 退场策略,明确真实文档页切流入口、flag、debug/prototype 边界",
|
|
"status": "completed",
|
|
"priority": "P0",
|
|
"depends_on": [],
|
|
"attempts": 1,
|
|
"max_attempts": 3,
|
|
"started_at_commit": "a0edc9d1",
|
|
"validation": {
|
|
"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
|
|
},
|
|
"on_failure": {
|
|
"cleanup": null
|
|
},
|
|
"error_log": [],
|
|
"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"
|
|
},
|
|
{
|
|
"id": "task-002",
|
|
"title": "执行 P0.5-2:把 leptos-tiptap host 接入真实文档页壳与真实路由,退出 localhost:8123 作为唯一验证入口的状态",
|
|
"status": "completed",
|
|
"priority": "P0",
|
|
"depends_on": [
|
|
"task-001"
|
|
],
|
|
"attempts": 1,
|
|
"max_attempts": 3,
|
|
"started_at_commit": "a0edc9d1",
|
|
"validation": {
|
|
"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",
|
|
"timeout_seconds": 900
|
|
},
|
|
"on_failure": {
|
|
"cleanup": null
|
|
},
|
|
"error_log": [],
|
|
"checkpoints": [
|
|
{
|
|
"step": 1,
|
|
"total": 1,
|
|
"description": "已改为真实 /documents/[id] 承载 8123 runtime,去掉 bridge 假壳,补齐 embed/postMessage 协议,并通过自动拉起 8123 的 smoke 验收截图。",
|
|
"timestamp": "2026-04-19T18:24:24Z"
|
|
}
|
|
],
|
|
"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
|
|
},
|
|
{
|
|
"id": "task-009",
|
|
"title": "执行 P0.5-9:为图片上传、表格、页面引用、块引用、heading collapse、普通块缩进增强建立显式降级和 feature guard,避免污染正式合同",
|
|
"status": "pending",
|
|
"priority": "P0",
|
|
"depends_on": [
|
|
"task-004",
|
|
"task-005"
|
|
],
|
|
"attempts": 0,
|
|
"max_attempts": 3,
|
|
"started_at_commit": null,
|
|
"validation": {
|
|
"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",
|
|
"timeout_seconds": 600
|
|
},
|
|
"on_failure": {
|
|
"cleanup": null
|
|
},
|
|
"error_log": [],
|
|
"checkpoints": [],
|
|
"completed_at": null
|
|
},
|
|
{
|
|
"id": "task-010",
|
|
"title": "执行 P0.5-10:建立主编辑器验收链路,覆盖打开文档、编辑常用块、slash 插入、turn into、刷新保留、再次进入保留",
|
|
"status": "pending",
|
|
"priority": "P0",
|
|
"depends_on": [
|
|
"task-005",
|
|
"task-006",
|
|
"task-007",
|
|
"task-008",
|
|
"task-009"
|
|
],
|
|
"attempts": 0,
|
|
"max_attempts": 3,
|
|
"started_at_commit": null,
|
|
"validation": {
|
|
"command": "cd /mnt/Data1T/mnote && node test/scripts/block-editor-main-editor-acceptance.js && cargo test -p mnote-web main_editor_acceptance",
|
|
"timeout_seconds": 1800
|
|
},
|
|
"on_failure": {
|
|
"cleanup": null
|
|
},
|
|
"error_log": [],
|
|
"checkpoints": [],
|
|
"completed_at": null
|
|
}
|
|
],
|
|
"session_count": 2,
|
|
"last_session": "2026-04-19T18:24:24Z"
|
|
}
|