edit | blame | history | raw

2026-06-27 MEXP01 布局复核

用户目标

Coder@mindraw 身份领取统一台账 P-20260626-m4c-handshake-coordination 中的 MD-MEXP01-02,正式复核 PM 误直接实现的 createAiResultFrame 布局避让改动,必要时做最小修正,补 QA / review 证据,明确 CHANGELOG.md 决策,并回写总台账。

已完成事项

  • 重新读取 /Users/ar/.codex/AGENTS.md、项目 AGENTS.mdINDEX.mdCODEGRAPH.md02-P/plan-progress.markdown 相关 MD-MEXP01-02 / 最新 Progress Log。
  • 复核 src/lib/mindrawAppWriteMutation.tssrc/lib/mindrawAppWriteMutation.test.ts
  • 确认 PM 原实现方向正确:result Frame 从 source Frame 右侧开始,遇到非 source 元素 / Frame 相交时继续向右找空位。
  • 发现并修正两个风险:固定 100 次扫描上限与实际 obstacle 数量无关;测试只覆盖单个已有 Frame。
  • 最小修正 toElementRect() 负宽高归一化、layoutObstacles() deterministic 排序、planResultLayout() 扫描上限改为 obstacles.length + 1
  • 新增普通非 Frame 元素占位和 105 个长链阻挡回归测试。
  • 新增 QA / review 证据 02-P/qa/mindraw-mexp01-layout-avoidance-review.md
  • 更新 INDEX.mdCODEGRAPH.md02-P/plan-progress.markdown

关键决策

  • Reviewer 结论:PASS_WITH_MINIMAL_FIX_FOR_MD_MEXP01_02_LAYOUT_AVOIDANCE
  • 本轮不修改 CHANGELOG.md,因为布局避让仍属于未发布的内部 Alpha / App API writeback 能力,尚未形成新版本、DMG、H8 release Go 或正式用户 release note;先记录在 QA / 台账 / 工程图,正式发布时统一写入。
  • 该结论不等于 H8 / formal release Go,不涉及 m4c 03-O、正式 MCP server、真实 AI provider release 或完整 .assets 权威化。

文件变更

  • 修改:src/lib/mindrawAppWriteMutation.ts
  • 修改:src/lib/mindrawAppWriteMutation.test.ts
  • 新增:02-P/qa/mindraw-mexp01-layout-avoidance-review.md
  • 更新:INDEX.md
  • 更新:CODEGRAPH.md
  • 更新:02-P/plan-progress.markdown

验证

  • npm run test:run -- src/lib/mindrawAppWriteMutation.test.ts:1 file / 9 tests PASS
  • npm run test:run -- src/lib/mindrawAppWriteApi.smoke.test.ts src/lib/mindrawAppWriteMutation.test.ts src/lib/mindrawAppWriteLease.test.ts src/lib/mindrawAppReadApi.test.ts src/store/useStore.test.ts src/lib/excalidrawFile.test.ts:6 files / 73 tests PASS
  • npm run build:PASS
  • git diff --check:无输出
  • 对本轮触及的 untracked / tracked 文件执行行尾空白 rg 检查:无输出

剩余风险

  • 当前只做向右 deterministic scan,不做二维装箱、上下换行、缩放视口或最优布局。
  • source Frame 内元素按契约不作为 obstacle;如果未来允许 source 内元素越界到右侧,需要另行定义是否阻挡 result Frame。
  • 已运行中的旧 debug App 需要重启后才会加载本轮代码。

后续建议

等待用户体验反馈或 PM 后续拆新的 MD-*;Mindraw 不领取 PM-* / H*