Complete M16 action select circle parity
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-20 22:57:59 -04:00
parent fb5abd8e37
commit 6a0b980d75
368 changed files with 17417 additions and 117 deletions

View File

@@ -9,12 +9,16 @@
3. `tests/golden/<parent>/manifest.json`:只取 parent、runtime、artifact hash、`nextTask`,最多 24 KiB。
4. `docs/status/<parent>.md`:只取上一任务的证据摘要,最多 6 KiB。
四份输入的估算总量最多 3,500 tokens。实现代码、长日志、完整路线图和 parity ledger 只按任务卡列出的路径追加读取;它们不是默认上下文。
四份输入和证据内容最多占 2,476 tokens另有 1,024 tokens 保留给打印任务包自身的 JSON 外壳,
因此模型实际输入仍不超过 3,500 tokens。实现代码、长日志、完整路线图和 parity ledger 只按任务卡列出的路径追加读取;它们不是默认上下文。
任务上下文生成器在生成 `inputPaths` 时还会前置执行证据筛选:最多 12 个证据路径,证据文件总计最多
8 KiB并从 3,500 token 总预算扣除四份基础文档后使用剩余空间。超限、缺失、越界或不可审计路径不会进入读取清单,
8 KiB并从扣除 1,024-token 打印外壳和四份基础文档后剩余空间中选择。超限、缺失、越界或不可审计路径不会进入读取清单,
而会写入 `inputSelection.excluded[]`,其中 `reason` 是稳定的机器可读排除原因;治理门会校验所选路径、字节总数和排除审计。
默认 `print-task-context` 只输出紧凑任务包;完整选择审计仍写入 `task-context.json`,不会重复进入模型输入。
如果紧凑包自身超过预留外壳预算,`print-task-context` 会在 stdout 写入任何 JSON 前失败,避免超大包进入远程传输。
全量 gap 计划 `tests/golden/M15-03A/next-task-plan.json` 约 6.8 MiB只能由盘点/生成门读取,禁止作为任务上下文打开。`task-index.json` 保存源计划 hash 和每条记录的偏移,`task-catalog.jsonl` 保存一行一个任务;`task-context` 只随机读取当前任务的一行。索引缺失、源 hash 漂移或 catalog 损坏会直接失败,不能回退加载整份计划。
## 机器门禁

View File

@@ -31,11 +31,12 @@ Markdown checkbox 不能覆盖失败命令或 hash 漂移。
| 任务卡 | 8 KiB | 最多 12 个输入路径、8 条命令;不复制日志 |
| parent manifest | 24 KiB | 只记录必要 artifact最多 32 项 |
| parent status | 6 KiB | 只保留命令、退出码、关键结果、风险和回滚 |
| 四份输入合计 | 3,500 tokens | 由 `contextSizeReport` 和治理门同时检查 |
| 四份输入、证据与打印外壳 | 3,500 tokens | 内容最多 2,476 tokens打印包预留 1,024 tokens`contextSizeReport` 和治理门同时检查 |
| catalog 单行 | 2 KiB | 机器随机读取;执行者不得通读 catalog |
生成阶段的证据读取清单另外受 `maxFiles=12``evidenceBytes=8 KiB` 和基础文档扣除后的剩余上下文空间约束。
生成阶段的证据读取清单另外受 `maxFiles=12``evidenceBytes=8 KiB` 和基础文档、1,024-token 打印外壳扣除后的剩余上下文空间约束。
每个未选路径必须有 `inputSelection.excluded[].reason`,因此校验器不会成为首次发现超大上下文的地方。
`print-task-context` 也会在 JSON 输出前执行外壳预算检查;超限时只返回短诊断并以非零状态退出。
全量 `next-task-plan.json`、parity map 和 gap audit 是生成器输入,不是执行上下文。索引保存源
hash 和 catalog offset源 hash、catalog hash 或 offset 损坏时必须重新生成,不能回退读取大计划。

View File

@@ -9,10 +9,10 @@
| 字段 | 值 |
| --- | --- |
| 里程碑 | M16 Main、Mesh、Modifier、Sculpt |
| 当前任务 | `M16-GAP-00096` |
| parent manifest | `tests/golden/M16-GAP-00095/manifest.json` |
| 任务卡 | [`tasks/M16-GAP-00096.md`](tasks/M16-GAP-00096.md) |
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00096` |
| 当前任务 | `M16-GAP-00137` |
| parent manifest | `tests/golden/M16-GAP-00136/manifest.json` |
| 任务卡 | [`tasks/M16-GAP-00137.md`](tasks/M16-GAP-00137.md) |
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00137` |
领取前执行:

View File

@@ -39,7 +39,8 @@
## 最小上下文规则
默认只加载队列、当前任务卡、parent manifest 和 parent status总量上限为 3,500 tokens
默认只加载队列、当前任务卡、parent manifest 和 parent status内容与打印包合计上限为 3,500 tokens
其中 1,024 tokens 预留给紧凑任务包外壳。
实现细节按任务卡的文件清单追加读取。不要为了确认一个局部输入、IO 或安全任务而加载整份
`PROJECT_STATUS_AND_NEXT_WORK.md` 或完整 parity 计划。

View File

