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

@@ -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`