# N-022 Tracking 与 Mask 状态:`BLOCKED`(资源 schema、真实 Mask Main reader、marker/mask 有界事务和 solve 能力门 已落地;MovieClip Main、写回、跟踪/相机求解、编辑器 overlay 与桌面 golden 未实现) ## 已验证切片 1. N-022-A:版本化 project schema 覆盖 MovieClip、Track/Marker、Plane Track、Camera Solve metadata、Mask Layer/Spline/Point 及 compositor/scene binding。 2. N-022-A/B:clip 路径限制在项目内,source 与 solve 绑定 SHA-256;marker frame、 plane track 引用、mask point/handle、资源 binding、重复 ID 与总量预算都严格校验。 3. N-022-B(部分):marker upsert/delete、track selection、mask point 与 spline cyclic 修改使用 revision 事务,锁定项和 stale revision 会拒绝,提交后再次完整解析。 4. N-022-C(门):marker/mask schema edit 可用;browser tracking 只有显式 probe 成功后 放行,camera solve 保持 `BLOCKED` 并要求受验证的服务端 Blender。 5. N-022-D(部分):按屏幕射线对可见、未锁定且非零透明度的 Mask Bezier 段做有界采样, 返回稳定的 layer/spline/point/segment identity;精确点命中优先于段命中,未声明的 selection/raycast 编辑器仍保持阻断。 6. N-022-A(部分):Blender 5.2 Mask Main reader 输出 layer、spline 和 Bezier point,保留 cyclic/fill、viewport visibility、lock/hide-select、opacity、handle type/坐标、feather 与 selection;1024 layer、100k spline、1M point 预算在分配前检查。MovieClip 不能从外部路径 推导内容 SHA-256,继续阻断而不使用路径散列冒充源摘要。 7. N-022-D(选择子集):Mask point marquee 支持 replace/add/toggle,验证矩形、已有 stable identity、重复项和 1M point 预算;输出按 Main 中的 mask/layer/spline/point 顺序确定化,隐藏、 锁定和零透明度 layer 不会成为新选中项。 8. Blender 5.2 fixture 同时包含锁定层和可编辑层,经 WASM/Worker 后实证锁定点不可 raycast, 可编辑点返回稳定 identity,跨两层的 marquee 仅选择可编辑点,toggle 可确定性清空。 ## 仍然阻断 - N-022-A/B:真实 MovieClip reader、Mask/MovieClip 写回、undo/redo 和 save/reopen;Mask reader 已完成。 - N-022-C:浏览器 tracking 实现、完整 camera/plane solve 与服务端 job/hash 提交。 - N-022-D:完整 Clip/Mask editor、overlay、handle/segment marquee 与 compositor/scene 实际绑定; point raycast 和 point marquee 的真实 Main 子集已完成。 - N-022-E:desktop solve/error golden、媒体故障和 Chromium 测试。 ## 验收 ```bash WEB_TEST_PORT=5322 npm --prefix web run test:e2e -- --grep "N-022 tracking" npm --prefix web run test:mask-main-reader ```