@@ -0,0 +1,19 @@
# M16-GAP-00096 Status
status: done
task: SOLIDIFY modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh SOLIDIFY modifier stack exposure for `mesh:WebGapSolidifyMesh`.
evidence:
- Desktop fixture exposes `WebGapSolidify` as SOLIDIFY type code 33 with thickness `0.275` and offset `0.35`; save/reopen is exact.
- WASM/Main exposes the same SOLIDIFY stack entry with matching thickness/offset and generic visibility flags; save/reopen is exact.
- Reader maps Solidify DNA fields with Blender semantics (`offset` to thickness and `offset_fac` to offset).
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, direct comparator, and WebEngine build exited 0.
knownRisk: Solidify geometry evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00097`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00097 Status
status: done
task: SUBSURF modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh SUBSURF modifier stack exposure for `mesh:WebGapSubsurfMesh`.
evidence:
- Desktop fixture exposes `WebGapSubsurf` as SUBSURF type code 1 with SIMPLE subdivision, viewport level 2, and render level 3; save/reopen is exact.
- WASM/Main exposes the same SUBSURF stack entry and matching subdivision parameters; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Subdivision geometry evaluation is unavailable in this build without OpenSubdiv; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00098`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00098 Status
status: done
task: SURFACE modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh SURFACE modifier stack exposure for `mesh:WebGapSurfaceMesh`.
evidence:
- Desktop fixture exposes `WebGapSurface` as SURFACE type code 30; save/reopen is exact.
- WASM/Main exposes the same SURFACE stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Surface deformation evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00099`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00099 Status
status: done
task: SURFACE_DEFORM modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh SURFACE_DEFORM modifier stack exposure for `mesh:WebGapSurfaceDeformMesh`.
evidence:
- Desktop fixture exposes `WebGapSurfaceDeform` as SURFACE_DEFORM type code 52; save/reopen is exact.
- WASM/Main exposes the same SURFACE_DEFORM stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Surface deformation binding/evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00100`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00100 Status
status: done
task: TRIANGULATE modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh TRIANGULATE modifier stack exposure for `mesh:WebGapTriangulateMesh`.
evidence:
- Desktop fixture exposes `WebGapTriangulate` as TRIANGULATE type code 44 with FIXED quad and CLIP ngon methods; save/reopen is exact.
- WASM/Main exposes the same TRIANGULATE stack entry and matching triangulation methods; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Triangulation geometry evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00101`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00101 Status
status: done
task: UV_PROJECT modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh UV_PROJECT modifier stack exposure for `mesh:WebGapUvProjectMesh`.
evidence:
- Desktop fixture exposes `WebGapUvProject` as UV_PROJECT type code 15; save/reopen is exact.
- WASM/Main exposes the same UV_PROJECT stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: UV projection evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00102`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00102 Status
status: done
task: UV_WARP modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh UV_WARP modifier stack exposure for `mesh:WebGapUvWarpMesh`.
evidence:
- Desktop fixture exposes `WebGapUvWarp` as UV_WARP type code 47; save/reopen is exact.
- WASM/Main exposes the same UV_WARP stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: UV warp evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00103`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00103 Status
status: done
task: VERTEX_WEIGHT_EDIT modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh VERTEX_WEIGHT_EDIT modifier stack exposure for `mesh:WebGapVertexWeightEditMesh`.
evidence:
- Desktop fixture exposes `WebGapVertexWeightEdit` as VERTEX_WEIGHT_EDIT type code 36; save/reopen is exact.
- Reader name table now uses Blender's canonical VERTEX_WEIGHT_EDIT name for type code 36; rebuilt WASM/Main exposes the same stack entry with matching generic flags.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, direct comparator, and WebEngine build exited 0.
knownRisk: Vertex weight editing evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00104`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00104 Status
status: done
task: VERTEX_WEIGHT_MIX modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh VERTEX_WEIGHT_MIX modifier stack exposure for `mesh:WebGapVertexWeightMixMesh`.
evidence:
- Desktop fixture exposes `WebGapVertexWeightMix` as VERTEX_WEIGHT_MIX type code 37; save/reopen is exact.
- WASM/Main exposes the same VERTEX_WEIGHT_MIX stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Vertex weight mixing evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00105`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00105 Status
status: done
task: VERTEX_WEIGHT_PROXIMITY modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh VERTEX_WEIGHT_PROXIMITY modifier stack exposure for `mesh:WebGapVertexWeightProximityMesh`.
evidence:
- Desktop fixture exposes `WebGapVertexWeightProximity` as VERTEX_WEIGHT_PROXIMITY type code 38; save/reopen is exact.
- WASM/Main exposes the same VERTEX_WEIGHT_PROXIMITY stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Vertex weight proximity evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00106`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00106 Status
status: done
task: VOLUME_DISPLACE modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Volume-object VOLUME_DISPLACE modifier stack exposure for `object:WebGapVolumeDisplaceObject`.
evidence:
- Desktop fixture exposes `WebGapVolumeDisplace` as VOLUME_DISPLACE type code 59 on a Volume object; save/reopen is exact.
- WASM/Main exposes the same VOLUME_DISPLACE stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Volume displacement evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00107`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00107 Status
status: done
task: VOLUME_TO_MESH modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh-hosted VOLUME_TO_MESH modifier stack exposure for `mesh:WebGapVolumeToMeshMesh`.
evidence:
- Desktop fixture exposes `WebGapVolumeToMesh` as VOLUME_TO_MESH type code 58; save/reopen is exact.
- WASM/Main exposes the same VOLUME_TO_MESH stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Volume-to-mesh evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00108`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00108 Status
status: done
task: WARP modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh WARP modifier stack exposure for `mesh:WebGapWarpMesh`.
evidence:
- Desktop fixture exposes `WebGapWarp` as WARP type code 35; save/reopen is exact.
- WASM/Main exposes the same WARP stack entry with matching generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Warp deformation evaluation remains metadata-only; this slice covers modifier stack transport and base metadata only.
nextTask: `M16-GAP-00109`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00109 Status
status: done
task: WAVE modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh WAVE modifier stack exposure for `mesh:WebGapWaveMesh`.
evidence:
- Desktop fixture exposes `WebGapWave` as WAVE type code 7 with height 0.65, width 1.75, and speed 0.42; save/reopen is exact.
- WASM/Main exposes the same WAVE stack entry and matching height, width, speed, and generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Wave deformation evaluation remains metadata-only; this slice covers modifier stack transport and selected parameter metadata.
nextTask: `M16-GAP-00110`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00110 Status
status: done
task: WEIGHTED_NORMAL modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh WEIGHTED_NORMAL modifier stack exposure for `mesh:WebGapWeightedNormalMesh`.
evidence:
- Desktop fixture exposes `WebGapWeightedNormal` as WEIGHTED_NORMAL type code 54 with weight 70; save/reopen is exact.
- WASM/Main exposes the same stack entry and matching weight plus generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Weighted normal evaluation remains metadata-only; this slice covers modifier stack transport and weight metadata.
nextTask: `M16-GAP-00111`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00111 Status
status: done
task: WELD modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh WELD modifier stack exposure for `mesh:WebGapWeldMesh`.
evidence:
- Desktop fixture exposes `WebGapWeld` as WELD type code 55 with merge threshold 0.125; save/reopen is exact.
- WASM/Main exposes the same stack entry and matching merge threshold plus generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Weld evaluation remains metadata-only; this slice covers modifier stack transport and merge threshold metadata.
nextTask: `M16-GAP-00112`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00112 Status
status: done
task: WIREFRAME modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Mesh WIREFRAME modifier stack exposure for `mesh:WebGapWireframeMesh`.
evidence:
- Desktop fixture exposes `WebGapWireframe` as WIREFRAME type code 48 with thickness 0.08; save/reopen is exact.
- WASM/Main exposes the same stack entry and matching thickness plus generic visibility flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, npm comparator, and direct comparator exited 0.
knownRisk: Wireframe evaluation remains metadata-only; this slice covers modifier stack transport and thickness metadata.
nextTask: `M16-GAP-00113`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00113 Status
status: done
task: action.bake_keys operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor bake-keys operation on `object:WebGapBakeKeysObject`.
evidence:
- Blender generator creates two selected endpoint keys and executes `bpy.ops.action.bake_keys` in a real Action Editor context; each location channel contains frames 1 through 5 afterward.
- WASM/Main reads the same fixture with three matching channels and five keyframes per channel; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, and direct comparator exited 0.
knownRisk: This slice covers Action Editor bake semantics for selected endpoint segments; other editor contexts and bake options remain separate operator tasks.
nextTask: `M16-GAP-00114`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00114 Status
status: done
task: action.clean operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor clean operation on `object:WebGapCleanObject`.
evidence:
- Blender generator creates three location channels with frames 1, 3, and 5 and executes `bpy.ops.action.clean(threshold=0.01, channels=False)` in a real Action Editor context; each channel retains the single frame at 1.
- WASM/Main reads the same fixture with three matching channels and one keyframe per channel; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, and context handoff exited 0.
knownRisk: This slice covers Action Editor clean with a fixed threshold and channel mode; other clean options and editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00115`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00115 Status
status: done
task: action.clickselect operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor click-select operation on `object:WebGapClickSelectObject`.
evidence:
- Blender generator creates three location channels with frames 1, 3, and 5, frames the Action Editor, and executes `bpy.ops.action.clickselect` at frame 3 with column selection; frame 3 is selected in all three channels.
- WASM/Main reads the same fixture with selected keyframe metadata, matching frame-3 selections, and save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, WASM comparator, direct comparator, context governance, and WASM rebuild exited 0.
knownRisk: This slice covers Action Editor click selection with column mode at a fixed frame; extend, channel-only, and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00116`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00116 Status
status: done
task: action.copy operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor copy operation on `object:WebGapCopyObject`.
evidence:
- Blender generator selects frame 3 in all three location channels and executes `bpy.ops.action.copy` in a real Action Editor context.
- Desktop and WASM/Main observe the same selected source keys; copy leaves Main unchanged and save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and WASM-backed comparison exited 0.
knownRisk: This slice covers copying a fixed selected frame; paste, mixed-channel copy, and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00117`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00117 Status
status: done
task: action.delete operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor delete operation on `object:WebGapDeleteObject`.
evidence:
- Blender generator selects frame 3 in all three location channels and executes `bpy.ops.action.delete(confirm=False)` in a real Action Editor context; each channel retains frames 1 and 5.
- WASM/Main reads the same three channels with matching `[1, 5]` keyframes; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and WASM-backed comparison exited 0.
knownRisk: This slice covers deleting one selected frame from Action Editor FCurves; confirmation behavior and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00118`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00118 Status
status: done
task: action.duplicate operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor duplicate operation on `object:WebGapDuplicateObject`.
evidence:
- Blender generator selects frame 3 in all three location channels and executes `bpy.ops.action.duplicate`; each channel becomes `[1, 3, 3, 5]` with the duplicated key selected.
- WASM/Main reads the same duplicate keyframes and selected metadata; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and WASM-backed comparison exited 0.
knownRisk: This slice covers duplicating one selected frame in Action Editor; duplicate-move and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00119`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00119 Status
status: done
task: action.duplicate_move operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor duplicate-move operation on `object:WebGapDuplicateMoveObject`.
evidence:
- Blender generator selects frame 3 and executes `bpy.ops.action.duplicate_move` with a time translation of +2; the duplicate lands at frame 5 and is selected in all three channels.
- WASM/Main reads the same `[1, 3, 5]` channels with frame 5 selected; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and WASM-backed comparison exited 0.
knownRisk: This slice covers duplicate-move with a fixed +2 frame translation; other transform modes and editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00120`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00120 Status
status: done
task: action.easing_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor easing-type operation on `object:WebGapEasingTypeObject`.
evidence:
- Blender generator selects frame 3 and executes `bpy.ops.action.easing_type(type="EASE_IN_OUT")`; all three location curves report `AUTO, EASE_IN_OUT, AUTO`.
- WASM/Main now exports keyframe easing metadata and matches desktop; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, WASM rebuild, npm comparator, direct comparator, context handoff, and governance exited 0.
knownRisk: This slice covers EASE_IN_OUT on one selected frame; other easing modes and editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00121`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00121 Status
status: done
task: action.extrapolation_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor extrapolation-type operation on `object:WebGapExtrapolationTypeObject`.
evidence:
- Blender generator selects the Action Editor FCurves and executes `bpy.ops.action.extrapolation_type(type="LINEAR")`; all three curves report LINEAR extrapolation.
- WASM/Main now exports FCurve extrapolation metadata and matches desktop; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, WASM rebuild, npm comparator, direct comparator, context handoff, and governance exited 0.
knownRisk: This slice covers LINEAR extrapolation; constant/cyclic modes and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00122`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00122 Status
status: done
task: action.frame_jump operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor frame-jump operation on `object:WebGapFrameJumpObject`.
evidence:
- Blender generator selects frame 5 in all three location channels and executes `bpy.ops.action.frame_jump`; the scene current frame changes from 1 to 5.
- WASM/Main reads current frame 5 and matching selected frame metadata; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exited 0.
knownRisk: This slice covers jumping to one selected frame; average-frame behavior with multiple selected times and other editor contexts remain separate operator tasks.
nextTask: `M16-GAP-00123`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00123 Status
status: done
task: action.handle_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor handle-type operation on `object:WebGapHandleTypeObject`.
evidence:
- Blender selects frame 3 in all three location channels and executes `bpy.ops.action.handle_type(type="VECTOR")`; all saved keyframes expose VECTOR handles.
- WASM/Main reads the same three channels, frames, selection flags, and handle types; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers VECTOR handles on one layered Action; mixed left/right handle modes and other Action operators remain separate tasks.
nextTask: `M16-GAP-00124`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00124 Status
status: done
task: action.interpolation_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor interpolation-type operation on `object:WebGapInterpolationTypeObject`.
evidence:
- Blender selects frame 3 in all three location channels and executes `bpy.ops.action.interpolation_type(type="LINEAR")`.
- Desktop and WASM/Main expose `BEZIER, LINEAR, BEZIER` per channel; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers LINEAR interpolation on selected keys; other interpolation families and operators remain separate tasks.
nextTask: `M16-GAP-00125`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00125 Status
status: done
task: action.keyframe_insert operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor keyframe insertion on `object:WebGapKeyframeInsertObject`.
evidence:
- Blender starts with frames 1 and 5, runs `bpy.ops.action.keyframe_insert(type="ALL")` at frame 3, and produces three keys in each location channel.
- Desktop and WASM/Main expose matching frames, values, and selection flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers `ALL` insertion into existing Action channels; grouped/selected-channel modes remain separate behavior.
nextTask: `M16-GAP-00126`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00126 Status
status: done
task: action.keyframe_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor keyframe-type operation on `object:WebGapKeyframeTypeObject`.
evidence:
- Blender selects frame 3 in all three location channels and executes `bpy.ops.action.keyframe_type(type="BREAKDOWN")`.
- Reader maps `BezTriple.hide` to stable keyframe types; desktop and WASM/Main expose `KEYFRAME, BREAKDOWN, KEYFRAME` per channel.
- Save/reopen is exact and malformed Blend input is rejected without mutating Main animation data.
- Generator, rebuilt WASM, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers BREAKDOWN keyframe typing; EXTREME, JITTER, MOVING_HOLD and GENERATED types remain separate operator cases.
nextTask: `M16-GAP-00127`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00127 Status
status: done
task: action.markers_make_local operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor selected scene-marker localization on `object:WebGapMarkersMakeLocalObject`.
evidence:
- Blender creates and selects `LocalActionMarker` at frame 3, then executes `bpy.ops.action.markers_make_local`; the marker moves into the Action.
- Reader exposes Action markers; desktop and WASM/Main both read `LocalActionMarker@3`, and save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, rebuilt WASM, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers one selected scene marker; multiple-marker ordering and unselected marker retention remain separate cases.
nextTask: `M16-GAP-00128`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00128 Status
status: done
task: action.mirror operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor X-axis mirror operation on `object:WebGapMirrorObject`.
evidence:
- Blender selects all three location channels and executes `bpy.ops.action.mirror(type="XAXIS")`; all keyframe values are negated.
- Desktop and WASM/Main expose matching frames, values, and selection flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers X-axis value mirroring; current-frame and marker-based time mirroring remain separate operator cases.
nextTask: `M16-GAP-00129`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00129 Status
status: done
task: action.new operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor new-action operation on `object:WebGapActionNewObject`.
evidence:
- Blender executes `bpy.ops.action.new` and creates/assigns `WebGapActionNewObjectAction.001` while preserving the prior Action for stash semantics.
- Desktop and WASM/Main expose the new Action with three channels; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, rebuilt WASM, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: Background execution requires explicit harness assignment of the newly created Action because the UI template pointer is unavailable; the operator-created datablock and resulting assigned state are still hash-bound.
nextTask: `M16-GAP-00130`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00130 Status
status: done
task: action.paste operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor internal clipboard paste on `object:WebGapPasteObject`.
evidence:
- Blender copies the selected frame 3 keys and executes `bpy.ops.action.paste(offset="START", merge="MIX")` at frame 7.
- Desktop and WASM/Main expose frames 1, 3, 5, 7 on all channels with matching values; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers internal clipboard paste with START/MIX settings; other offset and merge modes remain separate tasks.
nextTask: `M16-GAP-00131`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00131 Status
status: done
task: action.previewrange_set operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor selected-key preview range on `object:WebGapPreviewRangeObject`.
evidence:
- Blender executes `bpy.ops.action.previewrange_set`; the scene stores preview range `1..5` with preview enabled.
- Reader exposes `scene.previewRange`; desktop and WASM/Main match, and save/reopen is exact.
- Malformed Blend input is rejected without mutating Main scene state.
- Generator, rebuilt WASM, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: The Action Editor context computes the selected extent as the full 1..5 range in this background fixture; alternate channel-selection contexts remain separate cases.
nextTask: `M16-GAP-00132`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00132 Status
status: done
task: action.push_down operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor push-down into NLA on `object:WebGapPushDownObject`.
evidence:
- Blender executes `bpy.ops.action.push_down`; active Action is removed from the active slot and moved to one NLA track with one strip.
- Desktop and WASM/Main expose the original Action and matching NLA strip/action identity; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation/NLA state.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers one push-down operation into an empty NLA stack; existing-track blending remains separate behavior.
nextTask: `M16-GAP-00133`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00133 Status
status: done
task: action.select_all operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor select-all operation on `object:WebGapSelectAllObject`.
evidence:
- Blender clears selection and executes `bpy.ops.action.select_all(action="SELECT")`; all 9 keyframes become selected.
- Desktop and WASM/Main expose matching frames and selected flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers the SELECT mode; TOGGLE, DESELECT, and INVERT modes remain separate operator cases.
nextTask: `M16-GAP-00134`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00134 Status
status: done
task: action.select_box operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor box selection on `object:WebGapSelectBoxObject`.
evidence:
- Blender executes `bpy.ops.action.select_box(mode="SET")` over the frame-3 region coordinates; only frame 3 is selected on all channels.
- Desktop and WASM/Main expose matching frames and selected flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers SET mode and a frame-only box; ADD/SUB/channel-range selection remains separate behavior.
nextTask: `M16-GAP-00135`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00135 Status
status: done
task: action.select_by_type operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Action Editor keyframe-type selection on `object:WebGapSelectByTypeObject`.
evidence:
- Blender marks frame 3 as BREAKDOWN, clears selection, and executes `bpy.ops.action.select_by_type(type="BREAKDOWN", extend=False)`.
- Desktop and WASM/Main expose matching keyframe types and selected flags; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main animation data.
- Generator, desktop checker, npm comparator, direct comparator, context handoff, and governance exit 0.
knownRisk: This slice covers BREAKDOWN selection; other keyframe types and extend behavior remain separate cases.
nextTask: `M16-GAP-00136`

View File

@@ -0,0 +1,17 @@
# M16-GAP-00136 Status
status: done
task: action.select_circle operator LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope:
- Action Editor circle selection on `object:WebGapSelectCircleObject`.
evidence:
- Blender desktop and WASM/Main expose matching three location channels with frame 3 selected.
- Save/reopen is exact; malformed Blend input is rejected without Main mutation.
- Fixture generation, desktop checker, npm comparator, direct comparator, context handoff and manifest hashing passed.
nextTask: `M16-GAP-00137`

View File

@@ -0,0 +1,37 @@
# M16-GAP-00097: modifier:SUBSURF LOCAL_EXACT slice
- task: M16-GAP-00097
- parent: M16-GAP-00096
- status: in_progress
- gap: modifier:SUBSURF
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:SUBSURF data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00097-modifier-SUBSURF.blend`
- Generator: `tools/web/generated/M16-GAP-00097.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00097.py -- tests/files/web/generated/M16-GAP-00097-modifier-SUBSURF.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00097
node tools/web/check-generated-gap.mjs --task M16-GAP-00097
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00097/`
- Status: `docs/status/M16-GAP-00097.md`
- Manifest: `tests/golden/M16-GAP-00097/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00097 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00098: modifier:SURFACE LOCAL_EXACT slice
- task: M16-GAP-00098
- parent: M16-GAP-00097
- status: in_progress
- gap: modifier:SURFACE
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:SURFACE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend`
- Generator: `tools/web/generated/M16-GAP-00098.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00098.py -- tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00098
node tools/web/check-generated-gap.mjs --task M16-GAP-00098
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00098/`
- Status: `docs/status/M16-GAP-00098.md`
- Manifest: `tests/golden/M16-GAP-00098/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00098 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00099: modifier:SURFACE_DEFORM LOCAL_EXACT slice
- task: M16-GAP-00099
- parent: M16-GAP-00098
- status: in_progress
- gap: modifier:SURFACE_DEFORM
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:SURFACE_DEFORM data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00099-modifier-SURFACE_DEFORM.blend`
- Generator: `tools/web/generated/M16-GAP-00099.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00099.py -- tests/files/web/generated/M16-GAP-00099-modifier-SURFACE_DEFORM.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00099
node tools/web/check-generated-gap.mjs --task M16-GAP-00099
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00099/`
- Status: `docs/status/M16-GAP-00099.md`
- Manifest: `tests/golden/M16-GAP-00099/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00099 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00100: modifier:TRIANGULATE LOCAL_EXACT slice
- task: M16-GAP-00100
- parent: M16-GAP-00099
- status: in_progress
- gap: modifier:TRIANGULATE
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:TRIANGULATE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00100-modifier-TRIANGULATE.blend`
- Generator: `tools/web/generated/M16-GAP-00100.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00100.py -- tests/files/web/generated/M16-GAP-00100-modifier-TRIANGULATE.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00100
node tools/web/check-generated-gap.mjs --task M16-GAP-00100
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00100/`
- Status: `docs/status/M16-GAP-00100.md`
- Manifest: `tests/golden/M16-GAP-00100/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00100 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00101: modifier:UV_PROJECT LOCAL_EXACT slice
- task: M16-GAP-00101
- parent: M16-GAP-00100
- status: in_progress
- gap: modifier:UV_PROJECT
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:UV_PROJECT data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00101-modifier-UV_PROJECT.blend`
- Generator: `tools/web/generated/M16-GAP-00101.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00101.py -- tests/files/web/generated/M16-GAP-00101-modifier-UV_PROJECT.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00101
node tools/web/check-generated-gap.mjs --task M16-GAP-00101
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00101/`
- Status: `docs/status/M16-GAP-00101.md`
- Manifest: `tests/golden/M16-GAP-00101/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00101 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00102: modifier:UV_WARP LOCAL_EXACT slice
- task: M16-GAP-00102
- parent: M16-GAP-00101
- status: in_progress
- gap: modifier:UV_WARP
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:UV_WARP data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00102-modifier-UV_WARP.blend`
- Generator: `tools/web/generated/M16-GAP-00102.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00102.py -- tests/files/web/generated/M16-GAP-00102-modifier-UV_WARP.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00102
node tools/web/check-generated-gap.mjs --task M16-GAP-00102
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00102/`
- Status: `docs/status/M16-GAP-00102.md`
- Manifest: `tests/golden/M16-GAP-00102/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00102 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00103: modifier:VERTEX_WEIGHT_EDIT LOCAL_EXACT slice
- task: M16-GAP-00103
- parent: M16-GAP-00102
- status: in_progress
- gap: modifier:VERTEX_WEIGHT_EDIT
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_EDIT data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend`
- Generator: `tools/web/generated/M16-GAP-00103.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00103.py -- tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00103
node tools/web/check-generated-gap.mjs --task M16-GAP-00103
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00103/`
- Status: `docs/status/M16-GAP-00103.md`
- Manifest: `tests/golden/M16-GAP-00103/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00103 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00104: modifier:VERTEX_WEIGHT_MIX LOCAL_EXACT slice
- task: M16-GAP-00104
- parent: M16-GAP-00103
- status: in_progress
- gap: modifier:VERTEX_WEIGHT_MIX
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_MIX data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend`
- Generator: `tools/web/generated/M16-GAP-00104.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00104.py -- tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00104
node tools/web/check-generated-gap.mjs --task M16-GAP-00104
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00104/`
- Status: `docs/status/M16-GAP-00104.md`
- Manifest: `tests/golden/M16-GAP-00104/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00104 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00105: modifier:VERTEX_WEIGHT_PROXIMITY LOCAL_EXACT slice
- task: M16-GAP-00105
- parent: M16-GAP-00104
- status: in_progress
- gap: modifier:VERTEX_WEIGHT_PROXIMITY
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_PROXIMITY data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend`
- Generator: `tools/web/generated/M16-GAP-00105.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00105.py -- tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00105
node tools/web/check-generated-gap.mjs --task M16-GAP-00105
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00105/`
- Status: `docs/status/M16-GAP-00105.md`
- Manifest: `tests/golden/M16-GAP-00105/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00105 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00106: modifier:VOLUME_DISPLACE LOCAL_EXACT slice
- task: M16-GAP-00106
- parent: M16-GAP-00105
- status: in_progress
- gap: modifier:VOLUME_DISPLACE
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:VOLUME_DISPLACE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend`
- Generator: `tools/web/generated/M16-GAP-00106.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00106.py -- tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00106
node tools/web/check-generated-gap.mjs --task M16-GAP-00106
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00106/`
- Status: `docs/status/M16-GAP-00106.md`
- Manifest: `tests/golden/M16-GAP-00106/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00106 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00107: modifier:VOLUME_TO_MESH LOCAL_EXACT slice
- task: M16-GAP-00107
- parent: M16-GAP-00106
- status: in_progress
- gap: modifier:VOLUME_TO_MESH
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:VOLUME_TO_MESH data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00107-modifier-VOLUME_TO_MESH.blend`
- Generator: `tools/web/generated/M16-GAP-00107.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00107.py -- tests/files/web/generated/M16-GAP-00107-modifier-VOLUME_TO_MESH.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00107
node tools/web/check-generated-gap.mjs --task M16-GAP-00107
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00107/`
- Status: `docs/status/M16-GAP-00107.md`
- Manifest: `tests/golden/M16-GAP-00107/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00107 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00108: modifier:WARP LOCAL_EXACT slice
- task: M16-GAP-00108
- parent: M16-GAP-00107
- status: in_progress
- gap: modifier:WARP
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:WARP data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00108-modifier-WARP.blend`
- Generator: `tools/web/generated/M16-GAP-00108.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00108.py -- tests/files/web/generated/M16-GAP-00108-modifier-WARP.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00108
node tools/web/check-generated-gap.mjs --task M16-GAP-00108
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00108/`
- Status: `docs/status/M16-GAP-00108.md`
- Manifest: `tests/golden/M16-GAP-00108/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00108 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00109: modifier:WAVE LOCAL_EXACT slice
- task: M16-GAP-00109
- parent: M16-GAP-00108
- status: in_progress
- gap: modifier:WAVE
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:WAVE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00109-modifier-WAVE.blend`
- Generator: `tools/web/generated/M16-GAP-00109.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00109.py -- tests/files/web/generated/M16-GAP-00109-modifier-WAVE.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00109
node tools/web/check-generated-gap.mjs --task M16-GAP-00109
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00109/`
- Status: `docs/status/M16-GAP-00109.md`
- Manifest: `tests/golden/M16-GAP-00109/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00109 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00110: modifier:WEIGHTED_NORMAL LOCAL_EXACT slice
- task: M16-GAP-00110
- parent: M16-GAP-00109
- status: in_progress
- gap: modifier:WEIGHTED_NORMAL
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:WEIGHTED_NORMAL data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00110-modifier-WEIGHTED_NORMAL.blend`
- Generator: `tools/web/generated/M16-GAP-00110.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00110.py -- tests/files/web/generated/M16-GAP-00110-modifier-WEIGHTED_NORMAL.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00110
node tools/web/check-generated-gap.mjs --task M16-GAP-00110
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00110/`
- Status: `docs/status/M16-GAP-00110.md`
- Manifest: `tests/golden/M16-GAP-00110/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00110 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00111: modifier:WELD LOCAL_EXACT slice
- task: M16-GAP-00111
- parent: M16-GAP-00110
- status: in_progress
- gap: modifier:WELD
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:WELD data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00111-modifier-WELD.blend`
- Generator: `tools/web/generated/M16-GAP-00111.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00111.py -- tests/files/web/generated/M16-GAP-00111-modifier-WELD.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00111
node tools/web/check-generated-gap.mjs --task M16-GAP-00111
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00111/`
- Status: `docs/status/M16-GAP-00111.md`
- Manifest: `tests/golden/M16-GAP-00111/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00111 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00112: modifier:WIREFRAME LOCAL_EXACT slice
- task: M16-GAP-00112
- parent: M16-GAP-00111
- status: in_progress
- gap: modifier:WIREFRAME
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable modifier:WIREFRAME data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00112-modifier-WIREFRAME.blend`
- Generator: `tools/web/generated/M16-GAP-00112.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00112.py -- tests/files/web/generated/M16-GAP-00112-modifier-WIREFRAME.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00112
node tools/web/check-generated-gap.mjs --task M16-GAP-00112
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00112/`
- Status: `docs/status/M16-GAP-00112.md`
- Manifest: `tests/golden/M16-GAP-00112/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00112 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00113: operator:action.bake_keys LOCAL_EXACT slice
- task: M16-GAP-00113
- parent: M16-GAP-00112
- status: in_progress
- gap: operator:action.bake_keys
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.bake_keys data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00113-operator-action.bake_keys.blend`
- Generator: `tools/web/generated/M16-GAP-00113.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00113.py -- tests/files/web/generated/M16-GAP-00113-operator-action.bake_keys.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00113
node tools/web/check-generated-gap.mjs --task M16-GAP-00113
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00113/`
- Status: `docs/status/M16-GAP-00113.md`
- Manifest: `tests/golden/M16-GAP-00113/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00113 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00114: operator:action.clean LOCAL_EXACT slice
- task: M16-GAP-00114
- parent: M16-GAP-00113
- status: in_progress
- gap: operator:action.clean
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.clean data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00114-operator-action.clean.blend`
- Generator: `tools/web/generated/M16-GAP-00114.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00114.py -- tests/files/web/generated/M16-GAP-00114-operator-action.clean.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00114
node tools/web/check-generated-gap.mjs --task M16-GAP-00114
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00114/`
- Status: `docs/status/M16-GAP-00114.md`
- Manifest: `tests/golden/M16-GAP-00114/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00114 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00115: operator:action.clickselect LOCAL_EXACT slice
- task: M16-GAP-00115
- parent: M16-GAP-00114
- status: in_progress
- gap: operator:action.clickselect
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.clickselect data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00115-operator-action.clickselect.blend`
- Generator: `tools/web/generated/M16-GAP-00115.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00115.py -- tests/files/web/generated/M16-GAP-00115-operator-action.clickselect.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00115
node tools/web/check-generated-gap.mjs --task M16-GAP-00115
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00115/`
- Status: `docs/status/M16-GAP-00115.md`
- Manifest: `tests/golden/M16-GAP-00115/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00115 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00116: operator:action.copy LOCAL_EXACT slice
- task: M16-GAP-00116
- parent: M16-GAP-00115
- status: in_progress
- gap: operator:action.copy
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.copy data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00116-operator-action.copy.blend`
- Generator: `tools/web/generated/M16-GAP-00116.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00116.py -- tests/files/web/generated/M16-GAP-00116-operator-action.copy.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00116
node tools/web/check-generated-gap.mjs --task M16-GAP-00116
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00116/`
- Status: `docs/status/M16-GAP-00116.md`
- Manifest: `tests/golden/M16-GAP-00116/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00116 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00117: operator:action.delete LOCAL_EXACT slice
- task: M16-GAP-00117
- parent: M16-GAP-00116
- status: in_progress
- gap: operator:action.delete
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.delete data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00117-operator-action.delete.blend`
- Generator: `tools/web/generated/M16-GAP-00117.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00117.py -- tests/files/web/generated/M16-GAP-00117-operator-action.delete.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00117
node tools/web/check-generated-gap.mjs --task M16-GAP-00117
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00117/`
- Status: `docs/status/M16-GAP-00117.md`
- Manifest: `tests/golden/M16-GAP-00117/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00117 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00118: operator:action.duplicate LOCAL_EXACT slice
- task: M16-GAP-00118
- parent: M16-GAP-00117
- status: in_progress
- gap: operator:action.duplicate
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.duplicate data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00118-operator-action.duplicate.blend`
- Generator: `tools/web/generated/M16-GAP-00118.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00118.py -- tests/files/web/generated/M16-GAP-00118-operator-action.duplicate.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00118
node tools/web/check-generated-gap.mjs --task M16-GAP-00118
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00118/`
- Status: `docs/status/M16-GAP-00118.md`
- Manifest: `tests/golden/M16-GAP-00118/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00118 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00119: operator:action.duplicate_move LOCAL_EXACT slice
- task: M16-GAP-00119
- parent: M16-GAP-00118
- status: in_progress
- gap: operator:action.duplicate_move
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.duplicate_move data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00119-operator-action.duplicate_move.blend`
- Generator: `tools/web/generated/M16-GAP-00119.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00119.py -- tests/files/web/generated/M16-GAP-00119-operator-action.duplicate_move.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00119
node tools/web/check-generated-gap.mjs --task M16-GAP-00119
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00119/`
- Status: `docs/status/M16-GAP-00119.md`
- Manifest: `tests/golden/M16-GAP-00119/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00119 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00120: operator:action.easing_type LOCAL_EXACT slice
- task: M16-GAP-00120
- parent: M16-GAP-00119
- status: in_progress
- gap: operator:action.easing_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.easing_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00120-operator-action.easing_type.blend`
- Generator: `tools/web/generated/M16-GAP-00120.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00120.py -- tests/files/web/generated/M16-GAP-00120-operator-action.easing_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00120
node tools/web/check-generated-gap.mjs --task M16-GAP-00120
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00120/`
- Status: `docs/status/M16-GAP-00120.md`
- Manifest: `tests/golden/M16-GAP-00120/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00120 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00121: operator:action.extrapolation_type LOCAL_EXACT slice
- task: M16-GAP-00121
- parent: M16-GAP-00120
- status: in_progress
- gap: operator:action.extrapolation_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.extrapolation_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00121-operator-action.extrapolation_type.blend`
- Generator: `tools/web/generated/M16-GAP-00121.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00121.py -- tests/files/web/generated/M16-GAP-00121-operator-action.extrapolation_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00121
node tools/web/check-generated-gap.mjs --task M16-GAP-00121
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00121/`
- Status: `docs/status/M16-GAP-00121.md`
- Manifest: `tests/golden/M16-GAP-00121/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00121 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00122: operator:action.frame_jump LOCAL_EXACT slice
- task: M16-GAP-00122
- parent: M16-GAP-00121
- status: in_progress
- gap: operator:action.frame_jump
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.frame_jump data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00122-operator-action.frame_jump.blend`
- Generator: `tools/web/generated/M16-GAP-00122.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00122.py -- tests/files/web/generated/M16-GAP-00122-operator-action.frame_jump.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00122
node tools/web/check-generated-gap.mjs --task M16-GAP-00122
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00122/`
- Status: `docs/status/M16-GAP-00122.md`
- Manifest: `tests/golden/M16-GAP-00122/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00122 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00123: operator:action.handle_type LOCAL_EXACT slice
- task: M16-GAP-00123
- parent: M16-GAP-00122
- status: in_progress
- gap: operator:action.handle_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.handle_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00123-operator-action.handle_type.blend`
- Generator: `tools/web/generated/M16-GAP-00123.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00123.py -- tests/files/web/generated/M16-GAP-00123-operator-action.handle_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00123
node tools/web/check-generated-gap.mjs --task M16-GAP-00123
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00123/`
- Status: `docs/status/M16-GAP-00123.md`
- Manifest: `tests/golden/M16-GAP-00123/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00123 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00124: operator:action.interpolation_type LOCAL_EXACT slice
- task: M16-GAP-00124
- parent: M16-GAP-00123
- status: in_progress
- gap: operator:action.interpolation_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.interpolation_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00124-operator-action.interpolation_type.blend`
- Generator: `tools/web/generated/M16-GAP-00124.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00124.py -- tests/files/web/generated/M16-GAP-00124-operator-action.interpolation_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00124
node tools/web/check-generated-gap.mjs --task M16-GAP-00124
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00124/`
- Status: `docs/status/M16-GAP-00124.md`
- Manifest: `tests/golden/M16-GAP-00124/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00124 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00125: operator:action.keyframe_insert LOCAL_EXACT slice
- task: M16-GAP-00125
- parent: M16-GAP-00124
- status: in_progress
- gap: operator:action.keyframe_insert
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.keyframe_insert data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00125-operator-action.keyframe_insert.blend`
- Generator: `tools/web/generated/M16-GAP-00125.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00125.py -- tests/files/web/generated/M16-GAP-00125-operator-action.keyframe_insert.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00125
node tools/web/check-generated-gap.mjs --task M16-GAP-00125
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00125/`
- Status: `docs/status/M16-GAP-00125.md`
- Manifest: `tests/golden/M16-GAP-00125/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00125 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00126: operator:action.keyframe_type LOCAL_EXACT slice
- task: M16-GAP-00126
- parent: M16-GAP-00125
- status: in_progress
- gap: operator:action.keyframe_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.keyframe_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00126-operator-action.keyframe_type.blend`
- Generator: `tools/web/generated/M16-GAP-00126.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00126.py -- tests/files/web/generated/M16-GAP-00126-operator-action.keyframe_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00126
node tools/web/check-generated-gap.mjs --task M16-GAP-00126
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00126/`
- Status: `docs/status/M16-GAP-00126.md`
- Manifest: `tests/golden/M16-GAP-00126/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00126 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00127: operator:action.markers_make_local LOCAL_EXACT slice
- task: M16-GAP-00127
- parent: M16-GAP-00126
- status: in_progress
- gap: operator:action.markers_make_local
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.markers_make_local data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00127-operator-action.markers_make_local.blend`
- Generator: `tools/web/generated/M16-GAP-00127.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00127.py -- tests/files/web/generated/M16-GAP-00127-operator-action.markers_make_local.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00127
node tools/web/check-generated-gap.mjs --task M16-GAP-00127
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00127/`
- Status: `docs/status/M16-GAP-00127.md`
- Manifest: `tests/golden/M16-GAP-00127/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00127 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00128: operator:action.mirror LOCAL_EXACT slice
- task: M16-GAP-00128
- parent: M16-GAP-00127
- status: in_progress
- gap: operator:action.mirror
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.mirror data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00128-operator-action.mirror.blend`
- Generator: `tools/web/generated/M16-GAP-00128.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00128.py -- tests/files/web/generated/M16-GAP-00128-operator-action.mirror.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00128
node tools/web/check-generated-gap.mjs --task M16-GAP-00128
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00128/`
- Status: `docs/status/M16-GAP-00128.md`
- Manifest: `tests/golden/M16-GAP-00128/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00128 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00129: operator:action.new LOCAL_EXACT slice
- task: M16-GAP-00129
- parent: M16-GAP-00128
- status: in_progress
- gap: operator:action.new
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.new data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00129-operator-action.new.blend`
- Generator: `tools/web/generated/M16-GAP-00129.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00129.py -- tests/files/web/generated/M16-GAP-00129-operator-action.new.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00129
node tools/web/check-generated-gap.mjs --task M16-GAP-00129
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00129/`
- Status: `docs/status/M16-GAP-00129.md`
- Manifest: `tests/golden/M16-GAP-00129/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00129 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00130: operator:action.paste LOCAL_EXACT slice
- task: M16-GAP-00130
- parent: M16-GAP-00129
- status: in_progress
- gap: operator:action.paste
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.paste data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00130-operator-action.paste.blend`
- Generator: `tools/web/generated/M16-GAP-00130.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00130.py -- tests/files/web/generated/M16-GAP-00130-operator-action.paste.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00130
node tools/web/check-generated-gap.mjs --task M16-GAP-00130
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00130/`
- Status: `docs/status/M16-GAP-00130.md`
- Manifest: `tests/golden/M16-GAP-00130/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00130 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00131: operator:action.previewrange_set LOCAL_EXACT slice
- task: M16-GAP-00131
- parent: M16-GAP-00130
- status: in_progress
- gap: operator:action.previewrange_set
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.previewrange_set data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00131-operator-action.previewrange_set.blend`
- Generator: `tools/web/generated/M16-GAP-00131.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00131.py -- tests/files/web/generated/M16-GAP-00131-operator-action.previewrange_set.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00131
node tools/web/check-generated-gap.mjs --task M16-GAP-00131
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00131/`
- Status: `docs/status/M16-GAP-00131.md`
- Manifest: `tests/golden/M16-GAP-00131/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00131 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00132: operator:action.push_down LOCAL_EXACT slice
- task: M16-GAP-00132
- parent: M16-GAP-00131
- status: in_progress
- gap: operator:action.push_down
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.push_down data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00132-operator-action.push_down.blend`
- Generator: `tools/web/generated/M16-GAP-00132.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00132.py -- tests/files/web/generated/M16-GAP-00132-operator-action.push_down.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00132
node tools/web/check-generated-gap.mjs --task M16-GAP-00132
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00132/`
- Status: `docs/status/M16-GAP-00132.md`
- Manifest: `tests/golden/M16-GAP-00132/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00132 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00133: operator:action.select_all LOCAL_EXACT slice
- task: M16-GAP-00133
- parent: M16-GAP-00132
- status: in_progress
- gap: operator:action.select_all
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.select_all data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00133-operator-action.select_all.blend`
- Generator: `tools/web/generated/M16-GAP-00133.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00133.py -- tests/files/web/generated/M16-GAP-00133-operator-action.select_all.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00133
node tools/web/check-generated-gap.mjs --task M16-GAP-00133
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00133/`
- Status: `docs/status/M16-GAP-00133.md`
- Manifest: `tests/golden/M16-GAP-00133/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00133 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00134: operator:action.select_box LOCAL_EXACT slice
- task: M16-GAP-00134
- parent: M16-GAP-00133
- status: in_progress
- gap: operator:action.select_box
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.select_box data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00134-operator-action.select_box.blend`
- Generator: `tools/web/generated/M16-GAP-00134.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00134.py -- tests/files/web/generated/M16-GAP-00134-operator-action.select_box.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00134
node tools/web/check-generated-gap.mjs --task M16-GAP-00134
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00134/`
- Status: `docs/status/M16-GAP-00134.md`
- Manifest: `tests/golden/M16-GAP-00134/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00134 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00135: operator:action.select_by_type LOCAL_EXACT slice
- task: M16-GAP-00135
- parent: M16-GAP-00134
- status: in_progress
- gap: operator:action.select_by_type
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.select_by_type data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00135-operator-action.select_by_type.blend`
- Generator: `tools/web/generated/M16-GAP-00135.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00135.py -- tests/files/web/generated/M16-GAP-00135-operator-action.select_by_type.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00135
node tools/web/check-generated-gap.mjs --task M16-GAP-00135
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00135/`
- Status: `docs/status/M16-GAP-00135.md`
- Manifest: `tests/golden/M16-GAP-00135/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00135 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00136: operator:action.select_circle LOCAL_EXACT slice
- task: M16-GAP-00136
- parent: M16-GAP-00135
- status: in_progress
- gap: operator:action.select_circle
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:action.select_circle data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00136-operator-action.select_circle.blend`
- Generator: `tools/web/generated/M16-GAP-00136.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00136.py -- tests/files/web/generated/M16-GAP-00136-operator-action.select_circle.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00136
node tools/web/check-generated-gap.mjs --task M16-GAP-00136
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00136/`
- Status: `docs/status/M16-GAP-00136.md`
- Manifest: `tests/golden/M16-GAP-00136/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00136 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.